swish/commit

New generated files

authorJan Wielemaker
Thu May 3 12:03:05 2018 +0200
committerJan Wielemaker
Thu May 3 12:04:06 2018 +0200
commit1ccfca185eb7c32738edadeb1dcf09045e6afb56
treefd6452b33e97a6bc91ebd45a888b3b345a00d5c4
parent2aec03dcccddb259fed1dd84ac8915ca6ad2057d
Diff style: patch stat
diff --git a/web/css/swish-min.css b/web/css/swish-min.css
index da61e6e..813dfab 100644
--- a/web/css/swish-min.css
+++ b/web/css/swish-min.css
@@ -1,4 +1,4 @@
-ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox span{margin-left:20px}.dropdown-menu>li{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer}.dropdown-menu .sub-menu{left:100%;position:absolute;top:0;display:none;margin-top:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:#fff;box-shadow:none}.left-caret:after,.right-caret:after{content:"";border-bottom:5px solid transparent;border-top:5px solid transparent;display:inline-block;height:0;vertical-align:middle;width:0;margin-left:5px}.right-caret:after{border-left:5px solid #ffaf46}.left-caret:after{border-right:5px solid #ffaf46}.dropdown-icon{margin-left:-12px;margin-right:5px;padding:0;background-repeat:no-repeat;background-size:100%;background-position:50% 50%;display:inline-block;vertical-align:middle;height:18px;width:18px}a.accelerated{position:relative}a.accelerated span.accell-spacer{color:#fff}a.accelerated span.accell-text{color:#888;position:absolute;right:10px}body,html{width:100%;height:100%;padding:0;margin:0;overflow:hidden}nav.navbar{margin-bottom:0}#content{width:100%;height:calc(100% - 55px);padding:0;background-color:#fff}.pane-container,.pane-wrapper{width:100%;height:100%;background-color:white: green}.splittable{background-color:#fff;width:100%;height:100%;padding:5px}div.tabbed{height:100%}div.tab-content{height:calc(100% - 40px)}div.tab-pane{position:relative;height:100%}span.glyphicon.xclose:hover{opacity:.8}span.glyphicon.xclose{margin-left:5px;opacity:.2}a.tab-new.compact>span{padding:6px 0}.nav>li>a.compact{padding:0 5px}span.tab-dirty{display:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAqCAMAAADCkShIAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAICAQAAAAAAADAwHSkoFVtYJvj4wdHPi/37sKOfVvv3joJ+OfLsa6GaOfryVf////09bBAAAAAGdFJOUwD+LWbH9lfFP3wAAAABYktHRBCVsg0sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkVDAQs7+kkfQAAAetJREFUSMeVVY3WqjAMc7B1XffT93/bm3aA+l1Q7FGBQ7I0WcHH47RCCMvjhwpe9/Fr+JEBLMV4nwCBmHO8LwFkzplvEyBAIGS62dSClUveJNZ7DUn2kltNBXdsVcqNaBdriA1tX77hYndcTIG/RwuByAysFzO277sA84RXENoXidUFeMJLrcX2e/kcETthwvH5HG3YHZfWGHCrj763SNm3jCehfyBMAWYxq8HQRFLpmuFT6tnbdltLduyXj+scoolv1NFN9dNxIWE3s9BcfvbvBOrpfGrdcdgILEAJoGlIP4/WHVPYHOAChgGl3lXPJOxFwaUdhAQL3WRSU9UT3+YuF9k82FWv1rydqf4/UqvnWHh6ADAKUdrEziQsUpsdw8fQrHU53IDwN9p9o2qVKEgT+N7piVelN9/Lc3SqIMxkBJVXwnhrCl2QC/TOJAYUnRkdhDeJNURrxIcNVmGW6K/Cm2937AJkX3RPXZ2QXgjPaPfZsXHbC3gdYwI3wnO/Xxx3o+hF7dGaKrJJNGyzMNcNvworNKiNNCg1nI20+14QEaNzkljTAEwHnKvBSVvCVRoDhDa2aGGg1WppjiRYU3BXAVWDYWFo2sEU1J9Wm67KdRrWawdHUNvsH5VOT2f523z/x7xZ6+M3xvr4B2dMHj70RasaAAAAAElFTkSuQmCC);padding:0;background-repeat:no-repeat;background-size:90% 60%;background-position:0 40%;vertical-align:middle;height:30px;width:21px}.nav>li>a.compact.data-dirty>span.tab-dirty{display:inline-block}a.tab-chat{display:none}a.tab-chat.chat-available{display:inline-block;height:30px;width:22px}.tabbed-select:{width:100%}.tabbed-create{margin:2em 0 1em;text-align:center}label.tabbed-left{text-align:right;margin-right:.6em;white-space:nowrap;width:5em}label.tabbed-right{text-align:left;margin-left:.6em;white-space:nowrap;width:5em}.tabbed-profile>label{font-style:italic;font-weight:400;color:#888}.tab-icon{padding:0;background-repeat:no-repeat;background-size:70%;background-position:50% 40%;display:inline-block;vertical-align:middle;height:30px;width:30px}.tabbed-profile{width:100%;text-align:center}.tabbed-profile .select-profile{display:inline-block}form.search-sources{margin:3em auto 1em;width:80%}.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.cm-s-prolog span.cm-number{color:#000}.cm-s-prolog span.cm-neg-number{color:#000}.cm-s-prolog span.cm-atom{color:#762}.cm-s-prolog span.cm-uatom{color:#762}.cm-s-prolog span.cm-qatom{color:#008}.cm-s-prolog span.cm-string{color:#008;font-style:italic}.cm-s-prolog span.cm-string_terminal{color:#008;font-style:italic}.cm-s-prolog span.cm-bqstring{color:#040;font-style:italic}.cm-s-prolog span.cm-codes{color:#040;font-style:italic}.cm-s-prolog span.cm-chars{color:#040;font-style:italic}.cm-s-prolog span.cm-functor{color:#000;font-style:italic}.cm-s-prolog span.cm-tag{color:#000;font-weight:700}.cm-s-prolog span.cm-key{color:#000;font-weight:700}.cm-s-prolog span.cm-ext_quant{color:#000;font-weight:700}.cm-s-prolog span.cm-qq_content{color:#900}.cm-s-prolog span.cm-qq_close,.cm-s-prolog span.cm-qq_open,.cm-s-prolog span.cm-qq_sep{color:#00f;font-weight:700}.cm-s-prolog span.cm-qq_type{font-weight:700}.cm-s-prolog span.cm-comment{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-comment_string{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-var{color:#800}.cm-s-prolog span.cm-var-2{color:#888}.cm-s-prolog span.cm-anon{color:#800}.cm-s-prolog span.cm-singleton{color:#800;font-weight:700}.cm-s-prolog span.cm-identifier{font-weight:700}.cm-s-prolog span.cm-module{color:#549}.cm-s-prolog span.cm-head_exported{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_unreferenced{color:red;font-weight:700}.cm-s-prolog span.cm-head_built_in{background:orange;font-weight:700}.cm-s-prolog span.cm-head_iso{background:orange;font-weight:700}.cm-s-prolog span.cm-head_hook{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-head_extern{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_public{color:#016300;font-weight:700}.cm-s-prolog span.cm-head_constraint{color:#008b8b;font-weight:700}.cm-s-prolog span.cm-head{font-weight:700}.cm-s-prolog span.cm-goal_built_in{color:#00f}.cm-s-prolog span.cm-goal_imported{color:#00f}.cm-s-prolog span.cm-goal_autoload{color:#008}.cm-s-prolog span.cm-goal_undefined{color:red}.cm-s-prolog span.cm-goal_dynamic{color:#f0f}.cm-s-prolog span.cm-goal_thread_local{color:#f0f;text-decoration:underline}.cm-s-prolog span.cm-goal_constraint{color:#008b8b}.cm-s-prolog span.cm-goal_recursion{text-decoration:underline}.cm-s-prolog span.cm-meta{color:#00f}.cm-s-prolog span.cm-op_type{color:#00f}.cm-s-prolog span.cm-file_no_depends{color:#00f;text-decoration:underline;background:#fcd}.cm-s-prolog span.cm-file{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-nofile{color:red}.cm-s-prolog span.cm-option_name{color:#3434ba}.cm-s-prolog span.cm-no_option_name{color:red}.cm-s-prolog span.cm-flag_name{color:#00f}.cm-s-prolog span.cm-no_flag_name{color:red}.cm-s-prolog span.cm-error{border-bottom:2px dotted red}.cm-s-prolog span.cm-instantiation_error{border-bottom:2px dotted red}.cm-s-prolog span.cm-link{color:#762}.cm-s-prolog span.cm-expanded{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-undefined_import{color:red}.cm-s-prolog span.cm-unused_import{color:#00f;background:pink}.cm-s-prolog span.cm-xpce_method{font-weight:700}.cm-s-prolog span.cm-xpce_class_built_in{color:#00f}.cm-s-prolog span.cm-xpce_class_lib{color:#00f;font-style:italic}.cm-s-prolog span.cm-xpce_class_user{color:#000;font-style:italic}.cm-s-prolog span.cm-xpce_class_undef{color:#000;font-style:italic}.cm-s-prolog span.cm-outofsync{border:1px dotted red}.cm-s-prolog span.cm-html{color:#909;font-weight:700}.cm-s-prolog span.cm-entity{color:#909}.cm-s-prolog span.cm-html_attribute{color:#909}.cm-s-prolog span.cm-sgml_attr_function{color:#00f}.cm-s-prolog span.cm-http_location_for_id{font-weight:700}.cm-s-prolog span.cm-http_no_location_for_id{color:red;font-weight:700}.cm-jumped{background:#ff0}.CodeMirror-hover-tooltip{background-color:#ffd;border:1px solid #888;border-radius:4px 4px 4px 4px;color:#000;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-hover-tooltip .pred-name{color:#00f;font-family:monospace;margin-right:5px}.CodeMirror-hover-tooltip .pred-tag{font-weight:700;margin-right:5px}.CodeMirror-hover-tooltip .pred-summary{font-style:italic}.CodeMirror-templates-variable{outline:solid #4664a5 1px}.CodeMirror-templates-variable-selected{background-color:#b4d7ff}.CodeMirror-hint-template{background:url(data:image/gif;base64,R0lGODlhEAAQANUAAH5weoJ1g4h8kY+EoZaMsZyTv6CYyGd9qWqArG+Fr3aLs3yRuIKXvYmdwY2hxIaUroiVrIyXqoidwZGlx4+aqJScpfr9//f8//b8//n9/9Xz/+v5/5ifovH7/+n5/+36//D7//T8/+r6/+v6//P8//f9//b9//r+//n+/56inqKlm6iol62rlP7xevzndvjQasiYQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAaEwJhwSCwOYcikEkmEtZ7QKKzpMhgKhIEgAHBNj6+wePwVsjTotJpFXGk88Hh8RVRpJo4GY6FIIDwqRCkaIxuFIoUjIylEHHd5e30IHxxEFRogIB2ZmpoVRBR3EgsJByGnJBREERolFyWwJhgmJRFEEBonFigoFhYZvRBED8TFxsRGyUVBADs=) no-repeat left center;padding-left:18px;margin:3px 0}.CodeMirror-hints-contextInfo{position:absolute;z-index:10;border:double #d4d0c8 3px;max-height:200px;max-width:400px;min-width:400px;overflow:auto;background:#ffffe1;font-family:Tahoma;font-size:12px;padding:5px}.CodeMirror-hints{overflow-x:visible}.CodeMirror-hint{position:relative;max-width:none;overflow:visible}.CodeMirror-hint-description{display:none}.CodeMirror-hint-description.active{display:block;position:absolute;z-index:20;left:10px;top:0}.CodeMirror,.prolog-editor{height:100%}.CodeMirror pre.CodeMirror-placeholder{color:#999}.CodeMirror .source-msg.error{color:red;border-left:2px solid red}.CodeMirror .source-msg{position:relative;border-left:2px solid #000;padding:0 5px;background-color:#ddd;cursor:hand;cursor:pointer}.CodeMirror .source-msg>span.glyphicon{color:#000;position:absolute;right:5px;top:5px}.CodeMirror .source-msg-charmark{height:1.5ex}.CodeMirror .source-msg:hover{text-decoration:line-through}.CodeMirror-hover{outline:1px solid grey}.CodeMirror-target-line{background-color:#ff0}.CodeMirror-search-match{background-color:#ff0}.CodeMirror-search-alt-match{background-color:#bee}.CodeMirror .trace.call{background-color:#0f0}.CodeMirror .trace.exit{background-color:#0f0}.CodeMirror .trace.fail{background-color:red}.CodeMirror .trace.redo{background-color:#ff0}.CodeMirror .trace.exception{background-color:#f0f}.Prolog-breakpoints{width:1em}.breakpoint-marker{color:#822;padding-left:4px;font-size:120%;position:relative;top:-.2em}div.edit-modal{position:absolute;left:0;right:0;top:0;bottom:0;z-index:2000}div.edit-modal>div.mask{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.2}div.edit-modal .goto-source{position:absolute;padding:.2em .5em 0;border-radius:5px;border:1px solid #000;background:#fff;box-shadow:10px 10px 5px #888;z-index:2001}div.CodeMirror-dialog{border:1px solid #888;background:#f8f8f8;box-shadow:10px 10px 5px #888}div.prolog-query{height:100%;padding:5px;background-color:#eee;position:relative}.prolog-query-editor .buttons-left{display:block;position:absolute;bottom:10px}.prolog-query-editor .buttons-right{display:block;position:absolute;bottom:10px;right:5px}.prolog-query-editor div.prolog-prompt{position:absolute;top:5px;left:10px;heigth:100%;vertical-align:top;font-weight:700}.prolog-query-editor div.query{margin-top:3px;height:calc(100% - 35px);margin-left:2em}.prolog-query-editor div.query-buttons{margin-left:2em}span.run-chk-table{margin-right:5px;color:#777}span.run-chk-table input{position:relative;top:2px}ul.dropdown-menu.history{max-height:30ex;overflow:auto}div.prolog-runners{width:100%;height:100%;background-image:url(../icons/owl_25_years.png);background-size:90%;background-repeat:no-repeat;background-position:35% 50%;overflow:auto;padding:0 5px 0}div.prolog-runner{position:relative;padding:2px 0 2px;margin:0;border:1px solid #ccc;border-radius:5px}div.prolog-runner.tabled{border:0}div.prolog-runner>a.close{position:absolute;top:-4px;right:-10px;z-index:10}div.prolog-runner:focus{outline:0}div.prolog-runner.iconic>div.runner-results{display:none}div.runner-title{padding:0 5px 2px;border:2px solid #333;border-radius:5px;box-sizing:border-box}div.prolog-runner:focus div.runner-title{border:2px solid #000}div.runner-results{padding:2px 0 2px 0;background-color:#fff;border-radius:5px}span.answer-no{float:right;color:#060;font-size:80%;margin-right:2px;font-style:italic}div.answer{padding-left:5px;border-radius:5px}div.answer.even{background-color:#eee}div.answer.odd{background-color:#fff}div.response{font-style:italic;color:#00f;font-size:90%;margin-left:10%;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:0 5px}span.prolog-true{font-weight:700}span.prolog-false{font-weight:700;color:red}div.cputime{text-align:right}div.cputime span{background-color:#ccc;border-radius:5px;border:1px solid #888;padding:0 5px;font-size:80%;font-style:italic;color:#060}span.runner-state{position:relative;top:2px;width:1.5em;height:1.5em;margin-right:5px;background-size:100%;background-repeat:no-repeat;display:inline-block}div.runners-menu{position:absolute;top:3px;right:5px;z-index:2000}div.runner-title button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0}div.runner-title>button{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:3px 0;color:#000;float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff;margin-left:5px}div.runner-title>button.rtb-toggleIconic{padding:8px 0}div.runner-title>button:hover{opacity:.8}span.runner-state.idle,span.runner-state.wait-input,span.runner-state.wait-next{background-image:url(../icons/logo.png)}span.runner-state.wait-debug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMfEyg27OEfWQAAAYdJREFUWMPtVsFtwzAMJINMwlHyt0foCIW6gUYQMkJGsP8dRauwH9GQacqiDffThoARR6LE4/EoGeBt/93w6AIG4J3N8FcA7AXVm/BBMDdP8JkIsASqHx20BtMD7bKJiBnAfErc5nzld31wDQKuBuEN3mOjHj+j9GZmVuaWv4xNRHwo+7Kgmxk4dCH/WyDuemDI2cMQIGx5ZaOv+Uz9RQNepfdYqPbzB2/9ekGwAaJ7ElpOuiTooFb7zEQw5Gyejs2TcMgZhpxhJjLRYkcjXv8mgJloQS4gpgoMO4RqsMjNEoSYGADg8XquFgqIs1et0Rm4y8BYqK9rJ+8nrm7//VwY4BDT8oh66w7wdINuY1i36FYDQr+2r5gWRoQBLcxaM71vhGbHtACkGCDEtBp7vJ4rbVhlGvc1g5ujOMWARjlMG3NeQI0xQPj4hG9dzgLeKLMkxRLzbmlBJjUQi5FqDmv/lp9O+LY3mWJAzY7F2JG5PXbBWwaZ9/hc+g3f2lCPW36Xg3nbn7EfAs3X9neMq50AAAAASUVORK5CYII=)}span.runner-state.running{background-image:url(../icons/running.gif)}span.runner-state.false,span.runner-state.stopped,span.runner-state.true{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdXSHpT9FYVplamBykExLT4mYtZByMb6gSPrIbO/Sk5OTkw4LBv///4iQZ38AAAAKdFJOUwH4Xfn/K/79yv8b7m9OAAAAAWJLR0QQlbINLAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+AJFQwTJ324eWMAAAIsSURBVDjLjZXtmoQgCIVDSFSy7v9u96DWZO3uM/5oJnvj64Aty2uRr7B8s1iwaP0GjUL0HboqEyn/E8H1KImj+rl/5cKnSzgnYqXuIrDyIxUVaT4DNZRE26vY1/HWRSqpREq4AiKPQP0XBrClnxxX9vgYBkQjcYyEq3rNHGe5mw06TBGVYrZtZiXi3jc5z9XgzlKxWrdtB1yrlUbKHKtLhBCi1W2/1laNyW081AgqbnK/LQEbo/BTN0Qbty3v+wxbFA2vHmGrgsdIa28/Da6mwi//sZH7cSQnj2OwRR9mCaRnZHYcR0dTz22Lty5b15BISs+9dDScKMxCCKYUVu8TkSzROvqxWkbJTIduC2XorIT0+6N0WH/DTpQYfaCZl5QZfzletbdBnLdbPFH0nLfKyP+zTlQqUGiWEUALRJtV2/cXjxJkxKiRF2TPmNGWlpWZdDU8LR/2UbAVCjT9S5rI0vTKc2dRLrXXqoworPRyoa7zICaRXliv65H80quFSjz7RaWMXrXiZGrqiSf16OwlqZZ6lfLUw7tF0vJurVtnDx02Y8069/bKWeM8Lz4xxav/rAA6mHmCfVxwtGDIc5rcZ9/0IDCy1ee1GoYlYztqjuvk3mWGAWSHg8BKKd568C6u5S2EhmaFxgrBtUXoZxDc7dmbalILsLsBLe09HFRHc/gg/XhJ11Hc0CuVwK/D+ubhXaE/VmpWw5foL2fK718FVOGp5p+fGBys6b3/A/dgJEXSAh3eAAAAAElFTkSuQmCC)}span.runner-state.aborted,span.runner-state.error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdT9FYWBykExLT1planSHpYmYtZByMb6gSPrIbO/Sk/8AAA4LBv///y1hUbcAAAAIdFJOUwH4Xfkr/cr+eNcn5wAAAAFiS0dEEJWyDSwAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCRUMAA5e5aCdAAACE0lEQVQ4y41VCZKEMAiUIIQcjv//7TZJHDXubkmVo9FOczRkluVh5BaWN8YGo/UdlOgl1JhI+J8Ivp8UpCRyrh+58OGSHMpCbbEGGU9nfGIWnShQg5JJ24r3E5axFouk+AWoRSB+N2N8kzPHlT0VBoFJdGBkcj9tG3O60gbpVEDkXGqtpeRIETuc4V4N7liKZdu2+gF628pAPvLyEACsn6/VLXscMqsRxDhv2+dqFcTxqRuijaV+JgPWJDyE59I4kVa/DSyK8vAfu/d9V0fu+8BmmWjJYm3uy77vHao93nqNdl2DsuVOmjtUDyhoIQSThnWBMmbJZOR0suZRhtJkQ7PDNfSEmnWkrw2DHeWAQlo0QmJA8UAcv4Ua7Me6QrQGBWtq8sXt84dtDpUGbQ10YfWsazkXiDUlQHRZFbEAfXisWT39XE4oOknDPsqlYpcKAOlXGcVCQjcJUpe17Add0V4DQO+DGKw1S9ZrQpq9CdLcL94DteR78j4QcfLvTQBpy1yoUrOk+SAIESHMtUVvYwjleabxfV4Gskk6+Xf58gVcXdLop4DprbOTtJcxVx9Zv0p2mcRpL0fGgpX4K/+WMTIFP96aeGfepBdaxE6WGBoL9MYudt2J3F2ye7AKujYXioFICBGM6941T4+j8HCytrjP70rzAbte+oHjs/C/mjqrvYaavfrbCMj+oeYfUJ/LX/z/ANqPJNQJtoGtAAAAAElFTkSuQmCC)}div.controller.running>span.running{display:inline}div.controller.running>span.sparklines{display:inline}div.controller.wait-next>span.sparklines{display:inline}div.controller.wait-next>span.wait-next{display:inline}div.controller.wait-input>span.wait-input{display:inline}div.controller>span{display:none}span.wait-input button{float:right;box-sizing:border-box}span.wait-input span{display:block;overflow:hidden}span.wait-input input{width:100%;box-sizing:border-box}pre.prolog-message{white-space:pre-wrap;padding:2px 2px;margin:0;width:100%}span.output.error-context{display:block;position:relative;padding-left:25px}span.output.error-context:hover{text-decoration:underline}span.output.error-context>span.glyphicon{position:absolute;top:5px;left:5px}a.goto-error:hover{text-decoration:none;outline:2px solid #337ab7}pre.msg-information{color:#060;font-style:italic}pre.msg-informational{color:#060;font-style:italic}pre.msg-warning{color:red}pre.msg-error{color:red;font-weight:700}table.prolog-answers{width:100%}table.prolog-answers td{padding:0 5px;border:1px solid #888;vertical-align:top}table.prolog-answers th{padding:0 5px;border:1px solid #888;text-align:center}table.prolog-answers tr:nth-child(odd){background-color:#eee}table.prolog-answers tr:nth-child(even){background-color:#fff}table.prolog-answers tr.projection{border-bottom:2px solid #333}tr.projection th.pl-pvar{color:#800;font-weight:700}tr.projection th.residuals{color:#888;font-weight:400;font-style:italic}.answer-nth{width:2ex;text-align:right}th.answer-nth{color:#888;font-weight:400;font-style:italic}td.answer-nth{color:#060;font-size:80%;font-style:italic;background-color:#eee;vertical-align:top}div.trace-buttons button>span{display:none}div.RIP,div.trace-buttons button{display:inline-block;width:24px;height:24px;background-size:90%;background-position:50% 50%;background-repeat:no-repeat;margin-left:5px}button.nodebug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDQAOjeB7qwAABLlJREFUaN7tWltMHGUU/v7ZYSmXBbpbEDXYGi6VCmpo+2BMDETJQpvyYBVvNGmIIabaGH1Aa3wg6UubGH1Qa9Rq2jRdEqlPmBhSG0LUxhZptlDKStGEWIHtUsp1F3b3P8cHdpYBamEH9kLSk5xkM5OZnG/O951z/pMF7lt8TUT6wNFzI+8w0KAAZz56MffYRgTgBZACAEKIE8GenMNNTYLiBUAx8EyK9oOZD6Fk+EzDV5y0kQBABwAcxGvZluG2xm89lg0FgJkhiUHEYJIVSpLvwpHTN20bAoAW/BaLAkkEIoaUvNsvA22Hv7uRndAAmAEKffmcTBUP2ZJCmSBIyTuFX7l06IuBgoQFQETzAcv5LFjTTdiabQYxQtfoUWb5S8NnfaUJCUDjvUYdIkZWugn5DyaDodEJuRRER/2nfU8nYAYYUoYCJYTdkqqiKC9Nn6XNMkDn6473VCYWAMnhL7/U0zeZsGNbGhQFWpbSSHLry0edLyQQhWgZhfSemmxCaX4GVJMGgpOJ+Pv9TVfqE4dCmoj57p5sVvBkYRbMZhNIEiSxSUo+ue/DzncTAkAoqP+lEhHDnCRQtj0TaSkmTTeCiD+xN146lhAUWo2rJoGyYisy0tVw5ljS+8+9d/HzpiZW4ibicOMKBXUvFwIoK7bClmXW95C32sd+O13e1K7GqQ8QpORVZ0IAKCu24QFrSrgAyCDV+UeUH8oPtm+Kj4iX9IGVnBh4qtiKvNy0cBYlUc20iX96pv5XSwwBkI5GkTkzUFpkRf4jGQt0Ii6flr4LO19t3xLTUYIiEPNiEIzHCzajpNCqzU4g4t0+Eegoeqn14RiJmMJUMuoFWzPxxHbb/GguGcy0Q1WTfi55pS0vNp1YsqEM6L1wWyZ2leSED+YMPEaCv4kkHtW4iOeBrNWIF7+DBYuoA1ioImsD4Pr7Drpdo9AwCMClkPJGVAHIJQI2dCQFw3l9FAODE/rLF83JyXudpyrGo5sB3RwkDWyDmIA/em/hn6Ep/XKqTVXFfuepiplI36caLaNS0jL+rubZzm43Rm7p4xQtIjhR191c6zeSTYMijpxCQUm47HRj9I5Pf/lkX3DiTbTUSqM6iomI/QHC5asjmJic01ebj12OqkZArKkSGKDQ4g68ks35JTqvujE149dvZD9wOaqPr8c4bUDEq+8D3tkgunrc8PqC4cchxNt9DvuX63WgMVxGpbw3hWa8AVzp9WBuLhx8gBkHXc12x3qeyAxoYGUKTU374ewbRSCgaVP4WEGt66z9x/U+ExurQlI7kS2/Pz45i2t/3oZcuDnJkDWus3s6orGVMN4H7pKB2+Oz6P9rTB+8h4Wodjn2dEVrL2RQxMv7gGfMi4HBcZBkbbK8SRCV/Q67K5qbOcMa0IvY7ZnB4NBkOHgAN4SQlf2OvYPR3o0appAGZMg9gyH3lD4bThPUqmuOKncsttMGRTwf/L/uGQwvDr4rEKTqvpbnPYiRKWsR8YgueAG0pU4Hnh1o2ROz4A2eiWnRYmthopys6Wrd50WMzdhuNCRiABACjlSL7fXeFmPjcDwo5CPS6rw4cb3o9wNdX+8KIE5mZBo9AsYBhjjnarbH/a8G9y3e9h/uU+EcypgobwAAAABJRU5ErkJggg==)}button.continue{background-image:url(data:image/png;base64,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)}button.skip{background-image:url(data:image/png;base64,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)}button.up{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDYM6zDhxQAABQZJREFUaN7tWW1oVWUc/z3n3JdtXudUzBfyZcuRaUVSmbVerDQLC0FIkCAR+1YIUhLNivslqm9ClrhR2ZQopPrSlyAQMZGQymXZjERN0d07d9e2u3nOPef5//pwPHdznqsbe+buwD8cuFye8zy/3///+7889wJlZp3Nj6RzTcv7O3c/2ExC3Wi9VW4EFGUrqStJeaVj133vTTgCpI6TAlID0G9lP1q8aYIRCMCTGhSBQJrbd9Y/P5EiUARPaoBiU8uX53bU3hspufEEm/14RcpOXK6xPUm4AAAHCviTIhWkhmUnob18SOQUtL98zhsXLo0Lgb4vVi7VmquE3lMk7yd1DSixwOMS5XlU3bUOfW3fQnwHpIZQDuve5Mra9Bkn3Dc21sDzn69+VqAbfS2PBSBZBHg98KSGshJILdmA7tZPQQpA3aCqej4j8ZJS4JgS6Nz3XHXCkxaBrOUQsCFAKAuIVUApACIABQoDa2KTZ8GqmIZU/QvoafsmIAVuOPtB9T9Az7tjJqHuvasXWoLvKXJn6F0oC/bUOljVc2CnZgGJFJQ1fP/1tO1H/9mDoGiQQtLfWNfo7DVOgC3PTMqL+pmUJaHX7RmLEJ+9FIhXjmJnQdcvTXCyv4eSc6nkaeNltFfUJyF4QCFe+zjitz8E2AlA9CgeYso9G6Hik640OSQVrTeN5kBfy6oHtJaXQ9nE5zXAnjIfoBjZ//L5Q9Bu1+AiesAoAdFqK+mD1LBr5sOeugAIvDVqczqO47+2/YO/2lfX6O4wRiDf/PRMTf/FsFTaMxYFob9evoiGOF3QTi5ITt8BKVBKITl9EVS8CgBQ6DmHXOsegAzegzroeu5mpUBjBHxLngAlTgpU1TSoZHWo1YhxwYd7/iiczK+QQt81/QAU2JUzMH3ZFminC52/7Qa1G75+Mum56xamUTDaBwhpCOu7Pem2krqn5yB/8jv4+YtgRDMDBRQNL38BLPQhd6wZUugNNd8hgjVz08iZ78SU5SEAq3JaSfn0n/5xKPgsoY8R0g3qbopsJkWRGrnje+Dl24s5LEqvrX/HPzV4P3MRoJ4ZRsCKV0Umr+7PopD7OwQvQv3a3LntTWo9iotPv5/aRGqb1HC7ilhFERvrt/tHhu5pMgJTQznAsiMJuJfaBo0TbJn3evuuUuP0EGuse7uwf8zuA0yviJF6MikggioS1Yz83otFzQv9r0rdB64el1XTHdsLH5Y620gEMnW5ZKw/roKZR4EkEAyLV1eqy5eKEdDC1pL1YODDD/967qs35Uo5eCQG9bWP+BDfDdfJgm0dmWj06vCVD630CuufTMO/3rkxowREACWRFYjiIezSgPSH8/xQSyXcNflCxTLXd44uSSN/o3PNEMgArLxyCYGKHh+0N7jOe6W2mrUNfYBzYLhHG40AKIFbo5oYpdikaGi4M11GEY7QjJIQdRE8DQ145nOAOqgLUQCHjgzlSUCC4hdJwDx4gwQyIJMDEYiag8Q8+DGMgERKaCzMIIGB5IzyNMufgB7oAyUkVPYEgkRFySpU1gTCJgWlSuQAyzwCxQ47YSUkxW6b+etr3CwzMk73JjM+qTn8SsNCWRGo3wIX9HcCGA6DApTaYYrAVT/uPnr3iRFl2k9/LFamBDhC2CoyB85nazAe1rD4+IjWHz5RIonPZGePCwGKb0ZCownleEmo7P5mHVUfeLj20IhePnIat+yWTXT7H9J2ChlDGcHsAAAAAElFTkSuQmCC)}button.retry{background-image:url(data:image/png;base64,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)}button.abort{background-image:url(data:image/png;base64,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)}div.RIP{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAUHAmNlaKSkpXtpZllZWVx9LsHLo9bX2Wx9jpazUak9Lu3s797g33SZKnybRP///5NI/qoAAAAHdFJOUwVE/v+8OP47SgHcAAAAAWJLR0QQlbINLAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AJFQwBEyT4/QUAAAFbSURBVDjLdVKBooMgCGxggQj2/3/7DnNb7m2kdspxgLVtN3sQw8r2y4glCaw/KAW+WivRD5EHK1trrTSqun8TcNWWjFYr0zcBD1FuxtyQ5NO9K2oTlYYyCDmYZcnC6u5wqzAJt1Kx9ZvKHsivWtu0wqLht16QXjULuGwnTv5Ngl2H5vSPDCErocAq7mnHq1IplAqPO4E0qOCqK26aIkrhVYGSgDAqAeyJF4Lj0C/SIACvNcBBWXtUyCeuHEsNUyGdUKm+tpmfgWo4ZtScSPN5D3FFP6f/J7wMPh8CH10oDq8xF12LRKhex8Od1FhT4GNkAs2RD7Yu7y7s6IfNGq5CjuPobwU7JaIboqz3nqTTQqy/auhiZgJfN5Hk9DxJlP/dfp7d8jklh2GRwR5BEEkwouY71wQ2ECrsUICN5WZznynyjS7GGDg7mLsDCjd7bmb3LwQ8xjbXx/bG2x+HDRcuxXGCugAAAABJRU5ErkJggg==)}span.depth{display:inline-block;font-weight:700;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAUCAYAAABF5ffbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBDjQRuYQ78AAAABJ0RVh0Q29tbWVudABEZXB0aCBtYXNrQcBmawAAABhJREFUGNNjYEAD7Wdr/zMxYAGjggMlCACJuAL3jmFt7AAAAABJRU5ErkJggg==)}span.port{font-weight:700;padding-right:.5ex;margin-right:.5ex;background-color:#ccf;display:inline-block;width:11ex;text-align:right;border-radius:5px}span.port.fail{color:red}span.port.redo{color:#ff0}span.port.exit{color:#0c0}span.port.exception{color:#f0f}div.prolog-exception{color:red;font-size:80%;margin-left:5em}div.controller.running>span.sparklines{margin-left:.5em}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.render-multi{position:relative;vertical-align:top;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAQAAAA6heU+AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAEMQAABDEAbRyZ/IAAAAHdElNRQfeCg8LIivxaI+JAAABT0lEQVQoz33SsW5SYRgG4AchbSkcYrVpo6bGoXFydvMK3HsJLt6Ct+AFeBVunVx0cjFODvofqyDQFDVttef8cg6IA4SkFXjX70ned/gqk4kV+SUVnGs8rayC54KA/e7DvdpydiZIJXbEJyyFp4IjW27IFG+Xwp9SR266LhM/PT5dAn9IfbGtJROtP2ch/C711bZELmrYOFwIB1JtOxpyfzQl1n4vgANBx65NuaGmlsR69h88EXTcUpcpNLQkknJ3dAUeS327wlr+fpxe57Av6F1iLYmxOLgEe4K+2zZkitm2xFgumsOJrs/67liTGc4qm8YyUbw7gxNdwbE9NZlixhKlXBTl+1NYaU9SPfdU5Ubz0inL5aJya3h2oBa03XdNZqzZaR5uvq5/mFyUcVSUo0JRLerlxQFqwQPVN/FF+T4Jj0YL32ial8/eJfDK6vwDMhCTheu9OHEAAAAASUVORK5CYII=);background-size:15px;background-repeat:no-repeat}#render-select{position:absolute;background-color:#fff;padding:5px 0 5px 20px;border:1px solid #000;border-radius:5px;box-shadow:5px 5px 5px #888;z-index:500;white-space:nowrap}.render-selecting{outline:1px solid #800}.render-multi-active{position:absolute;left:0;top:0;width:20px;height:20px}div.render-item a{float:right;padding:0 10px 0 10px}div.render-error{display:inline-block}div.render-error span.error{color:red}pre.console{padding:0 9px;border:0;margin:0}pre.measure{padding:0;border:0;margin:0;display:inline}span.format{white-space:pre;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}a.download{margin-right:5px}a.download span.glyphicon{margin-left:1ex}.render-table{border:2px solid #333}.render-table td{padding:0 5px;border:1px solid #888}.render-table th{padding:0 5px;border:1px solid #888;text-align:center}.render-table tr:nth-child(odd){background-color:#eee}.render-table tr:nth-child(even){background-color:#fff}.render-table tr.hrow{border-bottom:2px solid #333}.render-code-list{color:#040;font-style:italic}.render-ellipsis{colour:#00f;padding:0 5px}.render-svg-tree{padding:5px;display:inline-block}.render-svg-tree svg text{padding:.5em .2em}.render-svg-tree svg g.collapsed g text{padding:0 .5ex}.render-svg-tree svg polyline{fill:none}.render-svg-tree g.noleaf text{font-weight:700;fill:#00f}.render-svg-tree g.leaf text{font-weight:400;fill:#000}.render-C3{display:inline-block}.answer svg{vertical-align:top}.render-graphviz{display:inline-block}div.R.svg svg{overflow:visible}.fold{display:none}.pl-ellipsis{color:#00f;text-decoration:underline}.pl-functor:hover{color:#00f;text-decoration:underline}.pl-infix:hover{color:#00f;text-decoration:underline}.pl-var{color:#800}.pl-ovar{color:#800;font-weight:700}.pl-anon{color:#800}.pl-avar{color:#888}.pl-var{color:#800}.pl-atom{color:#762}.pl-functor{color:#000;font-style:italic}.pl-comment{color:#060;font-style:italic}span.diff-tags{margin-left:2em}.diff-tag{border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.diff-tag.added{color:green}.diff-tag.deleted{text-decoration:line-through;color:red}pre.udiff .udiff-del{color:red}pre.udiff .udiff-add{color:green}pre.udiff{max-height:30em;overflow-y:auto}/*!
+ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox span{margin-left:20px}.dropdown-menu>li{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer}.dropdown-menu .sub-menu{left:100%;position:absolute;top:0;display:none;margin-top:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:#fff;box-shadow:none}.left-caret:after,.right-caret:after{content:"";border-bottom:5px solid transparent;border-top:5px solid transparent;display:inline-block;height:0;vertical-align:middle;width:0;margin-left:5px}.right-caret:after{border-left:5px solid #ffaf46}.left-caret:after{border-right:5px solid #ffaf46}.dropdown-icon{margin-left:-12px;margin-right:5px;padding:0;background-repeat:no-repeat;background-size:100%;background-position:50% 50%;display:inline-block;vertical-align:middle;height:18px;width:18px}a.accelerated{position:relative}a.accelerated span.accell-spacer{color:#fff}a.accelerated span.accell-text{color:#888;position:absolute;right:10px}body,html{width:100%;height:100%;padding:0;margin:0;overflow:hidden}nav.navbar{margin-bottom:0}#content{width:100%;height:calc(100% - 55px);padding:0;background-color:#fff}.pane-container,.pane-wrapper{width:100%;height:100%;background-color:white: green}.splittable{background-color:#fff;width:100%;height:100%;padding:5px}div.tabbed{height:100%}div.tab-content{height:calc(100% - 40px)}div.tab-pane{position:relative;height:100%}span.glyphicon.xclose:hover{opacity:.8}span.glyphicon.xclose{margin-left:5px;opacity:.2}a.tab-new.compact>span{padding:6px 0}.nav>li>a.compact{padding:0 5px}span.tab-dirty{display:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAqCAMAAADCkShIAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAICAQAAAAAAADAwHSkoFVtYJvj4wdHPi/37sKOfVvv3joJ+OfLsa6GaOfryVf////09bBAAAAAGdFJOUwD+LWbH9lfFP3wAAAABYktHRBCVsg0sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkVDAQs7+kkfQAAAetJREFUSMeVVY3WqjAMc7B1XffT93/bm3aA+l1Q7FGBQ7I0WcHH47RCCMvjhwpe9/Fr+JEBLMV4nwCBmHO8LwFkzplvEyBAIGS62dSClUveJNZ7DUn2kltNBXdsVcqNaBdriA1tX77hYndcTIG/RwuByAysFzO277sA84RXENoXidUFeMJLrcX2e/kcETthwvH5HG3YHZfWGHCrj763SNm3jCehfyBMAWYxq8HQRFLpmuFT6tnbdltLduyXj+scoolv1NFN9dNxIWE3s9BcfvbvBOrpfGrdcdgILEAJoGlIP4/WHVPYHOAChgGl3lXPJOxFwaUdhAQL3WRSU9UT3+YuF9k82FWv1rydqf4/UqvnWHh6ADAKUdrEziQsUpsdw8fQrHU53IDwN9p9o2qVKEgT+N7piVelN9/Lc3SqIMxkBJVXwnhrCl2QC/TOJAYUnRkdhDeJNURrxIcNVmGW6K/Cm2937AJkX3RPXZ2QXgjPaPfZsXHbC3gdYwI3wnO/Xxx3o+hF7dGaKrJJNGyzMNcNvworNKiNNCg1nI20+14QEaNzkljTAEwHnKvBSVvCVRoDhDa2aGGg1WppjiRYU3BXAVWDYWFo2sEU1J9Wm67KdRrWawdHUNvsH5VOT2f523z/x7xZ6+M3xvr4B2dMHj70RasaAAAAAElFTkSuQmCC);padding:0;background-repeat:no-repeat;background-size:90% 60%;background-position:0 40%;vertical-align:middle;height:30px;width:21px}.nav>li>a.compact.data-dirty>span.tab-dirty{display:inline-block}a.tab-chat{display:none}a.tab-chat.chat-available{display:inline-block;height:30px;width:22px}.tabbed-select{width:100%;height:100%;overflow-y:auto}.tabbed-create{margin:2em 0 1em;text-align:center}label.tabbed-left{text-align:right;margin-right:.6em;white-space:nowrap;width:5em}label.tabbed-right{text-align:left;margin-left:.6em;white-space:nowrap;width:5em}.tabbed-profile>label{font-style:italic;font-weight:400;color:#888}.tab-icon{padding:0;background-repeat:no-repeat;background-size:70%;background-position:50% 40%;display:inline-block;vertical-align:middle;height:30px;width:30px}.tabbed-profile{width:100%;text-align:center}.tabbed-profile .select-profile{display:inline-block}form.search-sources{margin:3em auto 1em;width:80%}div.restore-tab{text-align:center;margin-top:2em;font-size:200%}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.cm-s-prolog span.cm-number{color:#000}.cm-s-prolog span.cm-neg-number{color:#000}.cm-s-prolog span.cm-atom{color:#730}.cm-s-prolog span.cm-uatom{color:#730}.cm-s-prolog span.cm-qatom{color:#008;white-space:pre}.cm-s-prolog span.cm-string{color:#008;font-style:italic}.cm-s-prolog span.cm-string_terminal{color:#008;font-style:italic}.cm-s-prolog span.cm-bqstring{color:#040;font-style:italic}.cm-s-prolog span.cm-codes{color:#040;font-style:italic}.cm-s-prolog span.cm-chars{color:#040;font-style:italic}.cm-s-prolog span.cm-functor{color:#000;font-style:italic}.cm-s-prolog span.cm-tag{color:#000;font-weight:700}.cm-s-prolog span.cm-key{color:#000;font-weight:700}.cm-s-prolog span.cm-ext_quant{color:#000;font-weight:700}.cm-s-prolog span.cm-qq_content{color:#900}.cm-s-prolog span.cm-qq_close,.cm-s-prolog span.cm-qq_open,.cm-s-prolog span.cm-qq_sep{color:#00f;font-weight:700}.cm-s-prolog span.cm-qq_type{font-weight:700}.cm-s-prolog span.cm-comment{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-comment_string{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-var{color:#800}.cm-s-prolog span.cm-var-2{color:#888}.cm-s-prolog span.cm-anon{color:#800}.cm-s-prolog span.cm-singleton{color:#800;font-weight:700}.cm-s-prolog span.cm-identifier{font-weight:700}.cm-s-prolog span.cm-module{color:#549}.cm-s-prolog span.cm-constraint{color:#008b8b}.cm-s-prolog span.cm-head_exported{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_unreferenced{color:red;font-weight:700}.cm-s-prolog span.cm-head_built_in{background:orange;font-weight:700}.cm-s-prolog span.cm-head_iso{background:orange;font-weight:700}.cm-s-prolog span.cm-head_hook{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-head_extern{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_public{color:#016300;font-weight:700}.cm-s-prolog span.cm-head_constraint{color:#008b8b;font-weight:700}.cm-s-prolog span.cm-head{font-weight:700}.cm-s-prolog span.cm-goal_built_in{color:#00f}.cm-s-prolog span.cm-goal_imported{color:#00f}.cm-s-prolog span.cm-goal_autoload{color:#008}.cm-s-prolog span.cm-goal_undefined{color:red}.cm-s-prolog span.cm-goal_dynamic{color:#f0f}.cm-s-prolog span.cm-goal_thread_local{color:#f0f;text-decoration:underline}.cm-s-prolog span.cm-goal_constraint{color:#008b8b}.cm-s-prolog span.cm-goal_recursion{text-decoration:underline}.cm-s-prolog span.cm-meta{color:#00f}.cm-s-prolog span.cm-op_type{color:#00f}.cm-s-prolog span.cm-file_no_depends{color:#00f;text-decoration:underline;background:#fcd}.cm-s-prolog span.cm-file{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-nofile{color:red}.cm-s-prolog span.cm-option_name{color:#3434ba}.cm-s-prolog span.cm-no_option_name{color:red}.cm-s-prolog span.cm-flag_name{color:#00f}.cm-s-prolog span.cm-no_flag_name{color:red}.cm-s-prolog span.cm-error{border-bottom:2px dotted red}.cm-s-prolog span.cm-instantiation_error{border-bottom:2px dotted red}.cm-s-prolog span.cm-link{color:#730}.cm-s-prolog span.cm-expanded{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-undefined_import{color:red}.cm-s-prolog span.cm-unused_import{color:#00f;background:pink}.cm-s-prolog span.cm-xpce_method{font-weight:700}.cm-s-prolog span.cm-xpce_class_built_in{color:#00f}.cm-s-prolog span.cm-xpce_class_lib{color:#00f;font-style:italic}.cm-s-prolog span.cm-xpce_class_user{color:#000;font-style:italic}.cm-s-prolog span.cm-xpce_class_undef{color:#000;font-style:italic}.cm-s-prolog span.cm-outofsync{border:1px dotted red}.cm-s-prolog span.cm-html{color:#909;font-weight:700}.cm-s-prolog span.cm-entity{color:#909}.cm-s-prolog span.cm-html_attribute{color:#909}.cm-s-prolog span.cm-sgml_attr_function{color:#00f}.cm-s-prolog span.cm-http_location_for_id{font-weight:700}.cm-s-prolog span.cm-http_no_location_for_id{color:red;font-weight:700}.cm-jumped{background:#ff0}.CodeMirror-hover-tooltip{background-color:#ffd;border:1px solid #888;border-radius:4px 4px 4px 4px;color:#000;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-hover-tooltip .pred-name{color:#00f;font-family:monospace;margin-right:5px}.CodeMirror-hover-tooltip .pred-tag{font-weight:700;margin-right:5px}.CodeMirror-hover-tooltip .pred-summary{font-style:italic}.CodeMirror-templates-variable{outline:solid #4664a5 1px}.CodeMirror-templates-variable-selected{background-color:#b4d7ff}.CodeMirror-hint-template{background:url(data:image/gif;base64,R0lGODlhEAAQANUAAH5weoJ1g4h8kY+EoZaMsZyTv6CYyGd9qWqArG+Fr3aLs3yRuIKXvYmdwY2hxIaUroiVrIyXqoidwZGlx4+aqJScpfr9//f8//b8//n9/9Xz/+v5/5ifovH7/+n5/+36//D7//T8/+r6/+v6//P8//f9//b9//r+//n+/56inqKlm6iol62rlP7xevzndvjQasiYQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAaEwJhwSCwOYcikEkmEtZ7QKKzpMhgKhIEgAHBNj6+wePwVsjTotJpFXGk88Hh8RVRpJo4GY6FIIDwqRCkaIxuFIoUjIylEHHd5e30IHxxEFRogIB2ZmpoVRBR3EgsJByGnJBREERolFyWwJhgmJRFEEBonFigoFhYZvRBED8TFxsRGyUVBADs=) no-repeat left center;padding-left:18px;margin:3px 0}.CodeMirror-hints-contextInfo{position:absolute;z-index:10;border:double #d4d0c8 3px;max-height:200px;max-width:400px;min-width:400px;overflow:auto;background:#ffffe1;font-family:Tahoma;font-size:12px;padding:5px}.CodeMirror-hints{overflow-x:visible}.CodeMirror-hint{position:relative;max-width:none;overflow:visible}.CodeMirror-hint-description{display:none}.CodeMirror-hint-description.active{display:block;position:absolute;z-index:20;left:10px;top:0}.CodeMirror,.prolog-editor{height:100%}.CodeMirror pre.CodeMirror-placeholder{color:#999}.CodeMirror .source-msg.error{color:red;border-left:2px solid red}.CodeMirror .source-msg{position:relative;border-left:2px solid #000;padding:0 5px;background-color:#ddd;cursor:hand;cursor:pointer}.CodeMirror .source-msg>span.glyphicon{color:#000;position:absolute;right:5px;top:5px}.CodeMirror .source-msg-charmark{height:1.5ex}.CodeMirror .source-msg:hover{text-decoration:line-through}.CodeMirror-hover{outline:1px solid grey}.CodeMirror-target-line{background-color:#ff0}.CodeMirror-search-match{background-color:#ff0}.CodeMirror-search-alt-match{background-color:#bee}.CodeMirror .trace.call{background-color:#0f0}.CodeMirror .trace.exit{background-color:#0f0}.CodeMirror .trace.fail{background-color:red}.CodeMirror .trace.redo{background-color:#ff0}.CodeMirror .trace.exception{background-color:#f0f}.Prolog-breakpoints{width:1em}.breakpoint-marker{color:#822;padding-left:4px;font-size:120%;position:relative;top:-.2em}div.edit-modal{position:absolute;left:0;right:0;top:0;bottom:0;z-index:2000}div.edit-modal>div.mask{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.2}div.edit-modal .goto-source{position:absolute;padding:.2em .5em 0;border-radius:5px;border:1px solid #000;background:#fff;box-shadow:10px 10px 5px #888;z-index:2001}div.CodeMirror-dialog{border:1px solid #888;background:#f8f8f8;box-shadow:10px 10px 5px #888}div.prolog-query{height:100%;padding:5px;background-color:#eee;position:relative}.prolog-query-editor .buttons-left{display:block;position:absolute;bottom:10px}.prolog-query-editor .buttons-right{display:block;position:absolute;bottom:10px;right:5px}.prolog-query-editor div.prolog-prompt{position:absolute;top:5px;left:10px;heigth:100%;vertical-align:top;font-weight:700}.prolog-query-editor div.query{margin-top:3px;height:calc(100% - 35px);margin-left:2em}.prolog-query-editor div.query-buttons{margin-left:2em}span.run-chk-table{margin-right:5px;color:#777}span.run-chk-table input{position:relative;top:2px}ul.dropdown-menu.history{max-height:30ex;overflow:auto}div.prolog-runners{width:100%;height:100%;background-image:url(../icons/owl_25_years.png);background-size:90%;background-repeat:no-repeat;background-position:35% 50%;overflow:auto;padding:0 5px 0}div.prolog-runner{position:relative;padding:2px 0 2px;margin:0;border:1px solid #ccc;border-radius:5px}div.prolog-runner.tabled{border:0}div.prolog-runner>div.runner-title.runner-button-group{color:#fff;background:#000;display:none;border:2px solid #fff;position:absolute;top:-1px;right:-1px;z-index:10;box-shadow:-6px 6px 5px #888}div.prolog-runner.tabled>div.runner-title.runner-button-group{top:2px}div.prolog-runner:hover>div.runner-title.runner-button-group{display:block}div.runner-title.runner-button-group>button{color:#fff;opacity:.8;text-shadow:0 1px 0 #000}div.runner-title.runner-button-group>button:hover{opacity:1}div.prolog-runner:focus{outline:0}div.prolog-runner.iconic>div.runner-results{display:none}div.runner-title{padding:0 5px 0;border:2px solid #333;border-radius:5px;box-sizing:border-box}div.prolog-runner:focus div.panel-heading{border:2px solid #000}div.runner-results{padding:2px 0 2px 0;background-color:#fff;border-radius:5px}span.answer-no{float:right;color:#060;font-size:80%;margin-right:2px;font-style:italic}div.answer{padding-left:5px;border-radius:5px}div.answer.even{background-color:#eee}div.answer.odd{background-color:#fff}div.response{font-style:italic;color:#00f;font-size:90%;margin-left:10%;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:0 5px}span.prolog-true{font-weight:700}span.prolog-false{font-weight:700;color:red}div.cputime{text-align:right}div.cputime span{background-color:#ccc;border-radius:5px;border:1px solid #888;padding:0 5px;font-size:80%;font-style:italic;color:#060}span.runner-state{position:relative;top:2px;width:1.5em;height:1.5em;margin-right:5px;background-size:100%;background-repeat:no-repeat;display:inline-block}div.runners-menu{position:absolute;top:3px;right:5px;z-index:2000}div.runner-title button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0}div.runner-title>button{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:3px 0;color:#000;float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff;margin-left:5px}div.runner-title>button.rtb-toggleIconic{padding:6px 0 0 0}div.runner-title>button:hover{opacity:.8}span.runner-state.idle,span.runner-state.wait-input,span.runner-state.wait-next{background-image:url(../icons/logo.png)}span.runner-state.wait-debug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMfEyg27OEfWQAAAYdJREFUWMPtVsFtwzAMJINMwlHyt0foCIW6gUYQMkJGsP8dRauwH9GQacqiDffThoARR6LE4/EoGeBt/93w6AIG4J3N8FcA7AXVm/BBMDdP8JkIsASqHx20BtMD7bKJiBnAfErc5nzld31wDQKuBuEN3mOjHj+j9GZmVuaWv4xNRHwo+7Kgmxk4dCH/WyDuemDI2cMQIGx5ZaOv+Uz9RQNepfdYqPbzB2/9ekGwAaJ7ElpOuiTooFb7zEQw5Gyejs2TcMgZhpxhJjLRYkcjXv8mgJloQS4gpgoMO4RqsMjNEoSYGADg8XquFgqIs1et0Rm4y8BYqK9rJ+8nrm7//VwY4BDT8oh66w7wdINuY1i36FYDQr+2r5gWRoQBLcxaM71vhGbHtACkGCDEtBp7vJ4rbVhlGvc1g5ujOMWARjlMG3NeQI0xQPj4hG9dzgLeKLMkxRLzbmlBJjUQi5FqDmv/lp9O+LY3mWJAzY7F2JG5PXbBWwaZ9/hc+g3f2lCPW36Xg3nbn7EfAs3X9neMq50AAAAASUVORK5CYII=)}span.runner-state.running{background-image:url(../icons/running.gif)}span.runner-state.false,span.runner-state.stopped,span.runner-state.true{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdXSHpT9FYVplamBykExLT4mYtZByMb6gSPrIbO/Sk5OTkw4LBv///4iQZ38AAAAKdFJOUwH4Xfn/K/79yv8b7m9OAAAAAWJLR0QQlbINLAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+AJFQwTJ324eWMAAAIsSURBVDjLjZXtmoQgCIVDSFSy7v9u96DWZO3uM/5oJnvj64Aty2uRr7B8s1iwaP0GjUL0HboqEyn/E8H1KImj+rl/5cKnSzgnYqXuIrDyIxUVaT4DNZRE26vY1/HWRSqpREq4AiKPQP0XBrClnxxX9vgYBkQjcYyEq3rNHGe5mw06TBGVYrZtZiXi3jc5z9XgzlKxWrdtB1yrlUbKHKtLhBCi1W2/1laNyW081AgqbnK/LQEbo/BTN0Qbty3v+wxbFA2vHmGrgsdIa28/Da6mwi//sZH7cSQnj2OwRR9mCaRnZHYcR0dTz22Lty5b15BISs+9dDScKMxCCKYUVu8TkSzROvqxWkbJTIduC2XorIT0+6N0WH/DTpQYfaCZl5QZfzletbdBnLdbPFH0nLfKyP+zTlQqUGiWEUALRJtV2/cXjxJkxKiRF2TPmNGWlpWZdDU8LR/2UbAVCjT9S5rI0vTKc2dRLrXXqoworPRyoa7zICaRXliv65H80quFSjz7RaWMXrXiZGrqiSf16OwlqZZ6lfLUw7tF0vJurVtnDx02Y8069/bKWeM8Lz4xxav/rAA6mHmCfVxwtGDIc5rcZ9/0IDCy1ee1GoYlYztqjuvk3mWGAWSHg8BKKd568C6u5S2EhmaFxgrBtUXoZxDc7dmbalILsLsBLe09HFRHc/gg/XhJ11Hc0CuVwK/D+ubhXaE/VmpWw5foL2fK718FVOGp5p+fGBys6b3/A/dgJEXSAh3eAAAAAElFTkSuQmCC)}span.runner-state.aborted,span.runner-state.error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdT9FYWBykExLT1planSHpYmYtZByMb6gSPrIbO/Sk/8AAA4LBv///y1hUbcAAAAIdFJOUwH4Xfkr/cr+eNcn5wAAAAFiS0dEEJWyDSwAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCRUMAA5e5aCdAAACE0lEQVQ4y41VCZKEMAiUIIQcjv//7TZJHDXubkmVo9FOczRkluVh5BaWN8YGo/UdlOgl1JhI+J8Ivp8UpCRyrh+58OGSHMpCbbEGGU9nfGIWnShQg5JJ24r3E5axFouk+AWoRSB+N2N8kzPHlT0VBoFJdGBkcj9tG3O60gbpVEDkXGqtpeRIETuc4V4N7liKZdu2+gF628pAPvLyEACsn6/VLXscMqsRxDhv2+dqFcTxqRuijaV+JgPWJDyE59I4kVa/DSyK8vAfu/d9V0fu+8BmmWjJYm3uy77vHao93nqNdl2DsuVOmjtUDyhoIQSThnWBMmbJZOR0suZRhtJkQ7PDNfSEmnWkrw2DHeWAQlo0QmJA8UAcv4Ua7Me6QrQGBWtq8sXt84dtDpUGbQ10YfWsazkXiDUlQHRZFbEAfXisWT39XE4oOknDPsqlYpcKAOlXGcVCQjcJUpe17Add0V4DQO+DGKw1S9ZrQpq9CdLcL94DteR78j4QcfLvTQBpy1yoUrOk+SAIESHMtUVvYwjleabxfV4Gskk6+Xf58gVcXdLop4DprbOTtJcxVx9Zv0p2mcRpL0fGgpX4K/+WMTIFP96aeGfepBdaxE6WGBoL9MYudt2J3F2ye7AKujYXioFICBGM6941T4+j8HCytrjP70rzAbte+oHjs/C/mjqrvYaavfrbCMj+oeYfUJ/LX/z/ANqPJNQJtoGtAAAAAElFTkSuQmCC)}div.controller.running>span.running{display:inline}div.controller.running>span.sparklines{display:inline}div.controller.wait-next>span.sparklines{display:inline}div.controller.wait-next>span.wait-next{display:inline}div.controller.wait-input>span.wait-input{display:inline}div.controller>span{display:none}span.wait-input button{float:right;box-sizing:border-box}span.wait-input span{display:block;overflow:hidden}span.wait-input input{width:100%;box-sizing:border-box}pre.prolog-message{white-space:pre-wrap;padding:2px 2px;margin:0;width:100%}span.output.error-context{display:block;position:relative;padding-left:25px}span.output.error-context:hover{text-decoration:underline}span.output.error-context>span.glyphicon{position:absolute;top:5px;left:5px}a.goto-error:hover{text-decoration:none;outline:2px solid #337ab7}pre.msg-information{color:#060;font-style:italic}pre.msg-informational{color:#060;font-style:italic}pre.msg-warning{color:red}pre.msg-error{color:red;font-weight:700}table.prolog-answers{width:100%}table.prolog-answers td{padding:0 5px;border:1px solid #888;vertical-align:top}table.prolog-answers th{padding:0 5px;border:1px solid #888;text-align:center}table.prolog-answers tr:nth-child(odd){background-color:#eee}table.prolog-answers tr:nth-child(even){background-color:#fff}table.prolog-answers tr.projection{border-bottom:2px solid #333}tr.projection th.pl-pvar{color:#800;font-weight:700}tr.projection th.residuals{color:#888;font-weight:400;font-style:italic}.answer-nth{width:2ex;text-align:right}th.answer-nth{color:#888;font-weight:400;font-style:italic}td.answer-nth{color:#060;font-size:80%;font-style:italic;background-color:#eee;vertical-align:top}div.trace-buttons button>span{display:none}div.RIP,div.trace-buttons button{display:inline-block;width:24px;height:24px;background-size:90%;background-position:50% 50%;background-repeat:no-repeat;margin-left:5px}button.nodebug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDQAOjeB7qwAABLlJREFUaN7tWltMHGUU/v7ZYSmXBbpbEDXYGi6VCmpo+2BMDETJQpvyYBVvNGmIIabaGH1Aa3wg6UubGH1Qa9Rq2jRdEqlPmBhSG0LUxhZptlDKStGEWIHtUsp1F3b3P8cHdpYBamEH9kLSk5xkM5OZnG/O951z/pMF7lt8TUT6wNFzI+8w0KAAZz56MffYRgTgBZACAEKIE8GenMNNTYLiBUAx8EyK9oOZD6Fk+EzDV5y0kQBABwAcxGvZluG2xm89lg0FgJkhiUHEYJIVSpLvwpHTN20bAoAW/BaLAkkEIoaUvNsvA22Hv7uRndAAmAEKffmcTBUP2ZJCmSBIyTuFX7l06IuBgoQFQETzAcv5LFjTTdiabQYxQtfoUWb5S8NnfaUJCUDjvUYdIkZWugn5DyaDodEJuRRER/2nfU8nYAYYUoYCJYTdkqqiKC9Nn6XNMkDn6473VCYWAMnhL7/U0zeZsGNbGhQFWpbSSHLry0edLyQQhWgZhfSemmxCaX4GVJMGgpOJ+Pv9TVfqE4dCmoj57p5sVvBkYRbMZhNIEiSxSUo+ue/DzncTAkAoqP+lEhHDnCRQtj0TaSkmTTeCiD+xN146lhAUWo2rJoGyYisy0tVw5ljS+8+9d/HzpiZW4ibicOMKBXUvFwIoK7bClmXW95C32sd+O13e1K7GqQ8QpORVZ0IAKCu24QFrSrgAyCDV+UeUH8oPtm+Kj4iX9IGVnBh4qtiKvNy0cBYlUc20iX96pv5XSwwBkI5GkTkzUFpkRf4jGQt0Ii6flr4LO19t3xLTUYIiEPNiEIzHCzajpNCqzU4g4t0+Eegoeqn14RiJmMJUMuoFWzPxxHbb/GguGcy0Q1WTfi55pS0vNp1YsqEM6L1wWyZ2leSED+YMPEaCv4kkHtW4iOeBrNWIF7+DBYuoA1ioImsD4Pr7Drpdo9AwCMClkPJGVAHIJQI2dCQFw3l9FAODE/rLF83JyXudpyrGo5sB3RwkDWyDmIA/em/hn6Ep/XKqTVXFfuepiplI36caLaNS0jL+rubZzm43Rm7p4xQtIjhR191c6zeSTYMijpxCQUm47HRj9I5Pf/lkX3DiTbTUSqM6iomI/QHC5asjmJic01ebj12OqkZArKkSGKDQ4g68ks35JTqvujE149dvZD9wOaqPr8c4bUDEq+8D3tkgunrc8PqC4cchxNt9DvuX63WgMVxGpbw3hWa8AVzp9WBuLhx8gBkHXc12x3qeyAxoYGUKTU374ewbRSCgaVP4WEGt66z9x/U+ExurQlI7kS2/Pz45i2t/3oZcuDnJkDWus3s6orGVMN4H7pKB2+Oz6P9rTB+8h4Wodjn2dEVrL2RQxMv7gGfMi4HBcZBkbbK8SRCV/Q67K5qbOcMa0IvY7ZnB4NBkOHgAN4SQlf2OvYPR3o0appAGZMg9gyH3lD4bThPUqmuOKncsttMGRTwf/L/uGQwvDr4rEKTqvpbnPYiRKWsR8YgueAG0pU4Hnh1o2ROz4A2eiWnRYmthopys6Wrd50WMzdhuNCRiABACjlSL7fXeFmPjcDwo5CPS6rw4cb3o9wNdX+8KIE5mZBo9AsYBhjjnarbH/a8G9y3e9h/uU+EcypgobwAAAABJRU5ErkJggg==)}button.continue{background-image:url(data:image/png;base64,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)}button.skip{background-image:url(data:image/png;base64,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)}button.up{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDYM6zDhxQAABQZJREFUaN7tWW1oVWUc/z3n3JdtXudUzBfyZcuRaUVSmbVerDQLC0FIkCAR+1YIUhLNivslqm9ClrhR2ZQopPrSlyAQMZGQymXZjERN0d07d9e2u3nOPef5//pwPHdznqsbe+buwD8cuFye8zy/3///+7889wJlZp3Nj6RzTcv7O3c/2ExC3Wi9VW4EFGUrqStJeaVj133vTTgCpI6TAlID0G9lP1q8aYIRCMCTGhSBQJrbd9Y/P5EiUARPaoBiU8uX53bU3hspufEEm/14RcpOXK6xPUm4AAAHCviTIhWkhmUnob18SOQUtL98zhsXLo0Lgb4vVi7VmquE3lMk7yd1DSixwOMS5XlU3bUOfW3fQnwHpIZQDuve5Mra9Bkn3Dc21sDzn69+VqAbfS2PBSBZBHg98KSGshJILdmA7tZPQQpA3aCqej4j8ZJS4JgS6Nz3XHXCkxaBrOUQsCFAKAuIVUApACIABQoDa2KTZ8GqmIZU/QvoafsmIAVuOPtB9T9Az7tjJqHuvasXWoLvKXJn6F0oC/bUOljVc2CnZgGJFJQ1fP/1tO1H/9mDoGiQQtLfWNfo7DVOgC3PTMqL+pmUJaHX7RmLEJ+9FIhXjmJnQdcvTXCyv4eSc6nkaeNltFfUJyF4QCFe+zjitz8E2AlA9CgeYso9G6Hik640OSQVrTeN5kBfy6oHtJaXQ9nE5zXAnjIfoBjZ//L5Q9Bu1+AiesAoAdFqK+mD1LBr5sOeugAIvDVqczqO47+2/YO/2lfX6O4wRiDf/PRMTf/FsFTaMxYFob9evoiGOF3QTi5ITt8BKVBKITl9EVS8CgBQ6DmHXOsegAzegzroeu5mpUBjBHxLngAlTgpU1TSoZHWo1YhxwYd7/iiczK+QQt81/QAU2JUzMH3ZFminC52/7Qa1G75+Mum56xamUTDaBwhpCOu7Pem2krqn5yB/8jv4+YtgRDMDBRQNL38BLPQhd6wZUugNNd8hgjVz08iZ78SU5SEAq3JaSfn0n/5xKPgsoY8R0g3qbopsJkWRGrnje+Dl24s5LEqvrX/HPzV4P3MRoJ4ZRsCKV0Umr+7PopD7OwQvQv3a3LntTWo9iotPv5/aRGqb1HC7ilhFERvrt/tHhu5pMgJTQznAsiMJuJfaBo0TbJn3evuuUuP0EGuse7uwf8zuA0yviJF6MikggioS1Yz83otFzQv9r0rdB64el1XTHdsLH5Y620gEMnW5ZKw/roKZR4EkEAyLV1eqy5eKEdDC1pL1YODDD/967qs35Uo5eCQG9bWP+BDfDdfJgm0dmWj06vCVD630CuufTMO/3rkxowREACWRFYjiIezSgPSH8/xQSyXcNflCxTLXd44uSSN/o3PNEMgArLxyCYGKHh+0N7jOe6W2mrUNfYBzYLhHG40AKIFbo5oYpdikaGi4M11GEY7QjJIQdRE8DQ145nOAOqgLUQCHjgzlSUCC4hdJwDx4gwQyIJMDEYiag8Q8+DGMgERKaCzMIIGB5IzyNMufgB7oAyUkVPYEgkRFySpU1gTCJgWlSuQAyzwCxQ47YSUkxW6b+etr3CwzMk73JjM+qTn8SsNCWRGo3wIX9HcCGA6DApTaYYrAVT/uPnr3iRFl2k9/LFamBDhC2CoyB85nazAe1rD4+IjWHz5RIonPZGePCwGKb0ZCownleEmo7P5mHVUfeLj20IhePnIat+yWTXT7H9J2ChlDGcHsAAAAAElFTkSuQmCC)}button.retry{background-image:url(data:image/png;base64,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)}button.abort{background-image:url(data:image/png;base64,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)}div.RIP{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAUHAmNlaKSkpXtpZllZWVx9LsHLo9bX2Wx9jpazUak9Lu3s797g33SZKnybRP///5NI/qoAAAAHdFJOUwVE/v+8OP47SgHcAAAAAWJLR0QQlbINLAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AJFQwBEyT4/QUAAAFbSURBVDjLdVKBooMgCGxggQj2/3/7DnNb7m2kdspxgLVtN3sQw8r2y4glCaw/KAW+WivRD5EHK1trrTSqun8TcNWWjFYr0zcBD1FuxtyQ5NO9K2oTlYYyCDmYZcnC6u5wqzAJt1Kx9ZvKHsivWtu0wqLht16QXjULuGwnTv5Ngl2H5vSPDCErocAq7mnHq1IplAqPO4E0qOCqK26aIkrhVYGSgDAqAeyJF4Lj0C/SIACvNcBBWXtUyCeuHEsNUyGdUKm+tpmfgWo4ZtScSPN5D3FFP6f/J7wMPh8CH10oDq8xF12LRKhex8Od1FhT4GNkAs2RD7Yu7y7s6IfNGq5CjuPobwU7JaIboqz3nqTTQqy/auhiZgJfN5Hk9DxJlP/dfp7d8jklh2GRwR5BEEkwouY71wQ2ECrsUICN5WZznynyjS7GGDg7mLsDCjd7bmb3LwQ8xjbXx/bG2x+HDRcuxXGCugAAAABJRU5ErkJggg==)}span.depth{display:inline-block;font-weight:700;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAUCAYAAABF5ffbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBDjQRuYQ78AAAABJ0RVh0Q29tbWVudABEZXB0aCBtYXNrQcBmawAAABhJREFUGNNjYEAD7Wdr/zMxYAGjggMlCACJuAL3jmFt7AAAAABJRU5ErkJggg==)}span.port{font-weight:700;padding-right:.5ex;margin-right:.5ex;background-color:#ccf;display:inline-block;width:11ex;text-align:right;border-radius:5px}span.port.fail{color:red}span.port.redo{color:#ff0}span.port.exit{color:#0c0}span.port.exception{color:#f0f}div.prolog-exception{color:red;font-size:80%;margin-left:5em}div.controller.running>span.sparklines{margin-left:.5em}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.render-multi{position:relative;vertical-align:top;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAQAAAA6heU+AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAEMQAABDEAbRyZ/IAAAAHdElNRQfeCg8LIivxaI+JAAABT0lEQVQoz33SsW5SYRgG4AchbSkcYrVpo6bGoXFydvMK3HsJLt6Ct+AFeBVunVx0cjFODvofqyDQFDVttef8cg6IA4SkFXjX70ned/gqk4kV+SUVnGs8rayC54KA/e7DvdpydiZIJXbEJyyFp4IjW27IFG+Xwp9SR266LhM/PT5dAn9IfbGtJROtP2ch/C711bZELmrYOFwIB1JtOxpyfzQl1n4vgANBx65NuaGmlsR69h88EXTcUpcpNLQkknJ3dAUeS327wlr+fpxe57Av6F1iLYmxOLgEe4K+2zZkitm2xFgumsOJrs/67liTGc4qm8YyUbw7gxNdwbE9NZlixhKlXBTl+1NYaU9SPfdU5Ubz0inL5aJya3h2oBa03XdNZqzZaR5uvq5/mFyUcVSUo0JRLerlxQFqwQPVN/FF+T4Jj0YL32ial8/eJfDK6vwDMhCTheu9OHEAAAAASUVORK5CYII=);background-size:15px;background-repeat:no-repeat}#render-select{position:absolute;background-color:#fff;padding:5px 0 5px 20px;border:1px solid #000;border-radius:5px;box-shadow:5px 5px 5px #888;z-index:500;white-space:nowrap}.render-selecting{outline:1px solid #800}.render-multi-active{position:absolute;left:0;top:0;width:20px;height:20px}div.render-item a{float:right;padding:0 10px 0 10px}div.render-error{display:inline-block}div.render-error span.error{color:red}pre.console{padding:0 9px;border:0;margin:0}pre.measure{padding:0;border:0;margin:0;display:inline}span.format{white-space:pre;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}a.download{margin-right:5px}a.download span.glyphicon{margin-left:1ex}.render-table{border:2px solid #333}.render-table td{padding:0 5px;border:1px solid #888}.render-table th{padding:0 5px;border:1px solid #888;text-align:center}.render-table tr:nth-child(odd){background-color:#eee}.render-table tr:nth-child(even){background-color:#fff}.render-table tr.hrow{border-bottom:2px solid #333}.render-code-list{color:#040;font-style:italic}.render-ellipsis{colour:#00f;padding:0 5px}.render-svg-tree{padding:5px;display:inline-block}.render-svg-tree svg text{padding:.5em .2em}.render-svg-tree svg g.collapsed g text{padding:0 .5ex}.render-svg-tree svg polyline{fill:none}.render-svg-tree g.noleaf text{font-weight:700;fill:#00f}.render-svg-tree g.leaf text{font-weight:400;fill:#000}.render-C3{display:inline-block}.answer svg{vertical-align:top}.render-graphviz{display:inline-block}div.R.svg svg{overflow:visible}.fold{display:none}.pl-ellipsis{color:#00f;text-decoration:underline}.pl-functor:hover{color:#00f;text-decoration:underline}.pl-infix:hover{color:#00f;text-decoration:underline}.pl-var{color:#800}.pl-ovar{color:#800;font-weight:700}.pl-anon{color:#800}.pl-avar{color:#888}.pl-var{color:#800}.pl-atom{color:#730}.pl-quoted-atom{color:#008;white-space:pre}.pl-functor{color:#000;font-style:italic}.pl-comment{color:#060;font-style:italic}span.diff-tags{margin-left:2em}.diff-tag{border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.diff-tag.added{color:green}.diff-tag.deleted{text-decoration:line-through;color:red}pre.udiff .udiff-del{color:red}pre.udiff .udiff-add{color:green}pre.udiff{max-height:30em;overflow-y:auto}/*!
  * StyleSheet for JQuery splitter Plugin
  * Copyright (C) 2010 Jakub Jankiewicz <http://jcubic.pl>
  *
@@ -7,4 +7,4 @@ ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox
  * Bootstrap v3.3.7 (http://getbootstrap.com)
  * Copyright 2011-2016 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.tm-tag{color:#555;background-color:#f5f5f5;border:#bbb 1px solid;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;display:inline-block;border-radius:3px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;margin:0 5px 5px 0;padding:4px;text-decoration:none;transition:border .2s linear 0s,box-shadow .2s linear 0s;-moz-transition:border .2s linear 0s,box-shadow .2s linear 0s;-webkit-transition:border .2s linear 0s,box-shadow .2s linear 0s;vertical-align:middle}.tm-tag .tm-tag-remove{color:#000;font-weight:700;margin-left:4px;opacity:.2}.tm-tag .tm-tag-remove:hover{color:#000;text-decoration:none;opacity:.4}.tm-tag.tm-tag-warning{color:#945203;background-color:#f2c889;border-color:#f0a12f}.tm-tag.tm-tag-error{color:#84212e;background-color:#e69ca6;border-color:#d24a5d}.tm-tag.tm-tag-success{color:#638421;background-color:#cde69c;border-color:#a5d24a}.tm-tag.tm-tag-info{color:#4594b5;background-color:#c5eefa;border-color:#5dc8f7}.tm-tag.tm-tag-inverse{color:#ccc;background-color:#555;border-color:#333;box-shadow:0 1px 1px rgba(0,0,0,.2) inset}.tm-tag.tm-tag-inverse .tm-tag-remove{color:#fff}.tm-tag.tm-tag-large{font-size:16.25px;border-radius:4px;padding:11px 7px}.tm-tag.tm-tag-small{font-size:11.049999999999999px;border-radius:3px;padding:2px 4px}.tm-tag.tm-tag-mini{font-size:9.75px;border-radius:2px;padding:0 2px}.tm-tag.tm-tag-plain{color:#333;box-shadow:none;background:0 0;border:none}.tm-tag.tm-tag-disabled{color:#aaa;background-color:#e6e6e6;border-color:#ccc;box-shadow:none}.tm-tag.tm-tag-disabled .tm-tag-remove{display:none}input[type=text].tm-input{margin-bottom:5px;vertical-align:middle!important}.control-group.tm-group{margin-bottom:5px}.form-horizontal .control-group.tm-group{margin-bottom:15px}.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}span.twitter-typeahead .tt-menu{min-width:250px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}span.twitter-typeahead .tt-suggestion>p{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{text-decoration:none;outline:0;background-color:#e8e8e8}span.twitter-typeahead .tt-suggestion.tt-cursor{background-color:#f8f8f8}span.twitter-typeahead{width:100%;height:30px}.tt-suggestion{max-width:25em;overflow:hidden}.tt-suggestion .tt-label{padding-left:1.5em}.tt-file-header,.tt-suggestion.tt-match.file{background-size:1em;background-repeat:no-repeat;background-position:5px 5px}.tt-match.predicate.built_in .tt-label{color:#00f}.tt-suggestion .tt-title{color:#555;white-space:nowrap;overflow:hidden;font-style:italic;font-size:80%}.tt-suggestion .tt-tags{max-width:100px;float:right;margin-right:2px}.tt-suggestion .tt-tag{max-width:30px;border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.tt-suggestion .tt-line{white-space:nowrap}.tt-suggestion .tt-lineno{display:inline-block;width:40px;min-width:20px;font-family:monospace;color:#999;background-color:#eee;border-right:1px solid #ddd;padding:0 3px 0 5px;text-align:right}.tt-suggestion .tt-text{padding-left:5px;white-space:nowrap}div.tt-file-header{padding-left:5em;background-color:#ddd;color:#000}span.tt-path-file{font-weight:700}div.tt-match.source{overflow:hidden}table.diff{width:100%;border-collapse:collapse;border:1px solid #a9a9a9;white-space:pre-wrap}table.diff tbody{font-family:Courier,monospace}table.diff tbody th{font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;background:#eed;font-size:11px;font-weight:400;border:1px solid #bbc;color:#886;padding:.3em .5em .1em 2em;text-align:right;vertical-align:top}table.diff thead{border-bottom:1px solid #bbc;background:#efefef;font-family:Verdana}table.diff thead th.texttitle{text-align:left}table.diff tbody td{padding:0;vertical-align:top}table.diff .empty{background-color:#ddd}table.diff .replace{background-color:#fd8}table.diff .delete{background-color:#e99}table.diff .skip{background-color:#efefef;border:1px solid #aaa;border-right:1px solid #bbc}table.diff .insert{background-color:#9e9}table.diff th.author{text-align:right;border-top:1px solid #bbc;background:#efefef}.notebook{position:relative;width:100%;height:100%}.nb-content,.nb-toolbar{width:100%}.notebook.hamburger .nb-toolbar{display:none}.nb-toolbar{position:absolute;padding-top:5px;padding-bottom:5px;margin-bottom:1em;border-bottom:1px solid #ddd}.nb-toolbar .action-fullscreen{right:5px;position:absolute}div.notebook-menu{display:none}.notebook.hamburger div.notebook-menu{display:block;position:absolute;top:3px;right:1em;z-index:2000}.notebook.hamburger .nb-view{top:0;height:100%}.nb-view{position:absolute;top:40px;height:calc(100% - 40px);width:100%;overflow-y:auto}.nb-content{position:relative;width:100%}.nb-bottom{width:100%;height:30%}.dropdown.cell-type{display:inline}.nb-cell.markdown:not(.runnable){background-color:transparent;border:0}.nb-cell.html:not(.runnable){background-color:transparent;border:0}.nb-cell{margin-left:20px;margin-right:10px;box-sizing:border-box}.nb-cell:focus{outline:0}.nb-type-select{padding:1em 0 1em 0}.nb-type-select>label{margin-left:1em;margin-right:1em;position:relative;top:.1em}.nb-type-more{padding-bottom:1em;padding-left:1em}.nb-type-more label{margin-right:1em;position:relative;top:.1em}.nb-type-more input{display:inline}.nb-cell .close-select{font-size:150%;padding:0 5px;border:0;color:#888;background-color:transparent;float:right}.nb-cell.active{margin-left:8px;border-left:7px solid green!important;padding-left:5px}.nb-cell.html.active>div.editor,.nb-cell.markdown.active>div.editor{border:1px dotted #888;border-radius:5px;margin-bottom:5px;margin-right:52px}.nb-cell.singleline div.editor{height:2em}.nb-cell.singleline .CodeMirror-hscrollbar{height:0}.nb-cell .CodeMirror-scroll{max-height:40em}.nb-cell .CodeMirror{border-radius:5px}.nb-cell .nb-cell-buttons{display:inline-block;float:right}.nb-cell span.glyphicon-cloud{color:#000}.nb-cell.background span.glyphicon-cloud{color:#fff}.nb-cell>.with-buttons{background-color:#eee;border:1px solid #ccc;border-radius:5px;width:calc(100% - 50px)}.nb-cell .nb-query-menu{display:inline;float:left}.nb-query-menu button{background:0 0;padding:3px 5px 0 5px;border:0;color:#888}.nb-query-menu button:hover{color:#000}.nb-cell .prolog-prompt{float:left;padding-right:.3em;padding-top:.25em;font-weight:700;text-align:right}.nb-cell .editor.query{margin-left:44px}.nb-cell.program,.nb-cell.query{margin-bottom:1em}.nb-cell.not-for-query{opacity:.5}.nb-placeholder{opacity:.5;width:90%;margin:auto;margin-top:1ex}.nb-cell.markdown pre.code{width:90%;margin:auto;margin-bottom:1em}.nb-cell.markdown dl.termlist{margin-left:5%}.nb-cell.markdown dl.termlist dd{margin-left:2em}.nb-cell.markdown .predicates dd{margin-left:2em;margin-bottom:1ex}a.btn-image{padding:1px 2px}.nb-cell.program span.image-icon{display:inline-block;width:18px;height:16px;padding:0;background-repeat:no-repeat;background-size:100% 100%;vertical-align:middle;background-image:url(data:image/png;base64,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)}.nb-cell.program.background span.image-icon{background-image:url(data:image/png;base64,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)}.type-icon.pl{background-image:url(../icons/pl.png)}.type-icon.swinb{background-image:url(../icons/swinb.png)}.type-icon.select{background-image:url(data:image/png;base64,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)}.type-icon.chat{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNASzV4qVYAAADQElEQVRo3u2ZS09TURDHf31iW4G23PJoRI0hPkLqAhM1PgILSPADGNyZuDDi0gSJiSsTXfgJXOrCkBiNqDvCgqiRaGJ8BRoTdCE+8EFAlFKQclxQSkt7T+9pe+rCztn09jH//5mZM3NmChWpyP8uNpP3XQT5mnpyUoUbH1sJY+Bljlk+84F5llhkOakpyBx/cuhyYKTpskTAw2a+J1/voZX9HCBCIOt7M7zhKc8YI4oXwUIOXU78zJBQsYqXQJJYD3eZQORdE9zjZE5dDgycak5xY2ADuomyZAF8bS0RpTvLvmEcqvCNwDaGFKDT1xDb03bfZBpjpsavw84ZZguEFwhm6cUBuDBUd++lBgcDJIqAFwgSDOAmiEvV+EG8vCgSfG29plrd935GSgQvEIzkOLYS4xs4uV5CeIHghtUD6CEA9JUYXiDoswLvIgRENMALBJH8BBoAGNdEYDy5yTzSy7ImAsucwU6dHN7PQ03wAsEozbJ8aAfaaNNY8CPsRMgIODiKTyMBH0dkKdmOh07Nl55OPLKPA8Q1RoBAEJflRDv1VGm2QBX1MgItZbh5tsgIhMpAICQj4C4DAZeMQKwMBBZkBKbLQOCTjMBkGQj8kBH4yDfN8NNyAos80UzgEbMyAnGGNRMYJi4jIBhlSiP8FKOyargqgxorwaC1ejWvCT5GlzVD3dZE4I5VT/mZ0gA/ab05qedQyS+mKxy0OqYJ4QJOs1JS+LPWmnMbgdSV6UrRnfE6/FWrxq/Dm/Z0rkQE+gut1Ta6+Fkk+G+ObTB+g1ru2sHzggMywSt25YwwJanlIm8LiIcJLkkizKKsDdb2Kk6KopzPcfk0MiLM0ploSvYxHUr5vgs/9ixtjao3TjvhVPgMZYVWLz4uM0ecBWLM84sxrtFj0vvaCKnCOwmldtGRlVRPpNqMdtppoznV++XLLoq+X60M7zLgH5v0zwFqTDsBT6G+Bxf3M+BvYpgUMLOuWtn3jpTvnYR5kJZQY1wwbbtrTbZiqPt+fah6PC0FfeEW+0x+U21SaG0EVA9e5kB9N+8RCF7Sz2GTPULAdA6q7Hto2DC/2MIpWqlhU+pfg+w86TPVpZx0K1KRivxz+QvZxVirW3AIgwAAAABJRU5ErkJggg==)}.type-icon.chathelp{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNBAMDRGxEAAADxElEQVRo3u2YTUhUURTHf29mHHWmdMY3Mo7al1CLCoJqGaUIRUXRJmglEQi5C6NdQav2UVCrIimoVatqIWRIUNIXUhNiUUlZBJnfo+OMvhaO43N89757n7NoMecuxLnv3P+599x7Pv5QkpKUxFnKiAtmwlQ7/m5gUuY44xeuJZRKagUz64kK4KOEHGcCxPDrwYeIYjjORFkv0KmlUrD7GAE9+CAxAXw1YYFOneDwDep1dx+kTuj7iND35YLdJwRb8eD7kHD3kbX53lgBX8EYluPhb6eRzTQQJUyALNOM8pOv/OI1sw4aPkxGyeodfq3DgVXRQQ/jpEiTYR4rP+bJkGaGUZ7SQdUq3/vW6nuTI3TbAN1GN0cwvfo+RGzF/1vo5IMG+NL4QCdbCevuvrLg3Xcy4AF8aXzigm7Qtfs+Qt8awJdGn+DJOoo9TrcwXQR4C4tpWlZsUklOFw1+0YTT+RtmqsC3kS4ivIVFmjaHGyaQ/UpLZrjJYZpo4ihdZBQ0WqlWgW9gzHWpGe4WXK1N9LpqTdDoDh/ggcJekgXRblHTPVTdd0/HraQUDMhyCYB9nOOk7ezc9FK0yuHLuaN4qeY4y3ssFrAYpBww2MBjV707gnSdjwPebv9lII6fawqvQVIT+mgm6KlsXUcFI1jCIs2e6Jpl012e9p9ld+55DSl83SUzIOnJgBM57VNKXydlBkxqg//mWE53J3NKGpMyAxY04Ufy8Af4rqgzLzNgStOAi/noMaKsIz2Bj5oJZlESWieXlD3DV1qP713u7xWtqu+NzIBHWgZM5KtGHXkk6wviDMlD5QoZ5y0BsuxxSE0imWMjv2W54HaRCxHNXKBXCU7Rz3v6NTRcsyH4uae83HOC1BDkhbLGA5X2PMEfxeV6chq9it+P0SCH9gEGE1xXvFAG4C9oamVynGG3csygmnS+hHaTbdygjAzblG5/O73un5kYnFGqcL32Ba6tWUirC/bSGcXditKJIsPbe0ODWnlrVsaNgsw1yOc1gA/QWUDfVcpvdSNfchYO8ZI+PvGLKQ5xhl3adWKSWzzkq+2XGClScqWrWDzjPDuIEcIgnqMXajjIE08MiZ2+Uyh4W2x8ho/6ghceop1u/jIj4IhSjNOziiNa8n1QLbAsx4QoIyw4Jqy9JGgigUkYf44lG+YbP/jIuOO6EWaZ0fGfmFQNCfmOsIAjFFO3kpNICGjFckxB4I1IqFvNZse/yvfLj7ROm7aP6cKLSdVi0vaefF882l7aHfsFh29q0/ZxVT6sJCUpyX8k/wALscSVmxSJXQAAAABJRU5ErkJggg==)}.type-icon.togetherjs{background-image:url(data:image/png;base64,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)}div.feedback{position:absolute;bottom:3px;left:0;right:3px;padding:0 10px 3px;z-index:1000;border:1px solid #888;border-radius:5px;background-color:#cff;box-shadow:3px 3px 5px #888}div.feedback.warning{background-color:#fdd}.modal-header .glyphicon-warning-sign{color:#fa0;font-size:150%}.modal-header .warning{color:red}div.btn-group.diff{margin-top:1em}div.btn-transparent button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0;color:#000;float:right;font-size:16px;font-weight:700;line-height:1;opacity:.2}div.btn-transparent>button:hover{opacity:.8}#login.login>.logout{display:none}#login.logout>.login{display:none}#login.logout>.logout{color:green}#login .value{margin-left:5px}iframe.login{width:90%;margin:0 auto;display:block;height:30ex}button.login-cont{margin:2ex auto 2ex;display:block}img.login-with,img.profile-picture{width:24px;height:24px}div.user-menu.btn-transparent button.dropdown-toggle{opacity:1}div.notification{display:inline-block;position:absolute;min-width:10em;background:#cff;padding:5px 1em;display:none;z-index:1000}a.dropdown-toggle.avatar{padding:0;margin-left:2px}img.avatar{width:24px;margin-top:4px;margin-bottom:4px}img.avatar:hover{width:32px;margin-top:0;margin-bottom:0}div.user-count{clear:both;text-align:center;color:#888;font-style:italic;font-size:75%;display:none}li.myself{border-bottom:3px solid green}li.user.lost{opacity:.2}.navbar-nav>li>a.broadcast-bell{padding:15px 5px 9px}#broadcast-bell{display:inline-block;height:30px;width:26px}#broadcast-bell .glyphicon{font-size:200%}.notify-arrow{background:#cff;border:1px solid #888;border-radius:5px;box-shadow:6px 6px 3px #aaa}.notify-arrow:after,.notify-arrow:before{bottom:100%;right:12px;border:solid transparent;content:" ";height:0;width:0;position:absolute}.notify-arrow:after{border-color:rgba(192,255,255,0);border-bottom-color:#cff;border-width:14px;margin-left:-14px}.notify-arrow:before{border-color:rgba(128,128,128,0);border-bottom-color:#888;border-width:15px;margin-left:-15px}div.chatroom{width:100%;height:100%;position:relative;overflow:hidden;display:table}div.chatroom span.glyphicon.menu{position:absolute;font-size:1.5em;top:5px;right:5px;opacity:.2}div.chatroom span.glyphicon.menu:hover{opacity:.8}div.chat-conversation{width:100%;display:table-row;height:100%}div.chat-outer-wrapper{display:table-cell;height:100%}div.chat-inner-wrapper{height:100%;position:relative;overflow:auto}div.chat-content-wrapper{position:absolute;top:0;bottom:0;left:0;right:0}table.chat-input{width:100%}td.chat-send{text-align:right;white-space:nowrap;vertical-align:middle;padding:5px}td.chat-send>div{display:flex}td.chat-text{width:100%;padding:0 5px}table.chat-input textarea{resize:vertical;box-sizing:border-box;width:100%;border:1px solid #888;border-radius:5px}div.chatroom div.chat-message{position:relative;font-size:90%;margin-right:10%;margin-left:5px;margin-bottom:1ex;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:3px 5px}div.chatroom div.chat-message.self{margin-right:5px;margin-left:10%}div.chat-message img.avatar{position:absolute;margin-top:0;top:0;right:0;border-radius:5px;width:24px}span.chat-sender{font-weight:700;color:#4888be}span.chat-time{font-family:italic;color:#4888be}span.chat-sender::after{content:": "}span.commit-message{color:#060}span.no-commit-message{font-size:80%;color:#f80}.chat-message .tooltip{z-index:5000;position:fixed}.chat-message .tooltip-inner{background:#ffd;padding:5px 5px;border:1px solid #888;border-radius:5px}.chat-message .tooltip-inner pre.cm-s-prolog{padding:0 5px;background:0 0;border:0;margin:0}.chat-bell{position:relative;vertical-align:middle;height:30px;width:22px}.chat-bell .glyphicon,span.chat-bell-count{position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-align:center;line-height:30px}.chat-bell .glyphicon{font-size:140%}.chat-bell .glyphicon{color:#888}.chat-bell.chat-alert .glyphicon{color:red}span.chat-bell-count{font-size:80%;font-weight:700;color:#fff;z-index:10}.flash{animation:flash 2s ease-out 1;-webkit-animation:flash 2s ease-out 1}@-webkit-keyframes flash{from{background-color:#ffa}to{background-color:#fff}}@keyframes flash{from{background-color:#ffa}to{background-color:#fff}}a.pengine-logo{position:absolute;top:4px;left:4px;width:42px;height:42px;background-image:url(../icons/logo.png);background-size:100%}.splitter_panel .hsplitter,.splitter_panel .vsplitter{z-index:100;border:2px outset #ccc}.splitter_panel .vsplitter{width:3px}.splitter_panel .hsplitter{height:3px}.splitter_panel .bottom_panel,.splitter_panel .hsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .top_panel,.splitter_panel .vsplitter{overflow:visible}body .modal-dialog{width:80%;max-width:800px;margin-left:auto;margin-right:auto}body .modal-dialog.modal-wide{width:90%;max-width:none}body .modal-dialog.swish-embedded-manual{width:90%;max-width:1000px}body .modal-dialog.swish-embedded-manual div.modal-body{padding:0}iframe.swish-embedded-manual{width:100%;border:0}
\ No newline at end of file
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.tm-tag{color:#555;background-color:#f5f5f5;border:#bbb 1px solid;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;display:inline-block;border-radius:3px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;margin:0 5px 5px 0;padding:4px;text-decoration:none;transition:border .2s linear 0s,box-shadow .2s linear 0s;-moz-transition:border .2s linear 0s,box-shadow .2s linear 0s;-webkit-transition:border .2s linear 0s,box-shadow .2s linear 0s;vertical-align:middle}.tm-tag .tm-tag-remove{color:#000;font-weight:700;margin-left:4px;opacity:.2}.tm-tag .tm-tag-remove:hover{color:#000;text-decoration:none;opacity:.4}.tm-tag.tm-tag-warning{color:#945203;background-color:#f2c889;border-color:#f0a12f}.tm-tag.tm-tag-error{color:#84212e;background-color:#e69ca6;border-color:#d24a5d}.tm-tag.tm-tag-success{color:#638421;background-color:#cde69c;border-color:#a5d24a}.tm-tag.tm-tag-info{color:#4594b5;background-color:#c5eefa;border-color:#5dc8f7}.tm-tag.tm-tag-inverse{color:#ccc;background-color:#555;border-color:#333;box-shadow:0 1px 1px rgba(0,0,0,.2) inset}.tm-tag.tm-tag-inverse .tm-tag-remove{color:#fff}.tm-tag.tm-tag-large{font-size:16.25px;border-radius:4px;padding:11px 7px}.tm-tag.tm-tag-small{font-size:11.049999999999999px;border-radius:3px;padding:2px 4px}.tm-tag.tm-tag-mini{font-size:9.75px;border-radius:2px;padding:0 2px}.tm-tag.tm-tag-plain{color:#333;box-shadow:none;background:0 0;border:none}.tm-tag.tm-tag-disabled{color:#aaa;background-color:#e6e6e6;border-color:#ccc;box-shadow:none}.tm-tag.tm-tag-disabled .tm-tag-remove{display:none}input[type=text].tm-input{margin-bottom:5px;vertical-align:middle!important}.control-group.tm-group{margin-bottom:5px}.form-horizontal .control-group.tm-group{margin-bottom:15px}.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc rect{stroke:#fff;stroke-width:1}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:1;fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:#fff}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.c3-chart-arc.c3-target g path{opacity:1}.c3-chart-arc.c3-target.c3-focused g path{opacity:1}span.twitter-typeahead .tt-menu{min-width:250px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}span.twitter-typeahead .tt-suggestion>p{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{text-decoration:none;outline:0;background-color:#e8e8e8}span.twitter-typeahead .tt-suggestion.tt-cursor{background-color:#f8f8f8}span.twitter-typeahead{width:100%;height:30px}.tt-suggestion{max-width:25em;overflow:hidden}.tt-suggestion .tt-label{padding-left:1.5em}.tt-file-header,.tt-suggestion.tt-match.file{background-size:1em;background-repeat:no-repeat;background-position:5px 5px}.tt-match.predicate.built_in .tt-label{color:#00f}.tt-suggestion .tt-title{color:#555;white-space:nowrap;overflow:hidden;font-style:italic;font-size:80%}.tt-suggestion .tt-tags{max-width:100px;float:right;margin-right:2px}.tt-suggestion .tt-tag{max-width:30px;border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.tt-suggestion .tt-line{white-space:nowrap}.tt-suggestion .tt-lineno{display:inline-block;width:40px;min-width:20px;font-family:monospace;color:#999;background-color:#eee;border-right:1px solid #ddd;padding:0 3px 0 5px;text-align:right}.tt-suggestion .tt-text{padding-left:5px;white-space:nowrap}div.tt-file-header{padding-left:5em;background-color:#ddd;color:#000}span.tt-path-file{font-weight:700}div.tt-match.source{overflow:hidden}table.diff{width:100%;border-collapse:collapse;border:1px solid #a9a9a9;white-space:pre-wrap}table.diff tbody{font-family:Courier,monospace}table.diff tbody th{font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;background:#eed;font-size:11px;font-weight:400;border:1px solid #bbc;color:#886;padding:.3em .5em .1em 2em;text-align:right;vertical-align:top}table.diff thead{border-bottom:1px solid #bbc;background:#efefef;font-family:Verdana}table.diff thead th.texttitle{text-align:left}table.diff tbody td{padding:0;vertical-align:top}table.diff .empty{background-color:#ddd}table.diff .replace{background-color:#fd8}table.diff .delete{background-color:#e99}table.diff .skip{background-color:#efefef;border:1px solid #aaa;border-right:1px solid #bbc}table.diff .insert{background-color:#9e9}table.diff th.author{text-align:right;border-top:1px solid #bbc;background:#efefef}.notebook{position:relative;width:100%;height:100%}.nb-toolbar{padding-left:20px}.nb-content,.nb-toolbar{width:100%}.notebook.hamburger .nb-toolbar{display:none}.nb-toolbar{position:absolute;padding-top:5px;padding-bottom:5px;margin-bottom:1em;border-bottom:1px solid #ddd}.nb-toolbar .action-fullscreen{right:5px;position:absolute}div.notebook-menu{display:none}.notebook.hamburger div.notebook-menu{display:block;position:absolute;top:3px;right:1em;z-index:2000}.notebook.hamburger .nb-view{top:0;height:100%}.nb-view{position:absolute;top:40px;height:calc(100% - 40px);width:100%;overflow-y:auto}.nb-content{position:relative;width:100%}.nb-bottom{width:100%;height:30%}.dropdown.cell-type{display:inline}.nb-cell.markdown:not(.runnable){background-color:transparent;border:0}.nb-cell.html:not(.runnable){background-color:transparent;border:0}.nb-cell{margin-left:20px;margin-right:10px;box-sizing:border-box}.nb-cell:focus{outline:0}.nb-type-select{padding:1em 0 1em 0}.nb-type-select>label{margin-left:1em;margin-right:1em;position:relative;top:.1em}.nb-type-more{padding-bottom:1em;padding-left:1em}.nb-type-more label{margin-right:1em;position:relative;top:.1em}.nb-type-more input{display:inline}.nb-cell .close-select{font-size:150%;padding:0 5px;border:0;color:#888;background-color:transparent;float:right}.nb-cell.active{margin-left:8px;border-left:7px solid green!important;padding-left:5px}.nb-cell.html.active>div.editor,.nb-cell.markdown.active>div.editor{border:1px dotted #888;border-radius:5px;margin-bottom:5px;margin-right:52px}.nb-cell.singleline div.editor{height:2em}.nb-cell.singleline .CodeMirror-hscrollbar{height:0}.nb-cell .CodeMirror-scroll{max-height:40em}.nb-cell .CodeMirror{border-radius:5px}.nb-cell .nb-cell-buttons{display:inline-block;float:right}.nb-cell span.glyphicon-cloud{color:#000}.nb-cell.background span.glyphicon-cloud{color:#fff}.nb-cell>.with-buttons{background-color:#eee;border:1px solid #ccc;border-radius:5px;width:calc(100% - 50px)}.nb-cell .nb-query-menu{display:inline;float:left}.nb-query-menu button{background:0 0;padding:3px 5px 0 5px;border:0;color:#888}.nb-query-menu button:hover{color:#000}.nb-cell .prolog-prompt{float:left;padding-right:.3em;padding-top:.25em;font-weight:700;text-align:right}.nb-cell .editor.query{margin-left:44px}.nb-cell.program,.nb-cell.query{margin-bottom:1em}.nb-cell.not-for-query{opacity:.5}.nb-placeholder{opacity:.5;width:90%;margin:auto;margin-top:1ex}.nb-cell.markdown pre.code{width:90%;margin:auto;margin-bottom:1em}.nb-cell.markdown dl.termlist{margin-left:5%}.nb-cell.markdown dl.termlist dd{margin-left:2em}.nb-cell.markdown .predicates dd{margin-left:2em;margin-bottom:1ex}.nb-cell.markdown .predicates .pred-tag{float:right}a.btn-image{padding:1px 2px}.nb-cell.program span.image-icon{display:inline-block;width:18px;height:16px;padding:0;background-repeat:no-repeat;background-size:100% 100%;vertical-align:middle;background-image:url(data:image/png;base64,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)}.nb-cell.program.background span.image-icon{background-image:url(data:image/png;base64,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)}span.menu-space{width:2ex;display:inline-block}.type-icon.pl{background-image:url(../icons/pl.png)}.type-icon.swinb{background-image:url(../icons/swinb.png)}.type-icon.select{background-image:url(data:image/png;base64,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)}.type-icon.lnk{background-image:url(data:image/png;base64,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)}.type-icon.chat{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNASzV4qVYAAADQElEQVRo3u2ZS09TURDHf31iW4G23PJoRI0hPkLqAhM1PgILSPADGNyZuDDi0gSJiSsTXfgJXOrCkBiNqDvCgqiRaGJ8BRoTdCE+8EFAlFKQclxQSkt7T+9pe+rCztn09jH//5mZM3NmChWpyP8uNpP3XQT5mnpyUoUbH1sJY+Bljlk+84F5llhkOakpyBx/cuhyYKTpskTAw2a+J1/voZX9HCBCIOt7M7zhKc8YI4oXwUIOXU78zJBQsYqXQJJYD3eZQORdE9zjZE5dDgycak5xY2ADuomyZAF8bS0RpTvLvmEcqvCNwDaGFKDT1xDb03bfZBpjpsavw84ZZguEFwhm6cUBuDBUd++lBgcDJIqAFwgSDOAmiEvV+EG8vCgSfG29plrd935GSgQvEIzkOLYS4xs4uV5CeIHghtUD6CEA9JUYXiDoswLvIgRENMALBJH8BBoAGNdEYDy5yTzSy7ImAsucwU6dHN7PQ03wAsEozbJ8aAfaaNNY8CPsRMgIODiKTyMBH0dkKdmOh07Nl55OPLKPA8Q1RoBAEJflRDv1VGm2QBX1MgItZbh5tsgIhMpAICQj4C4DAZeMQKwMBBZkBKbLQOCTjMBkGQj8kBH4yDfN8NNyAos80UzgEbMyAnGGNRMYJi4jIBhlSiP8FKOyargqgxorwaC1ejWvCT5GlzVD3dZE4I5VT/mZ0gA/ab05qedQyS+mKxy0OqYJ4QJOs1JS+LPWmnMbgdSV6UrRnfE6/FWrxq/Dm/Z0rkQE+gut1Ta6+Fkk+G+ObTB+g1ru2sHzggMywSt25YwwJanlIm8LiIcJLkkizKKsDdb2Kk6KopzPcfk0MiLM0ploSvYxHUr5vgs/9ixtjao3TjvhVPgMZYVWLz4uM0ecBWLM84sxrtFj0vvaCKnCOwmldtGRlVRPpNqMdtppoznV++XLLoq+X60M7zLgH5v0zwFqTDsBT6G+Bxf3M+BvYpgUMLOuWtn3jpTvnYR5kJZQY1wwbbtrTbZiqPt+fah6PC0FfeEW+0x+U21SaG0EVA9e5kB9N+8RCF7Sz2GTPULAdA6q7Hto2DC/2MIpWqlhU+pfg+w86TPVpZx0K1KRivxz+QvZxVirW3AIgwAAAABJRU5ErkJggg==)}.type-icon.chathelp{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNBAMDRGxEAAADxElEQVRo3u2YTUhUURTHf29mHHWmdMY3Mo7al1CLCoJqGaUIRUXRJmglEQi5C6NdQav2UVCrIimoVatqIWRIUNIXUhNiUUlZBJnfo+OMvhaO43N89757n7NoMecuxLnv3P+599x7Pv5QkpKUxFnKiAtmwlQ7/m5gUuY44xeuJZRKagUz64kK4KOEHGcCxPDrwYeIYjjORFkv0KmlUrD7GAE9+CAxAXw1YYFOneDwDep1dx+kTuj7iND35YLdJwRb8eD7kHD3kbX53lgBX8EYluPhb6eRzTQQJUyALNOM8pOv/OI1sw4aPkxGyeodfq3DgVXRQQ/jpEiTYR4rP+bJkGaGUZ7SQdUq3/vW6nuTI3TbAN1GN0cwvfo+RGzF/1vo5IMG+NL4QCdbCevuvrLg3Xcy4AF8aXzigm7Qtfs+Qt8awJdGn+DJOoo9TrcwXQR4C4tpWlZsUklOFw1+0YTT+RtmqsC3kS4ivIVFmjaHGyaQ/UpLZrjJYZpo4ihdZBQ0WqlWgW9gzHWpGe4WXK1N9LpqTdDoDh/ggcJekgXRblHTPVTdd0/HraQUDMhyCYB9nOOk7ezc9FK0yuHLuaN4qeY4y3ssFrAYpBww2MBjV707gnSdjwPebv9lII6fawqvQVIT+mgm6KlsXUcFI1jCIs2e6Jpl012e9p9ld+55DSl83SUzIOnJgBM57VNKXydlBkxqg//mWE53J3NKGpMyAxY04Ufy8Af4rqgzLzNgStOAi/noMaKsIz2Bj5oJZlESWieXlD3DV1qP713u7xWtqu+NzIBHWgZM5KtGHXkk6wviDMlD5QoZ5y0BsuxxSE0imWMjv2W54HaRCxHNXKBXCU7Rz3v6NTRcsyH4uae83HOC1BDkhbLGA5X2PMEfxeV6chq9it+P0SCH9gEGE1xXvFAG4C9oamVynGG3csygmnS+hHaTbdygjAzblG5/O73un5kYnFGqcL32Ba6tWUirC/bSGcXditKJIsPbe0ODWnlrVsaNgsw1yOc1gA/QWUDfVcpvdSNfchYO8ZI+PvGLKQ5xhl3adWKSWzzkq+2XGClScqWrWDzjPDuIEcIgnqMXajjIE08MiZ2+Uyh4W2x8ho/6ghceop1u/jIj4IhSjNOziiNa8n1QLbAsx4QoIyw4Jqy9JGgigUkYf44lG+YbP/jIuOO6EWaZ0fGfmFQNCfmOsIAjFFO3kpNICGjFckxB4I1IqFvNZse/yvfLj7ROm7aP6cKLSdVi0vaefF882l7aHfsFh29q0/ZxVT6sJCUpyX8k/wALscSVmxSJXQAAAABJRU5ErkJggg==)}.type-icon.togetherjs{background-image:url(data:image/png;base64,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)}div.feedback{position:absolute;bottom:3px;left:0;right:3px;padding:0 10px 3px;z-index:1000;border:1px solid #888;border-radius:5px;background-color:#cff;box-shadow:3px 3px 5px #888}div.feedback.warning{background-color:#fdd}.modal-header .glyphicon-warning-sign{color:#fa0;font-size:150%}.modal-header .warning{color:red}div.btn-group.diff{margin-top:1em}div.btn-transparent button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0;color:#000;float:right;font-size:16px;font-weight:700;line-height:1;opacity:.2}div.btn-transparent>button:hover{opacity:.8}::-ms-clear{display:none}.form-control-clear{z-index:10;pointer-events:auto;cursor:pointer}#login.login>.logout{display:none}#login.logout>.login{display:none}#login.logout>.logout{color:green}#login .value{margin-left:5px}iframe.login{width:90%;margin:0 auto;display:block;height:30ex}button.login-cont{margin:2ex auto 2ex;display:block}img.login-with,img.profile-picture{width:24px;height:24px}div.user-menu.btn-transparent button.dropdown-toggle{opacity:1}div.notification{display:inline-block;position:absolute;min-width:10em;background:#cff;padding:5px 1em;display:none;z-index:1000}a.dropdown-toggle.avatar{padding:0;margin-left:2px}img.avatar{width:24px;margin-top:4px;margin-bottom:4px}img.avatar:hover{width:32px;margin-top:0;margin-bottom:0}div.user-count{clear:both;text-align:center;color:#888;font-style:italic;font-size:75%;display:none}li.myself{border-bottom:3px solid green}li.user.lost{opacity:.2}.navbar-nav>li>a.broadcast-bell{padding:15px 5px 9px}#broadcast-bell{display:inline-block;height:30px;width:26px}#broadcast-bell .glyphicon{font-size:200%}.notify-arrow{background:#cff;border:1px solid #888;border-radius:5px;box-shadow:6px 6px 3px #aaa}.notify-arrow:after,.notify-arrow:before{bottom:100%;right:12px;border:solid transparent;content:" ";height:0;width:0;position:absolute}.notify-arrow:after{border-color:rgba(192,255,255,0);border-bottom-color:#cff;border-width:14px;margin-left:-14px}.notify-arrow:before{border-color:rgba(128,128,128,0);border-bottom-color:#888;border-width:15px;margin-left:-15px}div.chatroom{width:100%;height:100%;position:relative;overflow:hidden;display:table}div.chatroom span.glyphicon.menu{position:absolute;font-size:1.5em;top:5px;right:5px;opacity:.2}div.chatroom span.glyphicon.menu:hover{opacity:.8}div.chat-conversation{width:100%;display:table-row;height:100%}div.chat-outer-wrapper{display:table-cell;height:100%}div.chat-inner-wrapper{height:100%;position:relative;overflow:auto}div.chat-content-wrapper{position:absolute;top:0;bottom:0;left:0;right:0}table.chat-input{width:100%}td.chat-send{text-align:right;white-space:nowrap;vertical-align:middle;padding:5px}td.chat-send>div{display:flex}td.chat-text{width:100%;padding:0 5px}table.chat-input textarea{resize:vertical;box-sizing:border-box;width:100%;border:1px solid #888;border-radius:5px}div.chatroom div.chat-message{position:relative;font-size:90%;margin-right:10%;margin-left:5px;margin-bottom:1ex;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:3px 5px}div.chatroom div.chat-message.self{margin-right:5px;margin-left:10%}div.chat-message img.avatar{position:absolute;margin-top:0;top:0;right:0;border-radius:5px;width:24px}span.chat-sender{font-weight:700;color:#4888be}span.chat-time{font-family:italic;color:#4888be}span.chat-sender::after{content:": "}span.commit-message{color:#060}span.no-commit-message{font-size:80%;color:#f80}.chat-message .tooltip{z-index:5000;position:fixed}.chat-message .tooltip-inner{background:#ffd;padding:5px 5px;border:1px solid #888;border-radius:5px}.chat-message .tooltip-inner pre.cm-s-prolog{padding:0 5px;background:0 0;border:0;margin:0}.chat-bell{position:relative;vertical-align:middle;height:30px;width:22px}.chat-bell .glyphicon,span.chat-bell-count{position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-align:center;line-height:30px}.chat-bell .glyphicon{font-size:140%}.chat-bell .glyphicon{color:#888}.chat-bell.chat-alert .glyphicon{color:red}span.chat-bell-count{font-size:80%;font-weight:700;color:#fff;z-index:10}.flash{animation:flash 2s ease-out 1;-webkit-animation:flash 2s ease-out 1}@-webkit-keyframes flash{from{background-color:#ffa}to{background-color:#fff}}@keyframes flash{from{background-color:#ffa}to{background-color:#fff}}div.sourcelist{margin:auto;width:90%}div.sourcelist span.dropdown-icon{margin-left:5px}div.search-footer>button>label{margin-left:5px;margin-right:5px}div.search-footer{text-align:center}div.sourcelist div.search-results{margin-top:1em;position:relative;min-height:150px}div.search-no-results{display:none;position:absolute;top:0;left:0;width:100%}div.loading{display:none;position:absolute;top:0;left:0;width:100%;height:100%;opacity:.5;background-image:url(../icons/loading.gif);background-size:64px;background-repeat:no-repeat;background-position:50% 100px}span.no-search-results-warning{background:#fee;color:#b44}a.pengine-logo{position:absolute;top:4px;left:4px;width:42px;height:42px;background-image:url(../icons/logo.png);background-size:100%}.splitter_panel .hsplitter,.splitter_panel .vsplitter{z-index:100;border:2px outset #ccc}.splitter_panel .vsplitter{width:3px}.splitter_panel .hsplitter{height:3px}.splitter_panel .bottom_panel,.splitter_panel .hsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .top_panel,.splitter_panel .vsplitter{overflow:visible}body .modal-dialog{width:80%;max-width:800px;margin-left:auto;margin-right:auto}body .modal-dialog.modal-wide{width:90%;max-width:none}body .modal-dialog.swish-embedded-manual{width:90%;max-width:1000px}body .modal-dialog.swish-embedded-manual div.modal-body{padding:0}iframe.swish-embedded-manual{width:100%;border:0}
\ No newline at end of file
diff --git a/web/css/swish-min.css.gz b/web/css/swish-min.css.gz
index 154f171..e79dc50 100644
Binary files a/web/css/swish-min.css.gz and b/web/css/swish-min.css.gz differ
diff --git a/web/js/swish-min.js b/web/js/swish-min.js
index 3b96824..7e6a99d 100644
--- a/web/js/swish-min.js
+++ b/web/js/swish-min.js
@@ -1,34 +1,39 @@
-if(!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function n(t,e){e=e||nt;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function i(t){var e=!!t&&"length"in t&&t.length,n=gt.type(t);return"function"!==n&&!gt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function r(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function o(t,e,n){return gt.isFunction(e)?gt.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?gt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?gt.grep(t,function(t){return st.call(e,t)>-1!==n}):Tt.test(e)?gt.filter(e,t,n):(e=gt.filter(e,t),gt.grep(t,function(t){return st.call(e,t)>-1!==n&&1===t.nodeType}))}function a(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function s(t){var e={};return gt.each(t.match(Pt)||[],function(t,n){e[n]=!0}),e}function l(t){return t}function c(t){throw t}function u(t,e,n,i){var r;try{t&&gt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&gt.isFunction(r=t.then)?r.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}function h(){nt.removeEventListener("DOMContentLoaded",h),t.removeEventListener("load",h),gt.ready()}function d(){this.expando=gt.expando+d.uid++}function f(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:Vt.test(t)?JSON.parse(t):t)}function p(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(Ht,"-$&").toLowerCase(),n=t.getAttribute(i),"string"==typeof n){try{n=f(n)}catch(t){}jt.set(t,e,n)}else n=void 0;return n}function g(t,e,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return gt.css(t,e,"")},l=s(),c=n&&n[3]||(gt.cssNumber[e]?"":"px"),u=(gt.cssNumber[e]||"px"!==c&&+l)&&zt.exec(gt.css(t,e));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,gt.style(t,e,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function m(t){var e,n=t.ownerDocument,i=t.nodeName,r=$t[i];return r?r:(e=n.body.appendChild(n.createElement(i)),r=gt.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),$t[i]=r,r)}function v(t,e){for(var n,i,r=[],o=0,a=t.length;o<a;o++)i=t[o],i.style&&(n=i.style.display,e?("none"===n&&(r[o]=It.get(i,"display")||null,r[o]||(i.style.display="")),""===i.style.display&&Gt(i)&&(r[o]=m(i))):"none"!==n&&(r[o]="none",It.set(i,"display",n)));for(o=0;o<a;o++)null!=r[o]&&(t[o].style.display=r[o]);return t}function y(t,e){var n;return n="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&r(t,e)?gt.merge([t],n):n}function x(t,e){for(var n=0,i=t.length;n<i;n++)It.set(t[n],"globalEval",!e||It.get(e[n],"globalEval"))}function b(t,e,n,i,r){for(var o,a,s,l,c,u,h=e.createDocumentFragment(),d=[],f=0,p=t.length;f<p;f++)if(o=t[f],o||0===o)if("object"===gt.type(o))gt.merge(d,o.nodeType?[o]:o);else if(Qt.test(o)){for(a=a||h.appendChild(e.createElement("div")),s=(Ut.exec(o)||["",""])[1].toLowerCase(),l=Yt[s]||Yt._default,a.innerHTML=l[1]+gt.htmlPrefilter(o)+l[2],u=l[0];u--;)a=a.lastChild;gt.merge(d,a.childNodes),a=h.firstChild,a.textContent=""}else d.push(e.createTextNode(o));for(h.textContent="",f=0;o=d[f++];)if(i&&gt.inArray(o,i)>-1)r&&r.push(o);else if(c=gt.contains(o.ownerDocument,o),a=y(h.appendChild(o),"script"),c&&x(a),n)for(u=0;o=a[u++];)Xt.test(o.type||"")&&n.push(o);return h}function _(){return!0}function w(){return!1}function S(){try{return nt.activeElement}catch(t){}}function C(t,e,n,i,r,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(i=i||n,n=void 0);for(s in e)C(t,s,n,i,e[s],o);return t}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=w;else if(!r)return t;return 1===o&&(a=r,r=function(t){return gt().off(t),a.apply(this,arguments)},r.guid=a.guid||(a.guid=gt.guid++)),t.each(function(){gt.event.add(this,e,r,i,n)})}function T(t,e){return r(t,"table")&&r(11!==e.nodeType?e:e.firstChild,"tr")?gt(">tbody",t)[0]||t:t}function k(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function A(t){var e=re.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function M(t,e){var n,i,r,o,a,s,l,c;if(1===e.nodeType){if(It.hasData(t)&&(o=It.access(t),a=It.set(e,o),c=o.events)){delete a.handle,a.events={};for(r in c)for(n=0,i=c[r].length;n<i;n++)gt.event.add(e,r,c[r][n])}jt.hasData(t)&&(s=jt.access(t),l=gt.extend({},s),jt.set(e,l))}}function L(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Wt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function E(t,e,i,r){e=ot.apply([],e);var o,a,s,l,c,u,h=0,d=t.length,f=d-1,p=e[0],g=gt.isFunction(p);if(g||d>1&&"string"==typeof p&&!ft.checkClone&&ie.test(p))return t.each(function(n){var o=t.eq(n);g&&(e[0]=p.call(this,n,o.html())),E(o,e,i,r)});if(d&&(o=b(e,t[0].ownerDocument,!1,t,r),a=o.firstChild,1===o.childNodes.length&&(o=a),a||r)){for(s=gt.map(y(o,"script"),k),l=s.length;h<d;h++)c=o,h!==f&&(c=gt.clone(c,!0,!0),l&&gt.merge(s,y(c,"script"))),i.call(t[h],c,h);if(l)for(u=s[s.length-1].ownerDocument,gt.map(s,A),h=0;h<l;h++)c=s[h],Xt.test(c.type||"")&&!It.access(c,"globalEval")&&gt.contains(u,c)&&(c.src?gt._evalUrl&&gt._evalUrl(c.src):n(c.textContent.replace(oe,""),u))}return t}function P(t,e,n){for(var i,r=e?gt.filter(e,t):t,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||gt.cleanData(y(i)),i.parentNode&&(n&&gt.contains(i.ownerDocument,i)&&x(y(i,"script")),i.parentNode.removeChild(i));return t}function N(t,e,n){var i,r,o,a,s=t.style;return n=n||le(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||gt.contains(t.ownerDocument,t)||(a=gt.style(t,e)),!ft.pixelMarginRight()&&se.test(a)&&ae.test(e)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o)),void 0!==a?a+"":a}function O(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function R(t){if(t in pe)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=fe.length;n--;)if(t=fe[n]+e,t in pe)return t}function D(t){var e=gt.cssProps[t];return e||(e=gt.cssProps[t]=R(t)||t),e}function I(t,e,n){var i=zt.exec(e);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):e}function j(t,e,n,i,r){var o,a=0;for(o=n===(i?"border":"content")?4:"width"===e?1:0;o<4;o+=2)"margin"===n&&(a+=gt.css(t,n+qt[o],!0,r)),i?("content"===n&&(a-=gt.css(t,"padding"+qt[o],!0,r)),"margin"!==n&&(a-=gt.css(t,"border"+qt[o]+"Width",!0,r))):(a+=gt.css(t,"padding"+qt[o],!0,r),"padding"!==n&&(a+=gt.css(t,"border"+qt[o]+"Width",!0,r)));return a}function V(t,e,n){var i,r=le(t),o=N(t,e,r),a="border-box"===gt.css(t,"boxSizing",!1,r);return se.test(o)?o:(i=a&&(ft.boxSizingReliable()||o===t.style[e]),"auto"===o&&(o=t["offset"+e[0].toUpperCase()+e.slice(1)]),o=parseFloat(o)||0,o+j(t,e,n||(a?"border":"content"),i,r)+"px")}function H(t,e,n,i,r){return new H.prototype.init(t,e,n,i,r)}function F(){me&&(nt.hidden===!1&&t.requestAnimationFrame?t.requestAnimationFrame(F):t.setTimeout(F,gt.fx.interval),gt.fx.tick())}function z(){return t.setTimeout(function(){ge=void 0}),ge=gt.now()}function q(t,e){var n,i=0,r={height:t};for(e=e?1:0;i<4;i+=2-e)n=qt[i],r["margin"+n]=r["padding"+n]=t;return e&&(r.opacity=r.width=t),r}function G(t,e,n){for(var i,r=(W.tweeners[e]||[]).concat(W.tweeners["*"]),o=0,a=r.length;o<a;o++)if(i=r[o].call(n,e,t))return i}function B(t,e,n){var i,r,o,a,s,l,c,u,h="width"in e||"height"in e,d=this,f={},p=t.style,g=t.nodeType&&Gt(t),m=It.get(t,"fxshow");n.queue||(a=gt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,gt.queue(t,"fx").length||a.empty.fire()})}));for(i in e)if(r=e[i],ve.test(r)){if(delete e[i],o=o||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;g=!0}f[i]=m&&m[i]||gt.style(t,i)}if(l=!gt.isEmptyObject(e),l||!gt.isEmptyObject(f)){h&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=m&&m.display,null==c&&(c=It.get(t,"display")),u=gt.css(t,"display"),"none"===u&&(c?u=c:(v([t],!0),c=t.style.display||c,u=gt.css(t,"display"),v([t]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===gt.css(t,"float")&&(l||(d.done(function(){p.display=c}),null==c&&(u=p.display,c="none"===u?"":u)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1;for(i in f)l||(m?"hidden"in m&&(g=m.hidden):m=It.access(t,"fxshow",{display:c}),o&&(m.hidden=!g),g&&v([t],!0),d.done(function(){g||v([t]),It.remove(t,"fxshow");for(i in f)gt.style(t,i,f[i])})),l=G(g?m[i]:0,i,d),i in m||(m[i]=l.start,g&&(l.end=l.start,l.start=0))}}function $(t,e){var n,i,r,o,a;for(n in t)if(i=gt.camelCase(n),r=e[i],o=t[n],Array.isArray(o)&&(r=o[1],o=t[n]=o[0]),n!==i&&(t[i]=o,delete t[n]),a=gt.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete t[i];for(n in o)n in t||(t[n]=o[n],e[n]=r)}else e[i]=r}function W(t,e,n){var i,r,o=0,a=W.prefilters.length,s=gt.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var e=ge||z(),n=Math.max(0,c.startTime+c.duration-e),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;a<l;a++)c.tweens[a].run(o);return s.notifyWith(t,[c,o,n]),o<1&&l?n:(l||s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:gt.extend({},e),opts:gt.extend(!0,{specialEasing:{},easing:gt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ge||z(),duration:n.duration,tweens:[],createTween:function(e,n){var i=gt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(i),i},stop:function(e){var n=0,i=e?c.tweens.length:0;if(r)return this;for(r=!0;n<i;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),u=c.props;for($(u,c.opts.specialEasing);o<a;o++)if(i=W.prefilters[o].call(c,t,u,c.opts))return gt.isFunction(i.stop)&&(gt._queueHooks(c.elem,c.opts.queue).stop=gt.proxy(i.stop,i)),i;return gt.map(u,G,c),gt.isFunction(c.opts.start)&&c.opts.start.call(t,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),gt.fx.timer(gt.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c}function U(t){var e=t.match(Pt)||[];return e.join(" ")}function X(t){return t.getAttribute&&t.getAttribute("class")||""}function Y(t,e,n,i){var r;if(Array.isArray(e))gt.each(e,function(e,r){n||Me.test(t)?i(t,r):Y(t+"["+("object"==typeof r&&null!=r?e:"")+"]",r,n,i)});else if(n||"object"!==gt.type(e))i(t,e);else for(r in e)Y(t+"["+r+"]",e[r],n,i)}function Q(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,r=0,o=e.toLowerCase().match(Pt)||[];if(gt.isFunction(n))for(;i=o[r++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Z(t,e,n,i){function r(s){var l;return o[s]=!0,gt.each(t[s]||[],function(t,s){var c=s(e,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(e.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=t===Fe;return r(e.dataTypes[0])||!o["*"]&&r("*")}function K(t,e){var n,i,r=gt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((r[n]?t:i||(i={}))[n]=e[n]);return i&&gt.extend(!0,t,i),t}function J(t,e,n){for(var i,r,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(r in s)if(s[r]&&s[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||t.converters[r+" "+l[0]]){o=r;break}a||(a=r)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function tt(t,e,n,i){var r,o,a,s,l,c={},u=t.dataTypes.slice();if(u[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=u.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}var et=[],nt=t.document,it=Object.getPrototypeOf,rt=et.slice,ot=et.concat,at=et.push,st=et.indexOf,lt={},ct=lt.toString,ut=lt.hasOwnProperty,ht=ut.toString,dt=ht.call(Object),ft={},pt="3.2.1",gt=function(t,e){return new gt.fn.init(t,e)},mt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,vt=/^-ms-/,yt=/-([a-z])/g,xt=function(t,e){return e.toUpperCase()};gt.fn=gt.prototype={jquery:pt,constructor:gt,length:0,toArray:function(){return rt.call(this)},get:function(t){return null==t?rt.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=gt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return gt.each(this,t)},map:function(t){return this.pushStack(gt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(rt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:at,sort:et.sort,splice:et.splice},gt.extend=gt.fn.extend=function(){var t,e,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||gt.isFunction(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(t=arguments[s]))for(e in t)n=a[e],i=t[e],a!==i&&(c&&i&&(gt.isPlainObject(i)||(r=Array.isArray(i)))?(r?(r=!1,o=n&&Array.isArray(n)?n:[]):o=n&&gt.isPlainObject(n)?n:{},a[e]=gt.extend(c,o,i)):void 0!==i&&(a[e]=i));return a},gt.extend({expando:"jQuery"+(pt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===gt.type(t)},isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=gt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ct.call(t)||(e=it(t))&&(n=ut.call(e,"constructor")&&e.constructor,"function"!=typeof n||ht.call(n)!==dt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?lt[ct.call(t)]||"object":typeof t},globalEval:function(t){n(t)},camelCase:function(t){return t.replace(vt,"ms-").replace(yt,xt)},each:function(t,e){var n,r=0;if(i(t))for(n=t.length;r<n&&e.call(t[r],r,t[r])!==!1;r++);else for(r in t)if(e.call(t[r],r,t[r])===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(mt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(i(Object(t))?gt.merge(n,"string"==typeof t?[t]:t):at.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:st.call(e,t,n)},merge:function(t,e){for(var n=+e.length,i=0,r=t.length;i<n;i++)t[r++]=e[i];return t.length=r,t},grep:function(t,e,n){for(var i,r=[],o=0,a=t.length,s=!n;o<a;o++)i=!e(t[o],o),i!==s&&r.push(t[o]);return r},map:function(t,e,n){var r,o,a=0,s=[];if(i(t))for(r=t.length;a<r;a++)o=e(t[a],a,n),null!=o&&s.push(o);else for(a in t)o=e(t[a],a,n),null!=o&&s.push(o);return ot.apply([],s)},guid:1,proxy:function(t,e){var n,i,r;if("string"==typeof e&&(n=t[e],e=t,t=n),gt.isFunction(t))return i=rt.call(arguments,2),r=function(){return t.apply(e||this,i.concat(rt.call(arguments)))},r.guid=t.guid=t.guid||gt.guid++,r},now:Date.now,support:ft}),"function"==typeof Symbol&&(gt.fn[Symbol.iterator]=et[Symbol.iterator]),gt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){lt["[object "+e+"]"]=e.toLowerCase()});var bt=function(t){function e(t,e,n,i){var r,o,a,s,l,c,u,d=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!i&&((e?e.ownerDocument||e:z)!==O&&N(e),e=e||O,D)){if(11!==p&&(l=vt.exec(t)))if(r=l[1]){if(9===p){if(!(a=e.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(d&&(a=d.getElementById(r))&&H(e,a)&&a.id===r)return n.push(a),n}else{if(l[2])return K.apply(n,e.getElementsByTagName(t)),n;if((r=l[3])&&w.getElementsByClassName&&e.getElementsByClassName)return K.apply(n,e.getElementsByClassName(r)),n}if(w.qsa&&!W[t+" "]&&(!I||!I.test(t))){if(1!==p)d=e,u=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(_t,wt):e.setAttribute("id",s=F),c=k(t),o=c.length;o--;)c[o]="#"+s+" "+f(c[o]);u=c.join(","),d=yt.test(t)&&h(e.parentNode)||e}if(u)try{return K.apply(n,d.querySelectorAll(u)),n}catch(t){}finally{s===F&&e.removeAttribute("id")}}}return M(t.replace(st,"$1"),e,n,i)}function n(){function t(n,i){return e.push(n+" ")>S.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[F]=!0,t}function r(t){var e=O.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),i=n.length;i--;)S.attrHandle[n[i]]=e}function a(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function l(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return function(e){return"form"in e?e.parentNode&&e.disabled===!1?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Ct(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function u(t){return i(function(e){return e=+e,i(function(n,i){for(var r,o=t([],n.length,e),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function h(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function d(){}function f(t){for(var e=0,n=t.length,i="";e<n;e++)i+=t[e].value;return i}function p(t,e,n){var i=e.dir,r=e.next,o=r||i,a=n&&"parentNode"===o,s=G++;return e.first?function(e,n,r){for(;e=e[i];)if(1===e.nodeType||a)return t(e,n,r);return!1}:function(e,n,l){var c,u,h,d=[q,s];if(l){for(;e=e[i];)if((1===e.nodeType||a)&&t(e,n,l))return!0}else for(;e=e[i];)if(1===e.nodeType||a)if(h=e[F]||(e[F]={}),u=h[e.uniqueID]||(h[e.uniqueID]={}),r&&r===e.nodeName.toLowerCase())e=e[i]||e;else{if((c=u[o])&&c[0]===q&&c[1]===s)return d[2]=c[2];if(u[o]=d,d[2]=t(e,n,l))return!0}return!1}}function g(t){return t.length>1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function m(t,n,i){for(var r=0,o=n.length;r<o;r++)e(t,n[r],i);return i}function v(t,e,n,i,r){for(var o,a=[],s=0,l=t.length,c=null!=e;s<l;s++)(o=t[s])&&(n&&!n(o,i,r)||(a.push(o),c&&e.push(s)));return a}function y(t,e,n,r,o,a){return r&&!r[F]&&(r=y(r)),o&&!o[F]&&(o=y(o,a)),i(function(i,a,s,l){var c,u,h,d=[],f=[],p=a.length,g=i||m(e||"*",s.nodeType?[s]:s,[]),y=!t||!i&&e?g:v(g,d,t,s,l),x=n?o||(i?t:p||r)?[]:a:y;if(n&&n(y,x,s,l),r)for(c=v(x,f),r(c,[],s,l),u=c.length;u--;)(h=c[u])&&(x[f[u]]=!(y[f[u]]=h));if(i){if(o||t){if(o){for(c=[],u=x.length;u--;)(h=x[u])&&c.push(y[u]=h);o(null,x=[],c,l)}for(u=x.length;u--;)(h=x[u])&&(c=o?tt(i,h):d[u])>-1&&(i[c]=!(a[c]=h))}}else x=v(x===a?x.splice(p,x.length):x),o?o(null,a,x,l):K.apply(a,x)})}function x(t){for(var e,n,i,r=t.length,o=S.relative[t[0].type],a=o||S.relative[" "],s=o?1:0,l=p(function(t){return t===e},a,!0),c=p(function(t){return tt(e,t)>-1},a,!0),u=[function(t,n,i){var r=!o&&(i||n!==L)||((e=n).nodeType?l(t,n,i):c(t,n,i));return e=null,r}];s<r;s++)if(n=S.relative[t[s].type])u=[p(g(u),n)];else{if(n=S.filter[t[s].type].apply(null,t[s].matches),n[F]){for(i=++s;i<r&&!S.relative[t[i].type];i++);return y(s>1&&g(u),s>1&&f(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(st,"$1"),n,s<i&&x(t.slice(s,i)),i<r&&x(t=t.slice(i)),i<r&&f(t))}u.push(n)}return g(u)}function b(t,n){var r=n.length>0,o=t.length>0,a=function(i,a,s,l,c){var u,h,d,f=0,p="0",g=i&&[],m=[],y=L,x=i||o&&S.find.TAG("*",c),b=q+=null==y?1:Math.random()||.1,_=x.length;for(c&&(L=a===O||a||c);p!==_&&null!=(u=x[p]);p++){if(o&&u){for(h=0,a||u.ownerDocument===O||(N(u),s=!D);d=t[h++];)if(d(u,a||O,s)){l.push(u);break}c&&(q=b)}r&&((u=!d&&u)&&f--,i&&g.push(u))}if(f+=p,r&&p!==f){for(h=0;d=n[h++];)d(g,m,a,s);if(i){if(f>0)for(;p--;)g[p]||m[p]||(m[p]=Q.call(l));m=v(m)}K.apply(l,m),c&&!i&&m.length>0&&f+n.length>1&&e.uniqueSort(l)}return c&&(q=b,L=y),g};return r?i(a):a}var _,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I,j,V,H,F="sizzle"+1*new Date,z=t.document,q=0,G=0,B=n(),$=n(),W=n(),U=function(t,e){return t===e&&(P=!0),0},X={}.hasOwnProperty,Y=[],Q=Y.pop,Z=Y.push,K=Y.push,J=Y.slice,tt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",rt="\\["+nt+"*("+it+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+nt+"*\\]",ot=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+rt+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),st=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),lt=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),ut=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ht=new RegExp(ot),dt=new RegExp("^"+it+"$"),ft={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it+"|[*])"),ATTR:new RegExp("^"+rt),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,mt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,xt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),bt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},_t=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,wt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},St=function(){N()},Ct=p(function(t){return t.disabled===!0&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{K.apply(Y=J.call(z.childNodes),z.childNodes),Y[z.childNodes.length].nodeType}catch(t){K={apply:Y.length?function(t,e){Z.apply(t,J.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}w=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},N=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:z;return i!==O&&9===i.nodeType&&i.documentElement?(O=i,R=O.documentElement,D=!T(O),z!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",St,!1):n.attachEvent&&n.attachEvent("onunload",St)),w.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=r(function(t){return t.appendChild(O.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=mt.test(O.getElementsByClassName),w.getById=r(function(t){return R.appendChild(t).id=F,!O.getElementsByName||!O.getElementsByName(F).length}),w.getById?(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){return t.getAttribute("id")===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n=e.getElementById(t);return n?[n]:[]}}):(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n,i,r,o=e.getElementById(t);if(o){if(n=o.getAttributeNode("id"),n&&n.value===t)return[o];for(r=e.getElementsByName(t),i=0;o=r[i++];)if(n=o.getAttributeNode("id"),n&&n.value===t)return[o]}return[]}}),S.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},S.find.CLASS=w.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&D)return e.getElementsByClassName(t)},j=[],I=[],(w.qsa=mt.test(O.querySelectorAll))&&(r(function(t){R.appendChild(t).innerHTML="<a id='"+F+"'></a><select id='"+F+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+F+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||I.push(".#.+[+~]")}),r(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=O.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+nt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),R.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(w.matchesSelector=mt.test(V=R.matches||R.webkitMatchesSelector||R.mozMatchesSelector||R.oMatchesSelector||R.msMatchesSelector))&&r(function(t){w.disconnectedMatch=V.call(t,"*"),V.call(t,"[s!='']:x"),j.push("!=",ot)}),I=I.length&&new RegExp(I.join("|")),j=j.length&&new RegExp(j.join("|")),e=mt.test(R.compareDocumentPosition),H=e||mt.test(R.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=e?function(t,e){if(t===e)return P=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!w.sortDetached&&e.compareDocumentPosition(t)===n?t===O||t.ownerDocument===z&&H(z,t)?-1:e===O||e.ownerDocument===z&&H(z,e)?1:E?tt(E,t)-tt(E,e):0:4&n?-1:1)}:function(t,e){if(t===e)return P=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,s=[t],l=[e];if(!r||!o)return t===O?-1:e===O?1:r?-1:o?1:E?tt(E,t)-tt(E,e):0;if(r===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===z?-1:l[i]===z?1:0},O):O},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==O&&N(t),n=n.replace(ut,"='$1']"),w.matchesSelector&&D&&!W[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var i=V.call(t,n);if(i||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){}return e(n,O,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==O&&N(t),H(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==O&&N(t);var n=S.attrHandle[e.toLowerCase()],i=n&&X.call(S.attrHandle,e.toLowerCase())?n(t,e,!D):void 0;return void 0!==i?i:w.attributes||!D?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.escape=function(t){return(t+"").replace(_t,wt)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(P=!w.detectDuplicates,E=!w.sortStable&&t.slice(0),t.sort(U),P){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return E=null,t},C=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=C(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=C(e);return n},S=e.selectors={cacheLength:50,createPseudo:i,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(xt,bt),t[3]=(t[3]||t[4]||t[5]||"").replace(xt,bt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ht.test(n)&&(e=k(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(xt,bt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var o=e.attr(r,t);return null==o?"!="===n:!n||(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(at," ")+" ").indexOf(i)>-1:"|="===n&&(o===i||o.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,r){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,l){var c,u,h,d,f,p,g=o!==a?"nextSibling":"previousSibling",m=e.parentNode,v=s&&e.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=g="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?m.firstChild:m.lastChild],a&&y){for(d=m,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f&&c[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(x=f=0)||p.pop();)if(1===d.nodeType&&++x&&d===e){u[t]=[q,f,x];break}}else if(y&&(d=e,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f),x===!1)for(;(d=++f&&d&&d[g]||(x=f=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&(h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),u[t]=[q,x]),d!==e)););return x-=r,x===i||x%i===0&&x/i>=0}}},PSEUDO:function(t,n){var r,o=S.pseudos[t]||S.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(r=[t,t,"",n],S.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=o(t,n),a=r.length;a--;)i=tt(t,r[a]),t[i]=!(e[i]=r[a])}):function(t){return o(t,0,r)}):o}},pseudos:{not:i(function(t){var e=[],n=[],r=A(t.replace(st,"$1"));return r[F]?i(function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(xt,bt),function(e){return(e.textContent||e.innerText||C(e)).indexOf(t)>-1}}),lang:i(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xt,bt).toLowerCase(),function(e){var n;do if(n=D?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1};
-}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===R},focus:function(t){return t===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!S.pseudos.empty(t)},header:function(t){return gt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:u(function(){return[0]}),last:u(function(t,e){return[e-1]}),eq:u(function(t,e,n){return[n<0?n+e:n]}),even:u(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:u(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:u(function(t,e,n){for(var i=n<0?n+e:n;--i>=0;)t.push(i);return t}),gt:u(function(t,e,n){for(var i=n<0?n+e:n;++i<e;)t.push(i);return t})}},S.pseudos.nth=S.pseudos.eq;for(_ in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})S.pseudos[_]=s(_);for(_ in{submit:!0,reset:!0})S.pseudos[_]=l(_);return d.prototype=S.filters=S.pseudos,S.setFilters=new d,k=e.tokenize=function(t,n){var i,r,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=S.preFilter;s;){i&&!(r=lt.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ct.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(st," ")}),s=s.slice(i.length));for(a in S.filter)!(r=ft[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},A=e.compile=function(t,e){var n,i=[],r=[],o=W[t+" "];if(!o){for(e||(e=k(t)),n=e.length;n--;)o=x(e[n]),o[F]?i.push(o):r.push(o);o=W(t,b(r,i)),o.selector=t}return o},M=e.select=function(t,e,n,i){var r,o,a,s,l,c="function"==typeof t&&t,u=!i&&k(t=c.selector||t);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===e.nodeType&&D&&S.relative[o[1].type]){if(e=(S.find.ID(a.matches[0].replace(xt,bt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ft.needsContext.test(t)?0:o.length;r--&&(a=o[r],!S.relative[s=a.type]);)if((l=S.find[s])&&(i=l(a.matches[0].replace(xt,bt),yt.test(o[0].type)&&h(e.parentNode)||e))){if(o.splice(r,1),t=i.length&&f(o),!t)return K.apply(n,i),n;break}}return(c||A(t,u))(i,e,!D,n,!e||yt.test(t)&&h(e.parentNode)||e),n},w.sortStable=F.split("").sort(U).join("")===F,w.detectDuplicates=!!P,N(),w.sortDetached=r(function(t){return 1&t.compareDocumentPosition(O.createElement("fieldset"))}),r(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&r(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var i;if(!n)return t[e]===!0?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);gt.find=bt,gt.expr=bt.selectors,gt.expr[":"]=gt.expr.pseudos,gt.uniqueSort=gt.unique=bt.uniqueSort,gt.text=bt.getText,gt.isXMLDoc=bt.isXML,gt.contains=bt.contains,gt.escapeSelector=bt.escape;var _t=function(t,e,n){for(var i=[],r=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&gt(t).is(n))break;i.push(t)}return i},wt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},St=gt.expr.match.needsContext,Ct=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Tt=/^.[^:#\[\.,]*$/;gt.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?gt.find.matchesSelector(i,t)?[i]:[]:gt.find.matches(t,gt.grep(e,function(t){return 1===t.nodeType}))},gt.fn.extend({find:function(t){var e,n,i=this.length,r=this;if("string"!=typeof t)return this.pushStack(gt(t).filter(function(){for(e=0;e<i;e++)if(gt.contains(r[e],this))return!0}));for(n=this.pushStack([]),e=0;e<i;e++)gt.find(t,r[e],n);return i>1?gt.uniqueSort(n):n},filter:function(t){return this.pushStack(o(this,t||[],!1))},not:function(t){return this.pushStack(o(this,t||[],!0))},is:function(t){return!!o(this,"string"==typeof t&&St.test(t)?gt(t):t||[],!1).length}});var kt,At=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Mt=gt.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||kt,"string"==typeof t){if(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:At.exec(t),!i||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof gt?e[0]:e,gt.merge(this,gt.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:nt,!0)),Ct.test(i[1])&&gt.isPlainObject(e))for(i in e)gt.isFunction(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return r=nt.getElementById(i[2]),r&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):gt.isFunction(t)?void 0!==n.ready?n.ready(t):t(gt):gt.makeArray(t,this)};Mt.prototype=gt.fn,kt=gt(nt);var Lt=/^(?:parents|prev(?:Until|All))/,Et={children:!0,contents:!0,next:!0,prev:!0};gt.fn.extend({has:function(t){var e=gt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(gt.contains(this,e[t]))return!0})},closest:function(t,e){var n,i=0,r=this.length,o=[],a="string"!=typeof t&&gt(t);if(!St.test(t))for(;i<r;i++)for(n=this[i];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&gt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?gt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?st.call(gt(t),this[0]):st.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(gt.uniqueSort(gt.merge(this.get(),gt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),gt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return _t(t,"parentNode")},parentsUntil:function(t,e,n){return _t(t,"parentNode",n)},next:function(t){return a(t,"nextSibling")},prev:function(t){return a(t,"previousSibling")},nextAll:function(t){return _t(t,"nextSibling")},prevAll:function(t){return _t(t,"previousSibling")},nextUntil:function(t,e,n){return _t(t,"nextSibling",n)},prevUntil:function(t,e,n){return _t(t,"previousSibling",n)},siblings:function(t){return wt((t.parentNode||{}).firstChild,t)},children:function(t){return wt(t.firstChild)},contents:function(t){return r(t,"iframe")?t.contentDocument:(r(t,"template")&&(t=t.content||t),gt.merge([],t.childNodes))}},function(t,e){gt.fn[t]=function(n,i){var r=gt.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=gt.filter(i,r)),this.length>1&&(Et[t]||gt.uniqueSort(r),Lt.test(t)&&r.reverse()),this.pushStack(r)}});var Pt=/[^\x20\t\r\n\f]+/g;gt.Callbacks=function(t){t="string"==typeof t?s(t):gt.extend({},t);var e,n,i,r,o=[],a=[],l=-1,c=function(){for(r=r||t.once,i=e=!0;a.length;l=-1)for(n=a.shift();++l<o.length;)o[l].apply(n[0],n[1])===!1&&t.stopOnFalse&&(l=o.length,n=!1);t.memory||(n=!1),e=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!e&&(l=o.length-1,a.push(n)),function e(n){gt.each(n,function(n,i){gt.isFunction(i)?t.unique&&u.has(i)||o.push(i):i&&i.length&&"string"!==gt.type(i)&&e(i)})}(arguments),n&&!e&&c()),this},remove:function(){return gt.each(arguments,function(t,e){for(var n;(n=gt.inArray(e,o,n))>-1;)o.splice(n,1),n<=l&&l--}),this},has:function(t){return t?gt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=a=[],n||e||(o=n=""),this},locked:function(){return!!r},fireWith:function(t,n){return r||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||c()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},gt.extend({Deferred:function(e){var n=[["notify","progress",gt.Callbacks("memory"),gt.Callbacks("memory"),2],["resolve","done",gt.Callbacks("once memory"),gt.Callbacks("once memory"),0,"resolved"],["reject","fail",gt.Callbacks("once memory"),gt.Callbacks("once memory"),1,"rejected"]],i="pending",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return gt.Deferred(function(e){gt.each(n,function(n,i){var r=gt.isFunction(t[i[4]])&&t[i[4]];o[i[1]](function(){var t=r&&r.apply(this,arguments);t&&gt.isFunction(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[i[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,i,r){function o(e,n,i,r){return function(){var s=this,u=arguments,h=function(){var t,h;if(!(e<a)){if(t=i.apply(s,u),t===n.promise())throw new TypeError("Thenable self-resolution");h=t&&("object"==typeof t||"function"==typeof t)&&t.then,gt.isFunction(h)?r?h.call(t,o(a,n,l,r),o(a,n,c,r)):(a++,h.call(t,o(a,n,l,r),o(a,n,c,r),o(a,n,l,n.notifyWith))):(i!==l&&(s=void 0,u=[t]),(r||n.resolveWith)(s,u))}},d=r?h:function(){try{h()}catch(t){gt.Deferred.exceptionHook&&gt.Deferred.exceptionHook(t,d.stackTrace),e+1>=a&&(i!==c&&(s=void 0,u=[t]),n.rejectWith(s,u))}};e?d():(gt.Deferred.getStackHook&&(d.stackTrace=gt.Deferred.getStackHook()),t.setTimeout(d))}}var a=0;return gt.Deferred(function(t){n[0][3].add(o(0,t,gt.isFunction(r)?r:l,t.notifyWith)),n[1][3].add(o(0,t,gt.isFunction(e)?e:l)),n[2][3].add(o(0,t,gt.isFunction(i)?i:c))}).promise()},promise:function(t){return null!=t?gt.extend(t,r):r}},o={};return gt.each(n,function(t,e){var a=e[2],s=e[5];r[e[1]]=a.add,s&&a.add(function(){i=s},n[3-t][2].disable,n[0][2].lock),a.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=a.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,n=e,i=Array(n),r=rt.call(arguments),o=gt.Deferred(),a=function(t){return function(n){i[t]=this,r[t]=arguments.length>1?rt.call(arguments):n,--e||o.resolveWith(i,r)}};if(e<=1&&(u(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||gt.isFunction(r[n]&&r[n].then)))return o.then();for(;n--;)u(r[n],a(n),o.reject);return o.promise()}});var Nt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;gt.Deferred.exceptionHook=function(e,n){t.console&&t.console.warn&&e&&Nt.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,n)},gt.readyException=function(e){t.setTimeout(function(){throw e})};var Ot=gt.Deferred();gt.fn.ready=function(t){return Ot.then(t).catch(function(t){gt.readyException(t)}),this},gt.extend({isReady:!1,readyWait:1,ready:function(t){(t===!0?--gt.readyWait:gt.isReady)||(gt.isReady=!0,t!==!0&&--gt.readyWait>0||Ot.resolveWith(nt,[gt]))}}),gt.ready.then=Ot.then,"complete"===nt.readyState||"loading"!==nt.readyState&&!nt.documentElement.doScroll?t.setTimeout(gt.ready):(nt.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h));var Rt=function(t,e,n,i,r,o,a){var s=0,l=t.length,c=null==n;if("object"===gt.type(n)){r=!0;for(s in n)Rt(t,e,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,gt.isFunction(i)||(a=!0),c&&(a?(e.call(t,i),e=null):(c=e,e=function(t,e,n){return c.call(gt(t),n)})),e))for(;s<l;s++)e(t[s],n,a?i:i.call(t[s],s,e(t[s],n)));return r?t:c?e.call(t):l?e(t[0],n):o},Dt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};d.uid=1,d.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Dt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var i,r=this.cache(t);if("string"==typeof e)r[gt.camelCase(e)]=n;else for(i in e)r[gt.camelCase(i)]=e[i];return r},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][gt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,i=t[this.expando];if(void 0!==i){if(void 0!==e){Array.isArray(e)?e=e.map(gt.camelCase):(e=gt.camelCase(e),e=e in i?[e]:e.match(Pt)||[]),n=e.length;for(;n--;)delete i[e[n]]}(void 0===e||gt.isEmptyObject(i))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!gt.isEmptyObject(e)}};var It=new d,jt=new d,Vt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ht=/[A-Z]/g;gt.extend({hasData:function(t){return jt.hasData(t)||It.hasData(t)},data:function(t,e,n){return jt.access(t,e,n)},removeData:function(t,e){jt.remove(t,e)},_data:function(t,e,n){return It.access(t,e,n)},_removeData:function(t,e){It.remove(t,e)}}),gt.fn.extend({data:function(t,e){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(r=jt.get(o),1===o.nodeType&&!It.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=gt.camelCase(i.slice(5)),p(o,i,r[i])));It.set(o,"hasDataAttrs",!0)}return r}return"object"==typeof t?this.each(function(){jt.set(this,t)}):Rt(this,function(e){var n;if(o&&void 0===e){if(n=jt.get(o,t),void 0!==n)return n;if(n=p(o,t),void 0!==n)return n}else this.each(function(){jt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){jt.remove(this,t)})}}),gt.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=It.get(t,e),n&&(!i||Array.isArray(n)?i=It.access(t,e,gt.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=gt.queue(t,e),i=n.length,r=n.shift(),o=gt._queueHooks(t,e),a=function(){gt.dequeue(t,e)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===e&&n.unshift("inprogress"),delete o.stop,r.call(t,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return It.get(t,n)||It.access(t,n,{empty:gt.Callbacks("once memory").add(function(){It.remove(t,[e+"queue",n])})})}}),gt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?gt.queue(this[0],t):void 0===e?this:this.each(function(){var n=gt.queue(this,t,e);gt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&gt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){gt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,i=1,r=gt.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)n=It.get(o[a],t+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(e)}});var Ft=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,zt=new RegExp("^(?:([+-])=|)("+Ft+")([a-z%]*)$","i"),qt=["Top","Right","Bottom","Left"],Gt=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&gt.contains(t.ownerDocument,t)&&"none"===gt.css(t,"display")},Bt=function(t,e,n,i){var r,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];r=n.apply(t,i||[]);for(o in e)t.style[o]=a[o];return r},$t={};gt.fn.extend({show:function(){return v(this,!0)},hide:function(){return v(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Gt(this)?gt(this).show():gt(this).hide()})}});var Wt=/^(?:checkbox|radio)$/i,Ut=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Xt=/^$|\/(?:java|ecma)script/i,Yt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;var Qt=/<|&#?\w+;/;!function(){var t=nt.createDocumentFragment(),e=t.appendChild(nt.createElement("div")),n=nt.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),ft.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",ft.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Zt=nt.documentElement,Kt=/^key/,Jt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,te=/^([^.]*)(?:\.(.+)|)/;gt.event={global:{},add:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.get(t);if(m)for(n.handler&&(o=n,n=o.handler,r=o.selector),r&&gt.find.matchesSelector(Zt,r),n.guid||(n.guid=gt.guid++),(l=m.events)||(l=m.events={}),(a=m.handle)||(a=m.handle=function(e){return"undefined"!=typeof gt&&gt.event.triggered!==e.type?gt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Pt)||[""],c=e.length;c--;)s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f&&(h=gt.event.special[f]||{},f=(r?h.delegateType:h.bindType)||f,h=gt.event.special[f]||{},u=gt.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&gt.expr.match.needsContext.test(r),namespace:p.join(".")},o),(d=l[f])||(d=l[f]=[],d.delegateCount=0,h.setup&&h.setup.call(t,i,p,a)!==!1||t.addEventListener&&t.addEventListener(f,a)),h.add&&(h.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,u):d.push(u),gt.event.global[f]=!0)},remove:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.hasData(t)&&It.get(t);if(m&&(l=m.events)){for(e=(e||"").match(Pt)||[""],c=e.length;c--;)if(s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f){for(h=gt.event.special[f]||{},f=(i?h.delegateType:h.bindType)||f,d=l[f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)u=d[o],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,h.remove&&h.remove.call(t,u));a&&!d.length&&(h.teardown&&h.teardown.call(t,p,m.handle)!==!1||gt.removeEvent(t,f,m.handle),delete l[f])}else for(f in l)gt.event.remove(t,f+e[c],n,i,!0);gt.isEmptyObject(l)&&It.remove(t,"handle events")}},dispatch:function(t){var e,n,i,r,o,a,s=gt.event.fix(t),l=new Array(arguments.length),c=(It.get(this,"events")||{})[s.type]||[],u=gt.event.special[s.type]||{};for(l[0]=s,e=1;e<arguments.length;e++)l[e]=arguments[e];if(s.delegateTarget=this,!u.preDispatch||u.preDispatch.call(this,s)!==!1){for(a=gt.event.handlers.call(this,s,c),e=0;(r=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,i=((gt.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,l),void 0!==i&&(s.result=i)===!1&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,i,r,o,a,s=[],l=e.delegateCount,c=t.target;if(l&&c.nodeType&&!("click"===t.type&&t.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||c.disabled!==!0)){for(o=[],a={},n=0;n<l;n++)i=e[n],r=i.selector+" ",void 0===a[r]&&(a[r]=i.needsContext?gt(r,this).index(c)>-1:gt.find(r,this,null,[c]).length),a[r]&&o.push(i);o.length&&s.push({elem:c,handlers:o})}return c=this,l<e.length&&s.push({elem:c,handlers:e.slice(l)}),s},addProp:function(t,e){Object.defineProperty(gt.Event.prototype,t,{enumerable:!0,configurable:!0,get:gt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[gt.expando]?t:new gt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==S()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===S()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r(this,"input"))return this.click(),!1},_default:function(t){return r(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},gt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},gt.Event=function(t,e){return this instanceof gt.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?_:w,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&gt.extend(this,e),this.timeStamp=t&&t.timeStamp||gt.now(),void(this[gt.expando]=!0)):new gt.Event(t,e)},gt.Event.prototype={constructor:gt.Event,isDefaultPrevented:w,isPropagationStopped:w,isImmediatePropagationStopped:w,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=_,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=_,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=_,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},gt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&Kt.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&Jt.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},gt.event.addProp),gt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){gt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,i=this,r=t.relatedTarget,o=t.handleObj;return r&&(r===i||gt.contains(i,r))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),gt.fn.extend({on:function(t,e,n,i){return C(this,t,e,n,i)},one:function(t,e,n,i){return C(this,t,e,n,i,1)},off:function(t,e,n){var i,r;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,gt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof t){for(r in t)this.off(r,e,t[r]);return this}return e!==!1&&"function"!=typeof e||(n=e,e=void 0),n===!1&&(n=w),this.each(function(){gt.event.remove(this,t,n,e)})}});var ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ne=/<script|<style|<link/i,ie=/checked\s*(?:[^=]|=\s*.checked.)/i,re=/^true\/(.*)/,oe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;gt.extend({htmlPrefilter:function(t){return t.replace(ee,"<$1></$2>")},clone:function(t,e,n){var i,r,o,a,s=t.cloneNode(!0),l=gt.contains(t.ownerDocument,t);if(!(ft.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||gt.isXMLDoc(t)))for(a=y(s),o=y(t),i=0,r=o.length;i<r;i++)L(o[i],a[i]);if(e)if(n)for(o=o||y(t),a=a||y(s),i=0,r=o.length;i<r;i++)M(o[i],a[i]);else M(t,s);return a=y(s,"script"),a.length>0&&x(a,!l&&y(t,"script")),s},cleanData:function(t){for(var e,n,i,r=gt.event.special,o=0;void 0!==(n=t[o]);o++)if(Dt(n)){if(e=n[It.expando]){if(e.events)for(i in e.events)r[i]?gt.event.remove(n,i):gt.removeEvent(n,i,e.handle);n[It.expando]=void 0}n[jt.expando]&&(n[jt.expando]=void 0)}}}),gt.fn.extend({detach:function(t){return P(this,t,!0)},remove:function(t){return P(this,t)},text:function(t){return Rt(this,function(t){return void 0===t?gt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.appendChild(t)}})},prepend:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(gt.cleanData(y(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return gt.clone(this,t,e)})},html:function(t){return Rt(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ne.test(t)&&!Yt[(Ut.exec(t)||["",""])[1].toLowerCase()]){t=gt.htmlPrefilter(t);try{for(;n<i;n++)e=this[n]||{},1===e.nodeType&&(gt.cleanData(y(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return E(this,arguments,function(e){var n=this.parentNode;gt.inArray(this,t)<0&&(gt.cleanData(y(this)),n&&n.replaceChild(e,this))},t)}}),gt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){gt.fn[t]=function(t){for(var n,i=[],r=gt(t),o=r.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),gt(r[a])[e](n),at.apply(i,n.get());return this.pushStack(i)}});var ae=/^margin/,se=new RegExp("^("+Ft+")(?!px)[a-z%]+$","i"),le=function(e){var n=e.ownerDocument.defaultView;return n&&n.opener||(n=t),n.getComputedStyle(e)};!function(){function e(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Zt.appendChild(a);var e=t.getComputedStyle(s);n="1%"!==e.top,o="2px"===e.marginLeft,i="4px"===e.width,s.style.marginRight="50%",r="4px"===e.marginRight,Zt.removeChild(a),s=null}}var n,i,r,o,a=nt.createElement("div"),s=nt.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",ft.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),gt.extend(ft,{pixelPosition:function(){return e(),n},boxSizingReliable:function(){return e(),i},pixelMarginRight:function(){return e(),r},reliableMarginLeft:function(){return e(),o}}))}();var ce=/^(none|table(?!-c[ea]).+)/,ue=/^--/,he={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},fe=["Webkit","Moz","ms"],pe=nt.createElement("div").style;gt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=N(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var r,o,a,s=gt.camelCase(e),l=ue.test(e),c=t.style;return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],void 0===n?a&&"get"in a&&void 0!==(r=a.get(t,!1,i))?r:c[e]:(o=typeof n,"string"===o&&(r=zt.exec(n))&&r[1]&&(n=g(t,e,r),o="number"),void(null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(gt.cssNumber[s]?"":"px")),ft.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,i))||(l?c.setProperty(e,n):c[e]=n))))}},css:function(t,e,n,i){var r,o,a,s=gt.camelCase(e),l=ue.test(e);return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],a&&"get"in a&&(r=a.get(t,!0,n)),void 0===r&&(r=N(t,e,i)),"normal"===r&&e in de&&(r=de[e]),""===n||n?(o=parseFloat(r),n===!0||isFinite(o)?o||0:r):r}}),gt.each(["height","width"],function(t,e){gt.cssHooks[e]={get:function(t,n,i){if(n)return!ce.test(gt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?V(t,e,i):Bt(t,he,function(){return V(t,e,i)})},set:function(t,n,i){var r,o=i&&le(t),a=i&&j(t,e,i,"border-box"===gt.css(t,"boxSizing",!1,o),o);return a&&(r=zt.exec(n))&&"px"!==(r[3]||"px")&&(t.style[e]=n,n=gt.css(t,e)),I(t,n,a)}}}),gt.cssHooks.marginLeft=O(ft.reliableMarginLeft,function(t,e){if(e)return(parseFloat(N(t,"marginLeft"))||t.getBoundingClientRect().left-Bt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),gt.each({margin:"",padding:"",border:"Width"},function(t,e){gt.cssHooks[t+e]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];i<4;i++)r[t+qt[i]+e]=o[i]||o[i-2]||o[0];return r}},ae.test(t)||(gt.cssHooks[t+e].set=I)}),gt.fn.extend({css:function(t,e){return Rt(this,function(t,e,n){var i,r,o={},a=0;if(Array.isArray(e)){for(i=le(t),r=e.length;a<r;a++)o[e[a]]=gt.css(t,e[a],!1,i);return o}return void 0!==n?gt.style(t,e,n):gt.css(t,e)},t,e,arguments.length>1)}}),gt.Tween=H,H.prototype={constructor:H,init:function(t,e,n,i,r,o){this.elem=t,this.prop=n,this.easing=r||gt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=o||(gt.cssNumber[n]?"":"px")},cur:function(){var t=H.propHooks[this.prop];return t&&t.get?t.get(this):H.propHooks._default.get(this)},run:function(t){var e,n=H.propHooks[this.prop];return this.options.duration?this.pos=e=gt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):H.propHooks._default.set(this),this}},H.prototype.init.prototype=H.prototype,H.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=gt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){gt.fx.step[t.prop]?gt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[gt.cssProps[t.prop]]&&!gt.cssHooks[t.prop]?t.elem[t.prop]=t.now:gt.style(t.elem,t.prop,t.now+t.unit)}}},H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},gt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},gt.fx=H.prototype.init,gt.fx.step={};var ge,me,ve=/^(?:toggle|show|hide)$/,ye=/queueHooks$/;gt.Animation=gt.extend(W,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return g(n.elem,t,zt.exec(e),n),n}]},tweener:function(t,e){gt.isFunction(t)?(e=t,t=["*"]):t=t.match(Pt);for(var n,i=0,r=t.length;i<r;i++)n=t[i],W.tweeners[n]=W.tweeners[n]||[],W.tweeners[n].unshift(e)},prefilters:[B],prefilter:function(t,e){e?W.prefilters.unshift(t):W.prefilters.push(t)}}),gt.speed=function(t,e,n){var i=t&&"object"==typeof t?gt.extend({},t):{complete:n||!n&&e||gt.isFunction(t)&&t,duration:t,easing:n&&e||e&&!gt.isFunction(e)&&e};return gt.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in gt.fx.speeds?i.duration=gt.fx.speeds[i.duration]:i.duration=gt.fx.speeds._default),null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){gt.isFunction(i.old)&&i.old.call(this),i.queue&&gt.dequeue(this,i.queue)},i},gt.fn.extend({fadeTo:function(t,e,n,i){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:e},t,n,i)},animate:function(t,e,n,i){var r=gt.isEmptyObject(t),o=gt.speed(e,n,i),a=function(){var e=W(this,gt.extend({},t),o);(r||It.get(this,"finish"))&&e.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var i=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,r=null!=t&&t+"queueHooks",o=gt.timers,a=It.get(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&ye.test(r)&&i(a[r]);
-for(r=o.length;r--;)o[r].elem!==this||null!=t&&o[r].queue!==t||(o[r].anim.stop(n),e=!1,o.splice(r,1));!e&&n||gt.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=It.get(this),i=n[t+"queue"],r=n[t+"queueHooks"],o=gt.timers,a=i?i.length:0;for(n.finish=!0,gt.queue(this,t,[]),r&&r.stop&&r.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)i[e]&&i[e].finish&&i[e].finish.call(this);delete n.finish})}}),gt.each(["toggle","show","hide"],function(t,e){var n=gt.fn[e];gt.fn[e]=function(t,i,r){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(q(e,!0),t,i,r)}}),gt.each({slideDown:q("show"),slideUp:q("hide"),slideToggle:q("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){gt.fn[t]=function(t,n,i){return this.animate(e,t,n,i)}}),gt.timers=[],gt.fx.tick=function(){var t,e=0,n=gt.timers;for(ge=gt.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||gt.fx.stop(),ge=void 0},gt.fx.timer=function(t){gt.timers.push(t),gt.fx.start()},gt.fx.interval=13,gt.fx.start=function(){me||(me=!0,F())},gt.fx.stop=function(){me=null},gt.fx.speeds={slow:600,fast:200,_default:400},gt.fn.delay=function(e,n){return e=gt.fx?gt.fx.speeds[e]||e:e,n=n||"fx",this.queue(n,function(n,i){var r=t.setTimeout(n,e);i.stop=function(){t.clearTimeout(r)}})},function(){var t=nt.createElement("input"),e=nt.createElement("select"),n=e.appendChild(nt.createElement("option"));t.type="checkbox",ft.checkOn=""!==t.value,ft.optSelected=n.selected,t=nt.createElement("input"),t.value="t",t.type="radio",ft.radioValue="t"===t.value}();var xe,be=gt.expr.attrHandle;gt.fn.extend({attr:function(t,e){return Rt(this,gt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){gt.removeAttr(this,t)})}}),gt.extend({attr:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?gt.prop(t,e,n):(1===o&&gt.isXMLDoc(t)||(r=gt.attrHooks[e.toLowerCase()]||(gt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void gt.removeAttr(t,e):r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:(t.setAttribute(e,n+""),n):r&&"get"in r&&null!==(i=r.get(t,e))?i:(i=gt.find.attr(t,e),null==i?void 0:i))},attrHooks:{type:{set:function(t,e){if(!ft.radioValue&&"radio"===e&&r(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,r=e&&e.match(Pt);if(r&&1===t.nodeType)for(;n=r[i++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return e===!1?gt.removeAttr(t,n):t.setAttribute(n,n),n}},gt.each(gt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=be[e]||gt.find.attr;be[e]=function(t,e,i){var r,o,a=e.toLowerCase();return i||(o=be[a],be[a]=r,r=null!=n(t,e,i)?a:null,be[a]=o),r}});var _e=/^(?:input|select|textarea|button)$/i,we=/^(?:a|area)$/i;gt.fn.extend({prop:function(t,e){return Rt(this,gt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[gt.propFix[t]||t]})}}),gt.extend({prop:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&gt.isXMLDoc(t)||(e=gt.propFix[e]||e,r=gt.propHooks[e]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:t[e]=n:r&&"get"in r&&null!==(i=r.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=gt.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||we.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),ft.optSelected||(gt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),gt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){gt.propFix[this.toLowerCase()]=this}),gt.fn.extend({addClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).addClass(t.call(this,e,X(this)))});if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).removeClass(t.call(this,e,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):gt.isFunction(t)?this.each(function(n){gt(this).toggleClass(t.call(this,n,X(this),e),e)}):this.each(function(){var e,i,r,o;if("string"===n)for(i=0,r=gt(this),o=t.match(Pt)||[];e=o[i++];)r.hasClass(e)?r.removeClass(e):r.addClass(e);else void 0!==t&&"boolean"!==n||(e=X(this),e&&It.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||t===!1?"":It.get(this,"__className__")||""))})},hasClass:function(t){var e,n,i=0;for(e=" "+t+" ";n=this[i++];)if(1===n.nodeType&&(" "+U(X(n))+" ").indexOf(e)>-1)return!0;return!1}});var Se=/\r/g;gt.fn.extend({val:function(t){var e,n,i,r=this[0];return arguments.length?(i=gt.isFunction(t),this.each(function(n){var r;1===this.nodeType&&(r=i?t.call(this,n,gt(this).val()):t,null==r?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=gt.map(r,function(t){return null==t?"":t+""})),e=gt.valHooks[this.type]||gt.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,r,"value")||(this.value=r))})):r?(e=gt.valHooks[r.type]||gt.valHooks[r.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(Se,""):null==n?"":n)):void 0}}),gt.extend({valHooks:{option:{get:function(t){var e=gt.find.attr(t,"value");return null!=e?e:U(gt.text(t))}},select:{get:function(t){var e,n,i,o=t.options,a=t.selectedIndex,s="select-one"===t.type,l=s?null:[],c=s?a+1:o.length;for(i=a<0?c:s?a:0;i<c;i++)if(n=o[i],(n.selected||i===a)&&!n.disabled&&(!n.parentNode.disabled||!r(n.parentNode,"optgroup"))){if(e=gt(n).val(),s)return e;l.push(e)}return l},set:function(t,e){for(var n,i,r=t.options,o=gt.makeArray(e),a=r.length;a--;)i=r[a],(i.selected=gt.inArray(gt.valHooks.option.get(i),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),gt.each(["radio","checkbox"],function(){gt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=gt.inArray(gt(t).val(),e)>-1}},ft.checkOn||(gt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Ce=/^(?:focusinfocus|focusoutblur)$/;gt.extend(gt.event,{trigger:function(e,n,i,r){var o,a,s,l,c,u,h,d=[i||nt],f=ut.call(e,"type")?e.type:e,p=ut.call(e,"namespace")?e.namespace.split("."):[];if(a=s=i=i||nt,3!==i.nodeType&&8!==i.nodeType&&!Ce.test(f+gt.event.triggered)&&(f.indexOf(".")>-1&&(p=f.split("."),f=p.shift(),p.sort()),c=f.indexOf(":")<0&&"on"+f,e=e[gt.expando]?e:new gt.Event(f,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=p.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),n=null==n?[e]:gt.makeArray(n,[e]),h=gt.event.special[f]||{},r||!h.trigger||h.trigger.apply(i,n)!==!1)){if(!r&&!h.noBubble&&!gt.isWindow(i)){for(l=h.delegateType||f,Ce.test(l+f)||(a=a.parentNode);a;a=a.parentNode)d.push(a),s=a;s===(i.ownerDocument||nt)&&d.push(s.defaultView||s.parentWindow||t)}for(o=0;(a=d[o++])&&!e.isPropagationStopped();)e.type=o>1?l:h.bindType||f,u=(It.get(a,"events")||{})[e.type]&&It.get(a,"handle"),u&&u.apply(a,n),u=c&&a[c],u&&u.apply&&Dt(a)&&(e.result=u.apply(a,n),e.result===!1&&e.preventDefault());return e.type=f,r||e.isDefaultPrevented()||h._default&&h._default.apply(d.pop(),n)!==!1||!Dt(i)||c&&gt.isFunction(i[f])&&!gt.isWindow(i)&&(s=i[c],s&&(i[c]=null),gt.event.triggered=f,i[f](),gt.event.triggered=void 0,s&&(i[c]=s)),e.result}},simulate:function(t,e,n){var i=gt.extend(new gt.Event,n,{type:t,isSimulated:!0});gt.event.trigger(i,null,e)}}),gt.fn.extend({trigger:function(t,e){return this.each(function(){gt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return gt.event.trigger(t,e,n,!0)}}),gt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){gt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),gt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),ft.focusin="onfocusin"in t,ft.focusin||gt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){gt.event.simulate(e,t.target,gt.event.fix(t))};gt.event.special[e]={setup:function(){var i=this.ownerDocument||this,r=It.access(i,e);r||i.addEventListener(t,n,!0),It.access(i,e,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=It.access(i,e)-1;r?It.access(i,e,r):(i.removeEventListener(t,n,!0),It.remove(i,e))}}});var Te=t.location,ke=gt.now(),Ae=/\?/;gt.parseXML=function(e){var n;if(!e||"string"!=typeof e)return null;try{n=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||gt.error("Invalid XML: "+e),n};var Me=/\[\]$/,Le=/\r?\n/g,Ee=/^(?:submit|button|image|reset|file)$/i,Pe=/^(?:input|select|textarea|keygen)/i;gt.param=function(t,e){var n,i=[],r=function(t,e){var n=gt.isFunction(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!gt.isPlainObject(t))gt.each(t,function(){r(this.name,this.value)});else for(n in t)Y(n,t[n],e,r);return i.join("&")},gt.fn.extend({serialize:function(){return gt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=gt.prop(this,"elements");return t?gt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!gt(this).is(":disabled")&&Pe.test(this.nodeName)&&!Ee.test(t)&&(this.checked||!Wt.test(t))}).map(function(t,e){var n=gt(this).val();return null==n?null:Array.isArray(n)?gt.map(n,function(t){return{name:e.name,value:t.replace(Le,"\r\n")}}):{name:e.name,value:n.replace(Le,"\r\n")}}).get()}});var Ne=/%20/g,Oe=/#.*$/,Re=/([?&])_=[^&]*/,De=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,je=/^(?:GET|HEAD)$/,Ve=/^\/\//,He={},Fe={},ze="*/".concat("*"),qe=nt.createElement("a");qe.href=Te.href,gt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:Ie.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ze,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":gt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?K(K(t,gt.ajaxSettings),e):K(gt.ajaxSettings,t)},ajaxPrefilter:Q(He),ajaxTransport:Q(Fe),ajax:function(e,n){function i(e,n,i,s){var c,d,f,b,_,w=n;u||(u=!0,l&&t.clearTimeout(l),r=void 0,a=s||"",S.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(b=J(p,S,i)),b=tt(p,b,S,c),c?(p.ifModified&&(_=S.getResponseHeader("Last-Modified"),_&&(gt.lastModified[o]=_),_=S.getResponseHeader("etag"),_&&(gt.etag[o]=_)),204===e||"HEAD"===p.type?w="nocontent":304===e?w="notmodified":(w=b.state,d=b.data,f=b.error,c=!f)):(f=w,!e&&w||(w="error",e<0&&(e=0))),S.status=e,S.statusText=(n||w)+"",c?v.resolveWith(g,[d,w,S]):v.rejectWith(g,[S,w,f]),S.statusCode(x),x=void 0,h&&m.trigger(c?"ajaxSuccess":"ajaxError",[S,p,c?d:f]),y.fireWith(g,[S,w]),h&&(m.trigger("ajaxComplete",[S,p]),--gt.active||gt.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=void 0),n=n||{};var r,o,a,s,l,c,u,h,d,f,p=gt.ajaxSetup({},n),g=p.context||p,m=p.context&&(g.nodeType||g.jquery)?gt(g):gt.event,v=gt.Deferred(),y=gt.Callbacks("once memory"),x=p.statusCode||{},b={},_={},w="canceled",S={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=De.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return u?a:null},setRequestHeader:function(t,e){return null==u&&(t=_[t.toLowerCase()]=_[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)S.always(t[S.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||w;return r&&r.abort(e),i(0,e),this}};if(v.promise(S),p.url=((e||p.url||Te.href)+"").replace(Ve,Te.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(Pt)||[""],null==p.crossDomain){c=nt.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=qe.protocol+"//"+qe.host!=c.protocol+"//"+c.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=gt.param(p.data,p.traditional)),Z(He,p,n,S),u)return S;h=gt.event&&p.global,h&&0===gt.active++&&gt.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!je.test(p.type),o=p.url.replace(Oe,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Ne,"+")):(f=p.url.slice(o.length),p.data&&(o+=(Ae.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(o=o.replace(Re,"$1"),f=(Ae.test(o)?"&":"?")+"_="+ke++ +f),p.url=o+f),p.ifModified&&(gt.lastModified[o]&&S.setRequestHeader("If-Modified-Since",gt.lastModified[o]),gt.etag[o]&&S.setRequestHeader("If-None-Match",gt.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&S.setRequestHeader("Content-Type",p.contentType),S.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+ze+"; q=0.01":""):p.accepts["*"]);for(d in p.headers)S.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(p.beforeSend.call(g,S,p)===!1||u))return S.abort();if(w="abort",y.add(p.complete),S.done(p.success),S.fail(p.error),r=Z(Fe,p,n,S)){if(S.readyState=1,h&&m.trigger("ajaxSend",[S,p]),u)return S;p.async&&p.timeout>0&&(l=t.setTimeout(function(){S.abort("timeout")},p.timeout));try{u=!1,r.send(b,i)}catch(t){if(u)throw t;i(-1,t)}}else i(-1,"No Transport");return S},getJSON:function(t,e,n){return gt.get(t,e,n,"json")},getScript:function(t,e){return gt.get(t,void 0,e,"script")}}),gt.each(["get","post"],function(t,e){gt[e]=function(t,n,i,r){return gt.isFunction(n)&&(r=r||i,i=n,n=void 0),gt.ajax(gt.extend({url:t,type:e,dataType:r,data:n,success:i},gt.isPlainObject(t)&&t))}}),gt._evalUrl=function(t){return gt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},gt.fn.extend({wrapAll:function(t){var e;return this[0]&&(gt.isFunction(t)&&(t=t.call(this[0])),e=gt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return gt.isFunction(t)?this.each(function(e){gt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=gt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=gt.isFunction(t);return this.each(function(n){gt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){gt(this).replaceWith(this.childNodes)}),this}}),gt.expr.pseudos.hidden=function(t){return!gt.expr.pseudos.visible(t)},gt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},gt.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var Ge={0:200,1223:204},Be=gt.ajaxSettings.xhr();ft.cors=!!Be&&"withCredentials"in Be,ft.ajax=Be=!!Be,gt.ajaxTransport(function(e){var n,i;if(ft.cors||Be&&!e.crossDomain)return{send:function(r,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);n=function(t){return function(){n&&(n=i=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ge[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),i=s.onerror=n("error"),void 0!==s.onabort?s.onabort=i:s.onreadystatechange=function(){4===s.readyState&&t.setTimeout(function(){n&&i()})},n=n("abort");try{s.send(e.hasContent&&e.data||null)}catch(t){if(n)throw t}},abort:function(){n&&n()}}}),gt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),gt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return gt.globalEval(t),t}}}),gt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),gt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(i,r){e=gt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&r("error"===t.type?404:200,t.type)}),nt.head.appendChild(e[0])},abort:function(){n&&n()}}}});var $e=[],We=/(=)\?(?=&|$)|\?\?/;gt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=$e.pop()||gt.expando+"_"+ke++;return this[t]=!0,t}}),gt.ajaxPrefilter("json jsonp",function(e,n,i){var r,o,a,s=e.jsonp!==!1&&(We.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&We.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=gt.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(We,"$1"+r):e.jsonp!==!1&&(e.url+=(Ae.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||gt.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=t[r],t[r]=function(){a=arguments},i.always(function(){void 0===o?gt(t).removeProp(r):t[r]=o,e[r]&&(e.jsonpCallback=n.jsonpCallback,$e.push(r)),a&&gt.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),ft.createHTMLDocument=function(){var t=nt.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),gt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var i,r,o;return e||(ft.createHTMLDocument?(e=nt.implementation.createHTMLDocument(""),i=e.createElement("base"),i.href=nt.location.href,e.head.appendChild(i)):e=nt),r=Ct.exec(t),o=!n&&[],r?[e.createElement(r[1])]:(r=b([t],e,o),o&&o.length&&gt(o).remove(),gt.merge([],r.childNodes))},gt.fn.load=function(t,e,n){var i,r,o,a=this,s=t.indexOf(" ");return s>-1&&(i=U(t.slice(s)),t=t.slice(0,s)),gt.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(r="POST"),a.length>0&&gt.ajax({url:t,type:r||"GET",dataType:"html",data:e}).done(function(t){o=arguments,a.html(i?gt("<div>").append(gt.parseHTML(t)).find(i):t)}).always(n&&function(t,e){a.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},gt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){gt.fn[e]=function(t){return this.on(e,t)}}),gt.expr.pseudos.animated=function(t){return gt.grep(gt.timers,function(e){return t===e.elem}).length},gt.offset={setOffset:function(t,e,n){var i,r,o,a,s,l,c,u=gt.css(t,"position"),h=gt(t),d={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=gt.css(t,"top"),l=gt.css(t,"left"),c=("absolute"===u||"fixed"===u)&&(o+l).indexOf("auto")>-1,c?(i=h.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),gt.isFunction(e)&&(e=e.call(t,n,gt.extend({},s))),null!=e.top&&(d.top=e.top-s.top+a),null!=e.left&&(d.left=e.left-s.left+r),"using"in e?e.using.call(t,d):h.css(d)}},gt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){gt.offset.setOffset(this,t,e)});var e,n,i,r,o=this[0];return o?o.getClientRects().length?(i=o.getBoundingClientRect(),e=o.ownerDocument,n=e.documentElement,r=e.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n=this[0],i={top:0,left:0};return"fixed"===gt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),r(t[0],"html")||(i=t.offset()),i={top:i.top+gt.css(t[0],"borderTopWidth",!0),left:i.left+gt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-i.top-gt.css(n,"marginTop",!0),left:e.left-i.left-gt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===gt.css(t,"position");)t=t.offsetParent;return t||Zt})}}),gt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;gt.fn[t]=function(i){return Rt(this,function(t,i,r){var o;return gt.isWindow(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===r?o?o[e]:t[i]:void(o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):t[i]=r)},t,i,arguments.length)}}),gt.each(["top","left"],function(t,e){gt.cssHooks[e]=O(ft.pixelPosition,function(t,n){if(n)return n=N(t,e),se.test(n)?gt(t).position()[e]+"px":n})}),gt.each({Height:"height",Width:"width"},function(t,e){gt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){gt.fn[i]=function(r,o){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||o===!0?"margin":"border");return Rt(this,function(e,n,r){var o;return gt.isWindow(e)?0===i.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===r?gt.css(e,n,s):gt.style(e,n,r,s)},e,a?r:void 0,a)}})}),gt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),gt.holdReady=function(t){t?gt.readyWait++:gt.ready(!0)},gt.isArray=Array.isArray,gt.parseJSON=JSON.parse,gt.nodeName=r,"function"==typeof define&&define.amd&&define("jquery",[],function(){return gt});var Ue=t.jQuery,Xe=t.$;return gt.noConflict=function(e){return t.$===gt&&(t.$=Xe),e&&t.jQuery===gt&&(t.jQuery=Ue),gt},e||(t.jQuery=t.$=gt),gt}),define("config",["jquery"],function(t){function e(){if("undefined"!=typeof Storage&&window.swish.config_hash){var t;if((t=localStorage.getItem(r))&&(value=JSON.parse(t),value.hash==window.swish.config_hash))return value.config}}function n(t){"undefined"!=typeof Storage&&window.swish.config_hash&&localStorage.setItem(r,JSON.stringify({hash:window.swish.config_hash,config:t}))}var i,r="SWISHCONFIG";return i||(i=e())||t.ajax("swish_config.json",{dataType:"json",async:!1,success:function(t){i=t,n(i)},error:function(){alert("Failed to fetch configuration from server")}}),i}),define("preferences",["jquery"],function(t){function e(){var t=localStorage.getItem("notagain")||"[]";try{data=JSON.parse(t),"object"!=typeof data&&(data=[])}catch(t){data=[]}return data}var n="undefined"!=typeof Storage,i={},r={persistent:function(){return n},setNotAgain:function(t){if(n){var i=e();i.indexOf(t)<0&&(i.push(t),localStorage.setItem("notagain",JSON.stringify(i)))}},notagain:function(t){if(n){var i=e();return i.indexOf(t)>=0}return!1},broadcast:function(e,n){t(".swish-event-receiver").trigger("preference",{name:e,value:n})},setVal:function(t,e){n&&localStorage.setItem(t,JSON.stringify(e)),this.broadcast(t,e)},setDefault:function(t,e){i[t]=e},getVal:function(t){if(n){var e;if(e=localStorage.getItem(t))return value=JSON.parse(e),value}return i[t]},setDocVal:function(t,e,n){var i=r.getVal(t)||{};i[e]=n,r.setVal(t,i)},getDocVal:function(t,e,n){var i=r.getVal(t)||{};return void 0===i[e]?n:i[e]}};return r}),define("links",["jquery","config","modal"],function(t,e,n){var i={PlDoc:function(e,n){function i(t){var e,n={};if((e=t.indexOf(":"))>0&&(n.module=t.substring(0,e),t=t.slice(e+1)),(e=t.indexOf("/"))>0&&(n.name=t.substring(0,e),"/"==t.charAt(e+1)?n.arity=parseInt(t.slice(e+2))+2:n.arity=parseInt(t.slice(e+1)),!isNaN(n.arity)))return n}if(e){var r=i(decodeURIComponent(e));if(r)return t(n.target).closest("#ajaxModal").modal("hide"),t(".swish-event-receiver").trigger("pldoc",r),n.preventDefault(),!0}return!1},runQueryLink:function(e,i){function r(t){for(var e=0;e<l.length;e++)if(l[e].toLowerCase()==t.toLowerCase())return l[e];h.push(t)}var o=e.closest(".notebook"),a=e.data("query"),s=o.find('.nb-cell[name="'+a+'"]');if(s){var l=t().prologEditor("variables",s.nbCell("text"),!0),c="",u={},h=[];t.each(e.data(),function(t,e){var n;"query"!==t&&(n=r(t))&&(""!=c&&(c+=", "),c+=n+" = ("+e+")")}),h.length>0&&n.feedback({owner:o,type:"warning",duration:3e3,html:"The variables <b>"+h.join(", ")+"</b> do not appear in query <b>"+a+"</b>"}),""!=c&&(u.bindings=c),s.nbCell("run",u)}},followLink:function(n){function r(){a=!0,n.preventDefault(),t(n.target).closest("#ajaxModal").modal("hide")}var o=t(n.target).closest("a"),a=!1;if(o.attr("href")){var s,l=e.http.locations.swish+"p/",c=e.http.locations.swish+"example/",u=o.attr("href");if(u.startsWith(l)&&!u.match(/#/))r(),file=u.slice(l.length),t(n.target).closest(".swish").swish("playFile",file);else if(o.hasClass("store"))r(),s.alert("File does not appear to come from gitty store?");else if(o.hasClass("file")||u.startsWith(c)&&!u.match(/#/))r(),t(n.target).closest(".swish").swish("playURL",{url:u});else if(o.hasClass("builtin")&&u.match(/predicate=/))a=i.PlDoc(u.split("predicate=").pop(),n);else if(u.match(/object=/))a=i.PlDoc(u.split("object=").pop(),n);else if(1==(s=t(n.target).closest("#ajaxModal")).length&&u.match(/#/)){var h,d=u.split("#").pop();1==(h=s.find("#"+d)).length&&(a=!0,n.preventDefault(),s.animate({scrollTop:h.position().top},2e3))}a||(n.preventDefault(),window.open(u,"_blank"))}else o.data("query")&&i.runQueryLink(o,n)}};return i}),function(t){function e(){for(var t=document.createElement(arguments[0]),e=1;e<arguments.length;e++){var i=arguments[e];if(null!==i&&void 0!==i)if(1===i.nodeType)t.appendChild(i);else if(""===i||i&&i.charCodeAt&&i.substr||0===i||i&&i.toExponential&&i.toFixed)t.appendChild(document.createTextNode(i));else if(1===e&&"object"==typeof i){for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];if(null!==o&&void 0!==o){r=r.toLowerCase(),r=n[r]||r;var a="o"===r.charAt(0)&&"n"===r.charAt(1);a?(void 0===i.href&&"onclick"===r&&t.setAttribute("href","#"),t[r]=o):"style"===r&&t.style.setAttribute?t.style.setAttribute("cssText",o):"className"===r||"htmlFor"===r?t[r]=o:t.setAttribute(r,o)}}}else if("[object Array]"===Object.prototype.toString.call(i))for(var s=0;s<i.length;s++){var l=i[s];1===l.nodeType&&t.appendChild(l)}}return t.appendTo=function(t){return 1===t.nodeType&&1===this.nodeType&&t.appendChild(this),this},t}var n={acceptcharset:"acceptCharset",accesskey:"accessKey",allowtransparency:"allowTransparency",bgcolor:"bgColor",cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",classname:"className",colspan:"colSpan",csstext:"style",defaultchecked:"defaultChecked",defaultselected:"defaultSelected",defaultvalue:"defaultValue",for:"htmlFor",frameborder:"frameBorder",hspace:"hSpace",htmlfor:"htmlFor",longdesc:"longDesc",maxlength:"maxLength",marginwidth:"marginWidth",marginheight:"marginHeight",noresize:"noResize",noshade:"noShade",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",vspace:"vSpace"};e.registerElement=function(t,n){e[t]||(e[t]=function(){var i=e("div",{class:t});return n.apply(i,Array.prototype.slice.call(arguments)),i})};for(var i=["acronym","applet","basefont","big","center","dir","font","frame","frameset","noframes","strike","tt","u","xmp"],r=["a","abbr","address","area","article","aside","audio","b","base","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","legend","li","link","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","var","video","wbr"].concat(i),o=function(t){return function(){return e.apply(this,[t].concat(Array.prototype.slice.call(arguments)))}},a=0;a<r.length;a++)e[r[a]]=o(r[a]);if("undefined"!=typeof module&&module.exports)module.exports=e;else{var s=t.$||{};s.el=e,t.$=s}}(this),define("laconic",["jquery"],function(){}),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var r=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(r,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var n=t(this),r=n.data("bs.alert");r||n.data("bs.alert",r=new i(this)),"string"==typeof e&&r[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var r=t(this),o=r.attr("data-target");o||(o=r.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===o?[]:o);e&&e.preventDefault(),a.length||(a=r.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var r=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=r,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.button"),o="object"==typeof e&&e;r||i.data("bs.button",r=new n(this,o)),"toggle"==e?r.toggle():e&&r.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,r=i.is("input")?"val":"html",o=i.data();
-e+="Text",null==o.resetText&&i.data("resetText",i[r]()),setTimeout(t.proxy(function(){i[r](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.carousel"),o=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e),a="string"==typeof e?e:o.slide;r||i.data("bs.carousel",r=new n(this,o)),"number"==typeof e?r.to(e):a?r[a]():o.interval&&r.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e),i="prev"==t&&0===n||"next"==t&&n==this.$items.length-1;if(i&&!this.options.wrap)return e;var r="prev"==t?-1:1,o=(n+r)%this.$items.length;return this.$items.eq(o)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,i){var r=this.$element.find(".item.active"),o=i||this.getItemForDirection(e,r),a=this.interval,s="next"==e?"left":"right",l=this;if(o.hasClass("active"))return this.sliding=!1;var c=o[0],u=t.Event("slide.bs.carousel",{relatedTarget:c,direction:s});if(this.$element.trigger(u),!u.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=t(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=t.Event("slid.bs.carousel",{relatedTarget:c,direction:s});return t.support.transition&&this.$element.hasClass("slide")?(o.addClass(e),o[0].offsetWidth,r.addClass(s),o.addClass(s),r.one("bsTransitionEnd",function(){o.removeClass([e,s].join(" ")).addClass("active"),r.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(d)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(r.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var r=function(n){var i,r=t(this),o=t(r.attr("data-target")||(i=r.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var a=t.extend({},o.data(),r.data()),s=r.attr("data-slide-to");s&&(a.interval=!1),e.call(o,a),s&&o.data("bs.carousel").to(s),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",r).on("click.bs.carousel.data-api","[data-slide-to]",r),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),+function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),r=n.data("bs.collapse"),o=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!r&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),r||n.data("bs.collapse",r=new i(this,o)),"string"==typeof e&&r[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,r=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(r&&r.length&&(e=r.data("bs.collapse"),e&&e.transitioning))){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){r&&r.length&&(n.call(r,"hide"),e||r.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[a](this.$element[0][l])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var r=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(i.TRANSITION_DURATION):r.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var r=t(i);this.addAriaAndCollapsedClass(e(r),r)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var r=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=r,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var r=t(this);r.attr("data-target")||i.preventDefault();var o=e(r),a=o.data("bs.collapse"),s=a?"toggle":r.data();n.call(o,s)})}(jQuery),+function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(r).remove(),t(o).each(function(){var i=t(this),r=e(i),o={relatedTarget:this};r.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(r[0],n.target)||(r.trigger(n=t.Event("hide.bs.dropdown",o)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),r.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))}))}function i(e){return this.each(function(){var n=t(this),i=n.data("bs.dropdown");i||n.data("bs.dropdown",i=new a(this)),"string"==typeof e&&i[e].call(n)})}var r=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(i){var r=t(this);if(!r.is(".disabled, :disabled")){var o=e(r),a=o.hasClass("open");if(n(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",n);var s={relatedTarget:this};if(o.trigger(i=t.Event("show.bs.dropdown",s)),i.isDefaultPrevented())return;r.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",s))}return!1}},a.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var r=e(i),a=r.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&r.find(o).trigger("focus"),i.trigger("click");var s=" li:not(.disabled):visible a",l=r.find(".dropdown-menu"+s);if(l.length){var c=l.index(n.target);38==n.which&&c>0&&c--,40==n.which&&c<l.length-1&&c++,~c||(c=0),l.eq(c).trigger("focus")}}}};var s=t.fn.dropdown;t.fn.dropdown=i,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=s,this},t(document).on("click.bs.dropdown.data-api",n).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",o,a.prototype.toggle).on("keydown.bs.dropdown.data-api",o,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),+function(t){"use strict";function e(e,i){return this.each(function(){var r=t(this),o=r.data("bs.modal"),a=t.extend({},n.DEFAULTS,r.data(),"object"==typeof e&&e);o||r.data("bs.modal",o=new n(this,a)),"string"==typeof e?o[e](i):a.show&&o.show(i)})}var n=function(e,n){this.options=n,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},n.prototype.show=function(e){var i=this,r=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(r),this.isShown||r.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){i.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(i.$element)&&(i.ignoreBackdropClick=!0)})}),this.backdrop(function(){var r=t.support.transition&&i.$element.hasClass("fade");i.$element.parent().length||i.$element.appendTo(i.$body),i.$element.show().scrollTop(0),i.adjustDialog(),r&&i.$element[0].offsetWidth,i.$element.addClass("in"),i.enforceFocus();var o=t.Event("shown.bs.modal",{relatedTarget:e});r?i.$dialog.one("bsTransitionEnd",function(){i.$element.trigger("focus").trigger(o)}).emulateTransitionEnd(n.TRANSITION_DURATION):i.$element.trigger("focus").trigger(o)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var i=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=t.support.transition&&r;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+r).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;o?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){i.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var i=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=n,t.fn.modal.noConflict=function(){return t.fn.modal=i,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var i=t(this),r=i.attr("href"),o=t(i.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),a=o.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(r)&&r},o.data(),i.data());i.is("a")&&n.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){i.is(":visible")&&i.trigger("focus")})}),e.call(o,a,this)})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tooltip"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.tooltip",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(e,n,i){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var r=this.options.trigger.split(" "),o=r.length;o--;){var a=r[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},n.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,function(t,i){n[t]!=i&&(e[t]=i)}),e},n.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState?void(n.hoverState="in"):(clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void(n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},n.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue())return clearTimeout(n.timeout),n.hoverState="out",n.options.delay&&n.options.delay.hide?void(n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)):n.hide()},n.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var i=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!i)return;var r=this,o=this.tip(),a=this.getUID(this.type);this.setContent(),o.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(s);c&&(s=s.replace(l,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(c){var f=s,p=this.getPosition(this.$viewport);s="bottom"==s&&u.bottom+d>p.bottom?"top":"top"==s&&u.top-d<p.top?"bottom":"right"==s&&u.right+h>p.width?"left":"left"==s&&u.left-h<p.left?"right":s,o.removeClass(f).addClass(s)}var g=this.getCalculatedOffset(s,u,h,d);this.applyPlacement(g,s);var m=function(){var t=r.hoverState;r.$element.trigger("shown.bs."+r.type),r.hoverState=null,"out"==t&&r.leave(r)};t.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",m).emulateTransitionEnd(n.TRANSITION_DURATION):m()}},n.prototype.applyPlacement=function(e,n){var i=this.tip(),r=i[0].offsetWidth,o=i[0].offsetHeight,a=parseInt(i.css("margin-top"),10),s=parseInt(i.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(s)&&(s=0),e.top+=a,e.left+=s,t.offset.setOffset(i[0],t.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),i.addClass("in");var l=i[0].offsetWidth,c=i[0].offsetHeight;"top"==n&&c!=o&&(e.top=e.top+o-c);var u=this.getViewportAdjustedDelta(n,e,l,c);u.left?e.left+=u.left:e.top+=u.top;var h=/top|bottom/.test(n),d=h?2*u.left-r+l:2*u.top-o+c,f=h?"offsetWidth":"offsetHeight";i.offset(e),this.replaceArrow(d,i[0][f],h)},n.prototype.replaceArrow=function(t,e,n){this.arrow().css(n?"left":"top",50*(1-t/e)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},n.prototype.hide=function(e){function i(){"in"!=r.hoverState&&o.detach(),r.$element&&r.$element.removeAttr("aria-describedby").trigger("hidden.bs."+r.type),e&&e()}var r=this,o=t(this.$tip),a=t.Event("hide.bs."+this.type);if(this.$element.trigger(a),!a.isDefaultPrevented())return o.removeClass("in"),t.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",i).emulateTransitionEnd(n.TRANSITION_DURATION):i(),this.hoverState=null,this},n.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],i="BODY"==n.tagName,r=n.getBoundingClientRect();null==r.width&&(r=t.extend({},r,{width:r.right-r.left,height:r.bottom-r.top}));var o=window.SVGElement&&n instanceof window.SVGElement,a=i?{top:0,left:0}:o?null:e.offset(),s={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},l=i?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},r,s,l,a)},n.prototype.getCalculatedOffset=function(t,e,n,i){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-n/2}:"top"==t?{top:e.top-i,left:e.left+e.width/2-n/2}:"left"==t?{top:e.top+e.height/2-i/2,left:e.left-n}:{top:e.top+e.height/2-i/2,left:e.left+e.width}},n.prototype.getViewportAdjustedDelta=function(t,e,n,i){var r={top:0,left:0};if(!this.$viewport)return r;var o=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var s=e.top-o-a.scroll,l=e.top+o-a.scroll+i;s<a.top?r.top=a.top-s:l>a.top+a.height&&(r.top=a.top+a.height-l)}else{var c=e.left-o,u=e.left+o+n;c<a.left?r.left=a.left-c:u>a.right&&(r.left=a.left+a.width-u)}return r},n.prototype.getTitle=function(){var t,e=this.$element,n=this.options;return t=e.attr("data-original-title")||("function"==typeof n.title?n.title.call(e[0]):n.title)},n.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},n.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(e){var n=this;e&&(n=t(e.currentTarget).data("bs."+this.type),n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var i=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=n,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=i,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.popover"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.popover",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.7",n.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var i=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=n,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(jQuery),+function(t){"use strict";function e(n,i){this.$body=t(document.body),this.$scrollElement=t(t(n).is(document.body)?window:n),this.options=t.extend({},e.DEFAULTS,i),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var i=t(this),r=i.data("bs.scrollspy"),o="object"==typeof n&&n;r||i.data("bs.scrollspy",r=new e(this,o)),"string"==typeof n&&r[n]()})}e.VERSION="3.3.7",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),r=e.data("target")||e.attr("href"),o=/^#./.test(r)&&t(r);return o&&o.length&&o.is(":visible")&&[[o[n]().top+i,r]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),i=this.options.offset+n-this.$scrollElement.height(),r=this.offsets,o=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=i)return a!=(t=o[o.length-1])&&this.activate(t);if(a&&e<r[0])return this.activeTarget=null,this.clear();for(t=r.length;t--;)a!=o[t]&&e>=r[t]&&(void 0===r[t+1]||e<r[t+1])&&this.activate(o[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',i=t(n).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var i=t.fn.scrollspy;t.fn.scrollspy=n,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=i,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);n.call(e,e.data())})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tab");r||i.data("bs.tab",r=new n(this)),"string"==typeof e&&r[e]()})}var n=function(e){this.element=t(e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.prototype.show=function(){var e=this.element,n=e.closest("ul:not(.dropdown-menu)"),i=e.data("target");if(i||(i=e.attr("href"),i=i&&i.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var r=n.find(".active:last a"),o=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:r[0]});if(r.trigger(o),e.trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){var s=t(i);this.activate(e.closest("li"),n),this.activate(s,s.parent(),function(){r.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:r[0]})})}}},n.prototype.activate=function(e,i,r){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),r&&r()}var a=i.find("> .active"),s=r&&t.support.transition&&(a.length&&a.hasClass("fade")||!!i.find("> .fade").length);a.length&&s?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var i=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var r=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',r).on("click.bs.tab.data-api",'[data-toggle="pill"]',r);
-}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.affix"),o="object"==typeof e&&e;r||i.data("bs.affix",r=new n(this,o)),"string"==typeof e&&r[e]()})}var n=function(e,i){this.options=t.extend({},n.DEFAULTS,i),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.7",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(t,e,n,i){var r=this.$target.scrollTop(),o=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return r<n&&"top";if("bottom"==this.affixed)return null!=n?!(r+this.unpin<=o.top)&&"bottom":!(r+a<=t-i)&&"bottom";var s=null==this.affixed,l=s?r:o.top,c=s?a:e;return null!=n&&r<=n?"top":null!=i&&l+c>=t-i&&"bottom"},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},n.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),i=this.options.offset,r=i.top,o=i.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof i&&(o=r=i),"function"==typeof r&&(r=i.top(this.$element)),"function"==typeof o&&(o=i.bottom(this.$element));var s=this.getState(a,e,r,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var l="affix"+(s?"-"+s:""),c=t.Event(l+".bs.affix");if(this.$element.trigger(c),c.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-e-o})}};var i=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=n,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var n=t(this),i=n.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),e.call(n,i)})})}(jQuery),define("bootstrap",["jquery"],function(){}),define("modal",["jquery","config","preferences","links","form","laconic","bootstrap"],function(t,e,n,i,r){!function(t){function o(e){e.hasClass("modal")||(e=e.closest(".modal")),e.find("[data-notagain]").each(function(){if(t(this).prop("checked"))return n.setNotAgain(t(this).attr("data-notagain")),!1})}function a(){var e=t.el.button({type:"button",class:"close","data-dismiss":"modal"});return t(e).html("&times;").on("click",function(e){e.preventDefault(),o(t(e.target))}),e}function s(e){return e.notagain&&n.persistent()?t.el.label(t.el.input({type:"checkbox","data-notagain":e.notagain,name:"dismiss"})," Don't show again!"):""}function l(){var e=t(this).find(".tm-input");e.each(function(){var e=t(this),n=e.data("prefilled"),i={};n&&(i.prefilled=n),e.tagsManager(i)})}var c="swishModal",u={_init:function(e){return this.each(function(){var e=t(this);e.addClass("swish-event-receiver"),e.on("help",function(t,n){e.swishModal("showHelp",n)}),e.on("pldoc",function(t,n){e.swishModal("showPlDoc",n)}),e.on("form",function(t,n){e.swishModal("showForm",n)}),e.on("dialog",function(t,n){e.swishModal("show",n)}),e.on("error",function(t,n){e.swishModal("show",n)}),e.on("alert",function(t,n){var i="<span class='glyphicon glyphicon-warning-sign'></span>";e.swishModal("show",{title:i,body:n})}),e.on("ajaxError",function(t,n){e.swishModal("showAjaxError",n)}),e.on("feedback",function(t,n){e.swishModal("feedback",n)}),e.on("show",function(t,n){e.swishModal("show",n)}),e.on("server_form",function(t,n){e.swishModal("server_form",n)})})},showHelp:function(i){var r=this;i.notagain&&n.notagain(i.notagain)||t.ajax({url:e.http.locations.help+"/"+i.file,dataType:"html",success:function(e){var n=t("<div>");n.html(e),r.swishModal("show",t.extend({title:n.find("title").text(),body:n},i))}})},showForm:function(n){var i=this;t.ajax({url:e.http.locations.form+"/"+n.file,dataType:"html",success:function(e){var r=t("<div>");r.html(e),i.swishModal("show",t.extend({title:r.find("legend").text(),body:r},n))}})},showPlDoc:function(t){function n(t){var n="("+t.name+")/"+t.arity;return t.module&&(n=t.module+":"+n),e.http.locations.pldoc_doc_for+"?header=false&object="+encodeURIComponent(n)}function i(t,e){return t.parents("div.modal-dialog").addClass("swish-embedded-manual"),"<iframe class='swish-embedded-manual' onload='javascript:resizeIframe(this);' src='"+e+"'></iframe>"}var r={title:"SWI-Prolog manual",body:function(){return i(this,n(t))}};return this.swishModal("show",r)},show:function(e){var r=t.el.div({class:"modal-body"}),c=t.el.h2(),u=t.el.div({class:"modal-content"},t.el.div({class:"modal-header"},s(e),a(),c),r),h=t.el.div({class:"modal fade",id:"ajaxModal",tabindex:-1,role:"dialog"},t.el.div({class:"modal-dialog"},u));if(e.notagain&&n.persistent()&&t(u).append(t.el.div({class:"modal-footer"},s(e))),r=t(r),"function"==typeof e.body){var d=e.body.call(r);d&&r.append(d)}else r.html(e.body);return t(c).html(e.title),t(h).modal({show:!0}).on("click","a",i.followLink).on("shown.bs.modal",l).on("hidden.bs.modal",function(){e.onclose&&e.onclose(),o(t(this)),t(this).remove()}),this},server_form:function(e){var n=t(this);return void 0===r&&(r=require("form")),this.swishModal("show",{title:e.title,body:function(){elem=t(this),t.ajax({url:e.url,data:e.data,success:function(t){elem.append(t)},error:function(t){n.swishModal("showAjaxError",t)}}),elem.on("click","button[data-action]",function(i){var o=t(i.target).closest("form"),a=r.serializeAsObject(o,!0),s=t(i.target).closest("button");return 0==s.data("form_data")?t.ajax({url:s.data("action"),success:function(t){return s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1},error:function(t){n.swishModal("showAjaxError",t)}}):t.ajax({url:s.data("action"),data:JSON.stringify(a),dataType:"json",contentType:"application/json",type:"POST",success:function(t){return"success"==t.status?(s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1):void("error"==t.status?r.formError(o,t.error):alert("Updated failed: "+JSON.serializeAsObject(t)))},error:function(t){n.swishModal("showAjaxError",t)}}),i.preventDefault(),!1})}})},showAjaxError:function(e){var n=t.el.div();t(n).html(e.responseText);var i=t(n).find("h1"),r=i.text()||"Server error";i.remove();var o={title:r,body:n};this.swishModal("show",o)},feedback:function(e){var n=t.el.div({class:"feedback "+e.type||""});return t(n).html(e.html),t(e.owner||"body").append(n),setTimeout(function(){t(n).hide(400,function(){t(n).remove()})},e.duration||1500),this}};window.resizeIframe=function(t){t.style.height=0,t.style.height=t.contentWindow.document.body.scrollHeight+20+"px"},t.fn.swishModal=function(e){return u[e]?u[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+c):u._init.apply(this,arguments)}}(jQuery);var o=1;return{ajaxError:function(e){t(".swish-event-receiver").trigger("ajaxError",e)},feedback:function(e){t(".swish-event-receiver").trigger("feedback",e)},alert:function(e){t(".swish-event-receiver").trigger("alert",e)},help:function(e){t(".swish-event-receiver").trigger("help",e)},show:function(e){t(".swish-event-receiver").trigger("show",e)},server_form:function(e){t(".swish-event-receiver").trigger("server_form",e)},notify:function(e,n){var i="ntf-"+(n.wsid||o++),r=t.el.div({class:"notification notify-arrow",id:i}),a=e.offset();if(t("body").append(r),n.html?t(r).html(n.html):n.dom&&t(r).append(n.dom),t(r).css({left:a.left+e.width()-t(r).outerWidth()+15,top:a.top+e.height()+12}).on("click",function(){t(r).remove()}).show(n.fadeIn||400),0!==n.time){var s=n.time;s||(s=e.hasClass("myself")?1e3:5e3),setTimeout(function(){t(r).hide(n.fadeOut||400,function(){t("#"+i).remove(),n.onremove&&n.onremove(n),e.chat("unnotify",n.wsid)})},s)}}}}),function(t){"use strict";var e={prefilled:null,CapitalizeFirstLetter:!1,preventSubmitOnEnter:!0,isClearInputOnEsc:!0,externalTagId:!1,prefillIdFieldName:"Id",prefillValueFieldName:"Value",AjaxPush:null,AjaxPushAllTags:null,AjaxPushParameters:null,delimiters:[9,13,44],backspace:[8],maxTags:0,hiddenTagListName:null,hiddenTagListId:null,replace:!0,output:null,deleteTagsOnBackspace:!0,tagsContainer:null,tagCloseIcon:"x",tagClass:"",validator:null,onlyTagList:!1,tagList:null,fillInputOnTagRemove:!1},n={pushTag:function(e,n,r){var o,a,s,l,c,u,h,d,f,p,g,m=t(this),v=m.data("opts"),y=m.data("tlis"),x=m.data("tlid");if(e=i.trimTag(e,v.delimiterChars),e&&!(e.length<=0)){if(v.onlyTagList&&void 0!==v.tagList&&v.tagList){var b=v.tagList;t.each(b,function(t,e){b[t]=e.toLowerCase()});var _=t.inArray(e.toLowerCase(),b);if(-1===_)return}if(v.CapitalizeFirstLetter&&e.length>1&&(e=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),v.validator&&!v.validator(e))return void m.trigger("tm:invalid",e);if(!(v.maxTags>0&&y.length>=v.maxTags)){if(o=!1,a=jQuery.map(y,function(t){return t.toLowerCase()}),c=t.inArray(e.toLowerCase(),a),-1!==c&&(o=!0),o)if(m.trigger("tm:duplicated",e),v.blinkClass)for(var w=0;w<6;++w)t("#"+m.data("tm_rndid")+"_"+x[c]).queue(function(e){t(this).toggleClass(v.blinkClass),e()}).delay(100);else t("#"+m.data("tm_rndid")+"_"+x[c]).stop().animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100);else v.externalTagId===!0?(void 0===r&&t.error("externalTagId is not passed for tag -"+e),l=r):(s=Math.max.apply(null,x),s=s===-(1/0)?0:s,l=++s),n||m.trigger("tm:pushing",[e,l]),y.push(e),x.push(l),n||null!==v.AjaxPush&&null==v.AjaxPushAllTags&&t.inArray(e,v.prefilled)===-1&&t.post(v.AjaxPush,t.extend({tag:e},v.AjaxPushParameters)),u=m.data("tm_rndid")+"_"+l,h=m.data("tm_rndid")+"_Remover_"+l,d=t("<span/>").text(e).html(),f='<span class="'+i.tagClasses.call(m)+'" id="'+u+'">',f+="<span>"+d+"</span>",f+='<a href="#" class="tm-tag-remove" id="'+h+'" TagIdToRemove="'+l+'">',f+=v.tagCloseIcon+"</a></span> ",p=t(f),null!==v.tagsContainer?t(v.tagsContainer).append(p):x.length>1?(g=m.siblings("#"+m.data("tm_rndid")+"_"+x[x.length-2]),g.after(p)):m.before(p),p.find("#"+h).on("click",m,function(e){e.preventDefault();var n=parseInt(t(this).attr("TagIdToRemove"));i.spliceTag.call(m,n,e.data)}),i.refreshHiddenTagList.call(m),n||m.trigger("tm:pushed",[e,l]),i.showOrHide.call(m);m.val("")}}},popTag:function(){var e,n,r=t(this),o=r.data("tlis"),a=r.data("tlid");a.length>0&&(e=a.pop(),n=o[o.length-1],r.trigger("tm:popping",[n,e]),o.pop(),t("#"+r.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(r),r.trigger("tm:popped",[n,e]))},empty:function(){for(var e,n=t(this),r=n.data("tlis"),o=n.data("tlid");o.length>0;)e=o.pop(),r.pop(),t("#"+n.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(n);n.trigger("tm:emptied",null),i.showOrHide.call(n)},tags:function(){var t=this,e=t.data("tlis");return e}},i={showOrHide:function(){var t=this,e=t.data("opts"),n=t.data("tlis");e.maxTags>0&&n.length<e.maxTags&&(t.show(),t.trigger("tm:show")),e.maxTags>0&&n.length>=e.maxTags&&(t.hide(),t.trigger("tm:hide"))},tagClasses:function(){var e,n=t(this),i=n.data("opts"),r=i.tagBaseClass,o=i.inputBaseClass;return e=r,n.attr("class")&&t.each(n.attr("class").split(" "),function(t,n){n.indexOf(o+"-")!==-1&&(e+=" "+r+n.substring(o.length))}),e+=i.tagClass?" "+i.tagClass:""},trimTag:function(e,n){var i;for(e=t.trim(e),i=0;i<e.length&&t.inArray(e.charCodeAt(i),n)===-1;i++);return e.substring(0,i)},refreshHiddenTagList:function(){var e=t(this),n=e.data("tlis"),i=e.data("lhiddenTagList");i&&t(i).val(n.join(e.data("opts").baseDelimiter)).change(),e.trigger("tm:refresh",n.join(e.data("opts").baseDelimiter))},killEvent:function(t){t.cancelBubble=!0,t.returnValue=!1,t.stopPropagation(),t.preventDefault()},keyInArray:function(e,n){return t.inArray(e.which,n)!==-1},applyDelimiter:function(e){var i=t(this);n.pushTag.call(i,t(this).val()),e.preventDefault()},prefill:function(e){var i=t(this),r=i.data("opts");t.each(e,function(t,e){r.externalTagId===!0?n.pushTag.call(i,e[r.prefillValueFieldName],!0,e[r.prefillIdFieldName]):n.pushTag.call(i,e,!0)})},pushAllTags:function(e,n){var i=t(this),r=i.data("opts"),o=i.data("tlis");r.AjaxPushAllTags&&("tm:pushed"===e.type&&t.inArray(n,r.prefilled)!==-1||t.post(r.AjaxPush,t.extend({tags:o.join(r.baseDelimiter)},r.AjaxPushParameters)))},spliceTag:function(e){var n,r=this,o=r.data("tlis"),a=r.data("tlid"),s=t.inArray(e,a);-1!==s&&(n=o[s],r.trigger("tm:splicing",[n,e]),t("#"+r.data("tm_rndid")+"_"+e).remove(),o.splice(s,1),a.splice(s,1),i.refreshHiddenTagList.call(r),r.trigger("tm:spliced",[n,e])),i.showOrHide.call(r)},init:function(r){var o,a,s=t.extend({},e,r);return s.hiddenTagListName=null===s.hiddenTagListName?"hidden-"+this.attr("name"):s.hiddenTagListName,o=s.delimeters||s.delimiters,a=[9,13,17,18,19,37,38,39,40],s.delimiterChars=[],s.delimiterKeys=[],t.each(o,function(e,n){t.inArray(n,a)!==-1?s.delimiterKeys.push(n):s.delimiterChars.push(n)}),s.baseDelimiter=String.fromCharCode(s.delimiterChars[0]||44),s.tagBaseClass="tm-tag",s.inputBaseClass="tm-input",t.isFunction(s.validator)||(s.validator=null),this.each(function(){var e=t(this),r="",o="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(e.data("tagManager"))return!1;e.data("tagManager",!0);for(var l=0;l<5;l++)o+=a.charAt(Math.floor(Math.random()*a.length));if(e.data("tm_rndid",o),e.data("opts",s).data("tlis",[]).data("tlid",[]),null===s.output?(r=t("<input/>",{type:"hidden",name:s.hiddenTagListName}),e.after(r),e.data("lhiddenTagList",r)):e.data("lhiddenTagList",t(s.output)),s.AjaxPushAllTags&&(e.on("tm:spliced",i.pushAllTags),e.on("tm:popped",i.pushAllTags),e.on("tm:pushed",i.pushAllTags)),e.on("focus keypress",function(e){t(this).popover&&t(this).popover("hide")}),s.isClearInputOnEsc&&e.on("keyup",function(e){27===e.which&&(t(this).val(""),i.killEvent(e))}),e.on("keypress",function(t){i.keyInArray(t,s.delimiterChars)&&i.applyDelimiter.call(e,t)}),e.on("keydown",function(t){13===t.which&&s.preventSubmitOnEnter&&i.killEvent(t),i.keyInArray(t,s.delimiterKeys)&&i.applyDelimiter.call(e,t)}),s.deleteTagsOnBackspace&&e.on("keydown",function(r){i.keyInArray(r,s.backspace)&&t(this).val().length<=0&&(n.popTag.call(e),i.killEvent(r))}),s.fillInputOnTagRemove&&e.on("tm:popped",function(e,n){t(this).val(n)}),e.change(function(t){/webkit/.test(navigator.userAgent.toLowerCase())||e.focus(),i.killEvent(t)}),null!==s.prefilled)"object"==typeof s.prefilled?i.prefill.call(e,s.prefilled):"string"==typeof s.prefilled?i.prefill.call(e,s.prefilled.split(s.baseDelimiter)):"function"==typeof s.prefilled&&i.prefill.call(e,s.prefilled());else if(null!==s.output){if(t(s.output)&&t(s.output).val()){t(s.output)}i.prefill.call(e,t(s.output).val().split(s.baseDelimiter))}}),this}};t.fn.tagsManager=function(e){var r=t(this);return 0 in this?n[e]?n[e].apply(r,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(t.error("Method "+e+" does not exist."),!1):i.init.apply(this,arguments):this}}(jQuery),define("tagmanager",["jquery"],function(){}),define("form",["jquery","config","modal","laconic","tagmanager"],function(t,e,n){function i(t){return void 0===t&&(t=u),"col-xs-"+(12-t)}function r(e,n,i){return i=i||u,t.el.label({class:"control-label col-xs-"+i,for:e},n)}function o(e,n){var i={name:e,type:"checkbox"};return n=n||{},n.checked&&(i.checked="checked"),n.title&&(i.title=n.title),t.el.input(i)}function a(e,n){var i={name:e,type:"text",class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),n.title&&(i.title=n.title),n.value&&(i.value=n.value),n.disabled&&(i.disabled=n.disabled),n.readonly&&(i.readonly=n.readonly),n.type&&(i.type=n.type),t.el.input(i)}function s(e,n,i){var r={name:e,type:"text",class:"tm-input tag-list"};n&&(r.placeholder=n);var o=t.el.input(r);return i&&t(o).data("prefilled",i),o}function l(e,n){var i={name:e,class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),t.el.textarea(i,n.value||"")}function c(e,n,i){function r(e){if("string"==typeof e)e==i.value?o.append(t.el.option({selected:"selected"},e)):o.append(t.el.option(e));else{var n={value:e.value};e.value==i.value&&(n.selected="selected"),o.append(t.el.option(n,e.label))}}var o=t(t.el.select({class:"form-control",name:e}));i=i||{};for(var a=0;a<n.length;a++)r(n[a]);return o[0]}var u=3,h={serializeAsObject:function(e,n){var i=e.serializeArray(),r=[],o={};e.find("div.checkboxes.array").each(function(){var e=t(this),n=[];e.find("input:checked").each(function(){var e=t(this).attr("name");n.push(e)}),e.find("input").each(function(){var e=t(this).attr("name");r.push(e)}),o[e.attr("name")]=n});for(var a=0;a<i.length;a++){var s,l=i[a].name,c=i[a].value,u=e.find('[name="'+l+'"]'),h=u.prop("type");(s=u.data("json-value"))?o[l]=s:""==c&&1!=n||("hidden"==h&&0==l.indexOf("hidden-")?(l=l.slice("hidden-".length),void 0==o[l]?o[l]=c.split(","):o[l]=c.split(",").concat(o[l])):"text"==h&&u.hasClass("tag-list")?""!=c&&(void 0!==o[l]?o[l].push(c):o[l]=[c]):"number"==h?o[l]=parseInt(c):"checkbox"==h?r.indexOf(l)==-1&&(o[l]="on"==c):o[l]=c)}return e.find("[type=checkbox]").each(function(){var e=t(this),n=e.prop("name");1!=e.prop("disabled")&&void 0===o[n]&&r.indexOf(n)==-1&&(o[n]=!1)}),o},formError:function(t,e){if(t.find(".has-error").removeClass("has-error"),t.find(".help-block.with-errors").remove(),e)if("form_error"==e.code||"input_error"==e.code){errors=e.data.split("\n");for(var i=0;i<errors.length;i++){var r=errors[i].split(/:\s*(.*)?/);h.fieldError(t,r[0],r[1])}}else n.alert(e.data)},fieldError:function(e,n,i){var r=e.find("input[name="+n+"]");if(r.length>0){var o=r.closest(".form-group");r.parent().hasClass("input-group")&&(r=r.parent()),o.addClass("has-error"),r.after(t.el.p({class:"help-block with-errors"},i))}else alert("Missing value for "+n)},showDialog:function(e){t(".swish-event-receiver").trigger("dialog",e)},formBroadcast:function(e,n){t(".swish-event-receiver").trigger(e,n)},fields:{fileName:function(n,s,l,c){var u,h,d=e.swish.community_examples?"Public | Example | name":"Public | name",f="(leave empty for generated random name)",p=t.el.div({class:"form-group"},r("name",d),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked, other users can find this program"},o("public",{checked:s})),e.swish.community_examples?t.el.span({class:"input-group-addon",title:"If checked, add to examples menu"},o("example",{checked:l})):void 0,h=a("name",{placeholder:"Name "+f,title:"Public name of your program",value:n,disabled:c}),u=t.el.span({class:"input-group-btn"},t.el.button({class:"btn btn-success",type:"button"},"Fork")))));return t(u).on("click",function(){var e=t(h).closest("form").find(".btn.btn-primary");t(h).attr("placeholder","Fork as "+f),t(h).val(""),e.text(e.text().replace("Update","Fork"))}),p},title:function(e){var n=t.el.div({class:"form-group"},r("title","Title"),t.el.div({class:i()},a("title",{placeholder:"Descriptive title",value:e})));return n},author:function(e,n){var o={placeholder:"Your name",value:e};e&&n&&(o.readonly=!0,o.title="Verified author name");var s=t.el.div({class:"form-group"},r("author","Author"),t.el.div({class:i()},a("author",o)));return s},date:function(e,n,o){o=o||r;var s=t.el.div({class:"form-group"},r(o,n),t.el.div({class:i()},a(o,{disabled:!0,value:new Date(1e3*e).toLocaleString()})));return s},description:function(e){var n=t.el.div({class:"form-group"},r("description","Description"),t.el.div({class:i()},l("description",{value:e})));return n},commit_message:function(e){var n=t.el.div({class:"form-group"},r("commit_message","Changes"),t.el.div({class:i()},l("commit_message",{value:e,placeholder:"Describe your changes here"})));return n},tags:function(e){var n=t.el.div({class:"form-group"},r("tags","Tags"),t.el.div({class:i()},s("tags","Tags help finding this code",e)));return n},modify:function(t,e){function n(n,r){i.push({name:n,label:r,value:t.indexOf(n)!=-1,readonly:!e})}var i=[],r={name:"modify",label:"Can save new version",type:"array"};return n("any","Anyone"),n("login","Logged in users"),n("owner","Only me"),e?r.title="Specify who can save an updated version of this file":r.title="Only logged in users and owners can set permissions",h.fields.checkboxes(i,r)},follow:function(t){return h.fields.checkboxes([{name:"follow",label:"Follow this document",value:!!t,readonly:!t}],{name:"options",label:"",title:"Notify about activity (updates, chat)\nRequires being logged in with valid email"})},projection:function(e){var n=t.el.div({class:"form-group"},r("projection","Projection"),t.el.div({class:i()},a("projection",{placeholder:"Columns",value:e})));return n},csvFormat:function(e,n){var o;return e=e||["prolog"],n=n||e[0],o=1==e.length?t.el.input({type:"hidden",name:"format",value:e[0]}):t.el.div({class:"form-group"},r("format","Format"),t.el.div({class:i()},c("format",e,{value:n})))},limit:function(e,n){var s=t.el.div({class:"form-group"},r("name","Distinct | limit"),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked only return distinct results"},o("distinct",{checked:n})),a("limit",{placeholder:"Maximum result count (blank for unlimited)",title:"Limit results",value:e}))));return s},checkboxes:function(e,n){var i;n=t.extend({name:"options",label:"Options",col:u},n||{});var o={class:"checkboxes col-xs-"+(12-n.col),name:n.name};n.title&&(o.title=n.title),n.type&&(o.class+=" "+n.type);for(var a=t.el.div({class:"form-group"},r(n.name,n.label,n.col),i=t.el.div(o)),s=0;s<e.length;s++){var l=e[s],c={type:"checkbox",name:l.name,autocomplete:"false"};l.value&&(c.checked="checked"),l.readonly&&(c.disabled="disabled"),t(i).append(t.el.label({class:"checkbox-inline"},t.el.input(c),l.label))}return a},chunk:function(e){var n=t.el.div({class:"form-group"},r("count","Initial solutions",3),t.el.div({class:"col-xs-9"},t.el.div({class:"input-group"},a("chunk",{title:"Initial number of solutions",type:"number",value:e}))));return n},name:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("name","Name",n),t.el.div({class:"col-xs-"+(12-n)},a("name",{placeholder:"Name",value:e})));return i},filename:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("filename","File name",n),t.el.div({class:"col-xs-"+(12-n)},a("filename",{placeholder:"File name",value:e})));return i},hidden:function(e,n){if(void 0!==n)return t.el.input({type:"hidden",name:e,value:n})},buttons:function(e){e=e||{};var n=e.label||"Save program",i=e.offset||u,r=t.el.button({name:"save",class:"btn btn-primary"},n);t(r).on("click",function(n){var i=t(n.target).parents("form")[0],r=h.serializeAsObject(t(i));return e.action(n,r),t(n.target).parents(".modal").modal("hide"),n.preventDefault(),!1});var o=t.el.div({class:"form-group"},t.el.div({class:"col-xs-offset-"+i+" col-xs-"+(12-i)},r,t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel")));return o},radio:function(e,n,i){var r=t.el.div({class:"btn-group","data-toggle":"buttons"});i=i||"radio";for(var o=0;o<n.length;o++){var a="btn btn-default btn-xs";n[o].active&&(a+=" active");var s={type:i,name:e,autocomplete:"off",value:n[o].value},l={class:a};n[o].title&&(l.title=n[o].title),t(r).append(t.el.label(l,t.el.input(s),n[o].label))}return r}},widgets:{glyphIcon:function(e){return t.el.span({class:"glyphicon glyphicon-"+e})},typeIcon:function(e){return t.el.span({class:"dropdown-icon type-icon "+e})},glyphIconButton:function(e,n){var i={class:"btn",type:"button"};return n.action&&(i["data-action"]=n.action),n.title&&(i.title=n.title),n.class&&(i.class+=" "+n.class),t.el.button(i,h.widgets.glyphIcon(e))},dropdownButton:function(e,n){n||(n={});var i=n.divClass,r=n.ulClass,o=t.el.div({class:"btn-group dropdown"+(i?" "+i:"")},t.el.button({class:"dropdown-toggle","data-toggle":"dropdown"},e),t.el.ul({class:"dropdown-menu"+(r?" "+r:"")}));return n.actions&&h.widgets.populateMenu(t(o),n.client,n.actions),o},populateMenu:function(e,n,i){function r(e,i){var r=t(i).data("action");r&&r.call(n,i)}function o(e,n){if(void 0!==n)if(0==e.indexOf("--"))a.append(t.el.li({class:"divider"}));else{var i=t.el.a(e);t(i).data("action",n),a.append(t.el.li(i))}}var a=e.find(".dropdown-menu"),s=a.data("menu")||{};for(var l in i)i.hasOwnProperty(l)&&o(l,i[l]);return s.bound||(s.bound=!0,a.on("click","a",function(t){r(t,this)})),a.data("menu",s),e}}};return h}),define("history",["jquery","preferences","form"],function(t,e,n){var i={push:function(t){var e=window.location.pathname;if(e!=t.url){var n={location:t.url};t.meta&&(n.meta=t.meta),window.history.pushState(n,"",t.url),document.title="SWISH -- "+(t.file?t.file:"SWI-Prolog for SHaring")}},pop:function(e){e.state&&(e.state.meta&&e.state.meta.name?t(".swish").swish("playFile",e.state.meta.name):e.state.location&&(window.location=e.state.location))},recentMaxLength:10,addRecent:function(t){function n(t,e){return t.type==e.type&&t.id==e.id}for(var r=e.getVal("recentDocuments")||[],o=0;o<r.length;o++)if(n(t,r[o])){r.splice(o,1);break}for(;r.length+1>i.recentMaxLength;)r.pop();r.splice(0,0,t),e.setVal("recentDocuments",r)},openRecent:function(t,e){return i.openRecent[e.st_type](t,e)},updateRecentUL:function(){var i=t(this),r=e.getVal("recentDocuments")||[];i.html("");for(var o=0;o<r.length;o++){var a=r[o];if(a.id){var s=t.el.a(n.widgets.typeIcon(a.id.split(".").pop()),a.label||a.id);t(s).data("document",a),i.append(t.el.li(s))}}}};return i.openRecent.gitty=function(e,n){t(e.target).parents(".swish").swish("playFile",n.id)},window.onpopstate=i.pop,i}),define("utils",["jquery"],function(t){var e={htmlEncode:function(t){return t?document.createElement("a").appendChild(document.createTextNode(t)).parentNode.innerHTML:""},generateUUID:function(){var t=(new Date).getTime(),e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)});return e},flash:function(t){t.addClass("flash"),setTimeout(function(){t.removeClass("flash")},1500)}};return"function"!=typeof String.prototype.startsWith&&(String.prototype.startsWith=function(t){return 0===this.lastIndexOf(t,0)}),e}),define("chat",["jquery","config","preferences","form","modal","utils"],function(t,e,n,i,r,o){var a=1e3,s=3e5;!function(t){function l(e,r){r=r||{};var o,a,s=r.name;s||"self"!=r.role||(s="Me"),s||(s=e);var l=t.el.li({class:"dropdown user",id:e,title:s},a=t.el.a({class:"dropdown-toggle avatar","data-toggle":"dropdown"},c(r)),o=t.el.ul({class:"dropdown-menu pull-right",title:""}));if("self"==r.role){t(a).append(t.el.b({class:"caret"}));var u=t.el.input({type:"text",placeholder:"Nick name",value:r.name||"",title:"Nick name"});o.append(t.el.li(u)),t(u).keypress(function(e){if(13==e.which){var i=t(u).val().trim();""!=i&&(t("#chat").trigger("send",{type:"set-nick-name",name:i}),n.setVal("nick-name",i)),t(u).closest(".dropdown.open").removeClass("open")}}),i.widgets.populateMenu(t(l),t("#chat"),{}),o.append(t.el.li({class:"divider"}))}return l}function c(e){return e.avatar?t.el.img({class:"avatar",src:e.avatar}):t.el.span({class:"avatar glyphicon glyphicon-user"})}function u(){var t=new Date;return t.getTime()}var h="chat",d=a,f=null,p={_init:function(n){return this.each(function(){var n=t(this),i={};n.data(h,i),n.on("click",function(e){var i=t(e.target).closest("li.user");1==i.length&&n.chat("unnotify",i.attr("id"))}),n.on("send",function(t,e){n.chat("send",e)}),t(window).bind("beforeunload",function(){n.chat("disconnect")}),e.swish.chat&&n.chat("connect")})},connect:function(){function t(t,i){var r=n.getVal(i);r&&("anon-avatar"==i&&(r=e.http.locations.avatar+r.split("/").pop()),o+=l+t+"="+encodeURIComponent(r),l="&")}var i=this,r=this.data(h),o=window.location.host+e.http.locations.swish_chat,l="?",c=window.location.protocol.replace("http","ws");return r.connection&&1==r.connection.readyState?this:(t("avatar","anon-avatar"),t("nickname","nick-name"),r.reconnect&&(o+=l+"reconnect="+encodeURIComponent(r.reconnect),l="&"),r.connection=new WebSocket(c+"//"+o,["v1.chat.swish.swi-prolog.org"]),r.connection.onerror=function(t){i.chat("userCount",void 0)},r.connection.onclose=function(t){null==f?(d*=2,d>s&&(d=s)):u()-f>3e5?d=a:(d*=2,d>s&&(d=s)),setTimeout(function(){i.chat("connect")},d)},r.connection.onmessage=function(t){var e=JSON.parse(t.data);e.origin=t.origin,e.type?i.chat(e.type,e):console.log(t)},void(r.connection.onopen=function(){}))},empty_queue:function(){for(var t=this.data(h);t.queue&&t.queue.length>0&&1==t.connection.readyState;){var e=t.queue.shift();t.connection.send(e)}},disconnect:function(){var t=this.data(h);return this.chat("send",{type:"unload"}),t.connection.onclose=function(){},t.connection.close(),t.connection=void 0,this},send:function(t){var e=this.data(h);if(e&&e.connection){var n=JSON.stringify(t);1!=e.connection.readyState?(e.queue?e.queue.push(n):e.queue=[n],this.chat("connect")):e.connection.send(n)}return this},subscribe:function(t,e){var n={type:"subscribe",channel:t};e&&(n.sub_channel=e),this.chat("send",n)},unsubscribe:function(t,e){var n={type:"unsubscribe",channel:t};sub_channel&&(n.sub_channel=sub_channel),this.chat("send",n)},welcome:function(e){var i=this.data(h);i.wsid&&i.wsid!=e.wsid&&this.html(""),i.wsid=e.wsid,i.reconnect=e.reconnect,e.avatar&&"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar),e.role="self";var r=this.chat("addUser",e);t(r).addClass("myself"),this.chat("userCount",e.visitors),f=u(),e.check_login&&t("#login").login("update","check"),t(".storage").storage("chat_status"),this.chat("empty_queue")},userCount:function(e){var n=t("#user-count");void 0==e?n.parent().hide():(n.parent().show(),n.text(e))},gazers:function(t){if(t.gazers)for(var e=0;e<t.gazers.length;e++){var n=t.gazers[e];this.chat("addUser",n),n.file&&this.chat("addUserFile",n.wsid,n.file)}},profile:function(e){var i=t("#"+e.wsid);i.children("a").html("").append(c(e)),e.avatar&&(t("*[data-userid="+e.wsid+"] img.avatar").attr("src",e.avatar),"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar)),e.name&&(i.prop("title",e.name),"set-nick-name"==e.reason&&(e.html="Named <i>"+o.htmlEncode(e.name)+"</i>",this.chat("notifyUser",e)))},rejoined:function(e){var n=t("#"+e.wsid);this.chat("lost",n,!1),e.visitors&&this.chat("userCount",e.visitors)},joined:function(t){t.visitors&&this.chat("userCount",t.visitors)},session_closed:function(){t("#login").login("update","session-closed")},notify:function(t){this.chat("notifyUser",t)},"chat-message":function(n){var i=t("div.chatroom").chatroom("rooms",n.docid);t(".storage").storage("chat_message",n),n.docid=="gitty:"+e.swish.hangout&&t("#broadcast-bell").chatbell("chat-message",n),i.length>0?(i.chatroom("add",n),n.displayed=!0):t("#"+n.user.id).length>0&&(msg=t.extend({},n),msg.wsid=n.user.id,msg.html="Wants to chat",this.chat("notifyUser",msg))},forbidden:function(t){r.alert(t.message||"Action is forbidden")},read_until:function(t,e){n.setDocVal(t,"chatBar",e)},broadcast_room:function(){return this.closest(".swish").find(".storage").storage("match",{file:e.swish.hangout})},notifyUser:function(t){function n(t){return("opened"==t.event||"closed"==t.event)&&t.event_argv&&t.event_argv[0]==e.swish.hangout}var i=this;n(t)&&!this.chat("broadcast_room")&&(t.create_user=!1);var o=this.chat("addUser",t);o&&o.length>0&&(t.onremove=function(){i.chat("unnotify",t.wsid)},r.notify(o,t),
-this.chat("updateFiles",t))},unnotify:function(e){return t("#"+e).hasClass("removed")&&this.chat("removeUser",e),this},updateFiles:function(e){function n(){return e.event_argv[0]}var i=t(this).data(h);if("opened"==e.event)this.chat("addUserFile",e.wsid,n());else if("closed"==e.event){var r=e.wsid==i.wsid?void 0:e.wsid;this.chat("removeUserFile",r,n(),!0)}},addUser:function(e){var n=t("#"+e.wsid);if(0==n.length){if(0==e.create_user)return null;n=t(l(e.wsid,e)),this.prepend(n)}else this.chat("lost",n,!1);return n},removeUser:function(e){"string"==typeof e&&(e={wsid:e}),void 0!==e.visitors&&this.chat("userCount",e.visitors);var n=t("#"+e.wsid);return 0==n.length?this:("close"!=e.reason?t("#ntf-"+e.wsid).length>0?n.addClass("removed"):n.hide(400,function(){this.remove()}):this.chat("lost",n,!0),this)},lost:function(e,n){n?e.addClass("lost"):e.removeClass("lost"),e.each(function(){var i=t(this);if(n)i.data("lost-timer",setTimeout(function(){e.hasClass("lost")&&e.remove()},6e4));else{var r=i.data("lost-timer");r&&(clearTimeout(r),i.data("lost-timer",void 0))}})},user_info:function(e){var n=t(this),i={};if((!e||e.indexOf("id")>=0)&&(i.id=n.attr("id")),!e||e.indexOf("name")>=0){var r=n.prop("title");r&&"Me"!==r&&(i.name=r)}return(!e||e.indexOf("avatar")>=0)&&(i.avatar=n.find("img.avatar").attr("src")),i},users:function(e){var n=[],i={users:n};return this.find("li.user[id]").each(function(){var r=t(this),o=r.hasClass("myself"),a=r.chat("user_info",o?void 0:e);o&&(i.self=t.extend({},a),a.is_self=!0),n.push(a)}),i},self:function(t){var e=this.find("li.user.myself[id]");return e.chat("user_info",t)},addUserFile:function(e,n){var i,r=t("#"+e),o=r.find("ul.dropdown-menu");if(o.find("li.file").each(function(){if(t(this).data("file")==n)return i=this,!1}),void 0==i){var a=n.split(".").pop();o.append(t.el.li({class:"file","data-file":n,title:"Shared file"},t.el.a(t.el.span({class:"dropdown-icon type-icon "+a}),n)))}return this},removeUserFile:function(e,n,i){function r(e){var r=e.children("ul.dropdown-menu");r.find("li.file").each(function(){if(t(this).data("file")==n)return t(this).remove(),i&&!e.hasClass("myself")&&0==r.find("li.file").length&&o.chat("removeUser",e.attr("id")),!1})}var o=this;e?r(t("#"+e)):this.children().each(function(){r(t(this),n,i)})}};t.fn.chat=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):p._init.apply(this,arguments)}}(jQuery)}),function(t,e){var n=0,i=null,r=[],o=null;t.fn.split=function(a){function s(t){if("number"==typeof t)return t;if("string"==typeof t){var e=t.match(/^([0-9\.]+)(px|%)$/);if(e){if("px"==e[2])return+e[1];if("vertical"==h.orientation)return p*+e[1]/100;if("horizontal"==h.orientation)return g*+e[1]/100}}}var l=this.data("splitter");if(l)return l;var c,u,h=t.extend({limit:100,orientation:"horizontal",position:"50%",invisible:!1,onDragStart:t.noop,onDragEnd:t.noop,onDrag:t.noop},a||{});this.settings=h;var d,f=this.children();"vertical"==h.orientation?(c=f.first().addClass("left_panel"),u=c.next().addClass("right_panel"),d="vsplitter"):"horizontal"==h.orientation&&(c=f.first().addClass("top_panel"),u=c.next().addClass("bottom_panel"),d="hsplitter"),h.invisible&&(d+=" splitter-invisible");var p=this.width(),g=this.height(),m=n++;this.addClass("splitter_panel");var v,y=t("<div/>").addClass(d).bind("mouseenter touchstart",function(){i=m}).bind("mouseleave touchend",function(){i=null}).insertAfter(c),x=t.extend(this,{refresh:function(){var t=this.width(),e=this.height();p==t&&g==e||(p=this.width(),g=this.height(),x.position(v))},position:function(){return"vertical"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.width(),r=i/2;if(h.invisible){var o=c.width(v).outerWidth();u.width(x.width()-o),y.css("left",o-r)}else{var o=c.width(v-r).outerWidth();u.width(x.width()-o-i),y.css("left",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:"horizontal"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.height(),r=i/2;if(h.invisible){var o=c.height(v).outerHeight();u.height(x.height()-o),y.css("top",o-r)}else{var o=c.height(v-r).outerHeight();u.height(x.height()-o-i),y.css("top",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:t.noop}(),orientation:h.orientation,limit:h.limit,isActive:function(){return i===m},destroy:function(){x.removeClass("splitter_panel"),y.unbind("mouseenter"),y.unbind("mouseleave"),y.unbind("touchstart"),y.unbind("touchmove"),y.unbind("touchend"),y.unbind("touchleave"),y.unbind("touchcancel"),"vertical"==h.orientation?(c.removeClass("left_panel"),u.removeClass("right_panel")):"horizontal"==h.orientation&&(c.removeClass("top_panel"),u.removeClass("bottom_panel")),x.unbind("splitter.resize"),x.find(".splitter_panel").trigger("splitter.resize"),r[m]=null,y.remove();for(var e=!1,i=r.length;i--;)if(null!==r[i]){e=!0;break}e||(t(document.documentElement).unbind(".splitter"),t(window).unbind("resize.splitter"),x.data("splitter",null),r=[],n=0)}});x.bind("splitter.resize",function(t){var e=x.position();"vertical"==x.orientation&&e>x.width()?e=x.width()-x.limit-1:"horizontal"==x.orientation&&e>x.height()&&(e=x.height()-x.limit-1),e<x.limit&&(e=x.limit+1),x.position(e,!0)});var b;return"vertical"==h.orientation?b=b>p-h.limit?p-h.limit:s(h.position):"horizontal"==h.orientation&&(b=b>g-h.limit?g-h.limit:s(h.position)),b<h.limit&&(b=h.limit),x.position(b,!0),0==r.length&&(t(window).bind("resize.splitter",function(){t.each(r,function(t,e){e&&e.refresh()})}),t(document.documentElement).bind("mousedown.splitter touchstart.splitter",function(e){if(null!==i)return o=r[i],t('<div class="splitterMask"></div>').css("cursor",o.children().eq(1).css("cursor")).insertAfter(o),o.settings.onDragStart(e),!1}).bind("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter",function(e){o&&(t(".splitterMask").remove(),o.settings.onDragEnd(e),o=null)}).bind("mousemove.splitter touchmove.splitter",function(t){if(null!==o){var e=o.limit,n=o.offset();if("vertical"==o.orientation){var i=t.pageX;t.originalEvent&&t.originalEvent.changedTouches&&(i=t.originalEvent.changedTouches[0].pageX);var r=i-n.left;r<=o.limit?r=o.limit+1:r>=o.width()-e&&(r=o.width()-e-1),r>o.limit&&r<o.width()-e&&(o.position(r,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}else if("horizontal"==o.orientation){var a=t.pageY;t.originalEvent&&t.originalEvent.changedTouches&&(a=t.originalEvent.changedTouches[0].pageY);var s=a-n.top;s<=o.limit?s=o.limit+1:s>=o.height()-e&&(s=o.height()-e-1),s>o.limit&&s<o.height()-e&&(o.position(s,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}o.settings.onDrag(t)}})),r.push(x),x.data("splitter",x),x}}(jQuery),define("splitter",["jquery"],function(){}),define("pane",["jquery","splitter"],function(){!function(t){function e(e){var n=e.children();return{splitter:e.split(),first:t(n[0]).children()[0],second:t(n[2]).children()[0]}}function n(t){return"horizontal"==t?"vertical":"horizontal"}var i="tile",r={_init:function(e){return this.each(function(){var e=t(this),n=e.hasClass("horizontal")?"vertical":"horizontal",i=e.attr("data-split"),r=e.children();i=i||"50%",r.each(function(){t(this).wrap('<div class="pane-wrapper"></div>')}),e.addClass("pane-container"),e.split({orientation:n,position:i,limit:10,onDragStart:function(){e.tile("resize_start")},onDrag:function(t){r.trigger("pane.resize")},onDragEnd:function(){e.tile("resize_save")}}),e.tile("resize_save"),e.on("fullscreen",function(t,n){e.tile("resize")})})},resize_start:function(){return this.each(function(){var n=t(this),i=e(n);n.find(".reactive-size").trigger("reactive-resize-start",i.splitter.orientation)})},resize_save:function(){return this.each(function(){var n,i,r=t(this),o=e(r);"horizontal"==o.splitter.orientation?(n=r.height(),i=t(o.first).height()):(n=r.width(),i=t(o.first).width());var a=Math.round(100*i/n)+"%";o.splitter.resizestart=a}),this.find(".reactive-size").trigger("reactive-resize"),this},resize:function(){return this.each(function(){var e=t(this),n=e.split();n.resizestart&&(n.position(n.resizestart),n.settings.onDrag(e))})},split:function(e,i,r,o){i=i||"below";var a=this,s="above"==i||"below"==i?"horizontal":"vertical",l=a.wrap('<div class="pane-container tile "'+n(s)+"></div>").parent();void 0==r?r=50:r<10?r=10:r>90&&(r=90),o&&"horizontal"==s&&(sumh=this.height(),left=sumh*r/100,left<o&&o<.9*sumh&&(r=100*o/sumh)),"above"==i||"left"==i?l.prepend(e):(r=100-r,l.append(e));var c=t(a).add(e);return c.wrap('<div class="pane-wrapper"></div>'),l.split({orientation:s,position:r+"%",limit:10,onDragStart:function(){l.tile("resize_start")},onDrag:function(){c.trigger("pane.resize")},onDragEnd:function(){l.tile("resize_save")}}),l.tile("resize_save"),c.trigger("pane.resize"),l},close:function(){var t=this,e=t.closest(".pane-container");e.split().destroy(),t.parent().remove(),e.children().first().children().first().unwrap().unwrap()}};t.fn.tile=function(e){return r[e]?r[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):r._init.apply(this,arguments)}}(jQuery)}),function(t,e){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(n){return t.Bloodhound=e(n)}):"object"==typeof exports?module.exports=e(require("jquery")):t.Bloodhound=e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n="0.11.1",i=function(){"use strict";function t(t){return t=e.toStr(t),t?t.split(/\s+/):[]}function n(t){return t=e.toStr(t),t?t.split(/\W+/):[]}function i(t){return function(n){return n=e.isArray(n)?n:[].slice.call(arguments,0),function(i){var r=[];return e.each(n,function(n){r=r.concat(t(e.toStr(i[n])))}),r}}}return{nonword:n,whitespace:t,obj:{nonword:i(n),whitespace:i(t)}}}(),r=function(){"use strict";function n(n){this.maxSize=e.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=t.noop)}function i(){this.head=this.tail=null}function r(t,e){this.key=t,this.val=e,this.prev=this.next=null}return e.mixin(n.prototype,{set:function(t,e){var n,i=this.list.tail;this.size>=this.maxSize&&(this.list.remove(i),delete this.hash[i.key],this.size--),(n=this.hash[t])?(n.val=e,this.list.moveToFront(n)):(n=new r(t,e),this.list.add(n),this.hash[t]=n,this.size++)},get:function(t){var e=this.hash[t];if(e)return this.list.moveToFront(e),e.val},reset:function(){this.size=0,this.hash={},this.list=new i}}),e.mixin(i.prototype,{add:function(t){this.head&&(t.next=this.head,this.head.prev=t),this.head=t,this.tail=this.tail||t},remove:function(t){t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev},moveToFront:function(t){this.remove(t),this.add(t)}}),n}(),o=function(){"use strict";function n(t,n){this.prefix=["__",t,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+e.escapeRegExChars(this.prefix)),this.ls=n||s,!this.ls&&this._noop()}function i(){return(new Date).getTime()}function r(t){return JSON.stringify(e.isUndefined(t)?null:t)}function o(e){return t.parseJSON(e)}function a(t){var e,n,i=[],r=s.length;for(e=0;e<r;e++)(n=s.key(e)).match(t)&&i.push(n.replace(t,""));return i}var s;try{s=window.localStorage,s.setItem("~~~","!"),s.removeItem("~~~")}catch(t){s=null}return e.mixin(n.prototype,{_prefix:function(t){return this.prefix+t},_ttlKey:function(t){return this._prefix(t)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=e.noop},_safeSet:function(t,e){try{this.ls.setItem(t,e)}catch(t){"QuotaExceededError"===t.name&&(this.clear(),this._noop())}},get:function(t){return this.isExpired(t)&&this.remove(t),o(this.ls.getItem(this._prefix(t)))},set:function(t,n,o){return e.isNumber(o)?this._safeSet(this._ttlKey(t),r(i()+o)):this.ls.removeItem(this._ttlKey(t)),this._safeSet(this._prefix(t),r(n))},remove:function(t){return this.ls.removeItem(this._ttlKey(t)),this.ls.removeItem(this._prefix(t)),this},clear:function(){var t,e=a(this.keyMatcher);for(t=e.length;t--;)this.remove(e[t]);return this},isExpired:function(t){var n=o(this.ls.getItem(this._ttlKey(t)));return!!(e.isNumber(n)&&i()>n)}}),n}(),a=function(){"use strict";function n(t){t=t||{},this.cancelled=!1,this.lastReq=null,this._send=t.transport,this._get=t.limiter?t.limiter(this._get):this._get,this._cache=t.cache===!1?new r(0):s}var i=0,o={},a=6,s=new r(10);return n.setMaxPendingRequests=function(t){a=t},n.resetCache=function(){s.reset()},e.mixin(n.prototype,{_fingerprint:function(e){return e=e||{},e.url+e.type+t.param(e.data||{})},_get:function(t,e){function n(t){e(null,t),u._cache.set(l,t)}function r(){e(!0)}function s(){i--,delete o[l],u.onDeckRequestArgs&&(u._get.apply(u,u.onDeckRequestArgs),u.onDeckRequestArgs=null)}var l,c,u=this;l=this._fingerprint(t),this.cancelled||l!==this.lastReq||((c=o[l])?c.done(n).fail(r):i<a?(i++,o[l]=this._send(t).done(n).fail(r).always(s)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(n,i){var r,o;i=i||t.noop,n=e.isString(n)?{url:n}:n||{},o=this._fingerprint(n),this.cancelled=!1,this.lastReq=o,(r=this._cache.get(o))?i(null,r):this._get(n,i)},cancel:function(){this.cancelled=!0}}),n}(),s=window.SearchIndex=function(){"use strict";function n(n){n=n||{},n.datumTokenizer&&n.queryTokenizer||t.error("datumTokenizer and queryTokenizer are both required"),this.identify=n.identify||e.stringify,this.datumTokenizer=n.datumTokenizer,this.queryTokenizer=n.queryTokenizer,this.reset()}function i(t){return t=e.filter(t,function(t){return!!t}),t=e.map(t,function(t){return t.toLowerCase()})}function r(){var t={};return t[l]=[],t[s]={},t}function o(t){for(var e={},n=[],i=0,r=t.length;i<r;i++)e[t[i]]||(e[t[i]]=!0,n.push(t[i]));return n}function a(t,e){var n=0,i=0,r=[];t=t.sort(),e=e.sort();for(var o=t.length,a=e.length;n<o&&i<a;)t[n]<e[i]?n++:t[n]>e[i]?i++:(r.push(t[n]),n++,i++);return r}var s="c",l="i";return e.mixin(n.prototype,{bootstrap:function(t){this.datums=t.datums,this.trie=t.trie},add:function(t){var n=this;t=e.isArray(t)?t:[t],e.each(t,function(t){var o,a;n.datums[o=n.identify(t)]=t,a=i(n.datumTokenizer(t)),e.each(a,function(t){var e,i,a;for(e=n.trie,i=t.split("");a=i.shift();)e=e[s][a]||(e[s][a]=r()),e[l].push(o)})})},get:function(t){var n=this;return e.map(t,function(t){return n.datums[t]})},search:function(t){var n,r,c=this;return n=i(this.queryTokenizer(t)),e.each(n,function(t){var e,n,i,o;if(r&&0===r.length)return!1;for(e=c.trie,n=t.split("");e&&(i=n.shift());)e=e[s][i];return e&&0===n.length?(o=e[l].slice(0),void(r=r?a(r,o):o)):(r=[],!1)}),r?e.map(o(r),function(t){return c.datums[t]}):[]},all:function(){var t=[];for(var e in this.datums)t.push(this.datums[e]);return t},reset:function(){this.datums={},this.trie=r()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),l=function(){"use strict";function t(t){this.url=t.url,this.ttl=t.ttl,this.cache=t.cache,this.prepare=t.prepare,this.transform=t.transform,this.transport=t.transport,this.thumbprint=t.thumbprint,this.storage=new o(t.cacheKey)}var n;return n={data:"data",protocol:"protocol",thumbprint:"thumbprint"},e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(t){this.cache&&(this.storage.set(n.data,t,this.ttl),this.storage.set(n.protocol,location.protocol,this.ttl),this.storage.set(n.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var t,e={};return this.cache?(e.data=this.storage.get(n.data),e.protocol=this.storage.get(n.protocol),e.thumbprint=this.storage.get(n.thumbprint),t=e.thumbprint!==this.thumbprint||e.protocol!==location.protocol,e.data&&!t?e.data:null):null},fromNetwork:function(t){function e(){t(!0)}function n(e){t(null,r.transform(e))}var i,r=this;t&&(i=this.prepare(this._settings()),this.transport(i).fail(e).done(n))},clear:function(){return this.storage.clear(),this}}),t}(),c=function(){"use strict";function t(t){this.url=t.url,this.prepare=t.prepare,this.transform=t.transform,this.transport=new a({cache:t.cache,limiter:t.limiter,transport:t.transport})}return e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(t,e){function n(t,n){e(t?[]:r.transform(n))}var i,r=this;if(e)return t=t||"",i=this.prepare(t,this._settings()),this.transport.get(i,n)},cancelLastRequest:function(){this.transport.cancel()}}),t}(),u=function(){"use strict";function i(i){var r;return i?(r={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:e.identity,transform:e.identity,transport:null},i=e.isString(i)?{url:i}:i,i=e.mixin(r,i),!i.url&&t.error("prefetch requires url to be set"),i.transform=i.filter||i.transform,i.cacheKey=i.cacheKey||i.url,i.thumbprint=n+i.thumbprint,i.transport=i.transport?s(i.transport):t.ajax,i):null}function r(n){var i;if(n)return i={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:e.identity,transport:null},n=e.isString(n)?{url:n}:n,n=e.mixin(i,n),!n.url&&t.error("remote requires url to be set"),n.transform=n.filter||n.transform,n.prepare=o(n),n.limiter=a(n),n.transport=n.transport?s(n.transport):t.ajax,delete n.replace,delete n.wildcard,delete n.rateLimitBy,delete n.rateLimitWait,n}function o(t){function e(t,e){return e.url=o(e.url,t),e}function n(t,e){return e.url=e.url.replace(a,encodeURIComponent(t)),e}function i(t,e){return e}var r,o,a;return r=t.prepare,o=t.replace,a=t.wildcard,r?r:r=o?e:t.wildcard?n:i}function a(t){function n(t){return function(n){return e.debounce(n,t)}}function i(t){return function(n){return e.throttle(n,t)}}var r,o,a;return r=t.limiter,o=t.rateLimitBy,a=t.rateLimitWait,r||(r=/^throttle$/i.test(o)?i(a):n(a)),r}function s(n){return function(i){function r(t){e.defer(function(){a.resolve(t)})}function o(t){e.defer(function(){a.reject(t)})}var a=t.Deferred();return n(i,r,o),a}}return function(n){var o,a;return o={initialize:!0,identify:e.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},n=e.mixin(o,n||{}),!n.datumTokenizer&&t.error("datumTokenizer is required"),!n.queryTokenizer&&t.error("queryTokenizer is required"),a=n.sorter,n.sorter=a?function(t){return t.sort(a)}:e.identity,n.local=e.isFunction(n.local)?n.local():n.local,n.prefetch=i(n.prefetch),n.remote=r(n.remote),n}}(),h=function(){"use strict";function n(t){t=u(t),this.sorter=t.sorter,this.identify=t.identify,this.sufficient=t.sufficient,this.local=t.local,this.remote=t.remote?new c(t.remote):null,this.prefetch=t.prefetch?new l(t.prefetch):null,this.index=new s({identify:this.identify,datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),t.initialize!==!1&&this.initialize()}var r;return r=window&&window.Bloodhound,n.noConflict=function(){return window&&(window.Bloodhound=r),n},n.tokenizers=i,e.mixin(n.prototype,{__ttAdapter:function(){function t(t,e,i){return n.search(t,e,i)}function e(t,e){return n.search(t,e)}var n=this;return this.remote?t:e},_loadPrefetch:function(){function e(t,e){return t?n.reject():(r.add(e),r.prefetch.store(r.index.serialize()),void n.resolve())}var n,i,r=this;return n=t.Deferred(),this.prefetch?(i=this.prefetch.fromCache())?(this.index.bootstrap(i),n.resolve()):this.prefetch.fromNetwork(e):n.resolve(),n.promise()},_initialize:function(){function t(){e.add(e.local)}var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(t),this.initPromise},initialize:function(t){return!this.initPromise||t?this._initialize():this.initPromise},add:function(t){return this.index.add(t),this},get:function(t){return t=e.isArray(t)?t:[].slice.call(arguments),this.index.get(t)},search:function(t,n,i){function r(t){var n=[];e.each(t,function(t){!e.some(o,function(e){return a.identify(t)===a.identify(e)})&&n.push(t)}),i&&i(n)}var o,a=this;return o=this.sorter(this.index.search(t)),n(this.remote?o.slice():o),this.remote&&o.length<this.sufficient?this.remote.get(t,r):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return a.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),n}();return h}),function(t,e){"function"==typeof define&&define.amd?define("typeahead.js",["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n=function(){"use strict";function t(t){var a,s;return s=e.mixin({},o,t),a={css:r(),classes:s,html:n(s),selectors:i(s)},{css:a.css,html:a.html,classes:a.classes,selectors:a.selectors,mixin:function(t){e.mixin(t,a)}}}function n(t){return{wrapper:'<span class="'+t.wrapper+'"></span>',menu:'<div class="'+t.menu+'"></div>'}}function i(t){var n={};return e.each(t,function(t,e){n[e]="."+t}),n}function r(){var t={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return e.isMsie()&&e.mixin(t.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),t}var o={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return t}(),i=function(){"use strict";function n(e){e&&e.el||t.error("EventBus initialized without el"),this.$el=t(e.el)}var i,r;return i="typeahead:",r={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},e.mixin(n.prototype,{_trigger:function(e,n){var r;return r=t.Event(i+e),(n=n||[]).unshift(r),this.$el.trigger.apply(this.$el,n),r},before:function(t){var e,n;return e=[].slice.call(arguments,1),n=this._trigger("before"+t,e),n.isDefaultPrevented()},trigger:function(t){var e;this._trigger(t,[].slice.call(arguments,1)),(e=r[t])&&this._trigger(e,[].slice.call(arguments,1))}}),n}(),r=function(){"use strict";function t(t,e,n,i){var r;if(!n)return this;for(e=e.split(l),n=i?s(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function e(e,n,i){return t.call(this,"async",e,n,i)}function n(e,n,i){return t.call(this,"sync",e,n,i)}function i(t){var e;if(!this._callbacks)return this;for(t=t.split(l);e=t.shift();)delete this._callbacks[e];return this}function r(t){var e,n,i,r,a;if(!this._callbacks)return this;for(t=t.split(l),i=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)r=o(n.sync,this,[e].concat(i)),a=o(n.async,this,[e].concat(i)),r()&&c(a);return this}function o(t,e,n){function i(){for(var i,r=0,o=t.length;!i&&r<o;r+=1)i=t[r].apply(e,n)===!1;return!i}return i}function a(){var t;return t=window.setImmediate?function(t){setImmediate(function(){t()})}:function(t){setTimeout(function(){t()},0)}}function s(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var l=/\s+/,c=a();return{onSync:n,onAsync:e,off:i,trigger:r}}(),o=function(t){"use strict";function n(t,n,i){for(var r,o=[],a=0,s=t.length;a<s;a++)o.push(e.escapeRegExChars(t[a]));return r=i?"\\b("+o.join("|")+")\\b":"("+o.join("|")+")",n?new RegExp(r):new RegExp(r,"i")}var i={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(r){function o(e){var n,i,o;return(n=s.exec(e.data))&&(o=t.createElement(r.tagName),r.className&&(o.className=r.className),i=e.splitText(n.index),i.splitText(n[0].length),o.appendChild(i.cloneNode(!0)),e.parentNode.replaceChild(o,i)),!!n}function a(t,e){for(var n,i=3,r=0;r<t.childNodes.length;r++)n=t.childNodes[r],n.nodeType===i?r+=e(n)?1:0:a(n,e)}var s;r=e.mixin({},i,r),r.node&&r.pattern&&(r.pattern=e.isArray(r.pattern)?r.pattern:[r.pattern],s=n(r.pattern,r.caseSensitive,r.wordsOnly),a(r.node,o))}}(window.document),a=function(){"use strict";function n(n,r){n=n||{},n.input||t.error("input is missing"),r.mixin(this),this.$hint=t(n.hint),this.$input=t(n.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=i(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=e.noop)}function i(e){return t('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:e.css("font-family"),fontSize:e.css("font-size"),fontStyle:e.css("font-style"),fontVariant:e.css("font-variant"),fontWeight:e.css("font-weight"),wordSpacing:e.css("word-spacing"),letterSpacing:e.css("letter-spacing"),textIndent:e.css("text-indent"),textRendering:e.css("text-rendering"),textTransform:e.css("text-transform")}).insertAfter(e)}function o(t,e){return n.normalizeQuery(t)===n.normalizeQuery(e)}function a(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var s;return s={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},n.normalizeQuery=function(t){return e.toStr(t).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},e.mixin(n.prototype,r,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(t){var e=s[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(t,e){var n;switch(t){case"up":case"down":n=!a(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!a(e);break;default:n=!0}return n},_checkLanguageDirection:function(){var t=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==t&&(this.dir=t,this.$hint.attr("dir",t),this.trigger("langDirChanged",t))},_setQuery:function(t,e){var n,i;n=o(t,this.query),i=!!n&&this.query.length!==t.length,this.query=t,e||n?!e&&i&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var t,n,i,r,o=this;return t=e.bind(this._onBlur,this),n=e.bind(this._onFocus,this),i=e.bind(this._onKeydown,this),r=e.bind(this._onInput,this),this.$input.on("blur.tt",t).on("focus.tt",n).on("keydown.tt",i),!e.isMsie()||e.isMsie()>9?this.$input.on("input.tt",r):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(t){s[t.which||t.keyCode]||e.defer(e.bind(o._onInput,o,t))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(t,e){this.setInputValue(t),this._setQuery(t,e)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(t){this.$input.val(t),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n,i;t=this.getInputValue(),e=this.getHint(),n=t!==e&&0===e.indexOf(t),i=""!==t&&n&&!this.hasOverflow(),!i&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,n,i;return t=this.$input.val().length,n=this.$input[0].selectionStart,e.isNumber(n)?n===t:!document.selection||(i=document.selection.createRange(),i.moveStart("character",-t),t===i.text.length)},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=t("<div>")}}),n}(),s=function(){"use strict";function n(n,r){n=n||{},n.templates=n.templates||{},n.templates.notFound=n.templates.notFound||n.templates.empty,n.source||t.error("missing source"),n.node||t.error("missing node"),n.name&&!s(n.name)&&t.error("invalid dataset name: "+n.name),
-r.mixin(this),this.highlight=!!n.highlight,this.name=n.name||c(),this.limit=n.limit||5,this.displayFn=i(n.display||n.displayKey),this.templates=a(n.templates,this.displayFn),this.source=n.source.__ttAdapter?n.source.__ttAdapter():n.source,this.async=e.isUndefined(n.async)?this.source.length>2:!!n.async,this._resetLastSuggestion(),this.$el=t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}function i(t){function n(e){return e[t]}return t=t||e.stringify,e.isFunction(t)?t:n}function a(n,i){function r(e){return t("<div>").text(i(e))}return{notFound:n.notFound&&e.templatify(n.notFound),pending:n.pending&&e.templatify(n.pending),header:n.header&&e.templatify(n.header),footer:n.footer&&e.templatify(n.footer),suggestion:n.suggestion||r}}function s(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var l,c;return l={val:"tt-selectable-display",obj:"tt-selectable-object"},c=e.getIdGenerator(),n.extractData=function(e){var n=t(e);return n.data(l.obj)?{val:n.data(l.val)||"",obj:n.data(l.obj)||null}:null},e.mixin(n.prototype,r,{_overwrite:function(t,e){e=e||[],e.length?this._renderSuggestions(t,e):this.async&&this.templates.pending?this._renderPending(t):!this.async&&this.templates.notFound?this._renderNotFound(t):this._empty(),this.trigger("rendered",this.name,e,!1)},_append:function(t,e){e=e||[],e.length&&this.$lastSuggestion.length?this._appendSuggestions(t,e):e.length?this._renderSuggestions(t,e):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(t),this.trigger("rendered",this.name,e,!0)},_renderSuggestions:function(t,e){var n;n=this._getSuggestionsFragment(t,e),this.$lastSuggestion=n.children().last(),this.$el.html(n).prepend(this._getHeader(t,e)).append(this._getFooter(t,e))},_appendSuggestions:function(t,e){var n,i;n=this._getSuggestionsFragment(t,e),i=n.children().last(),this.$lastSuggestion.after(n),this.$lastSuggestion=i},_renderPending:function(t){var e=this.templates.pending;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_renderNotFound:function(t){var e=this.templates.notFound;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(n,i){var r,a=this;return r=document.createDocumentFragment(),e.each(i,function(e){var i,o;o=a._injectQuery(n,e),i=t(a.templates.suggestion(o)).data(l.obj,e).data(l.val,a.displayFn(e)).addClass(a.classes.suggestion+" "+a.classes.selectable),r.appendChild(i[0])}),this.highlight&&o({className:this.classes.highlight,node:r,pattern:n}),t(r)},_getFooter:function(t,e){return this.templates.footer?this.templates.footer({query:t,suggestions:e,dataset:this.name}):null},_getHeader:function(t,e){return this.templates.header?this.templates.header({query:t,suggestions:e,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=t()},_injectQuery:function(t,n){return e.isObject(n)?e.mixin({_query:t},n):n},update:function(e){function n(t){a||(a=!0,t=(t||[]).slice(0,r.limit),s=t.length,r._overwrite(e,t),s<r.limit&&r.async&&r.trigger("asyncRequested",e))}function i(n){n=n||[],!o&&s<r.limit&&(r.cancel=t.noop,s+=n.length,r._append(e,n.slice(0,r.limit-s)),r.async&&r.trigger("asyncReceived",e))}var r=this,o=!1,a=!1,s=0;this.cancel(),this.cancel=function(){o=!0,r.cancel=t.noop,r.async&&r.trigger("asyncCanceled",e)},this.source(e,n,i),!a&&n([])},cancel:t.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=t("<div>")}}),n}(),l=function(){"use strict";function n(n,i){function r(e){var n=o.$node.find(e.node).first();return e.node=n.length?n:t("<div>").appendTo(o.$node),new s(e,i)}var o=this;n=n||{},n.node||t.error("node is required"),i.mixin(this),this.$node=t(n.node),this.query=null,this.datasets=e.map(n.datasets,r)}return e.mixin(n.prototype,r,{_onSelectableClick:function(e){this.trigger("selectableClicked",t(e.currentTarget))},_onRendered:function(t,e,n,i){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",e,n,i)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function t(t){return t.isEmpty()}return e.every(this.datasets,t)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var t=this.getActiveSelectable();t&&t.removeClass(this.classes.cursor)},_ensureVisible:function(t){var e,n,i,r;e=t.position().top,n=e+t.outerHeight(!0),i=this.$node.scrollTop(),r=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),e<0?this.$node.scrollTop(i+e):r<n&&this.$node.scrollTop(i+(n-r))},bind:function(){var t,n=this;return t=e.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,t),e.each(this.datasets,function(t){t.onSync("asyncRequested",n._propagate,n).onSync("asyncCanceled",n._propagate,n).onSync("asyncReceived",n._propagate,n).onSync("rendered",n._onRendered,n).onSync("cleared",n._onCleared,n)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(t){this.$node.attr("dir",t)},selectableRelativeToCursor:function(t){var e,n,i,r;return n=this.getActiveSelectable(),e=this._getSelectables(),i=n?e.index(n):-1,r=i+t,r=(r+1)%(e.length+1)-1,r=r<-1?e.length-1:r,r===-1?null:e.eq(r)},setCursor:function(t){this._removeCursor(),(t=t&&t.first())&&(t.addClass(this.classes.cursor),this._ensureVisible(t))},getSelectableData:function(t){return t&&t.length?s.extractData(t):null},getActiveSelectable:function(){var t=this._getSelectables().filter(this.selectors.cursor).first();return t.length?t:null},getTopSelectable:function(){var t=this._getSelectables().first();return t.length?t:null},update:function(t){function n(e){e.update(t)}var i=t!==this.query;return i&&(this.query=t,e.each(this.datasets,n)),i},empty:function(){function t(t){t.clear()}e.each(this.datasets,t),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function n(t){t.destroy()}this.$node.off(".tt"),this.$node=t("<div>"),e.each(this.datasets,n)}}),n}(),c=function(){"use strict";function t(){l.apply(this,[].slice.call(arguments,0))}var n=l.prototype;return e.mixin(t.prototype,l.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),n.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),n.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css("ltr"===t?this.css.ltr:this.css.rtl),n.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),t}(),u=function(){"use strict";function n(n,r){var o,a,s,l,c,u,h,d,f,p,g;n=n||{},n.input||t.error("missing input"),n.menu||t.error("missing menu"),n.eventBus||t.error("missing event bus"),r.mixin(this),this.eventBus=n.eventBus,this.minLength=e.isNumber(n.minLength)?n.minLength:1,this.input=n.input,this.menu=n.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),o=i(this,"activate","open","_onFocused"),a=i(this,"deactivate","_onBlurred"),s=i(this,"isActive","isOpen","_onEnterKeyed"),l=i(this,"isActive","isOpen","_onTabKeyed"),c=i(this,"isActive","_onEscKeyed"),u=i(this,"isActive","open","_onUpKeyed"),h=i(this,"isActive","open","_onDownKeyed"),d=i(this,"isActive","isOpen","_onLeftKeyed"),f=i(this,"isActive","isOpen","_onRightKeyed"),p=i(this,"_openIfActive","_onQueryChanged"),g=i(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",o,this).onSync("blurred",a,this).onSync("enterKeyed",s,this).onSync("tabKeyed",l,this).onSync("escKeyed",c,this).onSync("upKeyed",u,this).onSync("downKeyed",h,this).onSync("leftKeyed",d,this).onSync("rightKeyed",f,this).onSync("queryChanged",p,this).onSync("whitespaceChanged",g,this).onSync("langDirChanged",this._onLangDirChanged,this)}function i(t){var n=[].slice.call(arguments,1);return function(){var i=[].slice.call(arguments);e.each(n,function(e){return t[e].apply(t,i)})}}return e.mixin(n.prototype,{_hacks:function(){var n,i;n=this.input.$input||t("<div>"),i=this.menu.$node||t("<div>"),n.on("blur.tt",function(t){var r,o,a;r=document.activeElement,o=i.is(r),a=i.has(r).length>0,e.isMsie()&&(o||a)&&(t.preventDefault(),t.stopImmediatePropagation(),e.defer(function(){n.focus()}))}),i.on("mousedown.tt",function(t){t.preventDefault()})},_onSelectableClicked:function(t,e){this.select(e)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(t,e,n,i){this._updateHint(),this.eventBus.trigger("render",n,i,e)},_onAsyncRequested:function(t,e,n){this.eventBus.trigger("asyncrequest",n,e)},_onAsyncCanceled:function(t,e,n){this.eventBus.trigger("asynccancel",n,e)},_onAsyncReceived:function(t,e,n){this.eventBus.trigger("asyncreceive",n,e)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())&&this.select(n)&&e.preventDefault()},_onTabKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())?this.select(n)&&e.preventDefault():(n=this.menu.getTopSelectable())&&this.autocomplete(n)&&e.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(t,e){this._minLengthMet(e)?this.menu.update(e):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(t,e){this.dir!==e&&(this.dir=e,this.menu.setLanguageDirection(e))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(t){return t=e.isString(t)?t:this.input.getQuery()||"",t.length>=this.minLength},_updateHint:function(){var t,n,i,r,o,s,l;t=this.menu.getTopSelectable(),n=this.menu.getSelectableData(t),i=this.input.getInputValue(),!n||e.isBlankString(i)||this.input.hasOverflow()?this.input.clearHint():(r=a.normalizeQuery(i),o=e.escapeRegExChars(r),s=new RegExp("^(?:"+o+")(.+$)","i"),l=s.exec(n.val),l&&this.input.setHint(i+l[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before("active"))&&(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before("idle")&&(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(t){this.input.setQuery(e.toStr(t))},getVal:function(){return this.input.getQuery()},select:function(t){var e=this.menu.getSelectableData(t);return!(!e||this.eventBus.before("select",e.obj))&&(this.input.setQuery(e.val,!0),this.eventBus.trigger("select",e.obj),this.close(),!0)},autocomplete:function(t){var e,n,i;return e=this.input.getQuery(),n=this.menu.getSelectableData(t),i=n&&e!==n.val,!(!i||this.eventBus.before("autocomplete",n.obj))&&(this.input.setQuery(n.val),this.eventBus.trigger("autocomplete",n.obj),!0)},moveCursor:function(t){var e,n,i,r,o;return e=this.input.getQuery(),n=this.menu.selectableRelativeToCursor(t),i=this.menu.getSelectableData(n),r=i?i.obj:null,o=this._minLengthMet()&&this.menu.update(e),!o&&!this.eventBus.before("cursorchange",r)&&(this.menu.setCursor(n),i?this.input.setInputValue(i.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",r),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),n}();!function(){"use strict";function r(e,n){e.each(function(){var e,i=t(this);(e=i.data(g.typeahead))&&n(e,i)})}function o(t,e){return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(h(t)).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1})}function s(t,e){t.data(g.attrs,{dir:t.attr("dir"),autocomplete:t.attr("autocomplete"),spellcheck:t.attr("spellcheck"),style:t.attr("style")}),t.addClass(e.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!t.attr("dir")&&t.attr("dir","auto")}catch(t){}return t}function h(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}function d(t){var n,i;n=t.data(g.www),i=t.parent().filter(n.selectors.wrapper),e.each(t.data(g.attrs),function(n,i){e.isUndefined(n)?t.removeAttr(i):t.attr(i,n)}),t.removeData(g.typeahead).removeData(g.www).removeData(g.attr).removeClass(n.classes.input),i.length&&(t.detach().insertAfter(i),i.remove())}function f(n){var i,r;return i=e.isJQuery(n)||e.isElement(n),r=i?t(n).first():[],r.length?r:null}var p,g,m;p=t.fn.typeahead,g={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},m={initialize:function(r,h){function d(){var n,d,m,v,y,x,b,_,w,S,C;e.each(h,function(t){t.highlight=!!r.highlight}),n=t(this),d=t(p.html.wrapper),m=f(r.hint),v=f(r.menu),y=r.hint!==!1&&!m,x=r.menu!==!1&&!v,y&&(m=o(n,p)),x&&(v=t(p.html.menu).css(p.css.menu)),m&&m.val(""),n=s(n,p),(y||x)&&(d.css(p.css.wrapper),n.css(y?p.css.input:p.css.inputWithNoHint),n.wrap(d).parent().prepend(y?m:null).append(x?v:null)),C=x?c:l,b=new i({el:n}),_=new a({hint:m,input:n},p),w=new C({node:v,datasets:h},p),S=new u({input:_,menu:w,eventBus:b,minLength:r.minLength},p),n.data(g.www,p),n.data(g.typeahead,S)}var p;return h=e.isArray(h)?h:[].slice.call(arguments,1),r=r||{},p=n(r.classNames),this.each(d)},isEnabled:function(){var t;return r(this.first(),function(e){t=e.isEnabled()}),t},enable:function(){return r(this,function(t){t.enable()}),this},disable:function(){return r(this,function(t){t.disable()}),this},isActive:function(){var t;return r(this.first(),function(e){t=e.isActive()}),t},activate:function(){return r(this,function(t){t.activate()}),this},deactivate:function(){return r(this,function(t){t.deactivate()}),this},isOpen:function(){var t;return r(this.first(),function(e){t=e.isOpen()}),t},open:function(){return r(this,function(t){t.open()}),this},close:function(){return r(this,function(t){t.close()}),this},select:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.select(i)}),n},autocomplete:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.autocomplete(i)}),n},moveCursor:function(t){var e=!1;return r(this.first(),function(n){e=n.moveCursor(t)}),e},val:function(t){var e;return arguments.length?(r(this,function(e){e.setVal(t)}),this):(r(this.first(),function(t){e=t.getVal()}),e)},destroy:function(){return r(this,function(t,e){d(e),t.destroy()}),this}},t.fn.typeahead=function(t){return m[t]?m[t].apply(this,[].slice.call(arguments,1)):m.initialize.apply(this,arguments)},t.fn.typeahead.noConflict=function(){return t.fn.typeahead=p,this}}()}),define("typeahead",["jquery"],function(t){return function(){var e,n;return n=function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)},e=n.apply(t,arguments)}}(this)),define("search",["jquery","config","utils","bloodhound","typeahead"],function(t,e,n,i){!function(t){function r(e,n){var e=e.replace("%QUERY",encodeURIComponent(n)),i=t("label.active > input[name=smatch]").val();return i&&(e+="&match="+i),e}var o="search",a={_init:function(o){return o=o||{},this.each(function(){function a(t){return(t.tags||[]).push(t.name)}function s(t){function e(t){return t.split(".").pop()}function i(t){return t.split(".").slice(0,-1).join(".")}var r='<div class="tt-match file type-icon '+e(t.name)+'"><span class="tt-label">'+n.htmlEncode(i(t.name));if(t.tags){r+='<span class="tt-tags">';for(var o=0;o<t.tags.length;o++){var a=t.tags[o];r+='<span class="tt-tag">'+n.htmlEncode(a)+"</span>"}r+="</span>"}return t.title&&(r+='<div class="tt-title file">'+n.htmlEncode(t.title)+"</div>"),r+="</div>"}function l(t){var e="";if(t.file!=_||t.alias!=w){var i=t.file.split(".").pop();_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+i+'"><span class="tt-path-file">'+n.htmlEncode(t.file)+"</span></div>"}return e+p(t)}function c(t){return i.tokenizers.whitespace(t.text)}function u(t){var e="";return t.file==_&&t.alias==w||(_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+t.ext+'"><span class="tt-path-alias">'+n.htmlEncode(t.alias)+'</span>(<span class="tt-path-file">'+n.htmlEncode(t.file)+")</span></div>"),t.text&&(e+=p(t)),e}function h(t,n){for(var i=e.swish.templates,r=[],o=t.split(" "),a=[],s=0;s<o.length;s++)a.push({prefix:o[s],regex:new RegExp("_"+o[s])});for(var s=0;s<i.length;s++){var l=i[s];if(void 0!==l.arity){for(var c=0,u=!0;c<a.length&&u;c++)l.name.startsWith(a[c].prefix)||l.name.match(a[c].regex)||(u=!1);u&&r.push(l)}}n(r)}function d(t){var e='<div class="tt-match predicate';return t.type&&(e+=" "+t.type),t.mode&&(e+='" title="'+t.mode),e+='"><span class="tt-label">'+n.htmlEncode(t.name)+"/"+t.arity+"</span>",t.iso&&(e+='<span class="tt-tags">',t.iso&&(e+='<span class="tt-tag">ISO</span>'),e+="</span>"),t.summary&&(e+='<div class="tt-title file">'+n.htmlEncode(t.summary)+"</div>"),e+="</div>",e+="</div>"}function f(e,n){if(v=e,e.length<2)return[];var i=[],r=new RegExp("\\b"+e,"g");C=r,t(".prolog-editor").each(function(){for(var e=this,n=t(e).prologEditor("search",r,{max:7}),o=0;o<n.length;o++)n[o].editor=e,n[o].regex=C,i.push(n[o])}),n(i)}function p(t){var e,i=t.text;(e=i.search(C))>20&&(i="..."+i.slice(e-17)),i.length>80&&(i=i.substring(0,80));var r='<div class="tt-match source"><span class="tt-line"><span class="tt-lineno">'+t.line+'</span><span class="tt-text">'+n.htmlEncode(i)+"</span></span></div>";return r}function g(t){function e(t){return t.avatar?'<img class="avatar" src="'+encodeURI(t.avatar)+'">':""}var i='<div class="tt-match user">'+e(t)+'<span class="tt-label">'+n.htmlEncode(t.name)+"</span></div>";return i}function m(t){for(var e=[],n=t.replace(/\s+/g," ").split(" "),i=0;i<n.length;i++)e.push(k[n[i]]);return e}var v,y=t(this),x=new i({name:"files",remote:{url:e.http.locations.swish_typeahead+"?set=file&q=%QUERY",wildcard:"%QUERY"},datumTokenizer:a,queryTokenizer:i.tokenizers.whitespace});x.initialize();var b=new i({name:"store_content",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=store_content&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});b.initialize();var _=null,w=null,S=new i({name:"source",limit:15,cache:!1,query_cache_length:1,remote:{url:e.http.locations.swish_typeahead+"?set=sources&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});S.initialize();var C,T=new i({name:"users",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=user&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});T.initialize();var k={source:{name:"source",display:"text",source:f,templates:{suggestion:p}},sources:{name:"sources",display:"file",source:S.ttAdapter(),templates:{suggestion:u},limit:15},files:{name:"files",display:"name",source:x.ttAdapter(),templates:{suggestion:s}},store_content:{name:"store_content",display:"file",source:b.ttAdapter(),templates:{suggestion:l}},predicates:{name:"predicates",display:function(t){return t.name+"/"+t.arity},source:h,templates:{suggestion:d}},users:{name:"users",display:"name",source:T.ttAdapter(),templates:{suggestion:g}}},A=k.sources.source;k.sources.source=function(t,e){return _=null,w=null,C=new RegExp(RegExp.escape(t)),A(t,e)},y.typeahead({minLength:2,highlight:!0},m(y.data("search-in"))).on("typeahead:selected typeahead:autocompleted",function(e,n){if(0==o.search)y.data("json-value",n);else if("store"==n.type)n.query&&(n.regex=new RegExp(RegExp.escape(n.query),"g"),n.showAllMatches=!0),t(e.target).closest(".swish").swish("playFile",n);else if(void 0!==n.arity)t(".swish-event-receiver").trigger("pldoc",n);else if(void 0!==n.editor&&void 0!==n.line)t(n.editor).prologEditor("gotoLine",n.line,{regex:n.regex,showAllMatches:!0});else if(void 0!==n.alias){var i=encodeURI("/"+n.alias+"/"+n.file+"."+n.ext),r={url:i,line:n.line};n.query&&(r.regex=new RegExp(RegExp.escape(n.query),"g"),r.showAllMatches=!0),t(e.target).closest(".swish").swish("playURL",r)}else y.data("json-value",n),console.log(y.data("json-value"))}),0!=o.search&&y.closest("form").submit(function(t){var e=y.data("json-value"),n=y.val();return e&&e.datum&&e.datum.label==n||(e=n),y.val(""),y.data("json-value",null),y.search("search",e),!1})})},search:function(t){alert("Full search not yet implemented\nPlease select from auto completion list")}};t.fn.search=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),RegExp.escape=function(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cm/lib/codemirror",e):t.CodeMirror=e()}(this,function(){"use strict";function t(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}function e(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function n(t,n){return e(t).appendChild(n)}function i(t,e,n,i){var r=document.createElement(t);if(n&&(r.className=n),i&&(r.style.cssText=i),"string"==typeof e)r.appendChild(document.createTextNode(e));else if(e)for(var o=0;o<e.length;++o)r.appendChild(e[o]);return r}function r(t,e,n,r){var o=i(t,e,n,r);return o.setAttribute("role","presentation"),o}function o(t,e){if(3==e.nodeType&&(e=e.parentNode),t.contains)return t.contains(e);do if(11==e.nodeType&&(e=e.host),e==t)return!0;while(e=e.parentNode)}function a(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function s(e,n){var i=e.className;t(n).test(i)||(e.className+=(i?" ":"")+n)}function l(e,n){for(var i=e.split(" "),r=0;r<i.length;r++)i[r]&&!t(i[r]).test(n)&&(n+=" "+i[r]);return n}function c(t){var e=Array.prototype.slice.call(arguments,1);return function(){return t.apply(null,e)}}function u(t,e,n){e||(e={});for(var i in t)!t.hasOwnProperty(i)||n===!1&&e.hasOwnProperty(i)||(e[i]=t[i]);return e}function h(t,e,n,i,r){null==e&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));for(var o=i||0,a=r||0;;){var s=t.indexOf("\t",o);if(s<0||s>=e)return a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}function d(t,e){for(var n=0;n<t.length;++n)if(t[n]==e)return n;return-1}function f(t,e,n){for(var i=0,r=0;;){var o=t.indexOf("\t",i);o==-1&&(o=t.length);var a=o-i;if(o==t.length||r+a>=e)return i+Math.min(a,e-r);if(r+=o-i,r+=n-r%n,i=o+1,r>=e)return i}}function p(t){for(;Ma.length<=t;)Ma.push(g(Ma)+" ");return Ma[t]}function g(t){return t[t.length-1]}function m(t,e){for(var n=[],i=0;i<t.length;i++)n[i]=e(t[i],i);return n}function v(t,e,n){for(var i=0,r=n(e);i<t.length&&n(t[i])<=r;)i++;t.splice(i,0,e)}function y(){}function x(t,e){var n;return Object.create?n=Object.create(t):(y.prototype=t,n=new y),e&&u(e,n),n}function b(t){return/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||La.test(t))}function _(t,e){return e?!!(e.source.indexOf("\\w")>-1&&b(t))||e.test(t):b(t)}function w(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}function S(t){return t.charCodeAt(0)>=768&&Ea.test(t)}function C(t,e,n){for(;(n<0?e>0:e<t.length)&&S(t.charAt(e));)e+=n;return e}function T(t,e,n){for(;;){if(Math.abs(e-n)<=1)return t(e)?e:n;var i=Math.floor((e+n)/2);t(i)?n=i:e=i}}function k(t,e,n){var o=this;this.input=n,o.scrollbarFiller=i("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=i("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=r("div",null,"CodeMirror-code"),o.selectionDiv=i("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=i("div",null,"CodeMirror-cursors"),o.measure=i("div",null,"CodeMirror-measure"),o.lineMeasure=i("div",null,"CodeMirror-measure"),o.lineSpace=r("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var a=r("div",[o.lineSpace],"CodeMirror-lines");o.mover=i("div",[a],null,"position: relative"),o.sizer=i("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=i("div",null,null,"position: absolute; height: "+Sa+"px; width: 1px;"),o.gutters=i("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=i("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=i("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),Jo&&ta<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),ea||Yo&&ua||(o.scroller.draggable=!0),t&&(t.appendChild?t.appendChild(o.wrapper):t(o.wrapper)),o.viewFrom=o.viewTo=e.first,o.reportedViewFrom=o.reportedViewTo=e.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,n.init(o)}function A(t,e){if(e-=t.first,e<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var i=0;;++i){var r=n.children[i],o=r.chunkSize();if(e<o){n=r;break}e-=o}return n.lines[e]}function M(t,e,n){var i=[],r=e.line;return t.iter(e.line,n.line+1,function(t){var o=t.text;r==n.line&&(o=o.slice(0,n.ch)),r==e.line&&(o=o.slice(e.ch)),i.push(o),++r}),i}function L(t,e,n){var i=[];return t.iter(e,n,function(t){i.push(t.text)}),i}function E(t,e){var n=e-t.height;if(n)for(var i=t;i;i=i.parent)i.height+=n}function P(t){if(null==t.parent)return null;for(var e=t.parent,n=d(e.lines,t),i=e.parent;i;e=i,i=i.parent)for(var r=0;i.children[r]!=e;++r)n+=i.children[r].chunkSize();return n+e.first}function N(t,e){var n=t.first;t:do{for(var i=0;i<t.children.length;++i){var r=t.children[i],o=r.height;if(e<o){t=r;continue t}e-=o,n+=r.chunkSize()}return n}while(!t.lines);for(var a=0;a<t.lines.length;++a){var s=t.lines[a],l=s.height;if(e<l)break;e-=l}return n+a}function O(t,e){return e>=t.first&&e<t.first+t.size}function R(t,e){return String(t.lineNumberFormatter(e+t.firstLineNumber))}function D(t,e,n){return void 0===n&&(n=null),this instanceof D?(this.line=t,this.ch=e,void(this.sticky=n)):new D(t,e,n)}function I(t,e){return t.line-e.line||t.ch-e.ch}function j(t,e){return t.sticky==e.sticky&&0==I(t,e)}function V(t){return D(t.line,t.ch)}function H(t,e){return I(t,e)<0?e:t}function F(t,e){return I(t,e)<0?t:e}function z(t,e){return Math.max(t.first,Math.min(e,t.first+t.size-1))}function q(t,e){if(e.line<t.first)return D(t.first,0);var n=t.first+t.size-1;return e.line>n?D(n,A(t,n).text.length):G(e,A(t,e.line).text.length)}function G(t,e){var n=t.ch;return null==n||n>e?D(t.line,e):n<0?D(t.line,0):t}function B(t,e){for(var n=[],i=0;i<e.length;i++)n[i]=q(t,e[i]);return n}function $(){Pa=!0}function W(){Na=!0}function U(t,e,n){this.marker=t,this.from=e,this.to=n}function X(t,e){if(t)for(var n=0;n<t.length;++n){var i=t[n];if(i.marker==e)return i}}function Y(t,e){for(var n,i=0;i<t.length;++i)t[i]!=e&&(n||(n=[])).push(t[i]);return n}function Q(t,e){t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t)}function Z(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);if(s||o.from==e&&"bookmark"==a.type&&(!n||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);(i||(i=[])).push(new U(a,o.from,l?null:o.to))}}return i}function K(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);if(s||o.from==e&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);(i||(i=[])).push(new U(a,l?null:o.from-e,null==o.to?null:o.to-e))}}return i}function J(t,e){if(e.full)return null;var n=O(t,e.from.line)&&A(t,e.from.line).markedSpans,i=O(t,e.to.line)&&A(t,e.to.line).markedSpans;if(!n&&!i)return null;var r=e.from.ch,o=e.to.ch,a=0==I(e.from,e.to),s=Z(n,r,a),l=K(i,o,a),c=1==e.text.length,u=g(e.text).length+(c?r:0);if(s)for(var h=0;h<s.length;++h){var d=s[h];if(null==d.to){var f=X(l,d.marker);f?c&&(d.to=null==f.to?null:f.to+u):d.to=r}}if(l)for(var p=0;p<l.length;++p){var m=l[p];if(null!=m.to&&(m.to+=u),null==m.from){var v=X(s,m.marker);v||(m.from=u,c&&(s||(s=[])).push(m))}else m.from+=u,c&&(s||(s=[])).push(m)}s&&(s=tt(s)),l&&l!=s&&(l=tt(l));var y=[s];if(!c){var x,b=e.text.length-2;if(b>0&&s)for(var _=0;_<s.length;++_)null==s[_].to&&(x||(x=[])).push(new U(s[_].marker,null,null));for(var w=0;w<b;++w)y.push(x);y.push(l)}return y}function tt(t){for(var e=0;e<t.length;++e){var n=t[e];null!=n.from&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&t.splice(e--,1)}return t.length?t:null}function et(t,e,n){var i=null;if(t.iter(e.line,n.line+1,function(t){if(t.markedSpans)for(var e=0;e<t.markedSpans.length;++e){var n=t.markedSpans[e].marker;!n.readOnly||i&&d(i,n)!=-1||(i||(i=[])).push(n)}}),!i)return null;for(var r=[{from:e,to:n}],o=0;o<i.length;++o)for(var a=i[o],s=a.find(0),l=0;l<r.length;++l){var c=r[l];if(!(I(c.to,s.from)<0||I(c.from,s.to)>0)){var u=[l,1],h=I(c.from,s.from),f=I(c.to,s.to);(h<0||!a.inclusiveLeft&&!h)&&u.push({from:c.from,to:s.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),r.splice.apply(r,u),l+=u.length-3}}return r}function nt(t){var e=t.markedSpans;if(e){for(var n=0;n<e.length;++n)e[n].marker.detachLine(t);t.markedSpans=null}}function it(t,e){if(e){for(var n=0;n<e.length;++n)e[n].marker.attachLine(t);t.markedSpans=e}}function rt(t){return t.inclusiveLeft?-1:0}function ot(t){return t.inclusiveRight?1:0}function at(t,e){var n=t.lines.length-e.lines.length;if(0!=n)return n;var i=t.find(),r=e.find(),o=I(i.from,r.from)||rt(t)-rt(e);
-if(o)return-o;var a=I(i.to,r.to)||ot(t)-ot(e);return a?a:e.id-t.id}function st(t,e){var n,i=Na&&t.markedSpans;if(i)for(var r=void 0,o=0;o<i.length;++o)r=i[o],r.marker.collapsed&&null==(e?r.from:r.to)&&(!n||at(n,r.marker)<0)&&(n=r.marker);return n}function lt(t){return st(t,!0)}function ct(t){return st(t,!1)}function ut(t,e,n,i,r){var o=A(t,e),a=Na&&o.markedSpans;if(a)for(var s=0;s<a.length;++s){var l=a[s];if(l.marker.collapsed){var c=l.marker.find(0),u=I(c.from,n)||rt(l.marker)-rt(r),h=I(c.to,i)||ot(l.marker)-ot(r);if(!(u>=0&&h<=0||u<=0&&h>=0)&&(u<=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.to,n)>=0:I(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.from,i)<=0:I(c.from,i)<0)))return!0}}}function ht(t){for(var e;e=lt(t);)t=e.find(-1,!0).line;return t}function dt(t){for(var e;e=ct(t);)t=e.find(1,!0).line;return t}function ft(t){for(var e,n;e=ct(t);)t=e.find(1,!0).line,(n||(n=[])).push(t);return n}function pt(t,e){var n=A(t,e),i=ht(n);return n==i?e:P(i)}function gt(t,e){if(e>t.lastLine())return e;var n,i=A(t,e);if(!mt(t,i))return e;for(;n=ct(i);)i=n.find(1,!0).line;return P(i)+1}function mt(t,e){var n=Na&&e.markedSpans;if(n)for(var i=void 0,r=0;r<n.length;++r)if(i=n[r],i.marker.collapsed){if(null==i.from)return!0;if(!i.marker.widgetNode&&0==i.from&&i.marker.inclusiveLeft&&vt(t,e,i))return!0}}function vt(t,e,n){if(null==n.to){var i=n.marker.find(1,!0);return vt(t,i.line,X(i.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==e.text.length)return!0;for(var r=void 0,o=0;o<e.markedSpans.length;++o)if(r=e.markedSpans[o],r.marker.collapsed&&!r.marker.widgetNode&&r.from==n.to&&(null==r.to||r.to!=n.from)&&(r.marker.inclusiveLeft||n.marker.inclusiveRight)&&vt(t,e,r))return!0}function yt(t){t=ht(t);for(var e=0,n=t.parent,i=0;i<n.lines.length;++i){var r=n.lines[i];if(r==t)break;e+=r.height}for(var o=n.parent;o;n=o,o=n.parent)for(var a=0;a<o.children.length;++a){var s=o.children[a];if(s==n)break;e+=s.height}return e}function xt(t){if(0==t.height)return 0;for(var e,n=t.text.length,i=t;e=lt(i);){var r=e.find(0,!0);i=r.from.line,n+=r.from.ch-r.to.ch}for(i=t;e=ct(i);){var o=e.find(0,!0);n-=i.text.length-o.from.ch,i=o.to.line,n+=i.text.length-o.to.ch}return n}function bt(t){var e=t.display,n=t.doc;e.maxLine=A(n,n.first),e.maxLineLength=xt(e.maxLine),e.maxLineChanged=!0,n.iter(function(t){var n=xt(t);n>e.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)})}function _t(t,e,n,i){if(!t)return i(e,n,"ltr");for(var r=!1,o=0;o<t.length;++o){var a=t[o];(a.from<n&&a.to>e||e==n&&a.to==e)&&(i(Math.max(a.from,e),Math.min(a.to,n),1==a.level?"rtl":"ltr"),r=!0)}r||i(e,n,"ltr")}function wt(t,e,n){var i;Oa=null;for(var r=0;r<t.length;++r){var o=t[r];if(o.from<e&&o.to>e)return r;o.to==e&&(o.from!=o.to&&"before"==n?i=r:Oa=r),o.from==e&&(o.from!=o.to&&"before"!=n?i=r:Oa=r)}return null!=i?i:Oa}function St(t,e){var n=t.order;return null==n&&(n=t.order=Ra(t.text,e)),n}function Ct(t,e,n){var i=C(t.text,e+n,n);return i<0||i>t.text.length?null:i}function Tt(t,e,n){var i=Ct(t,e.ch,n);return null==i?null:new D(e.line,i,n<0?"after":"before")}function kt(t,e,n,i,r){if(t){var o=St(n,e.doc.direction);if(o){var a,s=r<0?g(o):o[0],l=r<0==(1==s.level),c=l?"after":"before";if(s.level>0){var u=Qe(e,n);a=r<0?n.text.length-1:0;var h=Ze(e,u,a).top;a=T(function(t){return Ze(e,u,t).top==h},r<0==(1==s.level)?s.from:s.to-1,a),"before"==c&&(a=Ct(n,a,1,!0))}else a=r<0?s.to:s.from;return new D(i,a,c)}}return new D(i,r<0?n.text.length:0,r<0?"before":"after")}function At(t,e,n,i){var r=St(e,t.doc.direction);if(!r)return Tt(e,n,i);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=wt(r,n.ch,n.sticky),a=r[o];if("ltr"==t.doc.direction&&a.level%2==0&&(i>0?a.to>n.ch:a.from<n.ch))return Tt(e,n,i);var s,l=function(t,n){return Ct(e,t instanceof D?t.ch:t,n)},c=function(n){return t.options.lineWrapping?(s=s||Qe(t,e),mn(t,e,s,n)):{begin:0,end:e.text.length}},u=c("before"==n.sticky?l(n,-1):n.ch);if("rtl"==t.doc.direction||1==a.level){var h=1==a.level==i<0,d=l(n,h?1:-1);if(null!=d&&(h?d<=a.to&&d<=u.end:d>=a.from&&d>=u.begin)){var f=h?"before":"after";return new D(n.line,d,f)}}var p=function(t,e,i){for(var o=function(t,e){return e?new D(n.line,l(t,1),"before"):new D(n.line,t,"after")};t>=0&&t<r.length;t+=e){var a=r[t],s=e>0==(1!=a.level),c=s?i.begin:l(i.end,-1);if(a.from<=c&&c<a.to)return o(c,s);if(c=s?a.from:l(a.to,-1),i.begin<=c&&c<i.end)return o(c,s)}},g=p(o+i,i,u);if(g)return g;var m=i>0?u.end:l(u.begin,-1);return null==m||i>0&&m==e.text.length||!(g=p(i>0?0:r.length-1,i,c(m)))?null:g}function Mt(t,e){return t._handlers&&t._handlers[e]||Da}function Lt(t,e,n){if(t.removeEventListener)t.removeEventListener(e,n,!1);else if(t.detachEvent)t.detachEvent("on"+e,n);else{var i=t._handlers,r=i&&i[e];if(r){var o=d(r,n);o>-1&&(i[e]=r.slice(0,o).concat(r.slice(o+1)))}}}function Et(t,e){var n=Mt(t,e);if(n.length)for(var i=Array.prototype.slice.call(arguments,2),r=0;r<n.length;++r)n[r].apply(null,i)}function Pt(t,e,n){return"string"==typeof e&&(e={type:e,preventDefault:function(){this.defaultPrevented=!0}}),Et(t,n||e.type,t,e),jt(e)||e.codemirrorIgnore}function Nt(t){var e=t._handlers&&t._handlers.cursorActivity;if(e)for(var n=t.curOp.cursorActivityHandlers||(t.curOp.cursorActivityHandlers=[]),i=0;i<e.length;++i)d(n,e[i])==-1&&n.push(e[i])}function Ot(t,e){return Mt(t,e).length>0}function Rt(t){t.prototype.on=function(t,e){Ia(this,t,e)},t.prototype.off=function(t,e){Lt(this,t,e)}}function Dt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function It(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function jt(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function Vt(t){Dt(t),It(t)}function Ht(t){return t.target||t.srcElement}function Ft(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),ha&&t.ctrlKey&&1==e&&(e=3),e}function zt(t){if(null==_a){var e=i("span","​");n(t,i("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(_a=e.offsetWidth<=1&&e.offsetHeight>2&&!(Jo&&ta<8))}var r=_a?i("span","​"):i("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function qt(t){if(null!=wa)return wa;var i=n(t,document.createTextNode("AخA")),r=ga(i,0,1).getBoundingClientRect(),o=ga(i,1,2).getBoundingClientRect();return e(t),!(!r||r.left==r.right)&&(wa=o.right-r.right<3)}function Gt(t){if(null!=za)return za;var e=n(t,i("span","x")),r=e.getBoundingClientRect(),o=ga(e,0,1).getBoundingClientRect();return za=Math.abs(r.left-o.left)>1}function Bt(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),qa[t]=e}function $t(t,e){Ga[t]=e}function Wt(t){if("string"==typeof t&&Ga.hasOwnProperty(t))t=Ga[t];else if(t&&"string"==typeof t.name&&Ga.hasOwnProperty(t.name)){var e=Ga[t.name];"string"==typeof e&&(e={name:e}),t=x(e,t),t.name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return Wt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return Wt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function Ut(t,e){e=Wt(e);var n=qa[e.name];if(!n)return Ut(t,"text/plain");var i=n(t,e);if(Ba.hasOwnProperty(e.name)){var r=Ba[e.name];for(var o in r)r.hasOwnProperty(o)&&(i.hasOwnProperty(o)&&(i["_"+o]=i[o]),i[o]=r[o])}if(i.name=e.name,e.helperType&&(i.helperType=e.helperType),e.modeProps)for(var a in e.modeProps)i[a]=e.modeProps[a];return i}function Xt(t,e){var n=Ba.hasOwnProperty(t)?Ba[t]:Ba[t]={};u(e,n)}function Yt(t,e){if(e===!0)return e;if(t.copyState)return t.copyState(e);var n={};for(var i in e){var r=e[i];r instanceof Array&&(r=r.concat([])),n[i]=r}return n}function Qt(t,e){for(var n;t.innerMode&&(n=t.innerMode(e),n&&n.mode!=t);)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Zt(t,e,n){return!t.startState||t.startState(e,n)}function Kt(t,e,n,i){var r=[t.state.modeGen],o={};ae(t,e.text,t.doc.mode,n,function(t,e){return r.push(t,e)},o,i);for(var a=function(n){var i=t.state.overlays[n],a=1,s=0;ae(t,e.text,i.mode,!0,function(t,e){for(var n=a;s<t;){var o=r[a];o>t&&r.splice(a,1,t,r[a+1],o),a+=2,s=Math.min(t,o)}if(e)if(i.opaque)r.splice(n,a-n,t,"overlay "+e),a=n+2;else for(;n<a;n+=2){var l=r[n+1];r[n+1]=(l?l+" ":"")+"overlay "+e}},o)},s=0;s<t.state.overlays.length;++s)a(s);return{styles:r,classes:o.bgClass||o.textClass?o:null}}function Jt(t,e,n){if(!e.styles||e.styles[0]!=t.state.modeGen){var i=te(t,P(e)),r=Kt(t,e,e.text.length>t.options.maxHighlightLength?Yt(t.doc.mode,i):i);e.stateAfter=i,e.styles=r.styles,r.classes?e.styleClasses=r.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.frontier&&t.doc.frontier++}return e.styles}function te(t,e,n){var i=t.doc,r=t.display;if(!i.mode.startState)return!0;var o=se(t,e,n),a=o>i.first&&A(i,o-1).stateAfter;return a=a?Yt(i.mode,a):Zt(i.mode),i.iter(o,e,function(n){ee(t,n.text,a);var s=o==e-1||o%5==0||o>=r.viewFrom&&o<r.viewTo;n.stateAfter=s?Yt(i.mode,a):null,++o}),n&&(i.frontier=o),a}function ee(t,e,n,i){var r=t.doc.mode,o=new $a(e,t.options.tabSize);for(o.start=o.pos=i||0,""==e&&ne(r,n);!o.eol();)ie(r,o,n),o.start=o.pos}function ne(t,e){if(t.blankLine)return t.blankLine(e);if(t.innerMode){var n=Qt(t,e);return n.mode.blankLine?n.mode.blankLine(n.state):void 0}}function ie(t,e,n,i){for(var r=0;r<10;r++){i&&(i[0]=Qt(t,n).mode);var o=t.token(e,n);if(e.pos>e.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}function re(t,e,n,i){var r,o=function(t){return{start:h.start,end:h.pos,string:h.current(),type:r||null,state:t?Yt(a.mode,u):u}},a=t.doc,s=a.mode;e=q(a,e);var l,c=A(a,e.line),u=te(t,e.line,n),h=new $a(c.text,t.options.tabSize);for(i&&(l=[]);(i||h.pos<e.ch)&&!h.eol();)h.start=h.pos,r=ie(s,h,u),i&&l.push(o(!0));return i?l:o()}function oe(t,e){if(t)for(;;){var n=t.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;t=t.slice(0,n.index)+t.slice(n.index+n[0].length);var i=n[1]?"bgClass":"textClass";null==e[i]?e[i]=n[2]:new RegExp("(?:^|s)"+n[2]+"(?:$|s)").test(e[i])||(e[i]+=" "+n[2])}return t}function ae(t,e,n,i,r,o,a){var s=n.flattenSpans;null==s&&(s=t.options.flattenSpans);var l,c=0,u=null,h=new $a(e,t.options.tabSize),d=t.options.addModeClass&&[null];for(""==e&&oe(ne(n,i),o);!h.eol();){if(h.pos>t.options.maxHighlightLength?(s=!1,a&&ee(t,e,i,h.pos),h.pos=e.length,l=null):l=oe(ie(n,h,i,d),o),d){var f=d[0].name;f&&(l="m-"+(l?f+" "+l:f))}if(!s||u!=l){for(;c<h.start;)c=Math.min(h.start,c+5e3),r(c,u);u=l}h.start=h.pos}for(;c<h.pos;){var p=Math.min(h.pos,c+5e3);r(p,u),c=p}}function se(t,e,n){for(var i,r,o=t.doc,a=n?-1:e-(t.doc.mode.innerMode?1e3:100),s=e;s>a;--s){if(s<=o.first)return o.first;var l=A(o,s-1);if(l.stateAfter&&(!n||s<=o.frontier))return s;var c=h(l.text,null,t.options.tabSize);(null==r||i>c)&&(r=s-1,i=c)}return r}function le(t,e,n,i){t.text=e,t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null),null!=t.order&&(t.order=null),nt(t),it(t,n);var r=i?i(t):1;r!=t.height&&E(t,r)}function ce(t){t.parent=null,nt(t)}function ue(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?Ya:Xa;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function he(t,e){var n=r("span",null,null,ea?"padding-right: .1px":null),i={pre:r("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:(Jo||ea)&&t.getOption("lineWrapping")};e.measure={};for(var o=0;o<=(e.rest?e.rest.length:0);o++){var a=o?e.rest[o-1]:e.line,s=void 0;i.pos=0,i.addToken=fe,qt(t.display.measure)&&(s=St(a,t.doc.direction))&&(i.addToken=ge(i.addToken,s)),i.map=[];var c=e!=t.display.externalMeasured&&P(a);ve(a,i,Jt(t,a,c)),a.styleClasses&&(a.styleClasses.bgClass&&(i.bgClass=l(a.styleClasses.bgClass,i.bgClass||"")),a.styleClasses.textClass&&(i.textClass=l(a.styleClasses.textClass,i.textClass||""))),0==i.map.length&&i.map.push(0,0,i.content.appendChild(zt(t.display.measure))),0==o?(e.measure.map=i.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(i.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(ea){var u=i.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(i.content.className="cm-tab-wrap-hack")}return Et(t,"renderLine",t,e.line,i.pre),i.pre.className&&(i.textClass=l(i.pre.className,i.textClass||"")),i}function de(t){var e=i("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function fe(t,e,n,r,o,a,s){if(e){var l,c=t.splitSpaces?pe(e,t.trailingSpace):e,u=t.cm.state.specialChars,h=!1;if(u.test(e)){l=document.createDocumentFragment();for(var d=0;;){u.lastIndex=d;var f=u.exec(e),g=f?f.index-d:e.length-d;if(g){var m=document.createTextNode(c.slice(d,d+g));Jo&&ta<9?l.appendChild(i("span",[m])):l.appendChild(m),t.map.push(t.pos,t.pos+g,m),t.col+=g,t.pos+=g}if(!f)break;d+=g+1;var v=void 0;if("\t"==f[0]){var y=t.cm.options.tabSize,x=y-t.col%y;v=l.appendChild(i("span",p(x),"cm-tab")),v.setAttribute("role","presentation"),v.setAttribute("cm-text","\t"),t.col+=x}else"\r"==f[0]||"\n"==f[0]?(v=l.appendChild(i("span","\r"==f[0]?"␍":"␤","cm-invalidchar")),v.setAttribute("cm-text",f[0]),t.col+=1):(v=t.cm.options.specialCharPlaceholder(f[0]),v.setAttribute("cm-text",f[0]),Jo&&ta<9?l.appendChild(i("span",[v])):l.appendChild(v),t.col+=1);t.map.push(t.pos,t.pos+1,v),t.pos++}}else t.col+=e.length,l=document.createTextNode(c),t.map.push(t.pos,t.pos+e.length,l),Jo&&ta<9&&(h=!0),t.pos+=e.length;if(t.trailingSpace=32==c.charCodeAt(e.length-1),n||r||o||h||s){var b=n||"";r&&(b+=r),o&&(b+=o);var _=i("span",[l],b,s);return a&&(_.title=a),t.content.appendChild(_)}t.content.appendChild(l)}}function pe(t,e){if(t.length>1&&!/  /.test(t))return t;for(var n=e,i="",r=0;r<t.length;r++){var o=t.charAt(r);" "!=o||!n||r!=t.length-1&&32!=t.charCodeAt(r+1)||(o=" "),i+=o,n=" "==o}return i}function ge(t,e){return function(n,i,r,o,a,s,l){r=r?r+" cm-force-border":"cm-force-border";for(var c=n.pos,u=c+i.length;;){for(var h=void 0,d=0;d<e.length&&(h=e[d],!(h.to>c&&h.from<=c));d++);if(h.to>=u)return t(n,i,r,o,a,s,l);t(n,i.slice(0,h.to-c),r,o,null,s,l),o=null,i=i.slice(h.to-c),c=h.to}}}function me(t,e,n,i){var r=!i&&n.widgetNode;r&&t.map.push(t.pos,t.pos+e,r),!i&&t.cm.display.input.needsContentAttribute&&(r||(r=t.content.appendChild(document.createElement("span"))),r.setAttribute("cm-marker",n.id)),r&&(t.cm.display.input.setUneditable(r),t.content.appendChild(r)),t.pos+=e,t.trailingSpace=!1}function ve(t,e,n){var i=t.markedSpans,r=t.text,o=0;if(i)for(var a,s,l,c,u,h,d,f=r.length,p=0,g=1,m="",v=0;;){if(v==p){l=c=u=h=s="",d=null,v=1/0;for(var y=[],x=void 0,b=0;b<i.length;++b){var _=i[b],w=_.marker;"bookmark"==w.type&&_.from==p&&w.widgetNode?y.push(w):_.from<=p&&(null==_.to||_.to>p||w.collapsed&&_.to==p&&_.from==p)?(null!=_.to&&_.to!=p&&v>_.to&&(v=_.to,c=""),w.className&&(l+=" "+w.className),w.css&&(s=(s?s+";":"")+w.css),w.startStyle&&_.from==p&&(u+=" "+w.startStyle),w.endStyle&&_.to==v&&(x||(x=[])).push(w.endStyle,_.to),w.title&&!h&&(h=w.title),w.collapsed&&(!d||at(d.marker,w)<0)&&(d=_)):_.from>p&&v>_.from&&(v=_.from)}if(x)for(var S=0;S<x.length;S+=2)x[S+1]==v&&(c+=" "+x[S]);if(!d||d.from==p)for(var C=0;C<y.length;++C)me(e,0,y[C]);if(d&&(d.from||0)==p){if(me(e,(null==d.to?f+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(p>=f)break;for(var T=Math.min(f,v);;){if(m){var k=p+m.length;if(!d){var A=k>T?m.slice(0,T-p):m;e.addToken(e,A,a?a+l:l,u,p+A.length==v?c:"",h,s)}if(k>=T){m=m.slice(T-p),p=T;break}p=k,u=""}m=r.slice(o,o=n[g++]),a=ue(n[g++],e.cm.options)}}else for(var M=1;M<n.length;M+=2)e.addToken(e,r.slice(o,o=n[M]),ue(n[M+1],e.cm.options))}function ye(t,e,n){this.line=e,this.rest=ft(e),this.size=this.rest?P(g(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mt(t,e)}function xe(t,e,n){for(var i,r=[],o=e;o<n;o=i){var a=new ye(t.doc,A(t.doc,o),o);i=o+a.size,r.push(a)}return r}function be(t){Qa?Qa.ops.push(t):t.ownsGroup=Qa={ops:[t],delayedCallbacks:[]}}function _e(t){var e=t.delayedCallbacks,n=0;do{for(;n<e.length;n++)e[n].call(null);for(var i=0;i<t.ops.length;i++){var r=t.ops[i];if(r.cursorActivityHandlers)for(;r.cursorActivityCalled<r.cursorActivityHandlers.length;)r.cursorActivityHandlers[r.cursorActivityCalled++].call(null,r.cm)}}while(n<e.length)}function we(t,e){var n=t.ownsGroup;if(n)try{_e(n)}finally{Qa=null,e(n)}}function Se(t,e){var n=Mt(t,e);if(n.length){var i,r=Array.prototype.slice.call(arguments,2);Qa?i=Qa.delayedCallbacks:Za?i=Za:(i=Za=[],setTimeout(Ce,0));for(var o=function(t){i.push(function(){return n[t].apply(null,r)})},a=0;a<n.length;++a)o(a)}}function Ce(){var t=Za;Za=null;for(var e=0;e<t.length;++e)t[e]()}function Te(t,e,n,i){for(var r=0;r<e.changes.length;r++){var o=e.changes[r];"text"==o?Le(t,e):"gutter"==o?Pe(t,e,n,i):"class"==o?Ee(t,e):"widget"==o&&Ne(t,e,i)}e.changes=null}function ke(t){return t.node==t.text&&(t.node=i("div",null,null,"position: relative"),t.text.parentNode&&t.text.parentNode.replaceChild(t.node,t.text),t.node.appendChild(t.text),Jo&&ta<8&&(t.node.style.zIndex=2)),t.node}function Ae(t,e){var n=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(n&&(n+=" CodeMirror-linebackground"),e.background)n?e.background.className=n:(e.background.parentNode.removeChild(e.background),e.background=null);else if(n){var r=ke(e);e.background=r.insertBefore(i("div",null,n),r.firstChild),t.display.input.setUneditable(e.background)}}function Me(t,e){var n=t.display.externalMeasured;return n&&n.line==e.line?(t.display.externalMeasured=null,e.measure=n.measure,n.built):he(t,e)}function Le(t,e){var n=e.text.className,i=Me(t,e);e.text==e.node&&(e.node=i.pre),e.text.parentNode.replaceChild(i.pre,e.text),e.text=i.pre,i.bgClass!=e.bgClass||i.textClass!=e.textClass?(e.bgClass=i.bgClass,e.textClass=i.textClass,Ee(t,e)):n&&(e.text.className=n)}function Ee(t,e){Ae(t,e),e.line.wrapClass?ke(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var n=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=n||""}function Pe(t,e,n,r){if(e.gutter&&(e.node.removeChild(e.gutter),e.gutter=null),e.gutterBackground&&(e.node.removeChild(e.gutterBackground),e.gutterBackground=null),e.line.gutterClass){var o=ke(e);e.gutterBackground=i("div",null,"CodeMirror-gutter-background "+e.line.gutterClass,"left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.display.input.setUneditable(e.gutterBackground),o.insertBefore(e.gutterBackground,e.text)}var a=e.line.gutterMarkers;if(t.options.lineNumbers||a){var s=ke(e),l=e.gutter=i("div",null,"CodeMirror-gutter-wrapper","left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(t.display.input.setUneditable(l),s.insertBefore(l,e.text),e.line.gutterClass&&(l.className+=" "+e.line.gutterClass),!t.options.lineNumbers||a&&a["CodeMirror-linenumbers"]||(e.lineNumber=l.appendChild(i("div",R(t.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+t.display.lineNumInnerWidth+"px"))),a)for(var c=0;c<t.options.gutters.length;++c){var u=t.options.gutters[c],h=a.hasOwnProperty(u)&&a[u];h&&l.appendChild(i("div",[h],"CodeMirror-gutter-elt","left: "+r.gutterLeft[u]+"px; width: "+r.gutterWidth[u]+"px"))}}}function Ne(t,e,n){e.alignable&&(e.alignable=null);for(var i=e.node.firstChild,r=void 0;i;i=r)r=i.nextSibling,"CodeMirror-linewidget"==i.className&&e.node.removeChild(i);Re(t,e,n)}function Oe(t,e,n,i){var r=Me(t,e);return e.text=e.node=r.pre,r.bgClass&&(e.bgClass=r.bgClass),r.textClass&&(e.textClass=r.textClass),Ee(t,e),Pe(t,e,n,i),Re(t,e,i),e.node}function Re(t,e,n){if(De(t,e.line,e,n,!0),e.rest)for(var i=0;i<e.rest.length;i++)De(t,e.rest[i],e,n,!1)}function De(t,e,n,r,o){if(e.widgets)for(var a=ke(n),s=0,l=e.widgets;s<l.length;++s){var c=l[s],u=i("div",[c.node],"CodeMirror-linewidget");c.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),Ie(c,u,n,r),t.display.input.setUneditable(u),o&&c.above?a.insertBefore(u,n.gutter||n.text):a.appendChild(u),Se(c,"redraw")}}function Ie(t,e,n,i){if(t.noHScroll){(n.alignable||(n.alignable=[])).push(e);var r=i.wrapperWidth;e.style.left=i.fixedPos+"px",t.coverGutter||(r-=i.gutterTotalWidth,e.style.paddingLeft=i.gutterTotalWidth+"px"),e.style.width=r+"px"}t.coverGutter&&(e.style.zIndex=5,e.style.position="relative",t.noHScroll||(e.style.marginLeft=-i.gutterTotalWidth+"px"))}function je(t){if(null!=t.height)return t.height;var e=t.doc.cm;if(!e)return 0;if(!o(document.body,t.node)){var r="position: relative;";t.coverGutter&&(r+="margin-left: -"+e.display.gutters.offsetWidth+"px;"),t.noHScroll&&(r+="width: "+e.display.wrapper.clientWidth+"px;"),n(e.display.measure,i("div",[t.node],null,r))}return t.height=t.node.parentNode.offsetHeight}function Ve(t,e){for(var n=Ht(e);n!=t.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==t.sizer&&n!=t.mover)return!0}function He(t){return t.lineSpace.offsetTop}function Fe(t){return t.mover.offsetHeight-t.lineSpace.offsetHeight}function ze(t){if(t.cachedPaddingH)return t.cachedPaddingH;var e=n(t.measure,i("pre","x")),r=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,o={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(o.left)||isNaN(o.right)||(t.cachedPaddingH=o),o}function qe(t){return Sa-t.display.nativeBarWidth}function Ge(t){return t.display.scroller.clientWidth-qe(t)-t.display.barWidth}function Be(t){return t.display.scroller.clientHeight-qe(t)-t.display.barHeight}function $e(t,e,n){var i=t.options.lineWrapping,r=i&&Ge(t);if(!e.measure.heights||i&&e.measure.width!=r){var o=e.measure.heights=[];if(i){e.measure.width=r;for(var a=e.text.firstChild.getClientRects(),s=0;s<a.length-1;s++){var l=a[s],c=a[s+1];Math.abs(l.bottom-c.bottom)>2&&o.push((l.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function We(t,e,n){if(t.line==e)return{map:t.measure.map,cache:t.measure.cache};for(var i=0;i<t.rest.length;i++)if(t.rest[i]==e)return{map:t.measure.maps[i],cache:t.measure.caches[i]};for(var r=0;r<t.rest.length;r++)if(P(t.rest[r])>n)return{map:t.measure.maps[r],cache:t.measure.caches[r],before:!0}}function Ue(t,e){e=ht(e);var i=P(e),r=t.display.externalMeasured=new ye(t.doc,e,i);r.lineN=i;var o=r.built=he(t,r);return r.text=o.pre,n(t.display.lineMeasure,o.pre),r}function Xe(t,e,n,i){return Ze(t,Qe(t,e),n,i)}function Ye(t,e){if(e>=t.display.viewFrom&&e<t.display.viewTo)return t.display.view[Tn(t,e)];var n=t.display.externalMeasured;return n&&e>=n.lineN&&e<n.lineN+n.size?n:void 0}function Qe(t,e){var n=P(e),i=Ye(t,n);i&&!i.text?i=null:i&&i.changes&&(Te(t,i,n,bn(t)),t.curOp.forceUpdate=!0),i||(i=Ue(t,e));var r=We(i,e,n);return{line:e,view:i,rect:null,map:r.map,cache:r.cache,before:r.before,hasHeights:!1}}function Ze(t,e,n,i,r){e.before&&(n=-1);var o,a=n+(i||"");return e.cache.hasOwnProperty(a)?o=e.cache[a]:(e.rect||(e.rect=e.view.text.getBoundingClientRect()),e.hasHeights||($e(t,e.view,e.rect),e.hasHeights=!0),o=tn(t,e,n,i),o.bogus||(e.cache[a]=o)),{left:o.left,right:o.right,top:r?o.rtop:o.top,bottom:r?o.rbottom:o.bottom}}function Ke(t,e,n){for(var i,r,o,a,s,l,c=0;c<t.length;c+=3)if(s=t[c],l=t[c+1],e<s?(r=0,o=1,a="left"):e<l?(r=e-s,o=r+1):(c==t.length-3||e==l&&t[c+3]>e)&&(o=l-s,r=o-1,e>=l&&(a="right")),null!=r){if(i=t[c+2],s==l&&n==(i.insertLeft?"left":"right")&&(a=n),"left"==n&&0==r)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)i=t[(c-=3)+2],a="left";if("right"==n&&r==l-s)for(;c<t.length-3&&t[c+3]==t[c+4]&&!t[c+5].insertLeft;)i=t[(c+=3)+2],a="right";break}return{node:i,start:r,end:o,collapse:a,coverStart:s,coverEnd:l}}function Je(t,e){var n=Ka;if("left"==e)for(var i=0;i<t.length&&(n=t[i]).left==n.right;i++);else for(var r=t.length-1;r>=0&&(n=t[r]).left==n.right;r--);return n}function tn(t,e,n,i){var r,o=Ke(e.map,n,i),a=o.node,s=o.start,l=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;u<4;u++){for(;s&&S(e.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+l<o.coverEnd&&S(e.line.text.charAt(o.coverStart+l));)++l;if(r=Jo&&ta<9&&0==s&&l==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Je(ga(a,s,l).getClientRects(),i),r.left||r.right||0==s)break;l=s,s-=1,c="right"}Jo&&ta<11&&(r=en(t.display.measure,r))}else{s>0&&(c=i="right");var h;r=t.options.lineWrapping&&(h=a.getClientRects()).length>1?h["right"==i?h.length-1:0]:a.getBoundingClientRect()}if(Jo&&ta<9&&!s&&(!r||!r.left&&!r.right)){var d=a.parentNode.getClientRects()[0];r=d?{left:d.left,right:d.left+xn(t.display),top:d.top,bottom:d.bottom}:Ka}for(var f=r.top-e.rect.top,p=r.bottom-e.rect.top,g=(f+p)/2,m=e.view.measure.heights,v=0;v<m.length-1&&!(g<m[v]);v++);var y=v?m[v-1]:0,x=m[v],b={left:("right"==c?r.right:r.left)-e.rect.left,right:("left"==c?r.left:r.right)-e.rect.left,top:y,bottom:x};return r.left||r.right||(b.bogus=!0),t.options.singleCursorHeightPerLine||(b.rtop=f,b.rbottom=p),b}function en(t,e){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!Gt(t))return e;var n=screen.logicalXDPI/screen.deviceXDPI,i=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*n,right:e.right*n,top:e.top*i,bottom:e.bottom*i}}function nn(t){if(t.measure&&(t.measure.cache={},t.measure.heights=null,t.rest))for(var e=0;e<t.rest.length;e++)t.measure.caches[e]={}}function rn(t){t.display.externalMeasure=null,e(t.display.lineMeasure);for(var n=0;n<t.display.view.length;n++)nn(t.display.view[n])}function on(t){rn(t),t.display.cachedCharWidth=t.display.cachedTextHeight=t.display.cachedPaddingH=null,t.options.lineWrapping||(t.display.maxLineChanged=!0),t.display.lineNumChars=null}function an(){return ia&&ca?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function sn(){return ia&&ca?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function ln(t,e,n,i,r){if(!r&&e.widgets)for(var o=0;o<e.widgets.length;++o)if(e.widgets[o].above){var a=je(e.widgets[o]);n.top+=a,n.bottom+=a}if("line"==i)return n;i||(i="local");var s=yt(e);if("local"==i?s+=He(t.display):s-=t.display.viewOffset,"page"==i||"window"==i){var l=t.display.lineSpace.getBoundingClientRect();s+=l.top+("window"==i?0:sn());var c=l.left+("window"==i?0:an());n.left+=c,n.right+=c}return n.top+=s,n.bottom+=s,n}function cn(t,e,n){if("div"==n)return e;var i=e.left,r=e.top;if("page"==n)i-=an(),r-=sn();else if("local"==n||!n){var o=t.display.sizer.getBoundingClientRect();i+=o.left,r+=o.top}var a=t.display.lineSpace.getBoundingClientRect();return{left:i-a.left,top:r-a.top}}function un(t,e,n,i,r){return i||(i=A(t.doc,e.line)),ln(t,i,Xe(t,i,e.ch,r),n)}function hn(t,e,n,i,r,o){function a(e,a){var s=Ze(t,r,e,a?"right":"left",o);return a?s.left=s.right:s.right=s.left,ln(t,i,s,n)}function s(t,e,n){var i=l[e],r=i.level%2!=0;return a(n?t-1:t,r!=n)}i=i||A(t.doc,e.line),r||(r=Qe(t,i));var l=St(i,t.doc.direction),c=e.ch,u=e.sticky;if(c>=i.text.length?(c=i.text.length,u="before"):c<=0&&(c=0,u="after"),!l)return a("before"==u?c-1:c,"before"==u);var h=wt(l,c,u),d=Oa,f=s(c,h,"before"==u);return null!=d&&(f.other=s(c,d,"before"!=u)),f}function dn(t,e){var n=0;e=q(t.doc,e),t.options.lineWrapping||(n=xn(t.display)*e.ch);var i=A(t.doc,e.line),r=yt(i)+He(t.display);return{left:n,right:n,top:r,bottom:r+i.height}}function fn(t,e,n,i,r){var o=D(t,e,n);return o.xRel=r,i&&(o.outside=!0),o}function pn(t,e,n){var i=t.doc;if(n+=t.display.viewOffset,n<0)return fn(i.first,0,null,!0,-1);var r=N(i,n),o=i.first+i.size-1;if(r>o)return fn(i.first+i.size-1,A(i,o).text.length,null,!0,1);e<0&&(e=0);for(var a=A(i,r);;){var s=vn(t,a,r,e,n),l=ct(a),c=l&&l.find(0,!0);if(!l||!(s.ch>c.from.ch||s.ch==c.from.ch&&s.xRel>0))return s;r=P(a=c.to.line)}}function gn(t,e,n,i){var r=function(i){return ln(t,e,Ze(t,n,i),"line")},o=e.text.length,a=T(function(t){return r(t-1).bottom<=i},o,0);return o=T(function(t){return r(t).top>i},a,o),{begin:a,end:o}}function mn(t,e,n,i){var r=ln(t,e,Ze(t,n,i),"line").top;return gn(t,e,n,r)}function vn(t,e,n,i,r){r-=yt(e);var o,a=0,s=e.text.length,l=Qe(t,e),c=St(e,t.doc.direction);if(c){if(t.options.lineWrapping){var u;u=gn(t,e,l,r),a=u.begin,s=u.end,u}o=new D(n,a);var h,d,f=hn(t,o,"line",e,l).left,p=f<i?1:-1,g=f-i;do{if(h=g,d=o,o=At(t,e,o,p),null==o||o.ch<a||s<=("before"==o.sticky?o.ch-1:o.ch)){o=d;break}g=hn(t,o,"line",e,l).left-i}while(p<0!=g<0&&Math.abs(g)<=Math.abs(h));if(Math.abs(g)>Math.abs(h)){if(g<0==h<0)throw new Error("Broke out of infinite loop in coordsCharInner");o=d}}else{var m=T(function(n){var o=ln(t,e,Ze(t,l,n),"line");return o.top>r?(s=Math.min(n,s),!0):!(o.bottom<=r)&&(o.left>i||!(o.right<i)&&i-o.left<o.right-i)},a,s);m=C(e.text,m,1),o=new D(n,m,m==s?"before":"after")}var v=hn(t,o,"line",e,l);return(r<v.top||v.bottom<r)&&(o.outside=!0),o.xRel=i<v.left?-1:i>v.right?1:0,o}function yn(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==Ua){Ua=i("pre");for(var r=0;r<49;++r)Ua.appendChild(document.createTextNode("x")),Ua.appendChild(i("br"));Ua.appendChild(document.createTextNode("x"))}n(t.measure,Ua);var o=Ua.offsetHeight/50;return o>3&&(t.cachedTextHeight=o),e(t.measure),o||1}function xn(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=i("span","xxxxxxxxxx"),r=i("pre",[e]);n(t.measure,r);var o=e.getBoundingClientRect(),a=(o.right-o.left)/10;return a>2&&(t.cachedCharWidth=a),a||10}function bn(t){for(var e=t.display,n={},i={},r=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a)n[t.options.gutters[a]]=o.offsetLeft+o.clientLeft+r,i[t.options.gutters[a]]=o.clientWidth;return{fixedPos:_n(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:i,wrapperWidth:e.wrapper.clientWidth}}function _n(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function wn(t){var e=yn(t.display),n=t.options.lineWrapping,i=n&&Math.max(5,t.display.scroller.clientWidth/xn(t.display)-3);return function(r){if(mt(t.doc,r))return 0;var o=0;if(r.widgets)for(var a=0;a<r.widgets.length;a++)r.widgets[a].height&&(o+=r.widgets[a].height);return n?o+(Math.ceil(r.text.length/i)||1)*e:o+e}}function Sn(t){var e=t.doc,n=wn(t);e.iter(function(t){var e=n(t);e!=t.height&&E(t,e)})}function Cn(t,e,n,i){var r=t.display;if(!n&&"true"==Ht(e).getAttribute("cm-not-content"))return null;var o,a,s=r.lineSpace.getBoundingClientRect();try{o=e.clientX-s.left,a=e.clientY-s.top}catch(t){return null}var l,c=pn(t,o,a);if(i&&1==c.xRel&&(l=A(t.doc,c.line).text).length==c.ch){var u=h(l,l.length,t.options.tabSize)-l.length;c=D(c.line,Math.max(0,Math.round((o-ze(t.display).left)/xn(t.display))-u))}return c}function Tn(t,e){if(e>=t.display.viewTo)return null;if(e-=t.display.viewFrom,e<0)return null;for(var n=t.display.view,i=0;i<n.length;i++)if(e-=n[i].size,e<0)return i}function kn(t){t.display.input.showSelection(t.display.input.prepareSelection())}function An(t,e){for(var n=t.doc,i={},r=i.cursors=document.createDocumentFragment(),o=i.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(e!==!1||a!=n.sel.primIndex){var s=n.sel.ranges[a];if(!(s.from().line>=t.display.viewTo||s.to().line<t.display.viewFrom)){var l=s.empty();(l||t.options.showCursorWhenSelecting)&&Mn(t,s.head,r),l||Ln(t,s,o)}}return i}function Mn(t,e,n){var r=hn(t,e,"div",null,null,!t.options.singleCursorHeightPerLine),o=n.appendChild(i("div"," ","CodeMirror-cursor"));if(o.style.left=r.left+"px",o.style.top=r.top+"px",o.style.height=Math.max(0,r.bottom-r.top)*t.options.cursorHeight+"px",r.other){var a=n.appendChild(i("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function Ln(t,e,n){function r(t,e,n,r){e<0&&(e=0),e=Math.round(e),r=Math.round(r),l.appendChild(i("div",null,"CodeMirror-selected","position: absolute; left: "+t+"px;\n                             top: "+e+"px; width: "+(null==n?h-t:n)+"px;\n                             height: "+(r-e)+"px"));
-}function o(e,n,i){function o(n,i){return un(t,D(e,n),"div",c,i)}var a,l,c=A(s,e),d=c.text.length;return _t(St(c,s.direction),n||0,null==i?d:i,function(t,e,s){var c,f,p,g=o(t,"left");if(t==e)c=g,f=p=g.left;else{if(c=o(e-1,"right"),"rtl"==s){var m=g;g=c,c=m}f=g.left,p=c.right}null==n&&0==t&&(f=u),c.top-g.top>3&&(r(f,g.top,null,g.bottom),f=u,g.bottom<c.top&&r(f,g.bottom,null,c.top)),null==i&&e==d&&(p=h),(!a||g.top<a.top||g.top==a.top&&g.left<a.left)&&(a=g),(!l||c.bottom>l.bottom||c.bottom==l.bottom&&c.right>l.right)&&(l=c),f<u+1&&(f=u),r(f,c.top,p-f,c.bottom)}),{start:a,end:l}}var a=t.display,s=t.doc,l=document.createDocumentFragment(),c=ze(t.display),u=c.left,h=Math.max(a.sizerWidth,Ge(t)-a.sizer.offsetLeft)-c.right,d=e.from(),f=e.to();if(d.line==f.line)o(d.line,d.ch,f.ch);else{var p=A(s,d.line),g=A(s,f.line),m=ht(p)==ht(g),v=o(d.line,d.ch,m?p.text.length+1:null).end,y=o(f.line,m?0:null,f.ch).start;m&&(v.top<y.top-2?(r(v.right,v.top,null,v.bottom),r(u,y.top,y.left,y.bottom)):r(v.right,v.top,y.left-v.right,v.bottom)),v.bottom<y.top&&r(u,v.bottom,null,y.top)}n.appendChild(l)}function En(t){if(t.state.focused){var e=t.display;clearInterval(e.blinker);var n=!0;e.cursorDiv.style.visibility="",t.options.cursorBlinkRate>0?e.blinker=setInterval(function(){return e.cursorDiv.style.visibility=(n=!n)?"":"hidden"},t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function Pn(t){t.state.focused||(t.display.input.focus(),On(t))}function Nn(t){t.state.delayingBlurEvent=!0,setTimeout(function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,Rn(t))},100)}function On(t,e){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(Et(t,"focus",t,e),t.state.focused=!0,s(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),ea&&setTimeout(function(){return t.display.input.reset(!0)},20)),t.display.input.receivedFocus()),En(t))}function Rn(t,e){t.state.delayingBlurEvent||(t.state.focused&&(Et(t,"blur",t,e),t.state.focused=!1,ya(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout(function(){t.state.focused||(t.display.shift=!1)},150))}function Dn(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var i=_n(e)-e.scroller.scrollLeft+t.doc.scrollLeft,r=e.gutters.offsetWidth,o=i+"px",a=0;a<n.length;a++)if(!n[a].hidden){t.options.fixedGutter&&(n[a].gutter&&(n[a].gutter.style.left=o),n[a].gutterBackground&&(n[a].gutterBackground.style.left=o));var s=n[a].alignable;if(s)for(var l=0;l<s.length;l++)s[l].style.left=o}t.options.fixedGutter&&(e.gutters.style.left=i+r+"px")}}function In(t){if(!t.options.lineNumbers)return!1;var e=t.doc,n=R(t.options,e.first+e.size-1),r=t.display;if(n.length!=r.lineNumChars){var o=r.measure.appendChild(i("div",[i("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),a=o.firstChild.offsetWidth,s=o.offsetWidth-a;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(a,r.lineGutter.offsetWidth-s)+1,r.lineNumWidth=r.lineNumInnerWidth+s,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",Ai(t),!0}return!1}function jn(t){for(var e=t.display,n=e.lineDiv.offsetTop,i=0;i<e.view.length;i++){var r=e.view[i],o=void 0;if(!r.hidden){if(Jo&&ta<8){var a=r.node.offsetTop+r.node.offsetHeight;o=a-n,n=a}else{var s=r.node.getBoundingClientRect();o=s.bottom-s.top}var l=r.line.height-o;if(o<2&&(o=yn(e)),(l>.001||l<-.001)&&(E(r.line,o),Vn(r.line),r.rest))for(var c=0;c<r.rest.length;c++)Vn(r.rest[c])}}}function Vn(t){if(t.widgets)for(var e=0;e<t.widgets.length;++e)t.widgets[e].height=t.widgets[e].node.parentNode.offsetHeight}function Hn(t,e,n){var i=n&&null!=n.top?Math.max(0,n.top):t.scroller.scrollTop;i=Math.floor(i-He(t));var r=n&&null!=n.bottom?n.bottom:i+t.wrapper.clientHeight,o=N(e,i),a=N(e,r);if(n&&n.ensure){var s=n.ensure.from.line,l=n.ensure.to.line;s<o?(o=s,a=N(e,yt(A(e,s))+t.wrapper.clientHeight)):Math.min(l,e.lastLine())>=a&&(o=N(e,yt(A(e,l))-t.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Fn(t,e){Math.abs(t.doc.scrollTop-e)<2||(t.doc.scrollTop=e,Yo||Ti(t,{top:e}),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e),t.display.scrollbars.setScrollTop(e),Yo&&Ti(t),bi(t,100))}function zn(t,e,n){(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)||(e=Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth),t.doc.scrollLeft=e,Dn(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function qn(t){var e=t.wheelDeltaX,n=t.wheelDeltaY;return null==e&&t.detail&&t.axis==t.HORIZONTAL_AXIS&&(e=t.detail),null==n&&t.detail&&t.axis==t.VERTICAL_AXIS?n=t.detail:null==n&&(n=t.wheelDelta),{x:e,y:n}}function Gn(t){var e=qn(t);return e.x*=ts,e.y*=ts,e}function Bn(t,e){var n=qn(e),i=n.x,r=n.y,o=t.display,a=o.scroller,s=a.scrollWidth>a.clientWidth,l=a.scrollHeight>a.clientHeight;if(i&&s||r&&l){if(r&&ha&&ea)t:for(var c=e.target,u=o.view;c!=a;c=c.parentNode)for(var h=0;h<u.length;h++)if(u[h].node==c){t.display.currentWheelTarget=c;break t}if(i&&!Yo&&!ra&&null!=ts)return r&&l&&Fn(t,Math.max(0,Math.min(a.scrollTop+r*ts,a.scrollHeight-a.clientHeight))),zn(t,Math.max(0,Math.min(a.scrollLeft+i*ts,a.scrollWidth-a.clientWidth))),(!r||r&&l)&&Dt(e),void(o.wheelStartX=null);if(r&&null!=ts){var d=r*ts,f=t.doc.scrollTop,p=f+o.wrapper.clientHeight;d<0?f=Math.max(0,f+d-50):p=Math.min(t.doc.height,p+d+50),Ti(t,{top:f,bottom:p})}Ja<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=i,o.wheelDY=r,setTimeout(function(){if(null!=o.wheelStartX){var t=a.scrollLeft-o.wheelStartX,e=a.scrollTop-o.wheelStartY,n=e&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(ts=(ts*Ja+n)/(Ja+1),++Ja)}},200)):(o.wheelDX+=i,o.wheelDY+=r))}}function $n(t){var e=t.display,n=e.gutters.offsetWidth,i=Math.round(t.doc.height+Fe(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:i,scrollHeight:i+qe(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}function Wn(t,e){e||(e=$n(t));var n=t.display.barWidth,i=t.display.barHeight;Un(t,e);for(var r=0;r<4&&n!=t.display.barWidth||i!=t.display.barHeight;r++)n!=t.display.barWidth&&t.options.lineWrapping&&jn(t),Un(t,$n(t)),n=t.display.barWidth,i=t.display.barHeight}function Un(t,e){var n=t.display,i=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=i.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=i.bottom)+"px",n.heightForcer.style.borderBottom=i.bottom+"px solid transparent",i.right&&i.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=i.bottom+"px",n.scrollbarFiller.style.width=i.right+"px"):n.scrollbarFiller.style.display="",i.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=i.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}function Xn(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&ya(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new is[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),Ia(e,"mousedown",function(){t.state.focused&&setTimeout(function(){return t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?zn(t,e):Fn(t,e)},t),t.display.scrollbars.addClass&&s(t.display.wrapper,t.display.scrollbars.addClass)}function Yn(t,e){if(!Pt(t,"scrollCursorIntoView")){var n=t.display,r=n.sizer.getBoundingClientRect(),o=null;if(e.top+r.top<0?o=!0:e.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(o=!1),null!=o&&!sa){var a=i("div","​",null,"position: absolute;\n                         top: "+(e.top-n.viewOffset-He(t.display))+"px;\n                         height: "+(e.bottom-e.top+qe(t)+n.barHeight)+"px;\n                         left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(a),a.scrollIntoView(o),t.display.lineSpace.removeChild(a)}}}function Qn(t,e,n,i){null==i&&(i=0);for(var r,o=0;o<5;o++){var a=!1,s=hn(t,e),l=n&&n!=e?hn(t,n):s;r={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-i,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+i};var c=Kn(t,r),u=t.doc.scrollTop,h=t.doc.scrollLeft;if(null!=c.scrollTop&&(Fn(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(zn(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-h)>1&&(a=!0)),!a)break}return r}function Zn(t,e){var n=Kn(t,e);null!=n.scrollTop&&Fn(t,n.scrollTop),null!=n.scrollLeft&&zn(t,n.scrollLeft)}function Kn(t,e){var n=t.display,i=yn(t.display);e.top<0&&(e.top=0);var r=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=Be(t),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+Fe(n),l=e.top<i,c=e.bottom>s-i;if(e.top<r)a.scrollTop=l?0:e.top;else if(e.bottom>r+o){var u=Math.min(e.top,(c?s:e.bottom)-o);u!=r&&(a.scrollTop=u)}var h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft,d=Ge(t)-(t.options.fixedGutter?n.gutters.offsetWidth:0),f=e.right-e.left>d;return f&&(e.right=e.left+d),e.left<10?a.scrollLeft=0:e.left<h?a.scrollLeft=Math.max(0,e.left-(f?0:10)):e.right>d+h-3&&(a.scrollLeft=e.right+(f?0:10)-d),a}function Jn(t,e,n){null==e&&null==n||ei(t),null!=e&&(t.curOp.scrollLeft=(null==t.curOp.scrollLeft?t.doc.scrollLeft:t.curOp.scrollLeft)+e),null!=n&&(t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+n)}function ti(t){ei(t);var e=t.getCursor(),n=e,i=e;t.options.lineWrapping||(n=e.ch?D(e.line,e.ch-1):e,i=D(e.line,e.ch+1)),t.curOp.scrollToPos={from:n,to:i,margin:t.options.cursorScrollMargin}}function ei(t){var e=t.curOp.scrollToPos;if(e){t.curOp.scrollToPos=null;var n=dn(t,e.from),i=dn(t,e.to),r=Kn(t,{left:Math.min(n.left,i.left),top:Math.min(n.top,i.top)-e.margin,right:Math.max(n.right,i.right),bottom:Math.max(n.bottom,i.bottom)+e.margin});t.scrollTo(r.scrollLeft,r.scrollTop)}}function ni(t){t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++rs},be(t.curOp)}function ii(t){var e=t.curOp;we(e,function(t){for(var e=0;e<t.ops.length;e++)t.ops[e].cm.curOp=null;ri(t)})}function ri(t){for(var e=t.ops,n=0;n<e.length;n++)oi(e[n]);for(var i=0;i<e.length;i++)ai(e[i]);for(var r=0;r<e.length;r++)si(e[r]);for(var o=0;o<e.length;o++)li(e[o]);for(var a=0;a<e.length;a++)ci(e[a])}function oi(t){var e=t.cm,n=e.display;wi(e),t.updateMaxLine&&bt(e),t.mustUpdate=t.viewChanged||t.forceUpdate||null!=t.scrollTop||t.scrollToPos&&(t.scrollToPos.from.line<n.viewFrom||t.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new os(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function ai(t){t.updatedDisplay=t.mustUpdate&&Si(t.cm,t.update)}function si(t){var e=t.cm,n=e.display;t.updatedDisplay&&jn(e),t.barMeasure=$n(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=Xe(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+qe(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Ge(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection(t.focus))}function li(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft<e.doc.scrollLeft&&zn(e,Math.min(e.display.scroller.scrollLeft,t.maxScrollLeft),!0),e.display.maxLineChanged=!1);var n=t.focus&&t.focus==a()&&(!document.hasFocus||document.hasFocus());t.preparedSelection&&e.display.input.showSelection(t.preparedSelection,n),(t.updatedDisplay||t.startHeight!=e.doc.height)&&Wn(e,t.barMeasure),t.updatedDisplay&&Mi(e,t.barMeasure),t.selectionChanged&&En(e),e.state.focused&&t.updateInput&&e.display.input.reset(t.typing),n&&Pn(t.cm)}function ci(t){var e=t.cm,n=e.display,i=e.doc;if(t.updatedDisplay&&Ci(e,t.update),null==n.wheelStartX||null==t.scrollTop&&null==t.scrollLeft&&!t.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null==t.scrollTop||n.scroller.scrollTop==t.scrollTop&&!t.forceScroll||(i.scrollTop=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,t.scrollTop)),n.scrollbars.setScrollTop(i.scrollTop),n.scroller.scrollTop=i.scrollTop),null==t.scrollLeft||n.scroller.scrollLeft==t.scrollLeft&&!t.forceScroll||(i.scrollLeft=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,t.scrollLeft)),n.scrollbars.setScrollLeft(i.scrollLeft),n.scroller.scrollLeft=i.scrollLeft,Dn(e)),t.scrollToPos){var r=Qn(e,q(i,t.scrollToPos.from),q(i,t.scrollToPos.to),t.scrollToPos.margin);Yn(e,r)}var o=t.maybeHiddenMarkers,a=t.maybeUnhiddenMarkers;if(o)for(var s=0;s<o.length;++s)o[s].lines.length||Et(o[s],"hide");if(a)for(var l=0;l<a.length;++l)a[l].lines.length&&Et(a[l],"unhide");n.wrapper.offsetHeight&&(i.scrollTop=e.display.scroller.scrollTop),t.changeObjs&&Et(e,"changes",e,t.changeObjs),t.update&&t.update.finish()}function ui(t,e){if(t.curOp)return e();ni(t);try{return e()}finally{ii(t)}}function hi(t,e){return function(){if(t.curOp)return e.apply(t,arguments);ni(t);try{return e.apply(t,arguments)}finally{ii(t)}}}function di(t){return function(){if(this.curOp)return t.apply(this,arguments);ni(this);try{return t.apply(this,arguments)}finally{ii(this)}}}function fi(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);ni(e);try{return t.apply(this,arguments)}finally{ii(e)}}}function pi(t,e,n,i){null==e&&(e=t.doc.first),null==n&&(n=t.doc.first+t.doc.size),i||(i=0);var r=t.display;if(i&&n<r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>e)&&(r.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=r.viewTo)Na&&pt(t.doc,e)<r.viewTo&&mi(t);else if(n<=r.viewFrom)Na&&gt(t.doc,n+i)>r.viewFrom?mi(t):(r.viewFrom+=i,r.viewTo+=i);else if(e<=r.viewFrom&&n>=r.viewTo)mi(t);else if(e<=r.viewFrom){var o=vi(t,n,n+i,1);o?(r.view=r.view.slice(o.index),r.viewFrom=o.lineN,r.viewTo+=i):mi(t)}else if(n>=r.viewTo){var a=vi(t,e,e,-1);a?(r.view=r.view.slice(0,a.index),r.viewTo=a.lineN):mi(t)}else{var s=vi(t,e,e,-1),l=vi(t,n,n+i,1);s&&l?(r.view=r.view.slice(0,s.index).concat(xe(t,s.lineN,l.lineN)).concat(r.view.slice(l.index)),r.viewTo+=i):mi(t)}var c=r.externalMeasured;c&&(n<c.lineN?c.lineN+=i:e<c.lineN+c.size&&(r.externalMeasured=null))}function gi(t,e,n){t.curOp.viewChanged=!0;var i=t.display,r=t.display.externalMeasured;if(r&&e>=r.lineN&&e<r.lineN+r.size&&(i.externalMeasured=null),!(e<i.viewFrom||e>=i.viewTo)){var o=i.view[Tn(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);d(a,n)==-1&&a.push(n)}}}function mi(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function vi(t,e,n,i){var r,o=Tn(t,e),a=t.display.view;if(!Na||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,l=0;l<o;l++)s+=a[l].size;if(s!=e){if(i>0){if(o==a.length-1)return null;r=s+a[o].size-e,o++}else r=s-e;e+=r,n+=r}for(;pt(t.doc,n)!=n;){if(o==(i<0?0:a.length-1))return null;n+=i*a[o-(i<0?1:0)].size,o+=i}return{index:o,lineN:n}}function yi(t,e,n){var i=t.display,r=i.view;0==r.length||e>=i.viewTo||n<=i.viewFrom?(i.view=xe(t,e,n),i.viewFrom=e):(i.viewFrom>e?i.view=xe(t,e,i.viewFrom).concat(i.view):i.viewFrom<e&&(i.view=i.view.slice(Tn(t,e))),i.viewFrom=e,i.viewTo<n?i.view=i.view.concat(xe(t,i.viewTo,n)):i.viewTo>n&&(i.view=i.view.slice(0,Tn(t,n)))),i.viewTo=n}function xi(t){for(var e=t.display.view,n=0,i=0;i<e.length;i++){var r=e[i];r.hidden||r.node&&!r.changes||++n}return n}function bi(t,e){t.doc.mode.startState&&t.doc.frontier<t.display.viewTo&&t.state.highlight.set(e,c(_i,t))}function _i(t){var e=t.doc;if(e.frontier<e.first&&(e.frontier=e.first),!(e.frontier>=t.display.viewTo)){var n=+new Date+t.options.workTime,i=Yt(e.mode,te(t,e.frontier)),r=[];e.iter(e.frontier,Math.min(e.first+e.size,t.display.viewTo+500),function(o){if(e.frontier>=t.display.viewFrom){var a=o.styles,s=o.text.length>t.options.maxHighlightLength,l=Kt(t,o,s?Yt(e.mode,i):i,!0);o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var h=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),d=0;!h&&d<a.length;++d)h=a[d]!=o.styles[d];h&&r.push(e.frontier),o.stateAfter=s?i:Yt(e.mode,i)}else o.text.length<=t.options.maxHighlightLength&&ee(t,o.text,i),o.stateAfter=e.frontier%5==0?Yt(e.mode,i):null;if(++e.frontier,+new Date>n)return bi(t,t.options.workDelay),!0}),r.length&&ui(t,function(){for(var e=0;e<r.length;e++)gi(t,r[e],"text")})}}function wi(t){var e=t.display;!e.scrollbarsClipped&&e.scroller.offsetWidth&&(e.nativeBarWidth=e.scroller.offsetWidth-e.scroller.clientWidth,e.heightForcer.style.height=qe(t)+"px",e.sizer.style.marginBottom=-e.nativeBarWidth+"px",e.sizer.style.borderRightWidth=qe(t)+"px",e.scrollbarsClipped=!0)}function Si(t,n){var i=t.display,r=t.doc;if(n.editorIsHidden)return mi(t),!1;if(!n.force&&n.visible.from>=i.viewFrom&&n.visible.to<=i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&0==xi(t))return!1;In(t)&&(mi(t),n.dims=bn(t));var o=r.first+r.size,s=Math.max(n.visible.from-t.options.viewportMargin,r.first),l=Math.min(o,n.visible.to+t.options.viewportMargin);i.viewFrom<s&&s-i.viewFrom<20&&(s=Math.max(r.first,i.viewFrom)),i.viewTo>l&&i.viewTo-l<20&&(l=Math.min(o,i.viewTo)),Na&&(s=pt(t.doc,s),l=gt(t.doc,l));var c=s!=i.viewFrom||l!=i.viewTo||i.lastWrapHeight!=n.wrapperHeight||i.lastWrapWidth!=n.wrapperWidth;yi(t,s,l),i.viewOffset=yt(A(t.doc,i.viewFrom)),t.display.mover.style.top=i.viewOffset+"px";var u=xi(t);if(!c&&0==u&&!n.force&&i.renderedView==i.view&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo))return!1;var h=a();return u>4&&(i.lineDiv.style.display="none"),ki(t,i.updateLineNumbers,n.dims),u>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,h&&a()!=h&&h.offsetHeight&&h.focus(),e(i.cursorDiv),e(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,c&&(i.lastWrapHeight=n.wrapperHeight,i.lastWrapWidth=n.wrapperWidth,bi(t,400)),i.updateLineNumbers=null,!0}function Ci(t,e){for(var n=e.viewport,i=!0;(i&&t.options.lineWrapping&&e.oldDisplayWidth!=Ge(t)||(n&&null!=n.top&&(n={top:Math.min(t.doc.height+Fe(t.display)-Be(t),n.top)}),e.visible=Hn(t.display,t.doc,n),!(e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)))&&Si(t,e);i=!1){jn(t);var r=$n(t);kn(t),Wn(t,r),Mi(t,r)}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function Ti(t,e){var n=new os(t,e);if(Si(t,n)){jn(t),Ci(t,n);var i=$n(t);kn(t),Wn(t,i),Mi(t,i),n.finish()}}function ki(t,n,i){function r(e){var n=e.nextSibling;return ea&&ha&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var o=t.display,a=t.options.lineNumbers,s=o.lineDiv,l=s.firstChild,c=o.view,u=o.viewFrom,h=0;h<c.length;h++){var f=c[h];if(f.hidden);else if(f.node&&f.node.parentNode==s){for(;l!=f.node;)l=r(l);var p=a&&null!=n&&n<=u&&f.lineNumber;f.changes&&(d(f.changes,"gutter")>-1&&(p=!1),Te(t,f,u,i)),p&&(e(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(R(t.options,u)))),l=f.node.nextSibling}else{var g=Oe(t,f,u,i);s.insertBefore(g,l)}u+=f.size}for(;l;)l=r(l)}function Ai(t){var e=t.display.gutters.offsetWidth;t.display.sizer.style.marginLeft=e+"px"}function Mi(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+qe(t)+"px"}function Li(t){var n=t.display.gutters,r=t.options.gutters;e(n);for(var o=0;o<r.length;++o){var a=r[o],s=n.appendChild(i("div",null,"CodeMirror-gutter "+a));"CodeMirror-linenumbers"==a&&(t.display.lineGutter=s,s.style.width=(t.display.lineNumWidth||1)+"px")}n.style.display=o?"":"none",Ai(t)}function Ei(t){var e=d(t.gutters,"CodeMirror-linenumbers");e==-1&&t.lineNumbers?t.gutters=t.gutters.concat(["CodeMirror-linenumbers"]):e>-1&&!t.lineNumbers&&(t.gutters=t.gutters.slice(0),t.gutters.splice(e,1))}function Pi(t,e){var n=t[e];t.sort(function(t,e){return I(t.from(),e.from())}),e=d(t,n);for(var i=1;i<t.length;i++){var r=t[i],o=t[i-1];if(I(o.to(),r.from())>=0){var a=F(o.from(),r.from()),s=H(o.to(),r.to()),l=o.empty()?r.from()==r.head:o.from()==o.head;i<=e&&--e,t.splice(--i,2,new ss(l?s:a,l?a:s))}}return new as(t,e)}function Ni(t,e){return new as([new ss(t,e||t)],0)}function Oi(t){return t.text?D(t.from.line+t.text.length-1,g(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function Ri(t,e){if(I(t,e.from)<0)return t;if(I(t,e.to)<=0)return Oi(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,i=t.ch;return t.line==e.to.line&&(i+=Oi(e).ch-e.to.ch),D(n,i)}function Di(t,e){for(var n=[],i=0;i<t.sel.ranges.length;i++){var r=t.sel.ranges[i];n.push(new ss(Ri(r.anchor,e),Ri(r.head,e)))}return Pi(n,t.sel.primIndex)}function Ii(t,e,n){return t.line==e.line?D(n.line,t.ch-e.ch+n.ch):D(n.line+(t.line-e.line),t.ch)}function ji(t,e,n){for(var i=[],r=D(t.first,0),o=r,a=0;a<e.length;a++){var s=e[a],l=Ii(s.from,r,o),c=Ii(Oi(s),r,o);if(r=s.to,o=c,"around"==n){var u=t.sel.ranges[a],h=I(u.head,u.anchor)<0;i[a]=new ss(h?c:l,h?l:c)}else i[a]=new ss(l,l)}return new as(i,t.sel.primIndex)}function Vi(t){t.doc.mode=Ut(t.options,t.doc.modeOption),Hi(t)}function Hi(t){t.doc.iter(function(t){t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null)}),t.doc.frontier=t.doc.first,bi(t,100),t.state.modeGen++,t.curOp&&pi(t)}function Fi(t,e){return 0==e.from.ch&&0==e.to.ch&&""==g(e.text)&&(!t.cm||t.cm.options.wholeLineUpdateBefore)}function zi(t,e,n,i){function r(t){return n?n[t]:null}function o(t,n,r){le(t,n,r,i),Se(t,"change",t,e)}function a(t,e){for(var n=[],o=t;o<e;++o)n.push(new Wa(c[o],r(o),i));return n}var s=e.from,l=e.to,c=e.text,u=A(t,s.line),h=A(t,l.line),d=g(c),f=r(c.length-1),p=l.line-s.line;if(e.full)t.insert(0,a(0,c.length)),t.remove(c.length,t.size-c.length);else if(Fi(t,e)){var m=a(0,c.length-1);o(h,h.text,f),p&&t.remove(s.line,p),m.length&&t.insert(s.line,m)}else if(u==h)if(1==c.length)o(u,u.text.slice(0,s.ch)+d+u.text.slice(l.ch),f);else{var v=a(1,c.length-1);v.push(new Wa(d+u.text.slice(l.ch),f,i)),o(u,u.text.slice(0,s.ch)+c[0],r(0)),t.insert(s.line+1,v)}else if(1==c.length)o(u,u.text.slice(0,s.ch)+c[0]+h.text.slice(l.ch),r(0)),t.remove(s.line+1,p);else{o(u,u.text.slice(0,s.ch)+c[0],r(0)),o(h,d+h.text.slice(l.ch),f);var y=a(1,c.length-1);p>1&&t.remove(s.line+1,p-1),t.insert(s.line+1,y)}Se(t,"change",t,e)}function qi(t,e,n){function i(t,r,o){if(t.linked)for(var a=0;a<t.linked.length;++a){var s=t.linked[a];if(s.doc!=r){var l=o&&s.sharedHist;n&&!l||(e(s.doc,l),i(s.doc,t,l))}}}i(t,null,!0)}function Gi(t,e){if(e.cm)throw new Error("This document is already in use.");t.doc=e,e.cm=t,Sn(t),Vi(t),Bi(t),t.options.lineWrapping||bt(t),t.options.mode=e.modeOption,pi(t)}function Bi(t){("rtl"==t.doc.direction?s:ya)(t.display.lineDiv,"CodeMirror-rtl")}function $i(t){ui(t,function(){Bi(t),pi(t)})}function Wi(t){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=t||1}function Ui(t,e){var n={from:V(e.from),to:Oi(e),text:M(t,e.from,e.to)};return tr(t,n,e.from.line,e.to.line+1),qi(t,function(t){return tr(t,n,e.from.line,e.to.line+1)},!0),n}function Xi(t){for(;t.length;){var e=g(t);if(!e.ranges)break;t.pop()}}function Yi(t,e){return e?(Xi(t.done),g(t.done)):t.done.length&&!g(t.done).ranges?g(t.done):t.done.length>1&&!t.done[t.done.length-2].ranges?(t.done.pop(),g(t.done)):void 0}function Qi(t,e,n,i){var r=t.history;r.undone.length=0;var o,a,s=+new Date;if((r.lastOp==i||r.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&t.cm&&r.lastModTime>s-t.cm.options.historyEventDelay||"*"==e.origin.charAt(0)))&&(o=Yi(r,r.lastOp==i)))a=g(o.changes),0==I(e.from,e.to)&&0==I(e.from,a.to)?a.to=Oi(e):o.changes.push(Ui(t,e));else{var l=g(r.done);for(l&&l.ranges||Ji(t.sel,r.done),o={changes:[Ui(t,e)],generation:r.generation},r.done.push(o);r.done.length>r.undoDepth;)r.done.shift(),r.done[0].ranges||r.done.shift()}r.done.push(n),r.generation=++r.maxGeneration,r.lastModTime=r.lastSelTime=s,r.lastOp=r.lastSelOp=i,r.lastOrigin=r.lastSelOrigin=e.origin,a||Et(t,"historyAdded")}function Zi(t,e,n,i){var r=e.charAt(0);return"*"==r||"+"==r&&n.ranges.length==i.ranges.length&&n.somethingSelected()==i.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}function Ki(t,e,n,i){var r=t.history,o=i&&i.origin;n==r.lastSelOp||o&&r.lastSelOrigin==o&&(r.lastModTime==r.lastSelTime&&r.lastOrigin==o||Zi(t,o,g(r.done),e))?r.done[r.done.length-1]=e:Ji(e,r.done),r.lastSelTime=+new Date,r.lastSelOrigin=o,r.lastSelOp=n,i&&i.clearRedo!==!1&&Xi(r.undone)}function Ji(t,e){var n=g(e);n&&n.ranges&&n.equals(t)||e.push(t)}function tr(t,e,n,i){var r=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,i),function(n){n.markedSpans&&((r||(r=e["spans_"+t.id]={}))[o]=n.markedSpans),++o})}function er(t){if(!t)return null;for(var e,n=0;n<t.length;++n)t[n].marker.explicitlyCleared?e||(e=t.slice(0,n)):e&&e.push(t[n]);return e?e.length?e:null:t}function nr(t,e){var n=e["spans_"+t.id];if(!n)return null;for(var i=[],r=0;r<e.text.length;++r)i.push(er(n[r]));return i}function ir(t,e){var n=nr(t,e),i=J(t,e);if(!n)return i;if(!i)return n;for(var r=0;r<n.length;++r){var o=n[r],a=i[r];if(o&&a)t:for(var s=0;s<a.length;++s){for(var l=a[s],c=0;c<o.length;++c)if(o[c].marker==l.marker)continue t;o.push(l)}else a&&(n[r]=a)}return n}function rr(t,e,n){for(var i=[],r=0;r<t.length;++r){var o=t[r];if(o.ranges)i.push(n?as.prototype.deepCopy.call(o):o);else{var a=o.changes,s=[];i.push({changes:s});for(var l=0;l<a.length;++l){var c=a[l],u=void 0;if(s.push({from:c.from,to:c.to,text:c.text}),e)for(var h in c)(u=h.match(/^spans_(\d+)$/))&&d(e,Number(u[1]))>-1&&(g(s)[h]=c[h],delete c[h])}}}return i}function or(t,e,n,i){if(t.cm&&t.cm.display.shift||t.extend){var r=e.anchor;if(i){var o=I(n,r)<0;o!=I(i,r)<0?(r=n,n=i):o!=I(n,i)<0&&(n=i)}return new ss(r,n)}return new ss(i||n,n)}function ar(t,e,n,i){dr(t,new as([or(t,t.sel.primary(),e,n)],0),i)}function sr(t,e,n){for(var i=[],r=0;r<t.sel.ranges.length;r++)i[r]=or(t,t.sel.ranges[r],e[r],null);var o=Pi(i,t.sel.primIndex);dr(t,o,n)}function lr(t,e,n,i){var r=t.sel.ranges.slice(0);r[e]=n,dr(t,Pi(r,t.sel.primIndex),i)}function cr(t,e,n,i){dr(t,Ni(e,n),i)}function ur(t,e,n){var i={ranges:e.ranges,update:function(e){var n=this;this.ranges=[];for(var i=0;i<e.length;i++)n.ranges[i]=new ss(q(t,e[i].anchor),q(t,e[i].head))},origin:n&&n.origin};return Et(t,"beforeSelectionChange",t,i),t.cm&&Et(t.cm,"beforeSelectionChange",t.cm,i),i.ranges!=e.ranges?Pi(i.ranges,i.ranges.length-1):e}function hr(t,e,n){var i=t.history.done,r=g(i);r&&r.ranges?(i[i.length-1]=e,fr(t,e,n)):dr(t,e,n)}function dr(t,e,n){fr(t,e,n),Ki(t,t.sel,t.cm?t.cm.curOp.id:NaN,n)}function fr(t,e,n){(Ot(t,"beforeSelectionChange")||t.cm&&Ot(t.cm,"beforeSelectionChange"))&&(e=ur(t,e,n));var i=n&&n.bias||(I(e.primary().head,t.sel.primary().head)<0?-1:1);pr(t,mr(t,e,i,!0)),n&&n.scroll===!1||!t.cm||ti(t.cm)}function pr(t,e){e.equals(t.sel)||(t.sel=e,t.cm&&(t.cm.curOp.updateInput=t.cm.curOp.selectionChanged=!0,Nt(t.cm)),Se(t,"cursorActivity",t))}function gr(t){pr(t,mr(t,t.sel,null,!1),Ta)}function mr(t,e,n,i){for(var r,o=0;o<e.ranges.length;o++){var a=e.ranges[o],s=e.ranges.length==t.sel.ranges.length&&t.sel.ranges[o],l=yr(t,a.anchor,s&&s.anchor,n,i),c=yr(t,a.head,s&&s.head,n,i);(r||l!=a.anchor||c!=a.head)&&(r||(r=e.ranges.slice(0,o)),r[o]=new ss(l,c))}return r?Pi(r,e.primIndex):e}function vr(t,e,n,i,r){var o=A(t,e.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var s=o.markedSpans[a],l=s.marker;if((null==s.from||(l.inclusiveLeft?s.from<=e.ch:s.from<e.ch))&&(null==s.to||(l.inclusiveRight?s.to>=e.ch:s.to>e.ch))){if(r&&(Et(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var c=l.find(i<0?1:-1),u=void 0;if((i<0?l.inclusiveRight:l.inclusiveLeft)&&(c=xr(t,c,-i,c&&c.line==e.line?o:null)),c&&c.line==e.line&&(u=I(c,n))&&(i<0?u<0:u>0))return vr(t,c,e,i,r)}var h=l.find(i<0?-1:1);return(i<0?l.inclusiveLeft:l.inclusiveRight)&&(h=xr(t,h,i,h.line==e.line?o:null)),h?vr(t,h,e,i,r):null}}return e}function yr(t,e,n,i,r){var o=i||1,a=vr(t,e,n,o,r)||!r&&vr(t,e,n,o,!0)||vr(t,e,n,-o,r)||!r&&vr(t,e,n,-o,!0);return a?a:(t.cantEdit=!0,D(t.first,0))}function xr(t,e,n,i){return n<0&&0==e.ch?e.line>t.first?q(t,D(e.line-1)):null:n>0&&e.ch==(i||A(t,e.line)).text.length?e.line<t.first+t.size-1?D(e.line+1,0):null:new D(e.line,e.ch+n)}function br(t){t.setSelection(D(t.firstLine(),0),D(t.lastLine()),Ta)}function _r(t,e,n){var i={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return i.canceled=!0}};return n&&(i.update=function(e,n,r,o){e&&(i.from=q(t,e)),n&&(i.to=q(t,n)),r&&(i.text=r),void 0!==o&&(i.origin=o)}),Et(t,"beforeChange",t,i),t.cm&&Et(t.cm,"beforeChange",t.cm,i),i.canceled?null:{from:i.from,to:i.to,text:i.text,origin:i.origin}}function wr(t,e,n){if(t.cm){if(!t.cm.curOp)return hi(t.cm,wr)(t,e,n);if(t.cm.state.suppressEdits)return}if(!(Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"))||(e=_r(t,e,!0))){var i=Pa&&!n&&et(t,e.from,e.to);if(i)for(var r=i.length-1;r>=0;--r)Sr(t,{from:i[r].from,to:i[r].to,text:r?[""]:e.text});else Sr(t,e)}}function Sr(t,e){if(1!=e.text.length||""!=e.text[0]||0!=I(e.from,e.to)){var n=Di(t,e);Qi(t,e,n,t.cm?t.cm.curOp.id:NaN),kr(t,e,n,J(t,e));var i=[];qi(t,function(t,n){n||d(i,t.history)!=-1||(Pr(t.history,e),i.push(t.history)),kr(t,e,null,J(t,e))})}}function Cr(t,e,n){if(!t.cm||!t.cm.state.suppressEdits||n){for(var i,r=t.history,o=t.sel,a="undo"==e?r.done:r.undone,s="undo"==e?r.undone:r.done,l=0;l<a.length&&(i=a[l],n?!i.ranges||i.equals(t.sel):i.ranges);l++);if(l!=a.length){for(r.lastOrigin=r.lastSelOrigin=null;i=a.pop(),i.ranges;){if(Ji(i,s),n&&!i.equals(t.sel))return void dr(t,i,{clearRedo:!1});o=i}var c=[];Ji(o,s),s.push({changes:c,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;for(var u=Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"),h=function(n){var r=i.changes[n];if(r.origin=e,u&&!_r(t,r,!1))return a.length=0,{};c.push(Ui(t,r));var o=n?Di(t,r):g(a);kr(t,r,o,ir(t,r)),!n&&t.cm&&t.cm.scrollIntoView({from:r.from,to:Oi(r)});var s=[];qi(t,function(t,e){e||d(s,t.history)!=-1||(Pr(t.history,r),s.push(t.history)),kr(t,r,null,ir(t,r))})},f=i.changes.length-1;f>=0;--f){var p=h(f);if(p)return p.v}}}}function Tr(t,e){if(0!=e&&(t.first+=e,t.sel=new as(m(t.sel.ranges,function(t){return new ss(D(t.anchor.line+e,t.anchor.ch),D(t.head.line+e,t.head.ch))}),t.sel.primIndex),t.cm)){pi(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,i=n.viewFrom;i<n.viewTo;i++)gi(t.cm,i,"gutter")}}function kr(t,e,n,i){if(t.cm&&!t.cm.curOp)return hi(t.cm,kr)(t,e,n,i);if(e.to.line<t.first)return void Tr(t,e.text.length-1-(e.to.line-e.from.line));if(!(e.from.line>t.lastLine())){if(e.from.line<t.first){var r=e.text.length-1-(t.first-e.from.line);Tr(t,r),e={from:D(t.first,0),to:D(e.to.line+r,e.to.ch),text:[g(e.text)],origin:e.origin}}var o=t.lastLine();e.to.line>o&&(e={from:e.from,to:D(o,A(t,o).text.length),
-text:[e.text[0]],origin:e.origin}),e.removed=M(t,e.from,e.to),n||(n=Di(t,e)),t.cm?Ar(t.cm,e,i):zi(t,e,i),fr(t,n,Ta)}}function Ar(t,e,n){var i=t.doc,r=t.display,o=e.from,a=e.to,s=!1,l=o.line;t.options.lineWrapping||(l=P(ht(A(i,o.line))),i.iter(l,a.line+1,function(t){if(t==r.maxLine)return s=!0,!0})),i.sel.contains(e.from,e.to)>-1&&Nt(t),zi(i,e,n,wn(t)),t.options.lineWrapping||(i.iter(l,o.line+e.text.length,function(t){var e=xt(t);e>r.maxLineLength&&(r.maxLine=t,r.maxLineLength=e,r.maxLineChanged=!0,s=!1)}),s&&(t.curOp.updateMaxLine=!0)),i.frontier=Math.min(i.frontier,o.line),bi(t,400);var c=e.text.length-(a.line-o.line)-1;e.full?pi(t):o.line!=a.line||1!=e.text.length||Fi(t.doc,e)?pi(t,o.line,a.line+1,c):gi(t,o.line,"text");var u=Ot(t,"changes"),h=Ot(t,"change");if(h||u){var d={from:o,to:a,text:e.text,removed:e.removed,origin:e.origin};h&&Se(t,"change",t,d),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(d)}t.display.selForContextMenu=null}function Mr(t,e,n,i,r){if(i||(i=n),I(i,n)<0){var o=i;i=n,n=o}"string"==typeof e&&(e=t.splitLines(e)),wr(t,{from:n,to:i,text:e,origin:r})}function Lr(t,e,n,i){n<t.line?t.line+=i:e<t.line&&(t.line=e,t.ch=0)}function Er(t,e,n,i){for(var r=0;r<t.length;++r){var o=t[r],a=!0;if(o.ranges){o.copied||(o=t[r]=o.deepCopy(),o.copied=!0);for(var s=0;s<o.ranges.length;s++)Lr(o.ranges[s].anchor,e,n,i),Lr(o.ranges[s].head,e,n,i)}else{for(var l=0;l<o.changes.length;++l){var c=o.changes[l];if(n<c.from.line)c.from=D(c.from.line+i,c.from.ch),c.to=D(c.to.line+i,c.to.ch);else if(e<=c.to.line){a=!1;break}}a||(t.splice(0,r+1),r=0)}}}function Pr(t,e){var n=e.from.line,i=e.to.line,r=e.text.length-(i-n)-1;Er(t.done,n,i,r),Er(t.undone,n,i,r)}function Nr(t,e,n,i){var r=e,o=e;return"number"==typeof e?o=A(t,z(t,e)):r=P(e),null==r?null:(i(o,r)&&t.cm&&gi(t.cm,r,n),o)}function Or(t,e,n){yt(e)<(t.curOp&&t.curOp.scrollTop||t.doc.scrollTop)&&Jn(t,null,n)}function Rr(t,e,n,i){var r=new us(t,n,i),o=t.cm;return o&&r.noHScroll&&(o.display.alignWidgets=!0),Nr(t,e,"widget",function(e){var n=e.widgets||(e.widgets=[]);if(null==r.insertAt?n.push(r):n.splice(Math.min(n.length-1,Math.max(0,r.insertAt)),0,r),r.line=e,o&&!mt(t,e)){var i=yt(e)<t.scrollTop;E(e,e.height+je(r)),i&&Jn(o,null,r.height),o.curOp.forceUpdate=!0}return!0}),Se(o,"lineWidgetAdded",o,r,"number"==typeof e?e:P(e)),r}function Dr(t,e,n,i,o){if(i&&i.shared)return Ir(t,e,n,i,o);if(t.cm&&!t.cm.curOp)return hi(t.cm,Dr)(t,e,n,i,o);var a=new ds(t,o),s=I(e,n);if(i&&u(i,a,!1),s>0||0==s&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=r("span",[a.replacedWith],"CodeMirror-widget"),i.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),i.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(ut(t,e.line,e,n,a)||e.line!=n.line&&ut(t,n.line,e,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");W()}a.addToHistory&&Qi(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var l,c=e.line,h=t.cm;if(t.iter(c,n.line+1,function(t){h&&a.collapsed&&!h.options.lineWrapping&&ht(t)==h.display.maxLine&&(l=!0),a.collapsed&&c!=e.line&&E(t,0),Q(t,new U(a,c==e.line?e.ch:null,c==n.line?n.ch:null)),++c}),a.collapsed&&t.iter(e.line,n.line+1,function(e){mt(t,e)&&E(e,0)}),a.clearOnEnter&&Ia(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&($(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),a.collapsed&&(a.id=++hs,a.atomic=!0),h){if(l&&(h.curOp.updateMaxLine=!0),a.collapsed)pi(h,e.line,n.line+1);else if(a.className||a.title||a.startStyle||a.endStyle||a.css)for(var d=e.line;d<=n.line;d++)gi(h,d,"text");a.atomic&&gr(h.doc),Se(h,"markerAdded",h,a)}return a}function Ir(t,e,n,i,r){i=u(i),i.shared=!1;var o=[Dr(t,e,n,i,r)],a=o[0],s=i.widgetNode;return qi(t,function(t){s&&(i.widgetNode=s.cloneNode(!0)),o.push(Dr(t,q(t,e),q(t,n),i,r));for(var l=0;l<t.linked.length;++l)if(t.linked[l].isParent)return;a=g(o)}),new fs(o,a)}function jr(t){return t.findMarks(D(t.first,0),t.clipPos(D(t.lastLine())),function(t){return t.parent})}function Vr(t,e){for(var n=0;n<e.length;n++){var i=e[n],r=i.find(),o=t.clipPos(r.from),a=t.clipPos(r.to);if(I(o,a)){var s=Dr(t,o,a,i.primary,i.primary.type);i.markers.push(s),s.parent=i}}}function Hr(t){for(var e=function(e){var n=t[e],i=[n.primary.doc];qi(n.primary.doc,function(t){return i.push(t)});for(var r=0;r<n.markers.length;r++){var o=n.markers[r];d(i,o.doc)==-1&&(o.parent=null,n.markers.splice(r--,1))}},n=0;n<t.length;n++)e(n)}function Fr(t){var e=this;if(Gr(e),!Pt(e,t)&&!Ve(e.display,t)){Dt(t),Jo&&(ms=+new Date);var n=Cn(e,t,!0),i=t.dataTransfer.files;if(n&&!e.isReadOnly())if(i&&i.length&&window.FileReader&&window.File)for(var r=i.length,o=Array(r),a=0,s=function(t,i){if(!e.options.allowDropFileTypes||d(e.options.allowDropFileTypes,t.type)!=-1){var s=new FileReader;s.onload=hi(e,function(){var t=s.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(t)&&(t=""),o[i]=t,++a==r){n=q(e.doc,n);var l={from:n,to:n,text:e.doc.splitLines(o.join(e.doc.lineSeparator())),origin:"paste"};wr(e.doc,l),hr(e.doc,Ni(n,Oi(l)))}}),s.readAsText(t)}},l=0;l<r;++l)s(i[l],l);else{if(e.state.draggingText&&e.doc.sel.contains(n)>-1)return e.state.draggingText(t),void setTimeout(function(){return e.display.input.focus()},20);try{var c=t.dataTransfer.getData("Text");if(c){var u;if(e.state.draggingText&&!e.state.draggingText.copy&&(u=e.listSelections()),fr(e.doc,Ni(n,n)),u)for(var h=0;h<u.length;++h)Mr(e.doc,"",u[h].anchor,u[h].head,"drag");e.replaceSelection(c,"around","paste"),e.display.input.focus()}}catch(t){}}}}function zr(t,e){if(Jo&&(!t.state.draggingText||+new Date-ms<100))return void Vt(e);if(!Pt(t,e)&&!Ve(t.display,e)&&(e.dataTransfer.setData("Text",t.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!oa)){var n=i("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",ra&&(n.width=n.height=1,t.display.wrapper.appendChild(n),n._top=n.offsetTop),e.dataTransfer.setDragImage(n,0,0),ra&&n.parentNode.removeChild(n)}}function qr(t,e){var r=Cn(t,e);if(r){var o=document.createDocumentFragment();Mn(t,r,o),t.display.dragCursor||(t.display.dragCursor=i("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),n(t.display.dragCursor,o)}}function Gr(t){t.display.dragCursor&&(t.display.lineSpace.removeChild(t.display.dragCursor),t.display.dragCursor=null)}function Br(t){if(document.body.getElementsByClassName)for(var e=document.body.getElementsByClassName("CodeMirror"),n=0;n<e.length;n++){var i=e[n].CodeMirror;i&&t(i)}}function $r(){vs||(Wr(),vs=!0)}function Wr(){var t;Ia(window,"resize",function(){null==t&&(t=setTimeout(function(){t=null,Br(Ur)},100))}),Ia(window,"blur",function(){return Br(Rn)})}function Ur(t){var e=t.display;e.lastWrapHeight==e.wrapper.clientHeight&&e.lastWrapWidth==e.wrapper.clientWidth||(e.cachedCharWidth=e.cachedTextHeight=e.cachedPaddingH=null,e.scrollbarsClipped=!1,t.setSize())}function Xr(t){var e=t.split(/-(?!$)/);t=e[e.length-1];for(var n,i,r,o,a=0;a<e.length-1;a++){var s=e[a];if(/^(cmd|meta|m)$/i.test(s))o=!0;else if(/^a(lt)?$/i.test(s))n=!0;else if(/^(c|ctrl|control)$/i.test(s))i=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);r=!0}}return n&&(t="Alt-"+t),i&&(t="Ctrl-"+t),o&&(t="Cmd-"+t),r&&(t="Shift-"+t),t}function Yr(t){var e={};for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==i){delete t[n];continue}for(var r=m(n.split(" "),Xr),o=0;o<r.length;o++){var a=void 0,s=void 0;o==r.length-1?(s=r.join(" "),a=i):(s=r.slice(0,o+1).join(" "),a="...");var l=e[s];if(l){if(l!=a)throw new Error("Inconsistent bindings for "+s)}else e[s]=a}delete t[n]}for(var c in e)t[c]=e[c];return t}function Qr(t,e,n,i){e=Jr(e);var r=e.call?e.call(t,i):e[t];if(r===!1)return"nothing";if("..."===r)return"multi";if(null!=r&&n(r))return"handled";if(e.fallthrough){if("[object Array]"!=Object.prototype.toString.call(e.fallthrough))return Qr(t,e.fallthrough,n,i);for(var o=0;o<e.fallthrough.length;o++){var a=Qr(t,e.fallthrough[o],n,i);if(a)return a}}}function Zr(t){var e="string"==typeof t?t:ys[t.keyCode];return"Ctrl"==e||"Alt"==e||"Shift"==e||"Mod"==e}function Kr(t,e){if(ra&&34==t.keyCode&&t.char)return!1;var n=ys[t.keyCode],i=n;return null!=i&&!t.altGraphKey&&(t.altKey&&"Alt"!=n&&(i="Alt-"+i),(ma?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(i="Ctrl-"+i),(ma?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(i="Cmd-"+i),!e&&t.shiftKey&&"Shift"!=n&&(i="Shift-"+i),i)}function Jr(t){return"string"==typeof t?ws[t]:t}function to(t,e){for(var n=t.doc.sel.ranges,i=[],r=0;r<n.length;r++){for(var o=e(n[r]);i.length&&I(o.from,g(i).to)<=0;){var a=i.pop();if(I(a.from,o.from)<0){o.from=a.from;break}}i.push(o)}ui(t,function(){for(var e=i.length-1;e>=0;e--)Mr(t.doc,"",i[e].from,i[e].to,"+delete");ti(t)})}function eo(t,e){var n=A(t.doc,e),i=ht(n);return i!=n&&(e=P(i)),kt(!0,t,i,e,1)}function no(t,e){var n=A(t.doc,e),i=dt(n);return i!=n&&(e=P(i)),kt(!0,t,n,e,-1)}function io(t,e){var n=eo(t,e.line),i=A(t.doc,n.line),r=St(i,t.doc.direction);if(!r||0==r[0].level){var o=Math.max(0,i.text.search(/\S/)),a=e.line==n.line&&e.ch<=o&&e.ch;return D(n.line,a?0:o,n.sticky)}return n}function ro(t,e,n){if("string"==typeof e&&(e=Ts[e],!e))return!1;t.display.input.ensurePolled();var i=t.display.shift,r=!1;try{t.isReadOnly()&&(t.state.suppressEdits=!0),n&&(t.display.shift=!1),r=e(t)!=Ca}finally{t.display.shift=i,t.state.suppressEdits=!1}return r}function oo(t,e,n){for(var i=0;i<t.state.keyMaps.length;i++){var r=Qr(e,t.state.keyMaps[i],n,t);if(r)return r}return t.options.extraKeys&&Qr(e,t.options.extraKeys,n,t)||Qr(e,t.options.keyMap,n,t)}function ao(t,e,n,i){var r=t.state.keySeq;if(r){if(Zr(e))return"handled";ks.set(50,function(){t.state.keySeq==r&&(t.state.keySeq=null,t.display.input.reset())}),e=r+" "+e}var o=oo(t,e,i);return"multi"==o&&(t.state.keySeq=e),"handled"==o&&Se(t,"keyHandled",t,e,n),"handled"!=o&&"multi"!=o||(Dt(n),En(t)),r&&!o&&/\'$/.test(e)?(Dt(n),!0):!!o}function so(t,e){var n=Kr(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?ao(t,"Shift-"+n,e,function(e){return ro(t,e,!0)})||ao(t,n,e,function(e){if("string"==typeof e?/^go[A-Z]/.test(e):e.motion)return ro(t,e)}):ao(t,n,e,function(e){return ro(t,e)}))}function lo(t,e,n){return ao(t,"'"+n+"'",e,function(e){return ro(t,e,!0)})}function co(t){var e=this;if(e.curOp.focus=a(),!Pt(e,t)){Jo&&ta<11&&27==t.keyCode&&(t.returnValue=!1);var n=t.keyCode;e.display.shift=16==n||t.shiftKey;var i=so(e,t);ra&&(As=i?n:null,!i&&88==n&&!Fa&&(ha?t.metaKey:t.ctrlKey)&&e.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(e.display.lineDiv.className)||uo(e)}}function uo(t){function e(t){18!=t.keyCode&&t.altKey||(ya(n,"CodeMirror-crosshair"),Lt(document,"keyup",e),Lt(document,"mouseover",e))}var n=t.display.lineDiv;s(n,"CodeMirror-crosshair"),Ia(document,"keyup",e),Ia(document,"mouseover",e)}function ho(t){16==t.keyCode&&(this.doc.sel.shift=!1),Pt(this,t)}function fo(t){var e=this;if(!(Ve(e.display,t)||Pt(e,t)||t.ctrlKey&&!t.altKey||ha&&t.metaKey)){var n=t.keyCode,i=t.charCode;if(ra&&n==As)return As=null,void Dt(t);if(!ra||t.which&&!(t.which<10)||!so(e,t)){var r=String.fromCharCode(null==i?n:i);"\b"!=r&&(lo(e,t,r)||e.display.input.onKeyPress(t))}}}function po(t){var e=this,n=e.display;if(!(Pt(e,t)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=t.shiftKey,Ve(n,t))return void(ea||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100)));if(!xo(e,t)){var i=Cn(e,t);switch(window.focus(),Ft(t)){case 1:e.state.selectingText?e.state.selectingText(t):i?go(e,t,i):Ht(t)==n.scroller&&Dt(t);break;case 2:ea&&(e.state.lastMiddleDown=+new Date),i&&ar(e.doc,i),setTimeout(function(){return n.input.focus()},20),Dt(t);break;case 3:va?bo(e,t):Nn(e)}}}}function go(t,e,n){Jo?setTimeout(c(Pn,t),0):t.curOp.focus=a();var i,r=+new Date;Cs&&Cs.time>r-400&&0==I(Cs.pos,n)?i="triple":Ss&&Ss.time>r-400&&0==I(Ss.pos,n)?(i="double",Cs={time:r,pos:n}):(i="single",Ss={time:r,pos:n});var o,s=t.doc.sel,l=ha?e.metaKey:e.ctrlKey;t.options.dragDrop&&ja&&!t.isReadOnly()&&"single"==i&&(o=s.contains(n))>-1&&(I((o=s.ranges[o]).from(),n)<0||n.xRel>0)&&(I(o.to(),n)>0||n.xRel<0)?mo(t,e,n,l):vo(t,e,n,i,l)}function mo(t,e,n,i){var r=t.display,o=!1,a=hi(t,function(e){ea&&(r.scroller.draggable=!1),t.state.draggingText=!1,Lt(document,"mouseup",a),Lt(document,"mousemove",s),Lt(r.scroller,"dragstart",l),Lt(r.scroller,"drop",a),o||(Dt(e),i||ar(t.doc,n),ea||Jo&&9==ta?setTimeout(function(){document.body.focus(),r.input.focus()},20):r.input.focus())}),s=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},l=function(){return o=!0};ea&&(r.scroller.draggable=!0),t.state.draggingText=a,a.copy=ha?e.altKey:e.ctrlKey,r.scroller.dragDrop&&r.scroller.dragDrop(),Ia(document,"mouseup",a),Ia(document,"mousemove",s),Ia(r.scroller,"dragstart",l),Ia(r.scroller,"drop",a),Nn(t),setTimeout(function(){return r.input.focus()},20)}function vo(t,e,n,i,r){function o(e){if(0!=I(x,e))if(x=e,"rect"==i){for(var r=[],o=t.options.tabSize,a=h(A(u,n.line).text,n.ch,o),s=h(A(u,e.line).text,e.ch,o),l=Math.min(a,s),c=Math.max(a,s),m=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));m<=v;m++){var y=A(u,m).text,b=f(y,l,o);l==c?r.push(new ss(D(m,b),D(m,b))):y.length>b&&r.push(new ss(D(m,b),D(m,f(y,c,o))))}r.length||r.push(new ss(n,n)),dr(u,Pi(g.ranges.slice(0,p).concat(r),p),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var _=d,w=_.anchor,S=e;if("single"!=i){var C;C="double"==i?t.findWordAt(e):new ss(D(e.line,0),q(u,D(e.line+1,0))),I(C.anchor,w)>0?(S=C.head,w=F(_.from(),C.anchor)):(S=C.anchor,w=H(_.to(),C.head))}var T=g.ranges.slice(0);T[p]=new ss(q(u,w),S),dr(u,Pi(T,p),ka)}}function s(e){var n=++_,r=Cn(t,e,!0,"rect"==i);if(r)if(0!=I(r,x)){t.curOp.focus=a(),o(r);var l=Hn(c,u);(r.line>=l.to||r.line<l.from)&&setTimeout(hi(t,function(){_==n&&s(e)}),150)}else{var h=e.clientY<b.top?-20:e.clientY>b.bottom?20:0;h&&setTimeout(hi(t,function(){_==n&&(c.scroller.scrollTop+=h,s(e))}),50)}}function l(e){t.state.selectingText=!1,_=1/0,Dt(e),c.input.focus(),Lt(document,"mousemove",w),Lt(document,"mouseup",S),u.history.lastSelOrigin=null}var c=t.display,u=t.doc;Dt(e);var d,p,g=u.sel,m=g.ranges;if(r&&!e.shiftKey?(p=u.sel.contains(n),d=p>-1?m[p]:new ss(n,n)):(d=u.sel.primary(),p=u.sel.primIndex),da?e.shiftKey&&e.metaKey:e.altKey)i="rect",r||(d=new ss(n,n)),n=Cn(t,e,!0,!0),p=-1;else if("double"==i){var v=t.findWordAt(n);d=t.display.shift||u.extend?or(u,d,v.anchor,v.head):v}else if("triple"==i){var y=new ss(D(n.line,0),q(u,D(n.line+1,0)));d=t.display.shift||u.extend?or(u,d,y.anchor,y.head):y}else d=or(u,d,n);r?p==-1?(p=m.length,dr(u,Pi(m.concat([d]),p),{scroll:!1,origin:"*mouse"})):m.length>1&&m[p].empty()&&"single"==i&&!e.shiftKey?(dr(u,Pi(m.slice(0,p).concat(m.slice(p+1)),0),{scroll:!1,origin:"*mouse"}),g=u.sel):lr(u,p,d,ka):(p=0,dr(u,new as([d],0),ka),g=u.sel);var x=n,b=c.wrapper.getBoundingClientRect(),_=0,w=hi(t,function(t){Ft(t)?s(t):l(t)}),S=hi(t,l);t.state.selectingText=S,Ia(document,"mousemove",w),Ia(document,"mouseup",S)}function yo(t,e,n,i){var r,o;try{r=e.clientX,o=e.clientY}catch(t){return!1}if(r>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;i&&Dt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!Ot(t,n))return jt(e);o-=s.top-a.viewOffset;for(var l=0;l<t.options.gutters.length;++l){var c=a.gutters.childNodes[l];if(c&&c.getBoundingClientRect().right>=r){var u=N(t.doc,o),h=t.options.gutters[l];return Et(t,n,t,u,h,e),jt(e)}}}function xo(t,e){return yo(t,e,"gutterClick",!0)}function bo(t,e){Ve(t.display,e)||_o(t,e)||Pt(t,e,"contextmenu")||t.display.input.onContextMenu(e)}function _o(t,e){return!!Ot(t,"gutterContextMenu")&&yo(t,e,"gutterContextMenu",!1)}function wo(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),on(t)}function So(t){function e(e,i,r,o){t.defaults[e]=i,r&&(n[e]=o?function(t,e,n){n!=Ms&&r(t,e,n)}:r)}var n=t.optionHandlers;t.defineOption=e,t.Init=Ms,e("value","",function(t,e){return t.setValue(e)},!0),e("mode",null,function(t,e){t.doc.modeOption=e,Vi(t)},!0),e("indentUnit",2,Vi,!0),e("indentWithTabs",!1),e("smartIndent",!0),e("tabSize",4,function(t){Hi(t),on(t),pi(t)},!0),e("lineSeparator",null,function(t,e){if(t.doc.lineSep=e,e){var n=[],i=t.doc.first;t.doc.iter(function(t){for(var r=0;;){var o=t.text.indexOf(e,r);if(o==-1)break;r=o+e.length,n.push(D(i,o))}i++});for(var r=n.length-1;r>=0;r--)Mr(t.doc,e,n[r],D(n[r].line,n[r].ch+e.length))}}),e("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Ms&&t.refresh()}),e("specialCharPlaceholder",de,function(t){return t.refresh()},!0),e("electricChars",!0),e("inputStyle",ua?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),e("spellcheck",!1,function(t,e){return t.getInputField().spellcheck=e},!0),e("rtlMoveVisually",!fa),e("wholeLineUpdateBefore",!0),e("theme","default",function(t){wo(t),Co(t)},!0),e("keyMap","default",function(t,e,n){var i=Jr(e),r=n!=Ms&&Jr(n);r&&r.detach&&r.detach(t,i),i.attach&&i.attach(t,r||null)}),e("extraKeys",null),e("lineWrapping",!1,ko,!0),e("gutters",[],function(t){Ei(t.options),Co(t)},!0),e("fixedGutter",!0,function(t,e){t.display.gutters.style.left=e?_n(t.display)+"px":"0",t.refresh()},!0),e("coverGutterNextToScrollbar",!1,function(t){return Wn(t)},!0),e("scrollbarStyle","native",function(t){Xn(t),Wn(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)},!0),e("lineNumbers",!1,function(t){Ei(t.options),Co(t)},!0),e("firstLineNumber",1,Co,!0),e("lineNumberFormatter",function(t){return t},Co,!0),e("showCursorWhenSelecting",!1,kn,!0),e("resetSelectionOnContextMenu",!0),e("lineWiseCopyCut",!0),e("readOnly",!1,function(t,e){"nocursor"==e?(Rn(t),t.display.input.blur(),t.display.disabled=!0):t.display.disabled=!1,t.display.input.readOnlyChanged(e)}),e("disableInput",!1,function(t,e){e||t.display.input.reset()},!0),e("dragDrop",!0,To),e("allowDropFileTypes",null),e("cursorBlinkRate",530),e("cursorScrollMargin",0),e("cursorHeight",1,kn,!0),e("singleCursorHeightPerLine",!0,kn,!0),e("workTime",100),e("workDelay",100),e("flattenSpans",!0,Hi,!0),e("addModeClass",!1,Hi,!0),e("pollInterval",100),e("undoDepth",200,function(t,e){return t.doc.history.undoDepth=e}),e("historyEventDelay",1250),e("viewportMargin",10,function(t){return t.refresh()},!0),e("maxHighlightLength",1e4,Hi,!0),e("moveInputWithCursor",!0,function(t,e){e||t.display.input.resetPosition()}),e("tabindex",null,function(t,e){return t.display.input.getField().tabIndex=e||""}),e("autofocus",null),e("direction","ltr",function(t,e){return t.doc.setDirection(e)},!0)}function Co(t){Li(t),pi(t),Dn(t)}function To(t,e,n){var i=n&&n!=Ms;if(!e!=!i){var r=t.display.dragFunctions,o=e?Ia:Lt;o(t.display.scroller,"dragstart",r.start),o(t.display.scroller,"dragenter",r.enter),o(t.display.scroller,"dragover",r.over),o(t.display.scroller,"dragleave",r.leave),o(t.display.scroller,"drop",r.drop)}}function ko(t){t.options.lineWrapping?(s(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(ya(t.display.wrapper,"CodeMirror-wrap"),bt(t)),Sn(t),pi(t),on(t),setTimeout(function(){return Wn(t)},100)}function Ao(t,e){var n=this;if(!(this instanceof Ao))return new Ao(t,e);this.options=e=e?u(e):{},u(Ls,e,!1),Ei(e);var i=e.value;"string"==typeof i&&(i=new gs(i,e.mode,null,e.lineSeparator,e.direction)),this.doc=i;var r=new Ao.inputStyles[e.inputStyle](this),o=this.display=new k(t,i,r);o.wrapper.CodeMirror=this,Li(this),wo(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Xn(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new ba,keySeq:null,specialChars:null},e.autofocus&&!ua&&o.input.focus(),Jo&&ta<11&&setTimeout(function(){return n.display.input.reset(!0)},20),Mo(this),$r(),ni(this),this.curOp.forceUpdate=!0,Gi(this,i),e.autofocus&&!ua||this.hasFocus()?setTimeout(c(On,this),20):Rn(this);for(var a in Es)Es.hasOwnProperty(a)&&Es[a](n,e[a],Ms);In(this),e.finishInit&&e.finishInit(this);for(var s=0;s<Ps.length;++s)Ps[s](n);ii(this),ea&&e.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}function Mo(t){function e(){r.activeTouch&&(o=setTimeout(function(){return r.activeTouch=null},1e3),a=r.activeTouch,a.end=+new Date)}function n(t){if(1!=t.touches.length)return!1;var e=t.touches[0];return e.radiusX<=1&&e.radiusY<=1}function i(t,e){if(null==e.left)return!0;var n=e.left-t.left,i=e.top-t.top;return n*n+i*i>400}var r=t.display;Ia(r.scroller,"mousedown",hi(t,po)),Jo&&ta<11?Ia(r.scroller,"dblclick",hi(t,function(e){if(!Pt(t,e)){var n=Cn(t,e);if(n&&!xo(t,e)&&!Ve(t.display,e)){Dt(e);var i=t.findWordAt(n);ar(t.doc,i.anchor,i.head)}}})):Ia(r.scroller,"dblclick",function(e){return Pt(t,e)||Dt(e)}),va||Ia(r.scroller,"contextmenu",function(e){return bo(t,e)});var o,a={end:0};Ia(r.scroller,"touchstart",function(e){if(!Pt(t,e)&&!n(e)){r.input.ensurePolled(),clearTimeout(o);var i=+new Date;r.activeTouch={start:i,moved:!1,prev:i-a.end<=300?a:null},1==e.touches.length&&(r.activeTouch.left=e.touches[0].pageX,r.activeTouch.top=e.touches[0].pageY)}}),Ia(r.scroller,"touchmove",function(){r.activeTouch&&(r.activeTouch.moved=!0)}),Ia(r.scroller,"touchend",function(n){var o=r.activeTouch;if(o&&!Ve(r,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var a,s=t.coordsChar(r.activeTouch,"page");a=!o.prev||i(o,o.prev)?new ss(s,s):!o.prev.prev||i(o,o.prev.prev)?t.findWordAt(s):new ss(D(s.line,0),q(t.doc,D(s.line+1,0))),t.setSelection(a.anchor,a.head),t.focus(),Dt(n)}e()}),Ia(r.scroller,"touchcancel",e),Ia(r.scroller,"scroll",function(){r.scroller.clientHeight&&(Fn(t,r.scroller.scrollTop),zn(t,r.scroller.scrollLeft,!0),Et(t,"scroll",t))}),Ia(r.scroller,"mousewheel",function(e){return Bn(t,e)}),Ia(r.scroller,"DOMMouseScroll",function(e){return Bn(t,e)}),Ia(r.wrapper,"scroll",function(){return r.wrapper.scrollTop=r.wrapper.scrollLeft=0}),r.dragFunctions={enter:function(e){Pt(t,e)||Vt(e)},over:function(e){Pt(t,e)||(qr(t,e),Vt(e))},start:function(e){return zr(t,e)},drop:hi(t,Fr),leave:function(e){Pt(t,e)||Gr(t)}};var s=r.input.getField();Ia(s,"keyup",function(e){return ho.call(t,e)}),Ia(s,"keydown",hi(t,co)),Ia(s,"keypress",hi(t,fo)),Ia(s,"focus",function(e){return On(t,e)}),Ia(s,"blur",function(e){return Rn(t,e)})}function Lo(t,e,n,i){var r,o=t.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?r=te(t,e):n="prev");var a=t.options.tabSize,s=A(o,e),l=h(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(i||/\S/.test(s.text)){if("smart"==n&&(c=o.mode.indent(r,s.text.slice(u.length),s.text),c==Ca||c>150)){if(!i)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?h(A(o,e-1).text,null,a):0:"add"==n?c=l+t.options.indentUnit:"subtract"==n?c=l-t.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var d="",f=0;if(t.options.indentWithTabs)for(var g=Math.floor(c/a);g;--g)f+=a,d+="\t";if(f<c&&(d+=p(c-f)),d!=u)return Mr(o,d,D(e,0),D(e,u.length),"+input"),s.stateAfter=null,!0;for(var m=0;m<o.sel.ranges.length;m++){var v=o.sel.ranges[m];if(v.head.line==e&&v.head.ch<u.length){var y=D(e,u.length);lr(o,m,new ss(y,y));break}}}function Eo(t){Ns=t}function Po(t,e,n,i,r){var o=t.doc;t.display.shift=!1,i||(i=o.sel);var a=t.state.pasteIncoming||"paste"==r,s=Va(e),l=null;if(a&&i.ranges.length>1)if(Ns&&Ns.text.join("\n")==e){if(i.ranges.length%Ns.text.length==0){l=[];for(var c=0;c<Ns.text.length;c++)l.push(o.splitLines(Ns.text[c]))}}else s.length==i.ranges.length&&(l=m(s,function(t){return[t]}));for(var u,h=i.ranges.length-1;h>=0;h--){var d=i.ranges[h],f=d.from(),p=d.to();d.empty()&&(n&&n>0?f=D(f.line,f.ch-n):t.state.overwrite&&!a?p=D(p.line,Math.min(A(o,p.line).text.length,p.ch+g(s).length)):Ns&&Ns.lineWise&&Ns.text.join("\n")==e&&(f=p=D(f.line,0))),u=t.curOp.updateInput;var v={from:f,to:p,text:l?l[h%l.length]:s,origin:r||(a?"paste":t.state.cutIncoming?"cut":"+input")};wr(t.doc,v),Se(t,"inputRead",t,v)}e&&!a&&Oo(t,e),ti(t),t.curOp.updateInput=u,t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=!1}function No(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||ui(e,function(){return Po(e,n,0,null,"paste")}),!0}function Oo(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,i=n.ranges.length-1;i>=0;i--){var r=n.ranges[i];if(!(r.head.ch>100||i&&n.ranges[i-1].head.line==r.head.line)){var o=t.getModeAt(r.head),a=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(e.indexOf(o.electricChars.charAt(s))>-1){a=Lo(t,r.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(A(t.doc,r.head.line).text.slice(0,r.head.ch))&&(a=Lo(t,r.head.line,"smart"));a&&Se(t,"electricInput",t,r.head.line)}}}function Ro(t){for(var e=[],n=[],i=0;i<t.doc.sel.ranges.length;i++){var r=t.doc.sel.ranges[i].head.line,o={anchor:D(r,0),head:D(r+1,0)};n.push(o),e.push(t.getRange(o.anchor,o.head))}return{text:e,ranges:n}}function Do(t,e){t.setAttribute("autocorrect","off"),t.setAttribute("autocapitalize","off"),t.setAttribute("spellcheck",!!e)}function Io(){var t=i("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),e=i("div",[t],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return ea?t.style.width="1000px":t.setAttribute("wrap","off"),la&&(t.style.border="1px solid black"),Do(t),e}function jo(t,e,n,i,r){function o(){var i=e.line+n;return!(i<t.first||i>=t.first+t.size)&&(e=new D(i,e.ch,e.sticky),c=A(t,i))}function a(i){var a;if(a=r?At(t.cm,c,e,n):Tt(c,e,n),null==a){if(i||!o())return!1;e=kt(r,t.cm,c,e.line,n)}else e=a;return!0}var s=e,l=n,c=A(t,e.line);if("char"==i)a();else if("column"==i)a(!0);else if("word"==i||"group"==i)for(var u=null,h="group"==i,d=t.cm&&t.cm.getHelper(e,"wordChars"),f=!0;!(n<0)||a(!f);f=!1){var p=c.text.charAt(e.ch)||"\n",g=_(p,d)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||f||g||(g="s"),u&&u!=g){n<0&&(n=1,a(),e.sticky="after");break}if(g&&(u=g),n>0&&!a(!f))break}var m=yr(t,e,s,l,!0);return j(s,m)&&(m.hitSide=!0),m}function Vo(t,e,n,i){var r,o=t.doc,a=e.left;if("page"==i){var s=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*yn(t.display),3);r=(n>0?e.bottom:e.top)+n*l}else"line"==i&&(r=n>0?e.bottom+3:e.top-3);for(var c;c=pn(t,a,r),c.outside;){if(n<0?r<=0:r>=o.height){c.hitSide=!0;break}r+=5*n}return c}function Ho(t,e){var n=Ye(t,e.line);if(!n||n.hidden)return null;var i=A(t.doc,e.line),r=We(n,i,e.line),o=St(i,t.doc.direction),a="left";if(o){var s=wt(o,e.ch);a=s%2?"right":"left"}var l=Ke(r.map,e.ch,a);return l.offset="right"==l.collapse?l.end:l.start,l}function Fo(t){for(var e=t;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return!0;return!1}function zo(t,e){return e&&(t.bad=!0),t}function qo(t,e,n,i,r){function o(t){return function(e){return e.id==t}}function a(){u&&(c+=h,u=!1)}function s(t){t&&(a(),c+=t)}function l(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(null!=n)return void s(n||e.textContent.replace(/\u200b/g,""));var c,d=e.getAttribute("cm-marker");if(d){var f=t.findMarks(D(i,0),D(r+1,0),o(+d));return void(f.length&&(c=f[0].find())&&s(M(t.doc,c.from,c.to).join(h)))}if("false"==e.getAttribute("contenteditable"))return;var p=/^(pre|div|p)$/i.test(e.nodeName);p&&a();for(var g=0;g<e.childNodes.length;g++)l(e.childNodes[g]);p&&(u=!0)}else 3==e.nodeType&&s(e.nodeValue)}for(var c="",u=!1,h=t.doc.lineSeparator();l(e),e!=n;)e=e.nextSibling;return c}function Go(t,e,n){var i;if(e==t.display.lineDiv){if(i=t.display.lineDiv.childNodes[n],!i)return zo(t.clipPos(D(t.display.viewTo-1)),!0);e=null,n=0}else for(i=e;;i=i.parentNode){if(!i||i==t.display.lineDiv)return null;if(i.parentNode&&i.parentNode==t.display.lineDiv)break}for(var r=0;r<t.display.view.length;r++){var o=t.display.view[r];if(o.node==i)return Bo(o,e,n)}}function Bo(t,e,n){function i(e,n,i){for(var r=-1;r<(h?h.length:0);r++)for(var o=r<0?u.map:h[r],a=0;a<o.length;a+=3){var s=o[a+2];if(s==e||s==n){var l=P(r<0?t.line:t.rest[r]),c=o[a]+i;return(i<0||s!=e)&&(c=o[a+(i?1:0)]),D(l,c)}}}var r=t.text.firstChild,a=!1;if(!e||!o(r,e))return zo(D(P(t.line),0),!0);if(e==r&&(a=!0,e=r.childNodes[n],n=0,!e)){var s=t.rest?g(t.rest):t.line;return zo(D(P(s),s.text.length),a)}var l=3==e.nodeType?e:null,c=e;for(l||1!=e.childNodes.length||3!=e.firstChild.nodeType||(l=e.firstChild,n&&(n=l.nodeValue.length));c.parentNode!=r;)c=c.parentNode;var u=t.measure,h=u.maps,d=i(l,c,n);if(d)return zo(d,a);for(var f=c.nextSibling,p=l?l.nodeValue.length-n:0;f;f=f.nextSibling){if(d=i(f,f.firstChild,0))return zo(D(d.line,d.ch-p),a);p+=f.textContent.length}for(var m=c.previousSibling,v=n;m;m=m.previousSibling){if(d=i(m,m.firstChild,-1))return zo(D(d.line,d.ch+v),a);v+=m.textContent.length}}function $o(t,e){function n(){t.value=l.getValue()}if(e=e?u(e):{},e.value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var i=a();e.autofocus=i==t||null!=t.getAttribute("autofocus")&&i==document.body}var r;if(t.form&&(Ia(t.form,"submit",n),!e.leaveSubmitMethodAlone)){var o=t.form;r=o.submit;try{var s=o.submit=function(){n(),o.submit=r,o.submit(),o.submit=s}}catch(t){}}e.finishInit=function(e){e.save=n,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,n(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(Lt(t.form,"submit",n),"function"==typeof t.form.submit&&(t.form.submit=r))}},t.style.display="none";var l=Ao(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return l}function Wo(t){t.off=Lt,t.on=Ia,t.wheelEventPixels=Gn,t.Doc=gs,t.splitLines=Va,t.countColumn=h,t.findColumn=f,t.isWordChar=b,t.Pass=Ca,t.signal=Et,t.Line=Wa,t.changeEnd=Oi,t.scrollbarModel=is,t.Pos=D,t.cmpPos=I,t.modes=qa,t.mimeModes=Ga,t.resolveMode=Wt,t.getMode=Ut,t.modeExtensions=Ba,t.extendMode=Xt,t.copyState=Yt,t.startState=Zt,t.innerMode=Qt,t.commands=Ts,t.keyMap=ws,t.keyName=Kr,t.isModifierKey=Zr,t.lookupKey=Qr,t.normalizeKeyMap=Yr,t.StringStream=$a,t.SharedTextMarker=fs,t.TextMarker=ds,t.LineWidget=us,t.e_preventDefault=Dt,t.e_stopPropagation=It,t.e_stop=Vt,t.addClass=s,t.contains=o,t.rmClass=ya,t.keyNames=ys}var Uo=navigator.userAgent,Xo=navigator.platform,Yo=/gecko\/\d/i.test(Uo),Qo=/MSIE \d/.test(Uo),Zo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Uo),Ko=/Edge\/(\d+)/.exec(Uo),Jo=Qo||Zo||Ko,ta=Jo&&(Qo?document.documentMode||6:+(Ko||Zo)[1]),ea=!Ko&&/WebKit\//.test(Uo),na=ea&&/Qt\/\d+\.\d+/.test(Uo),ia=!Ko&&/Chrome\//.test(Uo),ra=/Opera\//.test(Uo),oa=/Apple Computer/.test(navigator.vendor),aa=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(Uo),sa=/PhantomJS/.test(Uo),la=!Ko&&/AppleWebKit/.test(Uo)&&/Mobile\/\w+/.test(Uo),ca=/Android/.test(Uo),ua=la||ca||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(Uo),ha=la||/Mac/.test(Xo),da=/\bCrOS\b/.test(Uo),fa=/win/i.test(Xo),pa=ra&&Uo.match(/Version\/(\d*\.\d*)/);pa&&(pa=Number(pa[1])),pa&&pa>=15&&(ra=!1,ea=!0);var ga,ma=ha&&(na||ra&&(null==pa||pa<12.11)),va=Yo||Jo&&ta>=9,ya=function(e,n){var i=e.className,r=t(n).exec(i);if(r){var o=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(o?r[1]+o:"")}};ga=document.createRange?function(t,e,n,i){var r=document.createRange();return r.setEnd(i||t,n),r.setStart(t,e),r}:function(t,e,n){var i=document.body.createTextRange();try{i.moveToElementText(t.parentNode);
-}catch(t){return i}return i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",e),i};var xa=function(t){t.select()};la?xa=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:Jo&&(xa=function(t){try{t.select()}catch(t){}});var ba=function(){this.id=null};ba.prototype.set=function(t,e){clearTimeout(this.id),this.id=setTimeout(e,t)};var _a,wa,Sa=30,Ca={toString:function(){return"CodeMirror.Pass"}},Ta={scroll:!1},ka={origin:"*mouse"},Aa={origin:"+move"},Ma=[""],La=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ea=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Pa=!1,Na=!1,Oa=null,Ra=function(){function t(t){return t<=247?n.charAt(t):1424<=t&&t<=1524?"R":1536<=t&&t<=1785?i.charAt(t-1536):1774<=t&&t<=2220?"r":8192<=t&&t<=8203?"w":8204==t?"b":"L"}function e(t,e,n){this.level=t,this.from=e,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,a=/[LRr]/,s=/[Lb1n]/,l=/[1n]/;return function(n,i){var c="ltr"==i?"L":"R";if(0==n.length||"ltr"==i&&!r.test(n))return!1;for(var u=n.length,h=[],d=0;d<u;++d)h.push(t(n.charCodeAt(d)));for(var f=0,p=c;f<u;++f){var m=h[f];"m"==m?h[f]=p:p=m}for(var v=0,y=c;v<u;++v){var x=h[v];"1"==x&&"r"==y?h[v]="n":a.test(x)&&(y=x,"r"==x&&(h[v]="R"))}for(var b=1,_=h[0];b<u-1;++b){var w=h[b];"+"==w&&"1"==_&&"1"==h[b+1]?h[b]="1":","!=w||_!=h[b+1]||"1"!=_&&"n"!=_||(h[b]=_),_=w}for(var S=0;S<u;++S){var C=h[S];if(","==C)h[S]="N";else if("%"==C){var T=void 0;for(T=S+1;T<u&&"%"==h[T];++T);for(var k=S&&"!"==h[S-1]||T<u&&"1"==h[T]?"1":"N",A=S;A<T;++A)h[A]=k;S=T-1}}for(var M=0,L=c;M<u;++M){var E=h[M];"L"==L&&"1"==E?h[M]="L":a.test(E)&&(L=E)}for(var P=0;P<u;++P)if(o.test(h[P])){var N=void 0;for(N=P+1;N<u&&o.test(h[N]);++N);for(var O="L"==(P?h[P-1]:c),R="L"==(N<u?h[N]:c),D=O==R?O?"L":"R":c,I=P;I<N;++I)h[I]=D;P=N-1}for(var j,V=[],H=0;H<u;)if(s.test(h[H])){var F=H;for(++H;H<u&&s.test(h[H]);++H);V.push(new e(0,F,H))}else{var z=H,q=V.length;for(++H;H<u&&"L"!=h[H];++H);for(var G=z;G<H;)if(l.test(h[G])){z<G&&V.splice(q,0,new e(1,z,G));var B=G;for(++G;G<H&&l.test(h[G]);++G);V.splice(q,0,new e(2,B,G)),z=G}else++G;z<H&&V.splice(q,0,new e(1,z,H))}return 1==V[0].level&&(j=n.match(/^\s+/))&&(V[0].from=j[0].length,V.unshift(new e(0,0,j[0].length))),1==g(V).level&&(j=n.match(/\s+$/))&&(g(V).to-=j[0].length,V.push(new e(0,u-j[0].length,u))),"rtl"==i?V.reverse():V}}(),Da=[],Ia=function(t,e,n){if(t.addEventListener)t.addEventListener(e,n,!1);else if(t.attachEvent)t.attachEvent("on"+e,n);else{var i=t._handlers||(t._handlers={});i[e]=(i[e]||Da).concat(n)}},ja=function(){if(Jo&&ta<9)return!1;var t=i("div");return"draggable"in t||"dragDrop"in t}(),Va=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],i=t.length;e<=i;){var r=t.indexOf("\n",e);r==-1&&(r=t.length);var o=t.slice(e,"\r"==t.charAt(r-1)?r-1:r),a=o.indexOf("\r");a!=-1?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=r+1)}return n}:function(t){return t.split(/\r\n?|\n/)},Ha=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},Fa=function(){var t=i("div");return"oncopy"in t||(t.setAttribute("oncopy","return;"),"function"==typeof t.oncopy)}(),za=null,qa={},Ga={},Ba={},$a=function(t,e){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};$a.prototype.eol=function(){return this.pos>=this.string.length},$a.prototype.sol=function(){return this.pos==this.lineStart},$a.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},$a.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},$a.prototype.eat=function(t){var e,n=this.string.charAt(this.pos);if(e="string"==typeof t?n==t:n&&(t.test?t.test(n):t(n)))return++this.pos,n},$a.prototype.eatWhile=function(t){for(var e=this.pos;this.eat(t););return this.pos>e},$a.prototype.eatSpace=function(){for(var t=this,e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++t.pos;return this.pos>e},$a.prototype.skipToEnd=function(){this.pos=this.string.length},$a.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},$a.prototype.backUp=function(t){this.pos-=t},$a.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=h(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.indentation=function(){return h(this.string,null,this.tabSize)-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.match=function(t,e,n){if("string"!=typeof t){var i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&e!==!1&&(this.pos+=i[0].length),i)}var r=function(t){return n?t.toLowerCase():t},o=this.string.substr(this.pos,t.length);if(r(o)==r(t))return e!==!1&&(this.pos+=t.length),!0},$a.prototype.current=function(){return this.string.slice(this.start,this.pos)},$a.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}};var Wa=function(t,e,n){this.text=t,it(this,e),this.height=n?n(this):1};Wa.prototype.lineNo=function(){return P(this)},Rt(Wa);var Ua,Xa={},Ya={},Qa=null,Za=null,Ka={left:0,right:0,top:0,bottom:0},Ja=0,ts=null;Jo?ts=-.53:Yo?ts=15:ia?ts=-.7:oa&&(ts=-1/3);var es=function(t,e,n){this.cm=n;var r=this.vert=i("div",[i("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=i("div",[i("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");t(r),t(o),Ia(r,"scroll",function(){r.clientHeight&&e(r.scrollTop,"vertical")}),Ia(o,"scroll",function(){o.clientWidth&&e(o.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,Jo&&ta<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};es.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,i=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?i+"px":"0";var r=t.viewHeight-(e?i:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+r)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?i+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?i:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?i:0,bottom:e?i:0}},es.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},es.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},es.prototype.zeroWidthHack=function(){var t=ha&&!aa?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new ba,this.disableVert=new ba},es.prototype.enableZeroWidthBar=function(t,e,n){function i(){var r=t.getBoundingClientRect(),o="vert"==n?document.elementFromPoint(r.right-1,(r.top+r.bottom)/2):document.elementFromPoint((r.right+r.left)/2,r.bottom-1);o!=t?t.style.pointerEvents="none":e.set(1e3,i)}t.style.pointerEvents="auto",e.set(1e3,i)},es.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var ns=function(){};ns.prototype.update=function(){return{bottom:0,right:0}},ns.prototype.setScrollLeft=function(){},ns.prototype.setScrollTop=function(){},ns.prototype.clear=function(){};var is={native:es,null:ns},rs=0,os=function(t,e,n){var i=t.display;this.viewport=e,this.visible=Hn(i,t.doc,e),this.editorIsHidden=!i.wrapper.offsetWidth,this.wrapperHeight=i.wrapper.clientHeight,this.wrapperWidth=i.wrapper.clientWidth,this.oldDisplayWidth=Ge(t),this.force=n,this.dims=bn(t),this.events=[]};os.prototype.signal=function(t,e){Ot(t,e)&&this.events.push(arguments)},os.prototype.finish=function(){for(var t=this,e=0;e<this.events.length;e++)Et.apply(null,t.events[e])};var as=function(t,e){this.ranges=t,this.primIndex=e};as.prototype.primary=function(){return this.ranges[this.primIndex]},as.prototype.equals=function(t){var e=this;if(t==this)return!0;if(t.primIndex!=this.primIndex||t.ranges.length!=this.ranges.length)return!1;for(var n=0;n<this.ranges.length;n++){var i=e.ranges[n],r=t.ranges[n];if(!j(i.anchor,r.anchor)||!j(i.head,r.head))return!1}return!0},as.prototype.deepCopy=function(){for(var t=this,e=[],n=0;n<this.ranges.length;n++)e[n]=new ss(V(t.ranges[n].anchor),V(t.ranges[n].head));return new as(e,this.primIndex)},as.prototype.somethingSelected=function(){for(var t=this,e=0;e<this.ranges.length;e++)if(!t.ranges[e].empty())return!0;return!1},as.prototype.contains=function(t,e){var n=this;e||(e=t);for(var i=0;i<this.ranges.length;i++){var r=n.ranges[i];if(I(e,r.from())>=0&&I(t,r.to())<=0)return i}return-1};var ss=function(t,e){this.anchor=t,this.head=e};ss.prototype.from=function(){return F(this.anchor,this.head)},ss.prototype.to=function(){return H(this.anchor,this.head)},ss.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};var ls=function(t){var e=this;this.lines=t,this.parent=null;for(var n=0,i=0;i<t.length;++i)t[i].parent=e,n+=t[i].height;this.height=n};ls.prototype.chunkSize=function(){return this.lines.length},ls.prototype.removeInner=function(t,e){for(var n=this,i=t,r=t+e;i<r;++i){var o=n.lines[i];n.height-=o.height,ce(o),Se(o,"delete")}this.lines.splice(t,e)},ls.prototype.collapse=function(t){t.push.apply(t,this.lines)},ls.prototype.insertInner=function(t,e,n){var i=this;this.height+=n,this.lines=this.lines.slice(0,t).concat(e).concat(this.lines.slice(t));for(var r=0;r<e.length;++r)e[r].parent=i},ls.prototype.iterN=function(t,e,n){for(var i=this,r=t+e;t<r;++t)if(n(i.lines[t]))return!0};var cs=function(t){var e=this;this.children=t;for(var n=0,i=0,r=0;r<t.length;++r){var o=t[r];n+=o.chunkSize(),i+=o.height,o.parent=e}this.size=n,this.height=i,this.parent=null};cs.prototype.chunkSize=function(){return this.size},cs.prototype.removeInner=function(t,e){var n=this;this.size-=e;for(var i=0;i<this.children.length;++i){var r=n.children[i],o=r.chunkSize();if(t<o){var a=Math.min(e,o-t),s=r.height;if(r.removeInner(t,a),n.height-=s-r.height,o==a&&(n.children.splice(i--,1),r.parent=null),0==(e-=a))break;t=0}else t-=o}if(this.size-e<25&&(this.children.length>1||!(this.children[0]instanceof ls))){var l=[];this.collapse(l),this.children=[new ls(l)],this.children[0].parent=this}},cs.prototype.collapse=function(t){for(var e=this,n=0;n<this.children.length;++n)e.children[n].collapse(t)},cs.prototype.insertInner=function(t,e,n){var i=this;this.size+=e.length,this.height+=n;for(var r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<=a){if(o.insertInner(t,e,n),o.lines&&o.lines.length>50){for(var s=o.lines.length%25+25,l=s;l<o.lines.length;){var c=new ls(o.lines.slice(l,l+=25));o.height-=c.height,i.children.splice(++r,0,c),c.parent=i}o.lines=o.lines.slice(0,s),i.maybeSpill()}break}t-=a}},cs.prototype.maybeSpill=function(){if(!(this.children.length<=10)){var t=this;do{var e=t.children.splice(t.children.length-5,5),n=new cs(e);if(t.parent){t.size-=n.size,t.height-=n.height;var i=d(t.parent.children,t);t.parent.children.splice(i+1,0,n)}else{var r=new cs(t.children);r.parent=t,t.children=[r,n],t=r}n.parent=t.parent}while(t.children.length>10);t.parent.maybeSpill()}},cs.prototype.iterN=function(t,e,n){for(var i=this,r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<a){var s=Math.min(e,a-t);if(o.iterN(t,s,n))return!0;if(0==(e-=s))break;t=0}else t-=a}};var us=function(t,e,n){var i=this;if(n)for(var r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);this.doc=t,this.node=e};us.prototype.clear=function(){var t=this,e=this.doc.cm,n=this.line.widgets,i=this.line,r=P(i);if(null!=r&&n){for(var o=0;o<n.length;++o)n[o]==t&&n.splice(o--,1);n.length||(i.widgets=null);var a=je(this);E(i,Math.max(0,i.height-a)),e&&(ui(e,function(){Or(e,i,-a),gi(e,r,"widget")}),Se(e,"lineWidgetCleared",e,this,r))}},us.prototype.changed=function(){var t=this,e=this.height,n=this.doc.cm,i=this.line;this.height=null;var r=je(this)-e;r&&(E(i,i.height+r),n&&ui(n,function(){n.curOp.forceUpdate=!0,Or(n,i,r),Se(n,"lineWidgetChanged",n,t,P(i))}))},Rt(us);var hs=0,ds=function(t,e){this.lines=[],this.type=e,this.doc=t,this.id=++hs};ds.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){var e=this.doc.cm,n=e&&!e.curOp;if(n&&ni(e),Ot(this,"clear")){var i=this.find();i&&Se(this,"clear",i.from,i.to)}for(var r=null,o=null,a=0;a<this.lines.length;++a){var s=t.lines[a],l=X(s.markedSpans,t);e&&!t.collapsed?gi(e,P(s),"text"):e&&(null!=l.to&&(o=P(s)),null!=l.from&&(r=P(s))),s.markedSpans=Y(s.markedSpans,l),null==l.from&&t.collapsed&&!mt(t.doc,s)&&e&&E(s,yn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var c=0;c<this.lines.length;++c){var u=ht(t.lines[c]),h=xt(u);h>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=h,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&pi(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&gr(e.doc)),e&&Se(e,"markerCleared",e,this,r,o),n&&ii(e),this.parent&&this.parent.clear()}},ds.prototype.find=function(t,e){var n=this;null==t&&"bookmark"==this.type&&(t=1);for(var i,r,o=0;o<this.lines.length;++o){var a=n.lines[o],s=X(a.markedSpans,n);if(null!=s.from&&(i=D(e?a:P(a),s.from),t==-1))return i;if(null!=s.to&&(r=D(e?a:P(a),s.to),1==t))return r}return i&&{from:i,to:r}},ds.prototype.changed=function(){var t=this,e=this.find(-1,!0),n=this,i=this.doc.cm;e&&i&&ui(i,function(){var r=e.line,o=P(e.line),a=Ye(i,o);if(a&&(nn(a),i.curOp.selectionChanged=i.curOp.forceUpdate=!0),i.curOp.updateMaxLine=!0,!mt(n.doc,r)&&null!=n.height){var s=n.height;n.height=null;var l=je(n)-s;l&&E(r,r.height+l)}Se(i,"markerChanged",i,t)})},ds.prototype.attachLine=function(t){if(!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;e.maybeHiddenMarkers&&d(e.maybeHiddenMarkers,this)!=-1||(e.maybeUnhiddenMarkers||(e.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(t)},ds.prototype.detachLine=function(t){if(this.lines.splice(d(this.lines,t),1),!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;(e.maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)}},Rt(ds);var fs=function(t,e){var n=this;this.markers=t,this.primary=e;for(var i=0;i<t.length;++i)t[i].parent=n};fs.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)t.markers[e].clear();Se(this,"clear")}},fs.prototype.find=function(t,e){return this.primary.find(t,e)},Rt(fs);var ps=0,gs=function(t,e,n,i,r){if(!(this instanceof gs))return new gs(t,e,n,i,r);null==n&&(n=0),cs.call(this,[new ls([new Wa("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var o=D(n,0);this.sel=Ni(o),this.history=new Wi(null),this.id=++ps,this.modeOption=e,this.lineSep=i,this.direction="rtl"==r?"rtl":"ltr",this.extend=!1,"string"==typeof t&&(t=this.splitLines(t)),zi(this,{from:o,to:o,text:t}),dr(this,Ni(o),Ta)};gs.prototype=x(cs.prototype,{constructor:gs,iter:function(t,e,n){n?this.iterN(t-this.first,e-t,n):this.iterN(this.first,this.first+this.size,t)},insert:function(t,e){for(var n=0,i=0;i<e.length;++i)n+=e[i].height;this.insertInner(t-this.first,e,n)},remove:function(t,e){this.removeInner(t-this.first,e)},getValue:function(t){var e=L(this,this.first,this.first+this.size);return t===!1?e:e.join(t||this.lineSeparator())},setValue:fi(function(t){var e=D(this.first,0),n=this.first+this.size-1;wr(this,{from:e,to:D(n,A(this,n).text.length),text:this.splitLines(t),origin:"setValue",full:!0},!0),this.cm&&this.cm.scrollTo(0,0),dr(this,Ni(e),Ta)}),replaceRange:function(t,e,n,i){e=q(this,e),n=n?q(this,n):e,Mr(this,t,e,n,i)},getRange:function(t,e,n){var i=M(this,q(this,t),q(this,e));return n===!1?i:i.join(n||this.lineSeparator())},getLine:function(t){var e=this.getLineHandle(t);return e&&e.text},getLineHandle:function(t){if(O(this,t))return A(this,t)},getLineNumber:function(t){return P(t)},getLineHandleVisualStart:function(t){return"number"==typeof t&&(t=A(this,t)),ht(t)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(t){return q(this,t)},getCursor:function(t){var e,n=this.sel.primary();return e=null==t||"head"==t?n.head:"anchor"==t?n.anchor:"end"==t||"to"==t||t===!1?n.to():n.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:fi(function(t,e,n){cr(this,q(this,"number"==typeof t?D(t,e||0):t),null,n)}),setSelection:fi(function(t,e,n){cr(this,q(this,t),q(this,e||t),n)}),extendSelection:fi(function(t,e,n){ar(this,q(this,t),e&&q(this,e),n)}),extendSelections:fi(function(t,e){sr(this,B(this,t),e)}),extendSelectionsBy:fi(function(t,e){var n=m(this.sel.ranges,t);sr(this,B(this,n),e)}),setSelections:fi(function(t,e,n){var i=this;if(t.length){for(var r=[],o=0;o<t.length;o++)r[o]=new ss(q(i,t[o].anchor),q(i,t[o].head));null==e&&(e=Math.min(t.length-1,this.sel.primIndex)),dr(this,Pi(r,e),n)}}),addSelection:fi(function(t,e,n){var i=this.sel.ranges.slice(0);i.push(new ss(q(this,t),q(this,e||t))),dr(this,Pi(i,i.length-1),n)}),getSelection:function(t){for(var e,n=this,i=this.sel.ranges,r=0;r<i.length;r++){var o=M(n,i[r].from(),i[r].to());e=e?e.concat(o):o}return t===!1?e:e.join(t||this.lineSeparator())},getSelections:function(t){for(var e=this,n=[],i=this.sel.ranges,r=0;r<i.length;r++){var o=M(e,i[r].from(),i[r].to());t!==!1&&(o=o.join(t||e.lineSeparator())),n[r]=o}return n},replaceSelection:function(t,e,n){for(var i=[],r=0;r<this.sel.ranges.length;r++)i[r]=t;this.replaceSelections(i,e,n||"+input")},replaceSelections:fi(function(t,e,n){for(var i=this,r=[],o=this.sel,a=0;a<o.ranges.length;a++){var s=o.ranges[a];r[a]={from:s.from(),to:s.to(),text:i.splitLines(t[a]),origin:n}}for(var l=e&&"end"!=e&&ji(this,r,e),c=r.length-1;c>=0;c--)wr(i,r[c]);l?hr(this,l):this.cm&&ti(this.cm)}),undo:fi(function(){Cr(this,"undo")}),redo:fi(function(){Cr(this,"redo")}),undoSelection:fi(function(){Cr(this,"undo",!0)}),redoSelection:fi(function(){Cr(this,"redo",!0)}),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,i=0;i<t.done.length;i++)t.done[i].ranges||++e;for(var r=0;r<t.undone.length;r++)t.undone[r].ranges||++n;return{undo:e,redo:n}},clearHistory:function(){this.history=new Wi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(t){return t&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(t){return this.history.generation==(t||this.cleanGeneration)},getHistory:function(){return{done:rr(this.history.done),undone:rr(this.history.undone)}},setHistory:function(t){var e=this.history=new Wi(this.history.maxGeneration);e.done=rr(t.done.slice(0),null,!0),e.undone=rr(t.undone.slice(0),null,!0)},setGutterMarker:fi(function(t,e,n){return Nr(this,t,"gutter",function(t){var i=t.gutterMarkers||(t.gutterMarkers={});return i[e]=n,!n&&w(i)&&(t.gutterMarkers=null),!0})}),clearGutter:fi(function(t){var e=this;this.iter(function(n){n.gutterMarkers&&n.gutterMarkers[t]&&Nr(e,n,"gutter",function(){return n.gutterMarkers[t]=null,w(n.gutterMarkers)&&(n.gutterMarkers=null),!0})})}),lineInfo:function(t){var e;if("number"==typeof t){if(!O(this,t))return null;if(e=t,t=A(this,t),!t)return null}else if(e=P(t),null==e)return null;return{line:e,handle:t,text:t.text,gutterMarkers:t.gutterMarkers,textClass:t.textClass,bgClass:t.bgClass,wrapClass:t.wrapClass,widgets:t.widgets}},addLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass";if(e[r]){if(t(i).test(e[r]))return!1;e[r]+=" "+i}else e[r]=i;return!0})}),removeLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass",o=e[r];if(!o)return!1;if(null==i)e[r]=null;else{var a=o.match(t(i));if(!a)return!1;var s=a.index+a[0].length;e[r]=o.slice(0,a.index)+(a.index&&s!=o.length?" ":"")+o.slice(s)||null}return!0})}),addLineWidget:fi(function(t,e,n){return Rr(this,t,e,n)}),removeLineWidget:function(t){t.clear()},markText:function(t,e,n){return Dr(this,q(this,t),q(this,e),n,n&&n.type||"range")},setBookmark:function(t,e){var n={replacedWith:e&&(null==e.nodeType?e.widget:e),insertLeft:e&&e.insertLeft,clearWhenEmpty:!1,shared:e&&e.shared,handleMouseEvents:e&&e.handleMouseEvents};return t=q(this,t),Dr(this,t,t,n,"bookmark")},findMarksAt:function(t){t=q(this,t);var e=[],n=A(this,t.line).markedSpans;if(n)for(var i=0;i<n.length;++i){var r=n[i];(null==r.from||r.from<=t.ch)&&(null==r.to||r.to>=t.ch)&&e.push(r.marker.parent||r.marker)}return e},findMarks:function(t,e,n){t=q(this,t),e=q(this,e);var i=[],r=t.line;return this.iter(t.line,e.line+1,function(o){var a=o.markedSpans;if(a)for(var s=0;s<a.length;s++){var l=a[s];null!=l.to&&r==t.line&&t.ch>=l.to||null==l.from&&r!=t.line||null!=l.from&&r==e.line&&l.from>=e.ch||n&&!n(l.marker)||i.push(l.marker.parent||l.marker)}++r}),i},getAllMarks:function(){var t=[];return this.iter(function(e){var n=e.markedSpans;if(n)for(var i=0;i<n.length;++i)null!=n[i].from&&t.push(n[i].marker)}),t},posFromIndex:function(t){var e,n=this.first,i=this.lineSeparator().length;return this.iter(function(r){var o=r.text.length+i;return o>t?(e=t,!0):(t-=o,void++n)}),q(this,D(n,e))},indexFromPos:function(t){t=q(this,t);var e=t.ch;if(t.line<this.first||t.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,t.line,function(t){e+=t.text.length+n}),e},copy:function(t){var e=new gs(L(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return e.scrollTop=this.scrollTop,e.scrollLeft=this.scrollLeft,e.sel=this.sel,e.extend=!1,t&&(e.history.undoDepth=this.history.undoDepth,e.setHistory(this.getHistory())),e},linkedDoc:function(t){t||(t={});var e=this.first,n=this.first+this.size;null!=t.from&&t.from>e&&(e=t.from),null!=t.to&&t.to<n&&(n=t.to);var i=new gs(L(this,e,n),t.mode||this.modeOption,e,this.lineSep,this.direction);return t.sharedHist&&(i.history=this.history),(this.linked||(this.linked=[])).push({doc:i,sharedHist:t.sharedHist}),i.linked=[{doc:this,isParent:!0,sharedHist:t.sharedHist}],Vr(i,jr(this)),i},unlinkDoc:function(t){var e=this;if(t instanceof Ao&&(t=t.doc),this.linked)for(var n=0;n<this.linked.length;++n){var i=e.linked[n];if(i.doc==t){e.linked.splice(n,1),t.unlinkDoc(e),Hr(jr(e));break}}if(t.history==this.history){var r=[t.id];qi(t,function(t){return r.push(t.id)},!0),t.history=new Wi(null),t.history.done=rr(this.history.done,r),t.history.undone=rr(this.history.undone,r)}},iterLinkedDocs:function(t){qi(this,t)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(t){return this.lineSep?t.split(this.lineSep):Va(t)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:fi(function(t){"rtl"!=t&&(t="ltr"),t!=this.direction&&(this.direction=t,this.iter(function(t){return t.order=null}),this.cm&&$i(this.cm))})}),gs.prototype.eachLine=gs.prototype.iter;for(var ms=0,vs=!1,ys={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},xs=0;xs<10;xs++)ys[xs+48]=ys[xs+96]=String(xs);for(var bs=65;bs<=90;bs++)ys[bs]=String.fromCharCode(bs);for(var _s=1;_s<=12;_s++)ys[_s+111]=ys[_s+63235]="F"+_s;var ws={};ws.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},ws.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},ws.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},ws.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},ws.default=ha?ws.macDefault:ws.pcDefault;var Ss,Cs,Ts={selectAll:br,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),Ta)},killLine:function(t){return to(t,function(e){if(e.empty()){var n=A(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line<t.lastLine()?{from:e.head,to:D(e.head.line+1,0)}:{from:e.head,to:D(e.head.line,n)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return to(t,function(e){return{from:D(e.from().line,0),to:q(t.doc,D(e.to().line+1,0))}})},delLineLeft:function(t){return to(t,function(t){return{from:D(t.from().line,0),to:t.from()}})},delWrappedLineLeft:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return{from:i,to:e.from()}})},delWrappedLineRight:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div");return{from:e.from(),to:i}})},undo:function(t){return t.undo()},redo:function(t){return t.redo()},undoSelection:function(t){return t.undoSelection()},redoSelection:function(t){return t.redoSelection()},goDocStart:function(t){return t.extendSelection(D(t.firstLine(),0))},goDocEnd:function(t){return t.extendSelection(D(t.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return eo(t,e.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return io(t,e.head)},{origin:"+move",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return no(t,e.head.line)},{origin:"+move",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div")},Aa)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:0,top:n},"div")},Aa)},goLineLeftSmart:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return i.ch<t.getLine(i.line).search(/\S/)?io(t,e.head):i},Aa)},goLineUp:function(t){return t.moveV(-1,"line")},goLineDown:function(t){return t.moveV(1,"line")},goPageUp:function(t){return t.moveV(-1,"page")},goPageDown:function(t){return t.moveV(1,"page")},goCharLeft:function(t){return t.moveH(-1,"char")},goCharRight:function(t){return t.moveH(1,"char")},goColumnLeft:function(t){return t.moveH(-1,"column")},goColumnRight:function(t){return t.moveH(1,"column")},goWordLeft:function(t){return t.moveH(-1,"word")},goGroupRight:function(t){return t.moveH(1,"group")},goGroupLeft:function(t){return t.moveH(-1,"group");
-},goWordRight:function(t){return t.moveH(1,"word")},delCharBefore:function(t){return t.deleteH(-1,"char")},delCharAfter:function(t){return t.deleteH(1,"char")},delWordBefore:function(t){return t.deleteH(-1,"word")},delWordAfter:function(t){return t.deleteH(1,"word")},delGroupBefore:function(t){return t.deleteH(-1,"group")},delGroupAfter:function(t){return t.deleteH(1,"group")},indentAuto:function(t){return t.indentSelection("smart")},indentMore:function(t){return t.indentSelection("add")},indentLess:function(t){return t.indentSelection("subtract")},insertTab:function(t){return t.replaceSelection("\t")},insertSoftTab:function(t){for(var e=[],n=t.listSelections(),i=t.options.tabSize,r=0;r<n.length;r++){var o=n[r].from(),a=h(t.getLine(o.line),o.ch,i);e.push(p(i-a%i))}t.replaceSelections(e)},defaultTab:function(t){t.somethingSelected()?t.indentSelection("add"):t.execCommand("insertTab")},transposeChars:function(t){return ui(t,function(){for(var e=t.listSelections(),n=[],i=0;i<e.length;i++)if(e[i].empty()){var r=e[i].head,o=A(t.doc,r.line).text;if(o)if(r.ch==o.length&&(r=new D(r.line,r.ch-1)),r.ch>0)r=new D(r.line,r.ch+1),t.replaceRange(o.charAt(r.ch-1)+o.charAt(r.ch-2),D(r.line,r.ch-2),r,"+transpose");else if(r.line>t.doc.first){var a=A(t.doc,r.line-1).text;a&&(r=new D(r.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),D(r.line-1,a.length-1),r,"+transpose"))}n.push(new ss(r,r))}t.setSelections(n)})},newlineAndIndent:function(t){return ui(t,function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var i=0;i<e.length;i++)t.indentLine(e[i].from().line,null,!0);ti(t)})},openLine:function(t){return t.replaceSelection("\n","start")},toggleOverwrite:function(t){return t.toggleOverwrite()}},ks=new ba,As=null,Ms={toString:function(){return"CodeMirror.Init"}},Ls={},Es={};Ao.defaults=Ls,Ao.optionHandlers=Es;var Ps=[];Ao.defineInitHook=function(t){return Ps.push(t)};var Ns=null,Os=function(t){var e=t.optionHandlers,n=t.helpers={};t.prototype={constructor:t,focus:function(){window.focus(),this.display.input.focus()},setOption:function(t,n){var i=this.options,r=i[t];i[t]==n&&"mode"!=t||(i[t]=n,e.hasOwnProperty(t)&&hi(this,e[t])(this,n,r),Et(this,"optionChange",this,t))},getOption:function(t){return this.options[t]},getDoc:function(){return this.doc},addKeyMap:function(t,e){this.state.keyMaps[e?"push":"unshift"](Jr(t))},removeKeyMap:function(t){for(var e=this.state.keyMaps,n=0;n<e.length;++n)if(e[n]==t||e[n].name==t)return e.splice(n,1),!0},addOverlay:di(function(e,n){var i=e.token?e:t.getMode(this.options,e);if(i.startState)throw new Error("Overlays may not be stateful.");v(this.state.overlays,{mode:i,modeSpec:e,opaque:n&&n.opaque,priority:n&&n.priority||0},function(t){return t.priority}),this.state.modeGen++,pi(this)}),removeOverlay:di(function(t){for(var e=this,n=this.state.overlays,i=0;i<n.length;++i){var r=n[i].modeSpec;if(r==t||"string"==typeof t&&r.name==t)return n.splice(i,1),e.state.modeGen++,void pi(e)}}),indentLine:di(function(t,e,n){"string"!=typeof e&&"number"!=typeof e&&(e=null==e?this.options.smartIndent?"smart":"prev":e?"add":"subtract"),O(this.doc,t)&&Lo(this,t,e,n)}),indentSelection:di(function(t){for(var e=this,n=this.doc.sel.ranges,i=-1,r=0;r<n.length;r++){var o=n[r];if(o.empty())o.head.line>i&&(Lo(e,o.head.line,t,!0),i=o.head.line,r==e.doc.sel.primIndex&&ti(e));else{var a=o.from(),s=o.to(),l=Math.max(i,a.line);i=Math.min(e.lastLine(),s.line-(s.ch?0:1))+1;for(var c=l;c<i;++c)Lo(e,c,t);var u=e.doc.sel.ranges;0==a.ch&&n.length==u.length&&u[r].from().ch>0&&lr(e.doc,r,new ss(a,u[r].to()),Ta)}}}),getTokenAt:function(t,e){return re(this,t,e)},getLineTokens:function(t,e){return re(this,D(t),e,!0)},getTokenTypeAt:function(t){t=q(this.doc,t);var e,n=Jt(this,A(this.doc,t.line)),i=0,r=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=i+r>>1;if((a?n[2*a-1]:0)>=o)r=a;else{if(!(n[2*a+1]<o)){e=n[2*a+2];break}i=a+1}}var s=e?e.indexOf("overlay "):-1;return s<0?e:0==s?null:e.slice(0,s-1)},getModeAt:function(e){var n=this.doc.mode;return n.innerMode?t.innerMode(n,this.getTokenAt(e).state).mode:n},getHelper:function(t,e){return this.getHelpers(t,e)[0]},getHelpers:function(t,e){var i=this,r=[];if(!n.hasOwnProperty(e))return r;var o=n[e],a=this.getModeAt(t);if("string"==typeof a[e])o[a[e]]&&r.push(o[a[e]]);else if(a[e])for(var s=0;s<a[e].length;s++){var l=o[a[e][s]];l&&r.push(l)}else a.helperType&&o[a.helperType]?r.push(o[a.helperType]):o[a.name]&&r.push(o[a.name]);for(var c=0;c<o._global.length;c++){var u=o._global[c];u.pred(a,i)&&d(r,u.val)==-1&&r.push(u.val)}return r},getStateAfter:function(t,e){var n=this.doc;return t=z(n,null==t?n.first+n.size-1:t),te(this,t+1,e)},cursorCoords:function(t,e){var n,i=this.doc.sel.primary();return n=null==t?i.head:"object"==typeof t?q(this.doc,t):t?i.from():i.to(),hn(this,n,e||"page")},charCoords:function(t,e){return un(this,q(this.doc,t),e||"page")},coordsChar:function(t,e){return t=cn(this,t,e||"page"),pn(this,t.left,t.top)},lineAtHeight:function(t,e){return t=cn(this,{top:t,left:0},e||"page").top,N(this.doc,t+this.display.viewOffset)},heightAtLine:function(t,e,n){var i,r=!1;if("number"==typeof t){var o=this.doc.first+this.doc.size-1;t<this.doc.first?t=this.doc.first:t>o&&(t=o,r=!0),i=A(this.doc,t)}else i=t;return ln(this,i,{top:0,left:0},e||"page",n||r).top+(r?this.doc.height-yt(i):0)},defaultTextHeight:function(){return yn(this.display)},defaultCharWidth:function(){return xn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,i,r){var o=this.display;t=hn(this,q(this.doc,t));var a=t.bottom,s=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==i)a=t.top;else if("above"==i||"near"==i){var l=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==i||t.bottom+e.offsetHeight>l)&&t.top>e.offsetHeight?a=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(a=t.bottom),s+e.offsetWidth>c&&(s=c-e.offsetWidth)}e.style.top=a+"px",e.style.left=e.style.right="","right"==r?(s=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==r?s=0:"middle"==r&&(s=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=s+"px"),n&&Zn(this,{left:s,top:a,right:s+e.offsetWidth,bottom:a+e.offsetHeight})},triggerOnKeyDown:di(co),triggerOnKeyPress:di(fo),triggerOnKeyUp:ho,execCommand:function(t){if(Ts.hasOwnProperty(t))return Ts[t].call(null,this)},triggerElectric:di(function(t){Oo(this,t)}),findPosH:function(t,e,n,i){var r=this,o=1;e<0&&(o=-1,e=-e);for(var a=q(this.doc,t),s=0;s<e&&(a=jo(r.doc,a,o,n,i),!a.hitSide);++s);return a},moveH:di(function(t,e){var n=this;this.extendSelectionsBy(function(i){return n.display.shift||n.doc.extend||i.empty()?jo(n.doc,i.head,t,e,n.options.rtlMoveVisually):t<0?i.from():i.to()},Aa)}),deleteH:di(function(t,e){var n=this.doc.sel,i=this.doc;n.somethingSelected()?i.replaceSelection("",null,"+delete"):to(this,function(n){var r=jo(i,n.head,t,e,!1);return t<0?{from:r,to:n.head}:{from:n.head,to:r}})}),findPosV:function(t,e,n,i){var r=this,o=1,a=i;e<0&&(o=-1,e=-e);for(var s=q(this.doc,t),l=0;l<e;++l){var c=hn(r,s,"div");if(null==a?a=c.left:c.left=a,s=Vo(r,c,o,n),s.hitSide)break}return s},moveV:di(function(t,e){var n=this,i=this.doc,r=[],o=!this.display.shift&&!i.extend&&i.sel.somethingSelected();if(i.extendSelectionsBy(function(a){if(o)return t<0?a.from():a.to();var s=hn(n,a.head,"div");null!=a.goalColumn&&(s.left=a.goalColumn),r.push(s.left);var l=Vo(n,s,t,e);return"page"==e&&a==i.sel.primary()&&Jn(n,null,un(n,l,"div").top-s.top),l},Aa),r.length)for(var a=0;a<i.sel.ranges.length;a++)i.sel.ranges[a].goalColumn=r[a]}),findWordAt:function(t){var e=this.doc,n=A(e,t.line).text,i=t.ch,r=t.ch;if(n){var o=this.getHelper(t,"wordChars");"before"!=t.sticky&&r!=n.length||!i?++r:--i;for(var a=n.charAt(i),s=_(a,o)?function(t){return _(t,o)}:/\s/.test(a)?function(t){return/\s/.test(t)}:function(t){return!/\s/.test(t)&&!_(t)};i>0&&s(n.charAt(i-1));)--i;for(;r<n.length&&s(n.charAt(r));)++r}return new ss(D(t.line,i),D(t.line,r))},toggleOverwrite:function(t){null!=t&&t==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?s(this.display.cursorDiv,"CodeMirror-overwrite"):ya(this.display.cursorDiv,"CodeMirror-overwrite"),Et(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==a()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:di(function(t,e){null==t&&null==e||ei(this),null!=t&&(this.curOp.scrollLeft=t),null!=e&&(this.curOp.scrollTop=e)}),getScrollInfo:function(){var t=this.display.scroller;return{left:t.scrollLeft,top:t.scrollTop,height:t.scrollHeight-qe(this)-this.display.barHeight,width:t.scrollWidth-qe(this)-this.display.barWidth,clientHeight:Be(this),clientWidth:Ge(this)}},scrollIntoView:di(function(t,e){if(null==t?(t={from:this.doc.sel.primary().head,to:null},null==e&&(e=this.options.cursorScrollMargin)):"number"==typeof t?t={from:D(t,0),to:null}:null==t.from&&(t={from:t,to:null}),t.to||(t.to=t.from),t.margin=e||0,null!=t.from.line)ei(this),this.curOp.scrollToPos=t;else{var n=Kn(this,{left:Math.min(t.from.left,t.to.left),top:Math.min(t.from.top,t.to.top)-t.margin,right:Math.max(t.from.right,t.to.right),bottom:Math.max(t.from.bottom,t.to.bottom)+t.margin});this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:di(function(t,e){var n=this,i=function(t){return"number"==typeof t||/^\d+$/.test(String(t))?t+"px":t};null!=t&&(this.display.wrapper.style.width=i(t)),null!=e&&(this.display.wrapper.style.height=i(e)),this.options.lineWrapping&&rn(this);var r=this.display.viewFrom;this.doc.iter(r,this.display.viewTo,function(t){if(t.widgets)for(var e=0;e<t.widgets.length;e++)if(t.widgets[e].noHScroll){gi(n,r,"widget");break}++r}),this.curOp.forceUpdate=!0,Et(this,"refresh",this)}),operation:function(t){return ui(this,t)},refresh:di(function(){var t=this.display.cachedTextHeight;pi(this),this.curOp.forceUpdate=!0,on(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),Ai(this),(null==t||Math.abs(t-yn(this.display))>.5)&&Sn(this),Et(this,"refresh",this)}),swapDoc:di(function(t){var e=this.doc;return e.cm=null,Gi(this,t),on(this),this.display.input.reset(),this.scrollTo(t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,Se(this,"swapDoc",this,e),e}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Rt(t),t.registerHelper=function(e,i,r){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][i]=r},t.registerGlobalHelper=function(e,i,r,o){t.registerHelper(e,i,o),n[e]._global.push({pred:r,val:o})}},Rs=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ba,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Rs.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),"cut"==t.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type&&r.operation(function(){r.setSelections(e.ranges,0,Ta),r.replaceSelection("",null,"cut")})}if(t.clipboardData){t.clipboardData.clearData();var n=Ns.text.join("\n");if(t.clipboardData.setData("Text",n),t.clipboardData.getData("Text")==n)return void t.preventDefault()}var a=Io(),s=a.firstChild;r.display.lineSpace.insertBefore(a,r.display.lineSpace.firstChild),s.value=Ns.text.join("\n");var l=document.activeElement;xa(s),setTimeout(function(){r.display.lineSpace.removeChild(a),l.focus(),l==o&&i.showPrimarySelection()},50)}}var n=this,i=this,r=i.cm,o=i.div=t.lineDiv;Do(o,r.options.spellcheck),Ia(o,"paste",function(t){Pt(r,t)||No(t,r)||ta<=11&&setTimeout(hi(r,function(){return n.updateFromDOM()}),20)}),Ia(o,"compositionstart",function(t){n.composing={data:t.data,done:!1}}),Ia(o,"compositionupdate",function(t){n.composing||(n.composing={data:t.data,done:!1})}),Ia(o,"compositionend",function(t){n.composing&&(t.data!=n.composing.data&&n.readFromDOMSoon(),n.composing.done=!0)}),Ia(o,"touchstart",function(){return i.forceCompositionEnd()}),Ia(o,"input",function(){n.composing||n.readFromDOMSoon()}),Ia(o,"copy",e),Ia(o,"cut",e)},Rs.prototype.prepareSelection=function(){var t=An(this.cm,!1);return t.focus=this.cm.state.focused,t},Rs.prototype.showSelection=function(t,e){t&&this.cm.display.view.length&&((t.focus||e)&&this.showPrimarySelection(),this.showMultipleSelections(t))},Rs.prototype.showPrimarySelection=function(){var t=window.getSelection(),e=this.cm,n=e.doc.sel.primary(),i=n.from(),r=n.to();if(e.display.viewTo==e.display.viewFrom||i.line>=e.display.viewTo||r.line<e.display.viewFrom)return void t.removeAllRanges();var o=Go(e,t.anchorNode,t.anchorOffset),a=Go(e,t.focusNode,t.focusOffset);if(!o||o.bad||!a||a.bad||0!=I(F(o,a),i)||0!=I(H(o,a),r)){var s=e.display.view,l=i.line>=e.display.viewFrom&&Ho(e,i)||{node:s[0].measure.map[2],offset:0},c=r.line<e.display.viewTo&&Ho(e,r);if(!c){var u=s[s.length-1].measure,h=u.maps?u.maps[u.maps.length-1]:u.map;c={node:h[h.length-1],offset:h[h.length-2]-h[h.length-3]}}if(!l||!c)return void t.removeAllRanges();var d,f=t.rangeCount&&t.getRangeAt(0);try{d=ga(l.node,l.offset,c.offset,c.node)}catch(t){}d&&(!Yo&&e.state.focused?(t.collapse(l.node,l.offset),d.collapsed||(t.removeAllRanges(),t.addRange(d))):(t.removeAllRanges(),t.addRange(d)),f&&null==t.anchorNode?t.addRange(f):Yo&&this.startGracePeriod()),this.rememberSelection()}},Rs.prototype.startGracePeriod=function(){var t=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){t.gracePeriod=!1,t.selectionChanged()&&t.cm.operation(function(){return t.cm.curOp.selectionChanged=!0})},20)},Rs.prototype.showMultipleSelections=function(t){n(this.cm.display.cursorDiv,t.cursors),n(this.cm.display.selectionDiv,t.selection)},Rs.prototype.rememberSelection=function(){var t=window.getSelection();this.lastAnchorNode=t.anchorNode,this.lastAnchorOffset=t.anchorOffset,this.lastFocusNode=t.focusNode,this.lastFocusOffset=t.focusOffset},Rs.prototype.selectionInEditor=function(){var t=window.getSelection();if(!t.rangeCount)return!1;var e=t.getRangeAt(0).commonAncestorContainer;return o(this.div,e)},Rs.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Rs.prototype.blur=function(){this.div.blur()},Rs.prototype.getField=function(){return this.div},Rs.prototype.supportsTouch=function(){return!0},Rs.prototype.receivedFocus=function(){function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))}var e=this;this.selectionInEditor()?this.pollSelection():ui(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,t)},Rs.prototype.selectionChanged=function(){var t=window.getSelection();return t.anchorNode!=this.lastAnchorNode||t.anchorOffset!=this.lastAnchorOffset||t.focusNode!=this.lastFocusNode||t.focusOffset!=this.lastFocusOffset},Rs.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var t=window.getSelection(),e=this.cm;if(ca&&ia&&this.cm.options.gutters.length&&Fo(t.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var n=Go(e,t.anchorNode,t.anchorOffset),i=Go(e,t.focusNode,t.focusOffset);n&&i&&ui(e,function(){dr(e.doc,Ni(n,i),Ta),(n.bad||i.bad)&&(e.curOp.selectionChanged=!0)})}}},Rs.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var t=this.cm,e=t.display,n=t.doc.sel.primary(),i=n.from(),r=n.to();if(0==i.ch&&i.line>t.firstLine()&&(i=D(i.line-1,A(t.doc,i.line-1).length)),r.ch==A(t.doc,r.line).text.length&&r.line<t.lastLine()&&(r=D(r.line+1,0)),i.line<e.viewFrom||r.line>e.viewTo-1)return!1;var o,a,s;i.line==e.viewFrom||0==(o=Tn(t,i.line))?(a=P(e.view[0].line),s=e.view[0].node):(a=P(e.view[o].line),s=e.view[o-1].node.nextSibling);var l,c,u=Tn(t,r.line);if(u==e.view.length-1?(l=e.viewTo-1,c=e.lineDiv.lastChild):(l=P(e.view[u+1].line)-1,c=e.view[u+1].node.previousSibling),!s)return!1;for(var h=t.doc.splitLines(qo(t,s,c,a,l)),d=M(t.doc,D(a,0),D(l,A(t.doc,l).text.length));h.length>1&&d.length>1;)if(g(h)==g(d))h.pop(),d.pop(),l--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),a++}for(var f=0,p=0,m=h[0],v=d[0],y=Math.min(m.length,v.length);f<y&&m.charCodeAt(f)==v.charCodeAt(f);)++f;for(var x=g(h),b=g(d),_=Math.min(x.length-(1==h.length?f:0),b.length-(1==d.length?f:0));p<_&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==d.length&&a==i.line)for(;f&&f>i.ch&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=x.slice(0,x.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var w=D(a,f),S=D(l,d.length?g(d).length-p:0);return h.length>1||h[0]||I(w,S)?(Mr(t.doc,h,w,S,"+input"),!0):void 0},Rs.prototype.ensurePolled=function(){this.forceCompositionEnd()},Rs.prototype.reset=function(){this.forceCompositionEnd()},Rs.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Rs.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()},80))},Rs.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||ui(this.cm,function(){return pi(t.cm)})},Rs.prototype.setUneditable=function(t){t.contentEditable="false"},Rs.prototype.onKeyPress=function(t){0!=t.charCode&&(t.preventDefault(),this.cm.isReadOnly()||hi(this.cm,Po)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Rs.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Rs.prototype.onContextMenu=function(){},Rs.prototype.resetPosition=function(){},Rs.prototype.needsContentAttribute=!0;var Ds=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new ba,this.inaccurateSelection=!1,this.hasSelection=!1,this.composing=null};Ds.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),i.inaccurateSelection&&(i.prevInput="",i.inaccurateSelection=!1,a.value=Ns.text.join("\n"),xa(a));else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,Ta):(i.prevInput="",a.value=e.text.join("\n"),xa(a))}"cut"==t.type&&(r.state.cutIncoming=!0)}}var n=this,i=this,r=this.cm,o=this.wrapper=Io(),a=this.textarea=o.firstChild;t.wrapper.insertBefore(o,t.wrapper.firstChild),la&&(a.style.width="0px"),Ia(a,"input",function(){Jo&&ta>=9&&n.hasSelection&&(n.hasSelection=null),i.poll()}),Ia(a,"paste",function(t){Pt(r,t)||No(t,r)||(r.state.pasteIncoming=!0,i.fastPoll())}),Ia(a,"cut",e),Ia(a,"copy",e),Ia(t.scroller,"paste",function(e){Ve(t,e)||Pt(r,e)||(r.state.pasteIncoming=!0,i.focus())}),Ia(t.lineSpace,"selectstart",function(e){Ve(t,e)||Dt(e)}),Ia(a,"compositionstart",function(){var t=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Ia(a,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ds.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,i=An(t);if(t.options.moveInputWithCursor){var r=hn(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),a=e.lineDiv.getBoundingClientRect();i.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,r.top+a.top-o.top)),i.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,r.left+a.left-o.left))}return i},Ds.prototype.showSelection=function(t){var e=this.cm,i=e.display;n(i.cursorDiv,t.cursors),n(i.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},Ds.prototype.reset=function(t){if(!this.contextMenuPending){var e,n,i=this.cm,r=i.doc;if(i.somethingSelected()){this.prevInput="";var o=r.sel.primary();e=Fa&&(o.to().line-o.from().line>100||(n=i.getSelection()).length>1e3);var a=e?"-":n||i.getSelection();this.textarea.value=a,i.state.focused&&xa(this.textarea),Jo&&ta>=9&&(this.hasSelection=a)}else t||(this.prevInput=this.textarea.value="",Jo&&ta>=9&&(this.hasSelection=null));this.inaccurateSelection=e}},Ds.prototype.getField=function(){return this.textarea},Ds.prototype.supportsTouch=function(){return!1},Ds.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!ua||a()!=this.textarea))try{this.textarea.focus()}catch(t){}},Ds.prototype.blur=function(){this.textarea.blur()},Ds.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ds.prototype.receivedFocus=function(){this.slowPoll()},Ds.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){t.poll(),t.cm.state.focused&&t.slowPoll()})},Ds.prototype.fastPoll=function(){function t(){var i=n.poll();i||e?(n.pollingFast=!1,n.slowPoll()):(e=!0,n.polling.set(60,t))}var e=!1,n=this;n.pollingFast=!0,n.polling.set(20,t)},Ds.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,i=this.prevInput;if(this.contextMenuPending||!e.state.focused||Ha(n)&&!i&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=n.value;if(r==i&&!e.somethingSelected())return!1;if(Jo&&ta>=9&&this.hasSelection===r||ha&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=r.charCodeAt(0);if(8203!=o||i||(i="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,s=Math.min(i.length,r.length);a<s&&i.charCodeAt(a)==r.charCodeAt(a);)++a;return ui(e,function(){Po(e,r.slice(a),i.length-a,null,t.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=r,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ds.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ds.prototype.onKeyPress=function(){Jo&&ta>=9&&(this.hasSelection=null),this.fastPoll()},Ds.prototype.onContextMenu=function(t){function e(){if(null!=a.selectionStart){var t=r.somethingSelected(),e="​"+(t?a.value:"");a.value="⇚",a.value=e,i.prevInput=t?"":"​",a.selectionStart=1,a.selectionEnd=e.length,o.selForContextMenu=r.doc.sel}}function n(){if(i.contextMenuPending=!1,i.wrapper.style.cssText=h,a.style.cssText=u,Jo&&ta<9&&o.scrollbars.setScrollTop(o.scroller.scrollTop=l),null!=a.selectionStart){(!Jo||Jo&&ta<9)&&e();var t=0,n=function(){o.selForContextMenu==r.doc.sel&&0==a.selectionStart&&a.selectionEnd>0&&"​"==i.prevInput?hi(r,br)(r):t++<10?o.detectingSelectAll=setTimeout(n,500):(o.selForContextMenu=null,o.input.reset())};o.detectingSelectAll=setTimeout(n,200)}}var i=this,r=i.cm,o=r.display,a=i.textarea,s=Cn(r,t),l=o.scroller.scrollTop;if(s&&!ra){var c=r.options.resetSelectionOnContextMenu;c&&r.doc.sel.contains(s)==-1&&hi(r,dr)(r.doc,Ni(s),Ta);var u=a.style.cssText,h=i.wrapper.style.cssText;i.wrapper.style.cssText="position: absolute";var d=i.wrapper.getBoundingClientRect();a.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(t.clientY-d.top-5)+"px; left: "+(t.clientX-d.left-5)+"px;\n      z-index: 1000; background: "+(Jo?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var f;if(ea&&(f=window.scrollY),o.input.focus(),ea&&window.scrollTo(null,f),o.input.reset(),r.somethingSelected()||(a.value=i.prevInput=" "),i.contextMenuPending=!0,o.selForContextMenu=r.doc.sel,clearTimeout(o.detectingSelectAll),Jo&&ta>=9&&e(),va){Vt(t);var p=function(){Lt(window,"mouseup",p),setTimeout(n,20)};Ia(window,"mouseup",p)}else setTimeout(n,50)}},Ds.prototype.readOnlyChanged=function(t){t||this.reset()},Ds.prototype.setUneditable=function(){},Ds.prototype.needsContentAttribute=!1,So(Ao),Os(Ao);var Is="iter insert remove copy getEditor constructor".split(" ");for(var js in gs.prototype)gs.prototype.hasOwnProperty(js)&&d(Is,js)<0&&(Ao.prototype[js]=function(t){return function(){return t.apply(this.doc,arguments)}}(gs.prototype[js]));return Rt(gs),Ao.inputStyles={textarea:Ds,contenteditable:Rs},Ao.defineMode=function(t){Ao.defaults.mode||"null"==t||(Ao.defaults.mode=t),Bt.apply(this,arguments)},Ao.defineMIME=$t,Ao.defineMode("null",function(){return{token:function(t){return t.skipToEnd()}}}),Ao.defineMIME("text/plain","null"),Ao.defineExtension=function(t,e){Ao.prototype[t]=e},Ao.defineDocExtension=function(t,e){gs.prototype[t]=e},Ao.fromTextArea=$o,Wo(Ao),Ao.version="5.25.2",Ao}),define("chatroom",["jquery","form","cm/lib/codemirror","utils","config","modal","links","laconic"],function(t,e,n,i,r,o,a){!function(t){function s(e,i){var r=t.el.pre({class:"cm-s-prolog"});n.runMode(i,"prolog",r),e.attr("title",t.el.div(r).innerHTML),e.data("html",!0),e.data("placement","bottom"),e.data("trigger","hover"),e.tooltip()}function l(t,n,i){return e.widgets.glyphIconButton(t,{class:"btn-xs "+n,title:i})}function c(t){var e=(new Date).getTime()/1e3-t;return e<20?"just now":e<60?"less then a minute ago":(e=Math.round(e/60),e<120?e+" minutes ago":(e=Math.round(e/60),e<48?e+" hours ago":(e=Math.round(e/24),e<360?e+" days ago":(e=Math.round(e/365),e+" years ago"))))}function u(t){function e(t){return function(e,n){return"<"+t+">"+n+"</"+t+">"}}for(var n=[{regex:/[a-z][a-zA-Z0-9_]*\/[0-9]/g,func:function(t){return'<a class="builtin" href="/pldoc/man?predicate='+t+'">'+t+"</a>"}},{regex:/[a-zA-Z0-9_-]+\.(pl|swinb)\b/g,func:function(t){return'<a class="builtin" href="'+r.http.locations.web_storage+t+'">'+t+"</a>"}},{regex:/`(.)`/g,func:function(t,e){return"<code>"+e+"</code>"}},{regex:/`([\w\[\{\(][^`]*[\w\]\}\)])`/g,func:function(t,e){return"<code>"+e+"</code>"}},{delim:"\\*",a:"\\*\\b",z:"\\b\\*",tag:"b"},{delim:"__",a:"\\b__",z:"__\\b",tag:"b"},{delim:"_",a:"\\b_",z:"_\\b",tag:"i"}],i=0;i<n.length;i++){var o=n[i];o.regex?t=t.replace(o.regex,o.func):o.delim&&(t=t.replace(RegExp(o.a+"([^"+o.delim+"]+)"+o.z,"g"),e(o.tag)))}return t}var h="chatroom",d=0,f={_init:function(n){return this.each(function(){var i,s,l,c,u=t(this),f={messages:[]},p="gitty:"+r.swish.hangout;f.docid=n.docid,u.data(h,f),u.addClass("chatroom each-minute swish-event-receiver"),i=t.el.div({class:"btn-group dropup"},s=t.el.button({type:"button",class:"btn btn-primary btn-xs"},"Send"),t.el.button({type:"button",class:"btn btn-info btn-xs dropdown-toggle","data-toggle":"dropdown","aria-haspopup":!0,"aria-expanded":!1},t.el.span({class:"caret"})),ul=t.el.ul({class:"dropdown-menu pull-right"})),c=t.el.textarea({placeholder:"Type chat message here ..."}),u.append(t.el.div({class:"chat-conversation"},t.el.div({class:"chat-outer-wrapper"},t.el.div({class:"chat-inner-wrapper"},t.el.div({class:"chat-content-wrapper"},t.el.div({class:"chat-stretch"}),t.el.div({class:"chat-content"}))))),l=t.el.span({class:"glyphicon menu glyphicon-remove-circle"}),t.el.div({class:"chat-input"},t.el.table({class:"chat-input"},t.el.tr(t.el.td({class:"chat-text"},c),t.el.td({class:"chat-send"},i))))),t(s).on("click",function(){u.chatroom("send")}),e.widgets.populateMenu(t(i),u,{"Include my query":function(){var e=t(".prolog-query-editor").queryEditor("getQuery");""!=e.trim()?this.chatroom("send",{payload:[{type:"query",query:e}]}):o.alert("Your query editor is empty")}}),n.docid!=p&&e.widgets.populateMenu(t(i),u,{"Broadcast to hangout":function(){this.chatroom("send",{broadcast:"gitty:"+r.swish.hangout})}}),t(l).on("click",function(){u.tile("close")}),n.oneline?t(c).keypress(function(t){if(13==t.which)return u.chatroom("send"),t.preventDefault(),!1}):t(c).on("keyup",function(){var e,n=t(this);0!=n.scrollTop()&&(e=n.height())<500&&(e+=parseFloat(n.css("line-height")),n.animate({height:e},200,function(){u.chatroom("scrollToBottom")}))}),n.docid==p&&t(c).focus(function(){if(""==t(c).val()){var e=(new Date).getTime();e-d>3e5&&(d=e,o.help({file:"hangout.html",notagain:"hangout"}))}}),u.on("click",".inner button",function(e){var n,i=t(e.target).closest("button");return(n=i.data("commit"))?u.closest(".swish").swish("playFile",n):(n=i.data("diff"))&&u.chatroom("diff",n),e.preventDefault(),!1}),u.on("click",".chat-content a",a.followLink),u.on("pane.resize",function(){u.chatroom("scrollToBottom",!0)}),u.on("minute",function(){u.chatroom("update_time")}),u.on("activate-tab",function(){u.chatroom("read_until")}),t(c).height(parseFloat(t(c).css("line-height"))+5),u.chatroom("load_from_server")})},close:function(){return this.tile("close")},send:function(e){e=e||{};var n=this.data(h),a={type:"chat-message"},s=this.find("textarea");a.text=s.val().trim();var l=e.payload||[],c=!1,u=this.chatroom("storage").storage("getSelection"),d="gitty:"+r.swish.hangout;u&&l.push({type:"selection",selection:u});for(var f=0;f<l.length;f++)if("about"!=l[f].type){c=!0;break}e.broadcast||n.docid==d||0!=n.messages.length||(e.broadcast=d),""!=a.text||c?(a.uuid=i.generateUUID(),a.payload=l,a.docid=e.docid||n.docid,e.class&&(a.class=e.class),1==e.clear?this.chatroom("clear"):n.clear=a.uuid,t("#chat").chat("send",a),e.broadcast&&(a.payload.unshift({type:"about",docid:n.docid}),a.docid=e.broadcast,t("#chat").chat("send",a))):e.payload||o.alert("No message to send")},storage:function(){return this.closest(".tab-pane").find(".storage")},is_self:function(e){var n=e.user||{},i=r.swish.user||{},o=t("#chat").chat("self");return n.id&&n.id==o.id||n.avatar&&n.avatar==o.avatar||n.profile_id&&n.profile_id==i.profile_id},read_until:function(e){var n;void 0==e&&(n=this.data(h))&&n.messages.length>0&&(e=n.messages[n.messages.length-1]),e&&(t("#chat").chat("read_until",e.docid,e.time),t(".chat-bell").chatbell("read_until",e.docid,e.time))},render:function(e){var n=e.user||{};r.swish.user||{};if(void 0===e.is_self&&(e.is_self=this.chatroom("is_self",e)),elem=t(t.el.div({class:"chat-message"+(e.is_self?" self":""),"data-userid":n.wsid})),!e.is_self&&n.avatar&&elem.append(t.el.img({class:"avatar",src:n.avatar})),elem.append(t.el.span({class:"chat-sender"},e.is_self?"Me":n.name)),e.time){var i=new Date(1e3*e.time).toLocaleString();elem.append(t.el.span({class:"chat-time",title:i},"(",c(e.time),") ")),elem.data("time",e.time)}if(e.payload)for(var o=0;o<e.payload.length;o++){var a=e.payload[o];p[a.type]?p[a.type].call(elem,a):console.log(a)}var s;if(e.html?s=e.html:e.text&&(s=t(t.el.span(e.text)).html(),s=u(s)),s){var l=t.el.span({class:"chat-message html"});t(l).html(s),elem.append(l)}return elem},add:function(t,e){var n=this.data(h);if(t.docid==n.docid){var i;void 0==e&&(e=this.is(":visible")),void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),n.messages.push(t),i=this.chatroom("render",t),this.find(".chat-content").append(i),this.chatroom("scrollToBottom"),e&&this.chatroom("read_until",t)}return t.uuid&&t.uuid==n.clear&&this.chatroom("clear"),this},clear:function(){var t=this.find("textarea");t.val(""),t.height(parseFloat(t.css("line-height")+5))},load_from_server:function(e){var n=this.data(h),i=t(this);return t.get(r.http.locations.chat_messages,{docid:n.docid},function(t){if(0==t.length)e?i.chatroom("close"):n.docid!="gitty:"+r.swish.hangout&&o.help({file:"newchat.html",notagain:"newchat"});else for(var a=0;a<t.length;a++)i.chatroom("add",t[a],a==t.length-1);
-}).fail(function(t,e,n){o.ajaxError(t)}),this},update_time:function(){return this.find(".chat-message").each(function(){var e,n=t(this);(e=n.data("time"))&&n.find(".chat-time").text("("+c(e)+") ")})},diff:function(n){function i(t){o.ajaxError(t)}t.ajax({url:r.http.locations.web_storage+n.from,data:{format:"raw"},success:function(o){t.ajax({url:r.http.locations.web_storage+n.to,data:{format:"raw"},success:function(i){function r(){var e=t.el.div();this.append(e),t(e).diff({base:o,head:i,baseName:n.name+" (before)",headName:n.name+" (after)"}),this.parents("div.modal-dialog").addClass("modal-wide")}e.showDialog({title:"Update differences",body:r})},error:i})},error:i})},docid:function(t,e){var n=this.data(h);n.docid!=t&&(this.find(".chat-content").html(""),n.docid=t,this.chatroom("load_from_server",e))},rooms:function(e){var n=[];return this.each(function(){var i=t(this),r=i.data(h);r.docid==e&&n.push(this)}),t(n)},scrollToBottom:function(e){return this.each(function(){var n=t(this);scroll=n.find("div.chat-inner-wrapper"),wrap=scroll.find("div.chat-content-wrapper"),content=wrap.find("div.chat-content");var i=content[0].scrollHeight,r=wrap.height()-i-8;(r>0||e!==!0)&&(wrap.find("div.chat-stretch").height(r>0?r:0),scroll.scrollTop(i))}),this}},p={selection:function(n){var i=t().storage("getSelectionLabel",n.selection),r=t(t.el.button({class:"btn btn-xs btn-primary"},i+" ",e.widgets.glyphIcon("eye-open")));r.on("click",function(e){t(e.target).chatroom("storage").storage("restoreSelection",n.selection)}),this.append(" ",r," ")},query:function(n){var r=t(t.el.button({class:"btn btn-xs btn-primary"},"Query ",e.widgets.glyphIcon("download")));r.on("click",function(){var e=t(".prolog-query-editor");e.queryEditor("setQuery",n.query),i.flash(e.find(".CodeMirror"))}),s(r,n.query),this.append(" ",r," ")},update:function(e){var n,i,r;this.append(" ",t.el.span({class:"update"},n=l("play","btn-primary","Open old version"),i=l("zoom-in","btn-info","View changes"),r=l("play","btn-primary","Open new version"))," "),t(n).data("commit",e.previous),t(i).data("diff",{from:e.previous,to:e.commit,name:e.name}),t(r).data("commit",e.commit)},about:function(e){var n=e.docid.replace("gitty:","");this.append(" ",t.el.a({href:r.http.locations.web_storage+n,class:"store btn btn-primary btn-xs"},n)," ")}};t.fn.chatroom=function(e){return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):f._init.apply(this,arguments)}}(jQuery)}),define("chatbell",["jquery","form","modal","config","preferences","laconic","chatroom"],function(t,e,n,i,r){!function(t){var o="chatbell",a={_init:function(n){return n=n||{},this.each(function(){var i=t(this),r=t.extend({},n);r.docid=n.docid||i.data("document"),i.data(o,r),i.addClass("chat-bell"),i.attr("title","Messages available"),i.append(e.widgets.glyphIcon("bell"),t.el.span({class:"chat-bell-count"},"-")),i.chatbell("update")})},chats:function(t){function e(){i.text("-"),r.removeClass("chat-available chat-alert"),r.attr("title",n.empty_title||"No messages available")}var n=this.data(o),i=this.find(".chat-bell-count"),r=this;if(void 0==t)delete n.docid,delete n.count,delete n.total,e();else{var a=void 0==t.count?t.total:t.count;t.docid&&(n.docid=t.docid),t.count&&(n.count=t.count),t.total&&(n.total=t.total),t.total>0?(this.addClass("chat-available"),a>0?(i.text(a),this.addClass("chat-alert"),this.attr("title",a+" new messages")):(i.text(t.total),this.removeClass("chat-alert"),this.attr("title",t.total+" old messages"))):e()}return this},"chats++":function(t){var e=this.data(o);return void 0!=e.total?e.total++:e.total=1,void 0!=e.count&&e.count++,void 0!=t&&(e.docid=t),e.total&&this.chatbell("chats",{total:e.total,count:e.count}),this},update:function(e){var n=this.data(o);if(e=e||{},void 0!=e.total&&void 0!=e.count)this.chatbell("chats",e);else{var a=e.docid||n.docid,s=r.getDocVal(a,"chatBar",0);if(a&&(s||void 0==e.total)){var l=t(this);t.get(i.http.locations.chat_status,{docid:a,after:s},function(t){l.chatbell("chats",t)})}else void 0!=e.total&&this.chatbell("chats",e)}return this},read_until:function(e,n){return this.each(function(){var n=t(this),i=n.data(o);i.docid==e&&i.total&&n.chatbell("chats",{total:i.total,count:0})})},"chat-message":function(t){if(void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),this.chatbell("chats++"),!t.is_self){var e=this.chatroom("render",t),i={dom:e};n.notify(this,i)}}};t.fn.chatbell=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery)}),define("tabbed",["jquery","form","config","preferences","modal","laconic","search","chatbell"],function(t,e,n,i,r){var o={tabTypes:{},type:function(t){var e=t.split(".").pop();for(var n in o.tabTypes)if(o.tabTypes.hasOwnProperty(n)&&o.tabTypes[n].dataType==e)return o.tabTypes[n]}};return function(t){function a(e,n,i){t(e).wrap('<div role="tabpanel" class="tab-pane" id="'+n+'"></div>');var r=t(e).parent();return i&&r.addClass("active"),r}function s(e,n){var i=t.el.span({class:"glyphicon glyphicon-"+e});return n&&t(i).addClass(n),i}function l(){return"tabbed-tab-"+h++}function c(t){if(n.swish.profiles)for(var e=0;e<n.swish.profiles.length;e++)if(n.swish.profiles[e].value==t)return n.swish.profiles[e]}var u="tabbed",h=0,d={_init:function(e){return e=e||{},this.each(function(){var n=t(this),i={};i.newTab=e.newTab,i.tabTypes=e.tabTypes||o.tabTypes,n.data(u,i),n.addClass("tabbed"),n.tabbed("makeTabbed"),n.on("trace-location",function(t,e){n.tabbed("showTracePort",e)}),n.on("data-is-clean",function(e,i){var r=t(e.target).closest(".tab-pane"),o=n.tabbed("navTab",r.attr("id"));o&&(i?o.removeClass("data-dirty"):o.addClass("data-dirty"))})})},makeTabbed:function(){var e=this.children(),n=t.el.ul({class:"nav nav-tabs",role:"tablist"}),i=t.el.div({class:"tab-content"});this.prepend(i),this.prepend(n),t(n).on("click","span.xclose",function(e){var n=t(e.target).parent().attr("data-id");t(e.target).parents(".tabbed").first().tabbed("removeTab",n),e.preventDefault()}),t(n).on("click","a",function(e){t(e.target).closest("a").tab("show"),e.preventDefault()});for(var r=0;r<e.length;r++){var o=t(e[r]),c=l(),u=o.attr("data-label")||"Unknown",h="disabled"!=o.attr("data-close"),d=r==e.length-1,f=this.tabbed("tabLabel",c,u,h);d&&t(f).addClass("active"),t(n).append(f),t(i).append(a(t(e[r]),c,d))}var p=t.el.a({class:"tab-new compact",title:"Open a new tab"},s("plus"));t(n).append(t.el.li({role:"presentation"},p)),t(p).on("click",function(e){var n=t(e.target).parents(".tabbed").first();return n.tabbed("newTab"),e.preventDefault(),!1}),t(n).on("shown.bs.tab","a",function(e){var n=t(e.target).data("id");t("#"+n+" .swish-event-receiver").trigger("activate-tab")}),0==this.tabbed("navContent").children().length&&this.tabbed("newTab")},newTab:function(e){var n=this.data(u);return void 0==e&&(n.newTab?e=n.newTab():(e=this.tabbed("tabSelect"),t(e).append(this.tabbed("profileForm"),t.el.hr(),this.tabbed("searchForm")))),this.tabbed("addTab",e,{active:!0,close:!0})},tabFromSource:function(e){function n(){var n=i.tabbed("newTab",t("<span></span>"));i.tabbed("setSource",n,e)||i.tabbed("removeTab",n.attr("id"))}var i=this,r=this.find("div.tabbed-select");if("string"==typeof e&&(e={data:e}),r.length>0){var o=r.first().closest(".tab-pane");this.tabbed("show",o.attr("id")),this.tabbed("setSource",o,e)}else if(e.newTab)n();else{var o;this.find(".storage").each(function(n,i){if(t(i).storage("setSource",e))return o=t(i).closest(".tab-pane"),!1}),o?this.tabbed("show",o.attr("id")):n()}return this},setSource:function(e,n){if("object"==typeof n&&(n.meta&&n.meta.name||n.url)){var i=n.meta&&n.meta.name?n.meta.name:n.url,r=o.type(i),a=t.el.div();return e.html(""),e.tabbed("title",r.label,r.dataType),e.append(a),r.create(a),t(a).storage("setSource",n),!0}return!1},showTracePort:function(e){function n(){if(s.startsWith("pengine://"))return s.split("/")[2]}function i(){var t="swish://";if(s.startsWith(t))return s.slice(t.length)}if(e&&e.source&&e.source.file){var r,o,a,s=e.source.file;if(r=n())a=this.find(".prolog-editor").filter(function(e,n){return t(n).prologEditor("pengine",{has:r})});else if((o=i())&&(a=this.find(".storage").storage("match",{file:o}),!a))return this.closest(".swish").swish("playFile",{file:o,newTab:!0,noHistory:!0,prompt:e}),this;a&&a.prologEditor("showTracePort",e)}return this},addTab:function(e,n){var i=this.tabbed("navTabs"),r=l(),o=a(e,r,n.close);this.tabbed("navContent").append(o);var s=this.tabbed("tabLabel",r,"New tab",close,"select"),c=i.find("a.tab-new");return 1==c.length?t(s).insertBefore(c.first().parent()):i.append(s),n.active&&t(s).find("a").first().tab("show"),o},removeTab:function(e){var n,i=this.tabbed("navTabs").find("a[data-id='"+e+"']").parent(),r=t("#"+e);0!=r.find(".storage").storage("unload","closetab")&&(r.is(":visible")&&(n=i.prev()||i.next()),i.remove(),r.find(".prolog-runner").prologRunner("close"),r.find(".storage").storage("close"),r.remove(),n&&n.length>0?n.find("a").first().tab("show"):0==this.tabbed("navContent").children().length&&this.tabbed("newTab"),t(".storage").storage("chat_status",!0))},show:function(e){var n=this.tabbed("navTab",e);n&&n.tab("show"),t(".storage").storage("chat_status",!0)},tabLabel:function(e,n,i,r){var o,a;i&&(o=s("remove","xclose"),t(o).attr("title","Close tab")),r=r||"pl";var l=t.el.a({class:"compact",href:"#"+e,"data-id":e},t.el.span({class:"tab-icon type-icon "+r}),t.el.span({class:"tab-dirty",title:"Tab is modified. See File/Save and Edit/View changes"}),a=t.el.a({class:"tab-chat"}),t.el.span({class:"tab-title"},n),o),c=t.el.li({role:"presentation"},l);return t(a).chatbell().on("click",function(e){var n=t(e.target).closest("a.compact").data("id");return t("#"+n).find(".storage").storage("chat"),!1}),c},anchor:function(){var t=this.closest(".tab-pane");if(0!=t.length){var e=t.closest(".tabbed"),n=t.attr("id"),i=e.tabbed("navTabs"),r=i.find("a[data-id="+n+"]");return r}},title:function(t,e){var n=this.tabbed("anchor");if(n&&(n.find(".tab-title").text(t),e)){var i=n.find(".tab-icon");i.removeClass(),i.addClass("tab-icon type-icon "+e)}return this},chats:function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("update",t),this},"chats++":function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("chats++",t),this},tabSelect:function(){var e=this.data(u),n=t.el.div({class:"tabbed-select"},t.el.div({class:"tabbed-create"},t.el.label({class:"tabbed-left"},"Create a "),g=t.el.div({class:"btn-group",role:"group"}),t.el.label({class:"tabbed-right"},"here"))),a=[];for(var s in e.tabTypes)e.tabTypes.hasOwnProperty(s)&&e.tabTypes[s].order&&a.push(s);a.sort(function(t,n){return e.tabTypes[t].order-e.tabTypes[n].order});for(var l=0;l<a.length;l++){var c=e.tabTypes[a[l]];t(g).append(t.el.button({type:"button",class:"btn btn-primary","data-type":c.typeName,"data-ext":c.dataType},c.label))}return t(g).on("click",".btn",function(e){var n=t(e.target).data("type"),r=t(e.target).closest(".tab-pane"),a=t.el.div(),s=t.extend({},o.tabTypes[n]),l=r.find("label.active > input[name=profile]").val();l&&(s.profile=l,s.value=r.tabbed("profileValue",l,o.tabTypes[n].dataType),void 0!=s.value&&i.setVal("default-profile",l)),r.html(""),r.tabbed("title",s.label,s.dataType),r.append(a),o.tabTypes[n].create(a,s)}),t(g).addClass("swish-event-receiver"),t(g).on("download save fileInfo print",function(e){var n=t(e.target).closest(".tab-pane");if(n.is(":visible")){var i={download:"you wish to download",save:"you wish to save",print:"you wish to print",fileInfo:"for which you want details"};r.alert("Please activate the tab "+i[e.type]),e.stopPropagation()}}),t(g).on("profile-selected",function(e,n){t(e.target).find("button").each(function(){t(this).prop("disabled",n.type.indexOf(t(this).data("ext"))<0)})}),n},searchForm:function(){var n=t.el.form({class:"search-sources"},t.el.label({class:"control-label"},"Open source file containing"),t.el.div({class:"input-group"},t.el.input({type:"text",class:"form-control search",placeholder:"Search sources","data-search-in":"sources store_content"}),t.el.div({class:"input-group-btn"},t.el.button({class:"btn btn-default",type:"submit"},t.el.i({class:"glyphicon glyphicon-search"})))),t.el.div({class:"input-group"},e.fields.radio("smatch",[{label:"Start of line",value:"sol"},{label:"Start of word",value:"sow",active:!0},{label:"Anywhere",value:"anywhere"}])));return t(n).find("input.search").search(),n},profileForm:function(){if(n.swish.profiles&&n.swish.profiles.length>0){for(var r,o=0;o<n.swish.profiles.length;o++)delete n.swish.profiles[o].active;if(r=i.getVal("default-profile"))for(var o=0;o<n.swish.profiles.length;o++)n.swish.profiles[o].value==r&&(n.swish.profiles[o].active=!0);else n.swish.profiles[0].active=!0;var a=t.el.div({class:"tabbed-profile"},t.el.label({class:"tabbed-left"},"based on"),t.el.div({class:"input-group select-profile"},e.fields.radio("profile",n.swish.profiles)),t.el.label({class:"tabbed-right"},"profile"));return t(a).on("click",function(e){var n=t(e.target).find("input").val(),i=c(n);t(e.target).closest(".tab-pane").find(".tabbed-create .btn-group").trigger("profile-selected",i)}),a}},profileValue:function(e,i){var o=n.http.locations.swish+"profile/"+e+"."+i;return t.ajax({url:o,type:"GET",data:{format:"raw"},async:!1,error:function(t){r.ajaxError(t)}}).responseText},navTabs:function(){return this.find("ul.nav-tabs").first()},navTab:function(t){var e=this.find("ul.nav-tabs").first().find("a[data-id='"+t+"']");if(e.length>0)return e},navContent:function(){return this.find("div.tab-content").first()}};t.fn.tabbed=function(e){return d[e]?d[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+u):d._init.apply(this,arguments)}}(jQuery),o}),define("prolog",["jquery","config","form","preferences"],function(t,e,n,i){var r={downloadCSV:function(o,a,s){function l(e,n){return t.el.input({type:"hidden",name:e,value:n})}function c(){var s=t.el.form({class:"form-horizontal"},n.fields.projection(f.join(",")),n.fields.csvFormat(e.swish.csv_formats,i.getVal("csvFormat")),n.fields.limit("10 000",!1),n.fields.filename(p,2),n.fields.buttons({label:"Download CSV",action:function(t,n){return t.preventDefault(),e.swish.csv_formats.length>1&&i.setVal("csvFormat",n.format),r.downloadCSV(o,a,n),!1}}));this.append(s)}if(s=s||{},s.disposition=s.disposition||s.filename||"swish-results.csv",s.projection){var u,h=s.format||"prolog";if(s.distinct&&(o="distinct(["+s.projection+"],("+o+"))"),s.limit){var d=parseInt(s.limit.replace(/[ _]/g,""));if("number"!=typeof d)return alert("Not an integer: ",s.limit),!1;o="limit("+d+",("+o+"))"}u=t.el.form({method:"POST",action:e.http.locations.pengines+"/create",target:"_blank"},l("format","csv"),l("chunk","10"),l("solutions","all"),l("disposition",s.disposition),l("application","swish"),l("ask",o),l("src_text",a),l("template",h+"("+s.projection+")")),console.log(u),t("body").append(u),u.submit(),t(u).remove()}else{var f=t().prologEditor("variables",o),p=s.disposition;p.indexOf(".")<0&&(p+=".csv"),n.showDialog({title:"Download query results as CSV",body:c})}return this},trimFullStop:function(t){return t.replace(/\.\s*$/m,"")},options:{application:"swish",chunk:5}};return t.swish=function(t){for(var e in r.options)r.options.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=r.options[e]);return new Pengine(t)},r}),define("answer",["jquery","laconic"],function(){!function($){function answerHasOutput(t){return t.variables.length>0||t.residuals}function renderSubstitutions(t,e){e.push(', <span class="pl-comment">% where</span><br/>');for(var n=0;n<t.length;n++)e.push('<span class="where-binding">',"<span class='pl-var'>",t[n].var+"</span> = ",t[n].value,"</span>"),n<t.length-1&&e.push(",<br/>")}function renderAnswer(t){for(var e=[],n=t.variables,i=0;i<n.length;i++){for(var r=n[i].variables,o=0;o<r.length-1;o++)e.push("<span class='pl-ovar'>",r[o],"</span> = ","<span class='pl-var'>",r[o+1],"</span>, ");e.push("<span class='pl-ovar'>",r[r.length-1],"</span> = ",n[i].value),n[i].substitutions&&renderSubstitutions(n[i].substitutions,e),(i<n.length-1||t.residuals)&&e.push(",<br/>")}var a;if(a=t.residuals)for(var i=0;i<a.length;i++)e.push(a[i]),i<a.length-1&&e.push(",<br/>");return e.join("")}function renderTabledAnswer(t,e){function n(e){for(var n=t.variables,i=0;i<n.length;i++)for(var r=n[i].variables,o=0;o<r.length;o++)if(r[o]==e)return n[i];return null}function i(){0==e.find("tr.projection th.residuals").length&&($("<th class='residuals'>Residual goals</th>").insertBefore(e.find("tr.projection th.answer-nth")),$("<td></td>").insertBefore(e.find("tr td.answer-nth")))}for(var r=[],o=0;o<t.projection.length;o++){var a=t.projection[o],s=n(a);r.push("<td>"),s?(r.push(s.value),s.substitutions&&renderSubstitutions(s.substitutions,r)):r.push("<span class='pl-var'>",a,"</span>"),r.push("</td>")}var l;if(l=t.residuals){i(),r.push("<td>");for(var o=0;o<l.length;o++)r.push(l[o]),o<l.length-1&&r.push(",<br/>");r.push("</td>")}return t.nth&&r.push("<td class='answer-nth'>",t.nth,"</td>"),r.join("")}function evalScripts(elem){elem.find("script").each(function(){var type=this.getAttribute("type")||"text/javascript";"text/javascript"==type&&($.ajaxScript=$(this),eval(this.textContent))}),$.ajaxScript&&delete $.ajaxScript}var pluginName="prologAnswer",methods={_init:function(t){return this.each(function(){var e=$(this);if(answerHasOutput(t))if(e.is("table")){var n=$.el.tr();e.append(n),n.innerHTML=renderTabledAnswer(t,e),evalScripts($(n)),$(n).find(".render-multi").renderMulti()}else e[0].innerHTML=renderAnswer(t),evalScripts(e),e.find(".render-multi").renderMulti();else e.append($.el.span({class:"prolog-true"},"true"))})}};$.fn.prologAnswer=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),function(t){function e(){var e=t("#render-select");return e[0]||(e=t(t.el.form({id:"render-select",style:"display:none"})),e.on("click","a",function(n){var i=t(n.target).closest("a"),r=i.data("nr");return e.data("target").renderMulti(i.data("action"),r),!1}),e.on("click",function(){var n=t("input[name=render]:checked",t(this)).val();e.data("target").renderMulti("select",parseInt(n))}),e.hover(function(){l=!0,i()},function(){r()}),t("body").append(e)),e}function n(){if(!l){var t=e(),n=t.data("target");n&&(n.removeClass("render-selecting"),t.data("target",null)),t.hide(400)}}function i(){s=setTimeout(function(){n()},400)}function r(){l=!1,i()}function o(e){var n=e.originalEvent.dataTransfer;return n.setData("Text",t(e.target).renderMulti("prologText")),!0}var a="renderMulti",s=0,l=!1,c={_init:function(e){return this.each(function(){var e=t(this),n={current:0},i=[],r=t.el.div({class:"render-multi-active"}),s=0;e.children().each(function(){var n=t(this).css("display");i.push(n),0==s++?(e.css("display",n),t(this).attr("draggable",!1)):t(this).hide()}),n.display=i,e.append(r),t(r).hover(function(t){e.renderMulti("showSelect",t)},function(t){e.renderMulti("hideSelect",t)}),e.attr("draggable",!0).bind("dragstart",o),e.data(a,n)})},selectMenu:function(){function e(t,e){var n,i;return"Prolog term"==e?(n="Copy",i="copy"):(n="Download",i="download"),btn='<a href="#" class="btn btn-style btn-sm" data-nr="'+t+'" data-action="'+i+'" title="'+n+'"><span class="glyphicon glyphicon-'+i+'"></span></a>',btn}for(var n=this.data(a),i=["<label>View as</label><br>"],r=this.children(),o=0,o=0;o<n.display.length;o++){var s=t(r[o]),l=s.attr("data-render");l||(l=0==o?"Default rendered":"Alt rendered ["+(o+1)+"]"),i.push("<div class='render-item'>",e(o,l),"<input type='radio' name='render' value='",o,"'"),o==n.current&&i.push(" checked"),i.push("> ",l,"</div>")}return i.push("</form"),i.join("")},showSelect:function(t){var n,i=this,r=e(),o=this.offset();l=!0,s&&(clearTimeout(s),s=0),(n=r.data("target"))&&n.removeClass("render-selecting"),r.data("target",i),r.html(this.renderMulti("selectMenu")),r.css({top:o.top+5+"px",left:o.left+5+"px"}).show(400),this.addClass("render-selecting")},hideSelect:function(t){r()},select:function(e){var i=this.data(a);if(i.current!=e){var r=this.children(),o=i.display[e];t(r[i.current]).hide(400),t(r[e]).show(400,function(){t(this).css("display",o)}),this.css("display",o),t(r[e]).is("span.render-as-prolog")?this.attr("draggable",!1):this.attr("draggable",!0),i.current=e}n()},copy:function(t){function e(t){var e=document.createRange();e.selectNodeContents(t);var n=window.getSelection();n.removeAllRanges(),n.addRange(e)}var n=this.children(),i=this.data(a),r=i.current;this.renderMulti("select",t),e(n[t]);try{document.execCommand("copy")}catch(t){alert("Sorry, cannot copy text with this browser")}return this.renderMulti("select",r),this},download:function(e){function n(){return void 0!=t("<a>")[0].download}var i,r=this.children(),o=t(r[e]),a="html";if(o.hasClass("export-dom")){var s={};o=o.trigger("export-dom",s),s.element?(i=s.element.outerHTML,a=s.extension||"html",type=s.contentType||"text/html"):alert("Failed to export rendered result")}else if(1==o.find("svg").length){var l=o.find("svg");l.attr("xmlns")||l.attr("xmlns","http://www.w3.org/2000/svg"),i=l[0].outerHTML,a="svg",type="image/svg+xml"}else i=o.html(),type="text/html";n()||(type="application/octet-stream");var c="data:"+type+";charset=UTF-8,"+encodeURIComponent(i),u=t.el.a({href:c,download:"swish-rendered."+a});return this.append(u),u.click(),t(u).remove(),this},prologText:function(){return this.find("span.render-as-prolog").text()}};t.fn.renderMulti=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+a):c._init.apply(this,arguments)}}(jQuery)}),function(t,e,n){!function(t){"function"==typeof define&&define.amd?define("sparkline",["jquery"],t):jQuery&&!jQuery.fn.sparkline&&t(jQuery)}(function(i){"use strict";var r,o,a,s,l,c,u,h,d,f,p,g,m,v,y,x,b,_,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I={},j=0;r=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:n,normalRangeMax:n,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:n,chartRangeMax:n,chartRangeMinX:n,chartRangeMaxX:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:n,nullColor:n,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,colorMap:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:n,thresholdValue:0,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,tooltipFormat:new a("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:n,tooltipFormat:new a("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:n,targetColor:"#4a2",chartRangeMax:n,chartRangeMin:n,tooltipFormat:new a("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},L='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',o=function(){var t,e;return t=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(t.prototype=i.extend(new arguments[0],arguments[arguments.length-1]),t._super=arguments[0].prototype):t.prototype=arguments[arguments.length-1],arguments.length>2&&(e=Array.prototype.slice.call(arguments,1,-1),e.unshift(t.prototype),i.extend.apply(i,e))):t.prototype=arguments[0],t.prototype.cls=t,t},i.SPFormatClass=a=o({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(t,e){this.format=t,this.fclass=e},render:function(t,e,i){var r,o,a,s,l,c=this,u=t;return this.format.replace(this.fre,function(){var t;return o=arguments[1],a=arguments[3],r=c.precre.exec(o),r?(l=r[2],o=r[1]):l=!1,s=u[o],s===n?"":a&&e&&e[a]?(t=e[a],t.get?e[a].get(s)||s:e[a][s]||s):(d(s)&&(s=i.get("numberFormatter")?i.get("numberFormatter")(s):v(s,l,i.get("numberDigitGroupCount"),i.get("numberDigitGroupSep"),i.get("numberDecimalMark"))),s)})}}),i.spformat=function(t,e){return new a(t,e)},s=function(t,e,n){return t<e?e:t>n?n:t},l=function(t,n){var i;return 2===n?(i=e.floor(t.length/2),t.length%2?t[i]:(t[i-1]+t[i])/2):t.length%2?(i=(t.length*n+n)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1]):(i=(t.length*n+2)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1])},c=function(t){var e;switch(t){case"undefined":t=n;break;case"null":t=null;break;case"true":t=!0;break;case"false":t=!1;break;default:e=parseFloat(t),t==e&&(t=e)}return t},u=function(t){var e,n=[];for(e=t.length;e--;)n[e]=c(t[e]);return n},h=function(t,e){var n,i,r=[];for(n=0,i=t.length;n<i;n++)t[n]!==e&&r.push(t[n]);return r},d=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},v=function(t,e,n,r,o){var a,s;for(t=(e===!1?parseFloat(t).toString():t.toFixed(e)).split(""),a=(a=i.inArray(".",t))<0?t.length:a,a<t.length&&(t[a]=o),s=a-n;s>0;s-=n)t.splice(s,0,r);return t.join("")},f=function(t,e,n){var i;for(i=e.length;i--;)if((!n||null!==e[i])&&e[i]!==t)return!1;return!0},p=function(t){var e,n=0;for(e=t.length;e--;)n+="number"==typeof t[e]?t[e]:0;return n},m=function(t){return i.isArray(t)?t:[t]},g=function(e){var n;t.createStyleSheet?t.createStyleSheet().cssText=e:(n=t.createElement("style"),n.type="text/css",t.getElementsByTagName("head")[0].appendChild(n),n["string"==typeof t.body.style.WebkitAppearance?"innerText":"innerHTML"]=e)},i.fn.simpledraw=function(e,r,o,a){var s,l;if(o&&(s=this.data("_jqs_vcanvas")))return s;if(i.fn.sparkline.canvas===!1)return!1;if(i.fn.sparkline.canvas===n){var c=t.createElement("canvas");if(c.getContext&&c.getContext("2d"))i.fn.sparkline.canvas=function(t,e,n,i){return new O(t,e,n,i)};else{if(!t.namespaces||t.namespaces.v)return i.fn.sparkline.canvas=!1,!1;t.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),i.fn.sparkline.canvas=function(t,e,n,i){return new R(t,e,n)}}}return e===n&&(e=i(this).innerWidth()),r===n&&(r=i(this).innerHeight()),s=i.fn.sparkline.canvas(e,r,this,a),l=i(this).data("_jqs_mhandler"),l&&l.registerCanvas(s),s},i.fn.cleardraw=function(){var t=this.data("_jqs_vcanvas");t&&t.reset()},i.RangeMapClass=y=o({init:function(t){var e,n,i=[];for(e in t)t.hasOwnProperty(e)&&"string"==typeof e&&e.indexOf(":")>-1&&(n=e.split(":"),n[0]=0===n[0].length?-(1/0):parseFloat(n[0]),n[1]=0===n[1].length?1/0:parseFloat(n[1]),n[2]=t[e],i.push(n));this.map=t,this.rangelist=i||!1},get:function(t){var e,i,r,o=this.rangelist;if((r=this.map[t])!==n)return r;if(o)for(e=o.length;e--;)if(i=o[e],i[0]<=t&&i[1]>=t)return i[2];return n}}),i.range_map=function(t){return new y(t)},x=o({init:function(t,e){var n=i(t);this.$el=n,this.options=e,this.currentPageX=0,this.currentPageY=0,this.el=t,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!e.get("disableTooltips"),this.highlightEnabled=!e.get("disableHighlight")},registerSparkline:function(t){this.splist.push(t),this.over&&this.updateDisplay()},registerCanvas:function(t){var e=i(t.canvas);this.canvas=t,this.$canvas=e,e.mouseenter(i.proxy(this.mouseenter,this)),e.mouseleave(i.proxy(this.mouseleave,this)),e.click(i.proxy(this.mouseclick,this))},reset:function(t){this.splist=[],this.tooltip&&t&&(this.tooltip.remove(),this.tooltip=n)},mouseclick:function(t){var e=i.Event("sparklineClick");e.originalEvent=t,e.sparklines=this.splist,this.$el.trigger(e)},mouseenter:function(e){i(t.body).unbind("mousemove.jqs"),i(t.body).bind("mousemove.jqs",i.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=e.pageX,this.currentPageY=e.pageY,this.currentEl=e.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new b(this.options),this.tooltip.updatePosition(e.pageX,e.pageY)),this.updateDisplay()},mouseleave:function(){i(t.body).unbind("mousemove.jqs");var e,n,r=this.splist,o=r.length,a=!1;for(this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null),n=0;n<o;n++)e=r[n],e.clearRegionHighlight()&&(a=!0);a&&this.canvas.render()},mousemove:function(t){this.currentPageX=t.pageX,this.currentPageY=t.pageY,this.currentEl=t.target,this.tooltip&&this.tooltip.updatePosition(t.pageX,t.pageY),this.updateDisplay()},updateDisplay:function(){var t,e,n,r,o,a=this.splist,s=a.length,l=!1,c=this.$canvas.offset(),u=this.currentPageX-c.left,h=this.currentPageY-c.top;if(this.over){for(n=0;n<s;n++)e=a[n],r=e.setRegionHighlight(this.currentEl,u,h),r&&(l=!0);if(l){if(o=i.Event("sparklineRegionChange"),o.sparklines=this.splist,this.$el.trigger(o),this.tooltip){for(t="",n=0;n<s;n++)e=a[n],t+=e.getCurrentRegionTooltip();this.tooltip.setContent(t)}this.disableHighlight||this.canvas.render()}null===r&&this.mouseleave()}}}),b=o({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(e){var n,r=e.get("tooltipClassname","jqstooltip"),o=this.sizeStyle;this.container=e.get("tooltipContainer")||t.body,this.tooltipOffsetX=e.get("tooltipOffsetX",10),this.tooltipOffsetY=e.get("tooltipOffsetY",12),i("#jqssizetip").remove(),i("#jqstooltip").remove(),this.sizetip=i("<div/>",{id:"jqssizetip",style:o,class:r}),this.tooltip=i("<div/>",{id:"jqstooltip",class:r}).appendTo(this.container),n=this.tooltip.offset(),this.offsetLeft=n.left,this.offsetTop=n.top,this.hidden=!0,i(window).unbind("resize.jqs scroll.jqs"),i(window).bind("resize.jqs scroll.jqs",i.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=i(window).scrollTop(),this.scrollLeft=i(window).scrollLeft(),this.scrollRight=this.scrollLeft+i(window).width(),this.updatePosition()},getSize:function(t){this.sizetip.html(t).appendTo(this.container),this.width=this.sizetip.width()+1,
-this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(t){return t?(this.getSize(t),this.tooltip.html(t).css({width:this.width,height:this.height,visibility:"visible"}),void(this.hidden&&(this.hidden=!1,this.updatePosition()))):(this.tooltip.css("visibility","hidden"),void(this.hidden=!0))},updatePosition:function(t,e){if(t===n){if(this.mousex===n)return;t=this.mousex-this.offsetLeft,e=this.mousey-this.offsetTop}else this.mousex=t-=this.offsetLeft,this.mousey=e-=this.offsetTop;this.height&&this.width&&!this.hidden&&(e-=this.height+this.tooltipOffsetY,t+=this.tooltipOffsetX,e<this.scrollTop&&(e=this.scrollTop),t<this.scrollLeft?t=this.scrollLeft:t+this.width>this.scrollRight&&(t=this.scrollRight-this.width),this.tooltip.css({left:t,top:e}))},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=n,i(window).unbind("resize.jqs scroll.jqs")}}),E=function(){g(L)},i(E),D=[],i.fn.sparkline=function(e,r){return this.each(function(){var o,a,s=new i.fn.sparkline.options(this,r),l=i(this);if(o=function(){var r,o,a,c,u,h,d;return"html"===e||e===n?(d=this.getAttribute(s.get("tagValuesAttribute")),d!==n&&null!==d||(d=l.html()),r=d.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")):r=e,o="auto"===s.get("width")?r.length*s.get("defaultPixelsPerValue"):s.get("width"),"auto"===s.get("height")?s.get("composite")&&i.data(this,"_jqs_vcanvas")||(c=t.createElement("span"),c.innerHTML="a",l.html(c),a=i(c).innerHeight()||i(c).height(),i(c).remove(),c=null):a=s.get("height"),s.get("disableInteraction")?u=!1:(u=i.data(this,"_jqs_mhandler"),u?s.get("composite")||u.reset():(u=new x(this,s),i.data(this,"_jqs_mhandler",u))),s.get("composite")&&!i.data(this,"_jqs_vcanvas")?void(i.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),i.data(this,"_jqs_errnotify",!0))):(h=new(i.fn.sparkline[s.get("type")])(this,r,s,o,a),h.render(),void(u&&u.registerSparkline(h)))},i(this).html()&&!s.get("disableHiddenCheck")&&i(this).is(":hidden")||!i(this).parents("body").length){if(!s.get("composite")&&i.data(this,"_jqs_pending"))for(a=D.length;a;a--)D[a-1][0]==this&&D.splice(a-1,1);D.push([this,o]),i.data(this,"_jqs_pending",!0)}else o.call(this)})},i.fn.sparkline.defaults=r(),i.sparkline_display_visible=function(){var t,e,n,r=[];for(e=0,n=D.length;e<n;e++)t=D[e][0],i(t).is(":visible")&&!i(t).parents().is(":hidden")?(D[e][1].call(t),i.data(D[e][0],"_jqs_pending",!1),r.push(e)):i(t).closest("html").length||i.data(t,"_jqs_pending")||(i.data(D[e][0],"_jqs_pending",!1),r.push(e));for(e=r.length;e;e--)D.splice(r[e-1],1)},i.fn.sparkline.options=o({init:function(t,e){var n,r,o,a;this.userOptions=e=e||{},this.tag=t,this.tagValCache={},r=i.fn.sparkline.defaults,o=r.common,this.tagOptionsPrefix=e.enableTagOptions&&(e.tagOptionsPrefix||o.tagOptionsPrefix),a=this.getTagSetting("type"),n=a===I?r[e.type||o.type]:r[a],this.mergedOptions=i.extend({},o,n,e)},getTagSetting:function(t){var e,i,r,o,a=this.tagOptionsPrefix;if(a===!1||a===n)return I;if(this.tagValCache.hasOwnProperty(t))e=this.tagValCache.key;else{if(e=this.tag.getAttribute(a+t),e===n||null===e)e=I;else if("["===e.substr(0,1))for(e=e.substr(1,e.length-2).split(","),i=e.length;i--;)e[i]=c(e[i].replace(/(^\s*)|(\s*$)/g,""));else if("{"===e.substr(0,1))for(r=e.substr(1,e.length-2).split(","),e={},i=r.length;i--;)o=r[i].split(":",2),e[o[0].replace(/(^\s*)|(\s*$)/g,"")]=c(o[1].replace(/(^\s*)|(\s*$)/g,""));else e=c(e);this.tagValCache.key=e}return e},get:function(t,e){var i,r=this.getTagSetting(t);return r!==I?r:(i=this.mergedOptions[t])===n?e:i}}),i.fn.sparkline._base=o({disabled:!1,init:function(t,e,r,o,a){this.el=t,this.$el=i(t),this.values=e,this.options=r,this.width=o,this.height=a,this.currentRegion=n},initTarget:function(){var t=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),t))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return!this.disabled||(this.el.innerHTML="",!1)},getRegion:function(t,e){},setRegionHighlight:function(t,e,i){var r,o=this.currentRegion,a=!this.options.get("disableHighlight");return e>this.canvasWidth||i>this.canvasHeight||e<0||i<0?null:(r=this.getRegion(t,e,i),o!==r&&(o!==n&&a&&this.removeHighlight(),this.currentRegion=r,r!==n&&a&&this.renderHighlight(),!0))},clearRegionHighlight:function(){return this.currentRegion!==n&&(this.removeHighlight(),this.currentRegion=n,!0)},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(t){},getCurrentRegionTooltip:function(){var t,e,r,o,s,l,c,u,h,d,f,p,g,m,v=this.options,y="",x=[];if(this.currentRegion===n)return"";if(t=this.getCurrentRegionFields(),f=v.get("tooltipFormatter"))return f(this,v,t);if(v.get("tooltipChartTitle")&&(y+='<div class="jqs jqstitle">'+v.get("tooltipChartTitle")+"</div>\n"),e=this.options.get("tooltipFormat"),!e)return"";if(i.isArray(e)||(e=[e]),i.isArray(t)||(t=[t]),c=this.options.get("tooltipFormatFieldlist"),u=this.options.get("tooltipFormatFieldlistKey"),c&&u){for(h=[],l=t.length;l--;)d=t[l][u],(m=i.inArray(d,c))!=-1&&(h[m]=t[l]);t=h}for(r=e.length,g=t.length,l=0;l<r;l++)for(p=e[l],"string"==typeof p&&(p=new a(p)),o=p.fclass||"jqsfield",m=0;m<g;m++)t[m].isNull&&v.get("tooltipSkipNull")||(i.extend(t[m],{prefix:v.get("tooltipPrefix"),suffix:v.get("tooltipSuffix")}),s=p.render(t[m],v.get("tooltipValueLookups"),v),x.push('<div class="'+o+'">'+s+"</div>"));return x.length?y+x.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(t,n){var i,r,o,a,l=n.get("highlightColor"),c=n.get("highlightLighten");if(l)return l;if(c&&(i=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t))){for(o=[],r=4===t.length?16:1,a=0;a<3;a++)o[a]=s(e.round(parseInt(i[a+1],16)*r*c),0,255);return"rgb("+o.join(",")+")"}return t}}),_={changeHighlight:function(t){var e,n=this.currentRegion,r=this.target,o=this.regionShapes[n];o&&(e=this.renderRegion(n,t),i.isArray(e)||i.isArray(o)?(r.replaceWithShapes(o,e),this.regionShapes[n]=i.map(e,function(t){return t.id})):(r.replaceWithShape(o,e),this.regionShapes[n]=e.id))},render:function(){var t,e,n,r,o=this.values,a=this.target,s=this.regionShapes;if(this.cls._super.render.call(this)){for(n=o.length;n--;)if(t=this.renderRegion(n))if(i.isArray(t)){for(e=[],r=t.length;r--;)t[r].append(),e.push(t[r].id);s[n]=e}else t.append(),s[n]=t.id;else s[n]=null;a.render()}}},i.fn.sparkline.line=w=o(i.fn.sparkline._base,{type:"line",init:function(t,e,n,i,r){w._super.init.call(this,t,e,n,i,r),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(t,e,i){var r,o=this.regionMap;for(r=o.length;r--;)if(null!==o[r]&&e>=o[r][0]&&e<=o[r][1])return o[r][2];return n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:null===this.yvalues[t],x:this.xvalues[t],y:this.yvalues[t],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:t}},renderHighlight:function(){var t,e,i=this.currentRegion,r=this.target,o=this.vertices[i],a=this.options,s=a.get("spotRadius"),l=a.get("highlightSpotColor"),c=a.get("highlightLineColor");o&&(s&&l&&(t=r.drawCircle(o[0],o[1],s,n,l),this.highlightSpotId=t.id,r.insertAfterShape(this.lastShapeId,t)),c&&(e=r.drawLine(o[0],this.canvasTop,o[0],this.canvasTop+this.canvasHeight,c),this.highlightLineId=e.id,r.insertAfterShape(this.lastShapeId,e)))},removeHighlight:function(){var t=this.target;this.highlightSpotId&&(t.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(t.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var t,n,i,r,o,a=this.values,s=a.length,l=this.xvalues,c=this.yvalues,u=this.yminmax;for(t=0;t<s;t++)n=a[t],i="string"==typeof a[t],r="object"==typeof a[t]&&a[t]instanceof Array,o=i&&a[t].split(":"),i&&2===o.length?(l.push(Number(o[0])),c.push(Number(o[1])),u.push(Number(o[1]))):r?(l.push(n[0]),c.push(n[1]),u.push(n[1])):(l.push(t),null===a[t]||"null"===a[t]?c.push(null):(c.push(Number(n)),u.push(Number(n))));this.options.get("xvalues")&&(l=this.options.get("xvalues")),this.maxy=this.maxyorg=e.max.apply(e,u),this.miny=this.minyorg=e.min.apply(e,u),this.maxx=e.max.apply(e,l),this.minx=e.min.apply(e,l),this.xvalues=l,this.yvalues=c,this.yminmax=u},processRangeOptions:function(){var t=this.options,e=t.get("normalRangeMin"),i=t.get("normalRangeMax");e!==n&&(e<this.miny&&(this.miny=e),i>this.maxy&&(this.maxy=i)),t.get("chartRangeMin")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMin")<this.miny)&&(this.miny=t.get("chartRangeMin")),t.get("chartRangeMax")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMax")>this.maxy)&&(this.maxy=t.get("chartRangeMax")),t.get("chartRangeMinX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMinX")<this.minx)&&(this.minx=t.get("chartRangeMinX")),t.get("chartRangeMaxX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMaxX")>this.maxx)&&(this.maxx=t.get("chartRangeMaxX"))},drawNormalRange:function(t,i,r,o,a){var s=this.options.get("normalRangeMin"),l=this.options.get("normalRangeMax"),c=i+e.round(r-r*((l-this.miny)/a)),u=e.round(r*(l-s)/a);this.target.drawRect(t,c,o,u,n,this.options.get("normalRangeColor")).append()},render:function(){var t,r,o,a,s,l,c,u,h,d,f,p,g,m,v,x,b,_,S,C,T,k,A,M,L,E=this.options,P=this.target,N=this.canvasWidth,O=this.canvasHeight,R=this.vertices,D=E.get("spotRadius"),I=this.regionMap;if(w._super.render.call(this)&&(this.scanValues(),this.processRangeOptions(),A=this.xvalues,M=this.yvalues,this.yminmax.length&&!(this.yvalues.length<2))){for(a=s=0,t=this.maxx-this.minx===0?1:this.maxx-this.minx,r=this.maxy-this.miny===0?1:this.maxy-this.miny,o=this.yvalues.length-1,D&&(N<4*D||O<4*D)&&(D=0),D&&(T=E.get("highlightSpotColor")&&!E.get("disableInteraction"),(T||E.get("minSpotColor")||E.get("spotColor")&&M[o]===this.miny)&&(O-=e.ceil(D)),(T||E.get("maxSpotColor")||E.get("spotColor")&&M[o]===this.maxy)&&(O-=e.ceil(D),a+=e.ceil(D)),(T||(E.get("minSpotColor")||E.get("maxSpotColor"))&&(M[0]===this.miny||M[0]===this.maxy))&&(s+=e.ceil(D),N-=e.ceil(D)),(T||E.get("spotColor")||E.get("minSpotColor")||E.get("maxSpotColor")&&(M[o]===this.miny||M[o]===this.maxy))&&(N-=e.ceil(D))),O--,E.get("normalRangeMin")===n||E.get("drawNormalOnTop")||this.drawNormalRange(s,a,O,N,r),c=[],u=[c],m=v=null,x=M.length,L=0;L<x;L++)h=A[L],f=A[L+1],d=M[L],p=s+e.round((h-this.minx)*(N/t)),g=L<x-1?s+e.round((f-this.minx)*(N/t)):N,v=p+(g-p)/2,I[L]=[m||0,v,L],m=v,null===d?L&&(null!==M[L-1]&&(c=[],u.push(c)),R.push(null)):(d<this.miny&&(d=this.miny),d>this.maxy&&(d=this.maxy),c.length||c.push([p,a+O]),l=[p,a+e.round(O-O*((d-this.miny)/r))],c.push(l),R.push(l));for(b=[],_=[],S=u.length,L=0;L<S;L++)c=u[L],c.length&&(E.get("fillColor")&&(c.push([c[c.length-1][0],a+O]),_.push(c.slice(0)),c.pop()),c.length>2&&(c[0]=[c[0][0],c[1][1]]),b.push(c));for(S=_.length,L=0;L<S;L++)P.drawShape(_[L],E.get("fillColor"),E.get("fillColor")).append();for(E.get("normalRangeMin")!==n&&E.get("drawNormalOnTop")&&this.drawNormalRange(s,a,O,N,r),S=b.length,L=0;L<S;L++)P.drawShape(b[L],E.get("lineColor"),n,E.get("lineWidth")).append();if(D&&E.get("valueSpots"))for(C=E.get("valueSpots"),C.get===n&&(C=new y(C)),L=0;L<x;L++)k=C.get(M[L]),k&&P.drawCircle(s+e.round((A[L]-this.minx)*(N/t)),a+e.round(O-O*((M[L]-this.miny)/r)),D,n,k).append();D&&E.get("spotColor")&&null!==M[o]&&P.drawCircle(s+e.round((A[A.length-1]-this.minx)*(N/t)),a+e.round(O-O*((M[o]-this.miny)/r)),D,n,E.get("spotColor")).append(),this.maxy!==this.minyorg&&(D&&E.get("minSpotColor")&&(h=A[i.inArray(this.minyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.minyorg-this.miny)/r)),D,n,E.get("minSpotColor")).append()),D&&E.get("maxSpotColor")&&(h=A[i.inArray(this.maxyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.maxyorg-this.miny)/r)),D,n,E.get("maxSpotColor")).append())),this.lastShapeId=P.getLastShapeId(),this.canvasTop=a,P.render()}}}),i.fn.sparkline.bar=S=o(i.fn.sparkline._base,_,{type:"bar",init:function(t,r,o,a,l){var d,f,p,g,m,v,x,b,_,w,C,T,k,A,M,L,E,P,N,O,R,D,I=parseInt(o.get("barWidth"),10),j=parseInt(o.get("barSpacing"),10),V=o.get("chartRangeMin"),H=o.get("chartRangeMax"),F=o.get("chartRangeClip"),z=1/0,q=-(1/0);for(S._super.init.call(this,t,r,o,a,l),v=0,x=r.length;v<x;v++)O=r[v],d="string"==typeof O&&O.indexOf(":")>-1,(d||i.isArray(O))&&(M=!0,d&&(O=r[v]=u(O.split(":"))),O=h(O,null),f=e.min.apply(e,O),p=e.max.apply(e,O),f<z&&(z=f),p>q&&(q=p));this.stacked=M,this.regionShapes={},this.barWidth=I,this.barSpacing=j,this.totalBarWidth=I+j,this.width=a=r.length*I+(r.length-1)*j,this.initTarget(),F&&(k=V===n?-(1/0):V,A=H===n?1/0:H),m=[],g=M?[]:m;var G=[],B=[];for(v=0,x=r.length;v<x;v++)if(M)for(L=r[v],r[v]=N=[],G[v]=0,g[v]=B[v]=0,E=0,P=L.length;E<P;E++)O=N[E]=F?s(L[E],k,A):L[E],null!==O&&(O>0&&(G[v]+=O),z<0&&q>0?O<0?B[v]+=e.abs(O):g[v]+=O:g[v]+=e.abs(O-(O<0?q:z)),m.push(O));else O=F?s(r[v],k,A):r[v],O=r[v]=c(O),null!==O&&m.push(O);this.max=T=e.max.apply(e,m),this.min=C=e.min.apply(e,m),this.stackMax=q=M?e.max.apply(e,G):T,this.stackMin=z=M?e.min.apply(e,m):C,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<C)&&(C=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>T)&&(T=o.get("chartRangeMax")),this.zeroAxis=_=o.get("zeroAxis",!0),w=C<=0&&T>=0&&_?0:0==_?C:C>0?C:T,this.xaxisOffset=w,b=M?e.max.apply(e,g)+e.max.apply(e,B):T-C,this.canvasHeightEf=_&&C<0?this.canvasHeight-2:this.canvasHeight-1,C<w?(D=M&&T>=0?q:T,R=(D-w)/b*this.canvasHeight,R!==e.ceil(R)&&(this.canvasHeightEf-=2,R=e.ceil(R))):R=this.canvasHeight,this.yoffset=R,i.isArray(o.get("colorMap"))?(this.colorMapByIndex=o.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=o.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.range=b},getRegion:function(t,i,r){var o=e.floor(i/this.totalBarWidth);return o<0||o>=this.values.length?n:o},getCurrentRegionFields:function(){var t,e,n=this.currentRegion,i=m(this.values[n]),r=[];for(e=i.length;e--;)t=i[e],r.push({isNull:null===t,value:t,color:this.calcColor(e,t,n),offset:n});return r},calcColor:function(t,e,r){var o,a,s=this.colorMapByIndex,l=this.colorMapByValue,c=this.options;return o=this.stacked?c.get("stackedBarColor"):e<0?c.get("negBarColor"):c.get("barColor"),0===e&&c.get("zeroColor")!==n&&(o=c.get("zeroColor")),l&&(a=l.get(e))?o=a:s&&s.length>r&&(o=s[r]),i.isArray(o)?o[t%o.length]:o},renderRegion:function(t,r){var o,a,s,l,c,u,h,d,p,g,m=this.values[t],v=this.options,y=this.xaxisOffset,x=[],b=this.range,_=this.stacked,w=this.target,S=t*this.totalBarWidth,C=this.canvasHeightEf,T=this.yoffset;if(m=i.isArray(m)?m:[m],h=m.length,d=m[0],l=f(null,m),g=f(y,m,!0),l)return v.get("nullColor")?(s=r?v.get("nullColor"):this.calcHighlightColor(v.get("nullColor"),v),o=T>0?T-1:T,w.drawRect(S,o,this.barWidth-1,0,s,s)):n;for(c=T,u=0;u<h;u++){if(d=m[u],_&&d===y){if(!g||p)continue;p=!0}a=b>0?e.floor(C*(e.abs(d-y)/b))+1:1,d<y||d===y&&0===T?(o=c,c+=a):(o=T-a,T-=a),s=this.calcColor(u,d,t),r&&(s=this.calcHighlightColor(s,v)),x.push(w.drawRect(S,o,this.barWidth-1,a-1,s,s))}return 1===x.length?x[0]:x}}),i.fn.sparkline.tristate=C=o(i.fn.sparkline._base,_,{type:"tristate",init:function(t,e,r,o,a){var s=parseInt(r.get("barWidth"),10),l=parseInt(r.get("barSpacing"),10);C._super.init.call(this,t,e,r,o,a),this.regionShapes={},this.barWidth=s,this.barSpacing=l,this.totalBarWidth=s+l,this.values=i.map(e,Number),this.width=o=e.length*s+(e.length-1)*l,i.isArray(r.get("colorMap"))?(this.colorMapByIndex=r.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=r.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.initTarget()},getRegion:function(t,n,i){return e.floor(n/this.totalBarWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],color:this.calcColor(this.values[t],t),offset:t}},calcColor:function(t,e){var n,i,r=this.values,o=this.options,a=this.colorMapByIndex,s=this.colorMapByValue;return n=s&&(i=s.get(t))?i:a&&a.length>e?a[e]:r[e]<0?o.get("negBarColor"):r[e]>0?o.get("posBarColor"):o.get("zeroBarColor")},renderRegion:function(t,n){var i,r,o,a,s,l,c=this.values,u=this.options,h=this.target;if(i=h.pixelHeight,o=e.round(i/2),a=t*this.totalBarWidth,c[t]<0?(s=o,r=o-1):c[t]>0?(s=0,r=o-1):(s=o-1,r=2),l=this.calcColor(c[t],t),null!==l)return n&&(l=this.calcHighlightColor(l,u)),h.drawRect(a,s,this.barWidth-1,r-1,l,l)}}),i.fn.sparkline.discrete=T=o(i.fn.sparkline._base,_,{type:"discrete",init:function(t,r,o,a,s){T._super.init.call(this,t,r,o,a,s),this.regionShapes={},this.values=r=i.map(r,Number),this.min=e.min.apply(e,r),this.max=e.max.apply(e,r),this.range=this.max-this.min,this.width=a="auto"===o.get("width")?2*r.length:this.width,this.interval=e.floor(a/r.length),this.itemWidth=a/r.length,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<this.min)&&(this.min=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>this.max)&&(this.max=o.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight="auto"===o.get("lineHeight")?e.round(.3*this.canvasHeight):o.get("lineHeight"))},getRegion:function(t,n,i){return e.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],offset:t}},renderRegion:function(t,n){var i,r,o,a,l=this.values,c=this.options,u=this.min,h=this.max,d=this.range,f=this.interval,p=this.target,g=this.canvasHeight,m=this.lineHeight,v=g-m;return r=s(l[t],u,h),a=t*f,i=e.round(v-v*((r-u)/d)),o=c.get("thresholdColor")&&r<c.get("thresholdValue")?c.get("thresholdColor"):c.get("lineColor"),n&&(o=this.calcHighlightColor(o,c)),p.drawLine(a,i,a,i+m,o)}}),i.fn.sparkline.bullet=k=o(i.fn.sparkline._base,{type:"bullet",init:function(t,i,r,o,a){var s,l,c;k._super.init.call(this,t,i,r,o,a),this.values=i=u(i),c=i.slice(),c[0]=null===c[0]?c[2]:c[0],c[1]=null===i[1]?c[2]:c[1],s=e.min.apply(e,i),l=e.max.apply(e,i),s=r.get("base")===n?s<0?s:0:r.get("base"),this.min=s,this.max=l,this.range=l-s,this.shapes={},this.valueShapes={},this.regiondata={},this.width=o="auto"===r.get("width")?"4.0em":o,this.target=this.$el.simpledraw(o,a,r.get("composite")),i.length||(this.disabled=!0),this.initTarget()},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{fieldkey:t.substr(0,1),value:this.values[t.substr(1)],region:t}},changeHighlight:function(t){var e,n=this.currentRegion,i=this.valueShapes[n];switch(delete this.shapes[i],n.substr(0,1)){case"r":e=this.renderRange(n.substr(1),t);break;case"p":e=this.renderPerformance(t);break;case"t":e=this.renderTarget(t)}this.valueShapes[n]=e.id,this.shapes[e.id]=n,this.target.replaceWithShape(i,e)},renderRange:function(t,n){var i=this.values[t],r=e.round(this.canvasWidth*((i-this.min)/this.range)),o=this.options.get("rangeColors")[t-2];return n&&(o=this.calcHighlightColor(o,this.options)),this.target.drawRect(0,0,r-1,this.canvasHeight-1,o,o)},renderPerformance:function(t){var n=this.values[1],i=e.round(this.canvasWidth*((n-this.min)/this.range)),r=this.options.get("performanceColor");return t&&(r=this.calcHighlightColor(r,this.options)),this.target.drawRect(0,e.round(.3*this.canvasHeight),i-1,e.round(.4*this.canvasHeight)-1,r,r)},renderTarget:function(t){var n=this.values[0],i=e.round(this.canvasWidth*((n-this.min)/this.range)-this.options.get("targetWidth")/2),r=e.round(.1*this.canvasHeight),o=this.canvasHeight-2*r,a=this.options.get("targetColor");return t&&(a=this.calcHighlightColor(a,this.options)),this.target.drawRect(i,r,this.options.get("targetWidth")-1,o-1,a,a)},render:function(){var t,e,n=this.values.length,i=this.target;if(k._super.render.call(this)){for(t=2;t<n;t++)e=this.renderRange(t).append(),this.shapes[e.id]="r"+t,this.valueShapes["r"+t]=e.id;null!==this.values[1]&&(e=this.renderPerformance().append(),this.shapes[e.id]="p1",this.valueShapes.p1=e.id),null!==this.values[0]&&(e=this.renderTarget().append(),this.shapes[e.id]="t0",this.valueShapes.t0=e.id),i.render()}}}),i.fn.sparkline.pie=A=o(i.fn.sparkline._base,{type:"pie",init:function(t,n,r,o,a){var s,l=0;if(A._super.init.call(this,t,n,r,o,a),this.shapes={},this.valueShapes={},this.values=n=i.map(n,Number),"auto"===r.get("width")&&(this.width=this.height),n.length>0)for(s=n.length;s--;)l+=n[s];this.total=l,this.initTarget(),this.radius=e.floor(e.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],percent:this.values[t]/this.total*100,color:this.options.get("sliceColors")[t%this.options.get("sliceColors").length],offset:t}},changeHighlight:function(t){var e=this.currentRegion,n=this.renderSlice(e,t),i=this.valueShapes[e];delete this.shapes[i],this.target.replaceWithShape(i,n),this.valueShapes[e]=n.id,this.shapes[n.id]=e},renderSlice:function(t,i){var r,o,a,s,l,c=this.target,u=this.options,h=this.radius,d=u.get("borderWidth"),f=u.get("offset"),p=2*e.PI,g=this.values,m=this.total,v=f?2*e.PI*(f/360):0;for(s=g.length,a=0;a<s;a++){if(r=v,o=v,m>0&&(o=v+p*(g[a]/m)),t===a)return l=u.get("sliceColors")[a%u.get("sliceColors").length],i&&(l=this.calcHighlightColor(l,u)),c.drawPieSlice(h,h,h-d,r,o,n,l);v=o}},render:function(){var t,i,r=this.target,o=this.values,a=this.options,s=this.radius,l=a.get("borderWidth");if(A._super.render.call(this)){for(l&&r.drawCircle(s,s,e.floor(s-l/2),a.get("borderColor"),n,l).append(),i=o.length;i--;)o[i]&&(t=this.renderSlice(i).append(),this.valueShapes[i]=t.id,this.shapes[t.id]=i);r.render()}}}),i.fn.sparkline.box=M=o(i.fn.sparkline._base,{type:"box",init:function(t,e,n,r,o){M._super.init.call(this,t,e,n,r,o),this.values=i.map(e,Number),this.width="auto"===n.get("width")?"4.0em":r,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var t=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==n&&t.push({field:"lo",value:this.loutlier}),this.routlier!==n&&t.push({field:"ro",value:this.routlier}),this.lwhisker!==n&&t.push({field:"lw",value:this.lwhisker}),this.rwhisker!==n&&t.push({field:"rw",value:this.rwhisker}),t},render:function(){var t,i,r,o,a,s,c,u,h,d,f,p=this.target,g=this.values,m=g.length,v=this.options,y=this.canvasWidth,x=this.canvasHeight,b=v.get("chartRangeMin")===n?e.min.apply(e,g):v.get("chartRangeMin"),_=v.get("chartRangeMax")===n?e.max.apply(e,g):v.get("chartRangeMax"),w=0;if(M._super.render.call(this)){if(v.get("raw"))v.get("showOutliers")&&g.length>5?(i=g[0],t=g[1],o=g[2],a=g[3],s=g[4],c=g[5],u=g[6]):(t=g[0],o=g[1],a=g[2],s=g[3],c=g[4]);else if(g.sort(function(t,e){return t-e}),o=l(g,1),a=l(g,2),s=l(g,3),r=s-o,v.get("showOutliers")){for(t=c=n,h=0;h<m;h++)t===n&&g[h]>o-r*v.get("outlierIQR")&&(t=g[h]),g[h]<s+r*v.get("outlierIQR")&&(c=g[h]);i=g[0],u=g[m-1]}else t=g[0],c=g[m-1];this.quartiles=[o,a,s],this.lwhisker=t,this.rwhisker=c,this.loutlier=i,this.routlier=u,f=y/(_-b+1),v.get("showOutliers")&&(w=e.ceil(v.get("spotRadius")),y-=2*e.ceil(v.get("spotRadius")),f=y/(_-b+1),i<t&&p.drawCircle((i-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append(),u>c&&p.drawCircle((u-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append()),p.drawRect(e.round((o-b)*f+w),e.round(.1*x),e.round((s-o)*f),e.round(.8*x),v.get("boxLineColor"),v.get("boxFillColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/2),e.round((o-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/4),e.round((t-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/2),e.round((s-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/4),e.round((c-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((a-b)*f+w),e.round(.1*x),e.round((a-b)*f+w),e.round(.9*x),v.get("medianColor")).append(),v.get("target")&&(d=e.ceil(v.get("spotRadius")),p.drawLine(e.round((v.get("target")-b)*f+w),e.round(x/2-d),e.round((v.get("target")-b)*f+w),e.round(x/2+d),v.get("targetColor")).append(),p.drawLine(e.round((v.get("target")-b)*f+w-d),e.round(x/2),e.round((v.get("target")-b)*f+w+d),e.round(x/2),v.get("targetColor")).append()),p.render()}}}),P=o({init:function(t,e,n,i){this.target=t,this.id=e,this.type=n,this.args=i},append:function(){return this.target.appendShape(this),this}}),N=o({_pxregex:/(\d+)(px)?\s*$/i,init:function(t,e,n){t&&(this.width=t,this.height=e,this.target=n,this.lastShapeId=null,n[0]&&(n=n[0]),i.data(n,"_jqs_vcanvas",this))},drawLine:function(t,e,n,i,r,o){return this.drawShape([[t,e],[n,i]],r,o)},drawShape:function(t,e,n,i){return this._genShape("Shape",[t,e,n,i])},drawCircle:function(t,e,n,i,r,o){return this._genShape("Circle",[t,e,n,i,r,o])},drawPieSlice:function(t,e,n,i,r,o,a){return this._genShape("PieSlice",[t,e,n,i,r,o,a])},drawRect:function(t,e,n,i,r,o){return this._genShape("Rect",[t,e,n,i,r,o])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(t,e){i(e).html(t)},_calculatePixelDims:function(t,e,n){var r;r=this._pxregex.exec(e),r?this.pixelHeight=r[1]:this.pixelHeight=i(n).height(),r=this._pxregex.exec(t),r?this.pixelWidth=r[1]:this.pixelWidth=i(n).width()},_genShape:function(t,e){var n=j++;return e.unshift(n),new P(this,n,t,e)},appendShape:function(t){alert("appendShape not implemented")},replaceWithShape:function(t,e){alert("replaceWithShape not implemented")},insertAfterShape:function(t,e){alert("insertAfterShape not implemented")},removeShapeId:function(t){alert("removeShapeId not implemented")},getShapeAt:function(t,e,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),O=o(N,{init:function(e,r,o,a){O._super.init.call(this,e,r,o),this.canvas=t.createElement("canvas"),o[0]&&(o=o[0]),i.data(o,"_jqs_vcanvas",this),i(this.canvas).css({display:"inline-block",width:e,height:r,verticalAlign:"top"}),this._insert(this.canvas,o),this._calculatePixelDims(e,r,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=a,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n,i(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(t,e,i){var r=this.canvas.getContext("2d");return t!==n&&(r.strokeStyle=t),r.lineWidth=i===n?1:i,e!==n&&(r.fillStyle=e),r},reset:function(){var t=this._getContext();t.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n},_drawShape:function(t,e,i,r,o){var a,s,l=this._getContext(i,r,o);for(l.beginPath(),l.moveTo(e[0][0]+.5,e[0][1]+.5),a=1,s=e.length;a<s;a++)l.lineTo(e[a][0]+.5,e[a][1]+.5);i!==n&&l.stroke(),r!==n&&l.fill(),this.targetX!==n&&this.targetY!==n&&l.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawCircle:function(t,i,r,o,a,s,l){var c=this._getContext(a,s,l);c.beginPath(),c.arc(i,r,o,0,2*e.PI,!1),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t),a!==n&&c.stroke(),s!==n&&c.fill()},_drawPieSlice:function(t,e,i,r,o,a,s,l){var c=this._getContext(s,l);c.beginPath(),c.moveTo(e,i),c.arc(e,i,r,o,a,!1),c.lineTo(e,i),c.closePath(),s!==n&&c.stroke(),l&&c.fill(),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e+i,n],[e+i,n+r],[e,n+r],[e,n]],o,a)},appendShape:function(t){return this.shapes[t.id]=t,this.shapeseq.push(t.id),this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n,i=this.shapeseq;for(this.shapes[e.id]=e,n=i.length;n--;)i[n]==t&&(i[n]=e.id);delete this.shapes[t]},replaceWithShapes:function(t,e){var n,i,r,o=this.shapeseq,a={};for(i=t.length;i--;)a[t[i]]=!0;for(i=o.length;i--;)n=o[i],a[n]&&(o.splice(i,1),delete this.shapes[n],r=i);for(i=e.length;i--;)o.splice(r,0,e[i].id),this.shapes[e[i].id]=e[i]},insertAfterShape:function(t,e){var n,i=this.shapeseq;for(n=i.length;n--;)if(i[n]===t)return i.splice(n+1,0,e.id),void(this.shapes[e.id]=e)},removeShapeId:function(t){var e,n=this.shapeseq;for(e=n.length;e--;)if(n[e]===t){n.splice(e,1);break}delete this.shapes[t]},getShapeAt:function(t,e,n){return this.targetX=e,this.targetY=n,this.render(),this.currentTargetShapeId},render:function(){var t,e,n,i=this.shapeseq,r=this.shapes,o=i.length,a=this._getContext();for(a.clearRect(0,0,this.pixelWidth,this.pixelHeight),n=0;n<o;n++)t=i[n],e=r[t],this["_draw"+e.type].apply(this,e.args);this.interact||(this.shapes={},this.shapeseq=[])}}),R=o(N,{init:function(e,n,r){var o;R._super.init.call(this,e,n,r),r[0]&&(r=r[0]),i.data(r,"_jqs_vcanvas",this),this.canvas=t.createElement("span"),i(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:e,height:n,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,r),this._calculatePixelDims(e,n,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,o='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",o),this.group=i(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(t,e,i,r,o){var a,s,l,c,u,h,d,f=[];for(d=0,h=e.length;d<h;d++)f[d]=""+e[d][0]+","+e[d][1];return a=f.splice(0,1),o=o===n?1:o,s=i===n?' stroked="false" ':' strokeWeight="'+o+'px" strokeColor="'+i+'" ',l=r===n?' filled="false"':' fillColor="'+r+'" filled="true" ',c=f[0]===f[f.length-1]?"x ":"",u='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+s+l+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+a+" l "+f.join(", ")+" "+c+'e"> </v:shape>'},_drawCircle:function(t,e,i,r,o,a,s){var l,c,u;return e-=r,i-=r,l=o===n?' stroked="false" ':' strokeWeight="'+s+'px" strokeColor="'+o+'" ',c=a===n?' filled="false"':' fillColor="'+a+'" filled="true" ',u='<v:oval  id="jqsshape'+t+'" '+l+c+' style="position:absolute;top:'+i+"px; left:"+e+"px; width:"+2*r+"px; height:"+2*r+'px"></v:oval>'},_drawPieSlice:function(t,i,r,o,a,s,l,c){var u,h,d,f,p,g,m,v;if(a===s)return"";if(s-a===2*e.PI&&(a=0,s=2*e.PI),h=i+e.round(e.cos(a)*o),d=r+e.round(e.sin(a)*o),f=i+e.round(e.cos(s)*o),p=r+e.round(e.sin(s)*o),h===f&&d===p){if(s-a<e.PI)return"";h=f=i+o,d=p=r}return h===f&&d===p&&s-a<e.PI?"":(u=[i-o,r-o,i+o,r+o,h,d,f,p],g=l===n?' stroked="false" ':' strokeWeight="1px" strokeColor="'+l+'" ',m=c===n?' filled="false"':' fillColor="'+c+'" filled="true" ',v='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+g+m+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+i+","+r+" wa "+u.join(", ")+' x e"> </v:shape>')},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e,n+r],[e+i,n+r],[e+i,n],[e,n]],o,a);
-},reset:function(){this.group.innerHTML=""},appendShape:function(t){var e=this["_draw"+t.type].apply(this,t.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",e):this.prerender+=e,this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].outerHTML=r},replaceWithShapes:function(t,e){var n,r=i("#jqsshape"+t[0]),o="",a=e.length;for(n=0;n<a;n++)o+=this["_draw"+e[n].type].apply(this,e[n].args);for(r[0].outerHTML=o,n=1;n<t.length;n++)i("#jqsshape"+t[n]).remove()},insertAfterShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].insertAdjacentHTML("afterEnd",r)},removeShapeId:function(t){var e=i("#jqsshape"+t);this.group.removeChild(e[0])},getShapeAt:function(t,e,n){var i=t.id.substr(8);return i},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})}(document,Math),define("download",["jquery","laconic"],function(){!function(t){var e="downloader",n={_init:function(e){return this.each(function(){function n(){return void 0!=t("<a>")[0].download}var i=t(this),r=t.extend({name:"swish-download",ext:"dat"},e),o=r.content_type,a=r.filename||"swish-download.dat",s=r.charset||"charset=UTF-8";n()&&o||(o="application/octet-stream");var l="data:"+o+";"+s+",";l+="base64"==s?r.data:encodeURIComponent(r.data),i.attr("download",a),i.attr("href",l),i.attr("title","Download (use menu for save link as)"),i.text(a),i.addClass("btn btn-primary download"),i.append(t.el.span({class:"glyphicon glyphicon-download"}))})}};t.fn.downloader=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("runner",["jquery","config","preferences","cm/lib/codemirror","form","prolog","links","modal","answer","laconic","sparkline","download","search"],function($,config,preferences,CodeMirror,form,prolog,links,modal){function glyphButton(t,e){var n=$.el.a({href:"#",class:"close btn btn-link btn-sm",title:e},$.el.span({class:"glyphicon glyphicon-"+t}));return n}!function(t){var e="prologRunners",n={_init:function(n){return this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"runners-menu btn-transparent",ulClass:"pull-right",client:i,actions:{"Collapse all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!0)},"Expand all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!1)},"Stop all":function(){this.find(".prolog-runner").prologRunner("stop")},Clear:function(){this.prologRunners("clear")}}});return n}var i=t(this),r={};r.stretch=t(t.el.div({class:"stretch"})),r.inner=t(t.el.div({class:"inner"})),i.append(n()),i.append(r.stretch),i.append(r.inner),i.on("pane.resize",function(){i.prologRunners("scrollToBottom",!0)}),i.data(e,r)})},run:function(e){var n=this.data("prologRunners");e.iconifyLast&&this.prologRunners("iconifyLast");var i=t.el.div({class:"prolog-runner"});return n.inner.append(i),t(i).prologRunner(e),this.prologRunners("scrollToBottom"),this},clear:function(){this.find(".prolog-runner").prologRunner("close")},iconifyLast:function(){var e=t(this.inner).children().last();if(1==e.length){var n=e.prologRunner();n.alive()||n.toggleIconic(!0)}return this},scrollToBottom:function(e){return this.each(function(){var n=t(this),i=n.data("prologRunners"),r=i.inner.height(),o=n.height()-r-4-2;(o>0||e!==!0)&&(i.stretch.height(o>0?o:0),n.scrollTop(r))}),this}};t.fn.prologRunners=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery),function($){function RS(t){return $(t).closest(".prolog-runners")}function addAnswer(t,e){var n=t.find(".runner-results");return n.append(e),this}function aliveState(t){switch(t){case"running":case"wait-next":case"wait-input":case"wait-debug":return!0;default:return!1}}function answerTable(t){var e=[{class:"projection"}];for(i=0;i<t.length;i++)e.push($.el.th({class:"pl-pvar"},t[i]));e.push($.el.th({class:"answer-nth"},""));var n=$.el.table({class:"prolog-answers"},$.el.tbody($.el.tr.apply(this,e)));return n}function runScripts(elem){var scripts=[];if(elem=$(elem),elem.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(node){"+scripts.join("\n")+"})",node=new Node({node:elem[0]});try{eval(script)(node)}catch(t){alert(t)}}}function Node(t){this.my_node=t.node}function breakpoints(t){var e=t.data(pluginName);return $(t).parents(".swish").swish("breakpoints",e.prolog.id)}function registerSources(t){var e=t.options.runner,n=e.data(pluginName);n.query.editor&&$(n.query.editor).prologEditor("pengine",{add:t.id})}function handleCreate(){var t,e=this.pengine.options.runner,n=e.data(pluginName),i=$.extend({},n.screen),r=config.swish.residuals_var||"Residuals";registerSources(this.pengine),(t=breakpoints(e))&&(i.breakpoints=Pengine.stringify(t)),n.chunk&&(i.chunk=n.chunk),this.pengine.ask("'$swish wrapper'((\n"+termNoFullStop(n.query.query)+"\n), "+r+")",i),e.prologRunner("setState","running")}function handleSuccess(){for(var t=this.pengine.options.runner,e=0;e<this.data.length;e++){var n=this.data[e];this.projection&&(n.projection=this.projection),t.prologRunner("renderAnswer",n)}this.time>.1&&addAnswer(t,$.el.div({class:"cputime"},$.el.span(this.time.toFixed(3)," seconds cpu time"))),t.prologRunner("setState",this.more?"wait-next":"true")}function handleFailure(){var t=this.pengine.options.runner;addAnswer(t,$.el.span({class:"prolog-false"},"false")),t.prologRunner("setState","false")}function handleStop(){var t=this.pengine.options.runner;t.prologRunner("setState","stopped")}function handlePrompt(){var t=this.pengine.options.runner,e=t.data("prologRunner"),n=this.data||"Please enter a Prolog term";if(e.wait_for="term","object"==typeof n){if("trace"==n.type)return t.prologRunner("trace",this);if("form"==n.type)return t.prologRunner("form",this);if("jQuery"==n.type)return t.prologRunner("jQuery",this);"console"==n.type?(n=n.prompt||"console> ",e.wait_for="line"):n=JSON.stringify(n)}t.prologRunner("setPrompt",n),t.prologRunner("setState","wait-input")}function clickableLocations(t,e){var n=/pengine:\/\/[-0-9a-f]{36}\/src:(\d+)/;return t.replace(n,function(t){var e=t.match(n)[1];return"<a class='goto-error' title='Goto location'><span class='glyphicon glyphicon-hand-right'></span> <b>line <span class='line'>"+e+"</span></b></a>"})}function gotoError(t){var e=$(t.target).closest("a.goto-error"),n=$(t.target).closest(".error-context"),i=n.data("error_context");if(e[0]){var r=parseInt(e.find("span.line").text()),o=e.find("span.file").text();return t.preventDefault(),o?n.closest("body.swish").swish("playFile",{file:o,line:r}):$(i.editor).prologEditor("gotoLine",r),!1}i.location.file?n.closest("body.swish").swish("playFile",i.location):$(i.editor).prologEditor("gotoLine",i.location.line)}function handleOutput(t){function e(){var e=a.file+":"+a.line+":";a.ch&&(e+=a.ch+":"),e+="\\s*",t.data=clickableLocations(t.data.replace(new RegExp(e,"g"),""),r.editor),o=n.prologRunner("outputHTML",t.data),$(o).addClass("error-context"),$(o).append($.el.span({class:"glyphicon glyphicon-hand-right"})),$(o).attr("title","Error in program.  Click to show in context"),$(o).on("click",gotoError),$(o).data("error_context",r)}var n=t.pengine.options.runner,i=n.data(pluginName);if(i){if("string"==typeof t.data){var r={editor:i.query.editor};if(t.data=t.data.replace(/'[-0-9a-f]{36}':/g,""),t.location){var o,a=t.location,s="swish://";if(a.file.startsWith(s)){var l=a.file.slice(s.length);r.location={file:l,line:a.line},e()}else a.file.startsWith("pengine://")&&(r.location={line:a.line},e(i.query.editor));registerSources(t.pengine),t.error_context=r,t.error_handler=gotoError,$(".swish-event-receiver").trigger("source-error",t)}else{var o=n.prologRunner("outputHTML",clickableLocations(t.data,r.editor));$(o).on("click",gotoError),$(o).data("error_context",r)}}else"object"==typeof t.data?n.prologRunner(t.data.action,t.data):console.log(t.data);RS(n).prologRunners("scrollToBottom")}}function handleError(){var t=this.pengine.options.runner;"too_many_pengines"==this.code?this.message="Too many open queries.  Please complete some\nqueries by using |Next|, |Stop| or by\nclosing some queries.":"string"==typeof this.data?this.message=this.data.replace(new RegExp("'"+this.pengine.id+"':","g"),""):this.message="Unknown error",t.prologRunner("error",this),t.prologRunner("setState","error")}function handleAbort(){var t=this.pengine.options.runner,e=t.data("prologRunner");e?(t.prologRunner("error","** Execution aborted **"),t.prologRunner("setState","aborted")):this.pengine.destroy()}function handlePing(){var t=this.pengine.options.runner;t.prologRunner("ping",this.data)}function answerHasOutput(t){return t.variables.length>0||t.residuals}function termNoFullStop(t){return String($.trim(t)).replace(/\.$/,"")}var pluginName="prologRunner",keyBindings={59:"next",186:"next",32:"next",190:"stop",13:"stop",65:"stopOrAbort",27:"stopOrAbort",46:"close",112:"help"},methods={_init:function(t){return this.each(function(){function e(t,e,n){var i=$.el.button({title:e,class:"rtb-"+n},$.el.span({class:"glyphicon glyphicon-"+t}));return $(i).on("click",function(){r.prologRunner(n)}),i}function n(){var t=$.el.span({class:"runner-state show-state idle"});return form.widgets.dropdownButton(t)}function i(){function t(){r.prologRunner("next",1)}function e(){r.prologRunner("next",10)}function n(){r.prologRunner("next",100)}function i(){r.prologRunner("next",1e3)}function a(){o.prolog.stop()}function s(){o.prolog.abort()}function l(t,e){var n=$.el.button(e);return $(n).on("click",t),n}function c(){var t=$.el.input({class:"prolog-input"}),e=$.el.button("Send");return $(t).keypress(function(e){return 13==e.which&&r.prologRunner("respond",$(t).val())?($(t).val(""),e.preventDefault(),!1):void("Esc"!=e.key&&e.stopPropagation())}),$(e).on("click",function(){r.prologRunner("respond",$(t).val())}),{input:t,button:e}}function u(){var t=$.el.span({class:"sparklines"},"");return t}var h=c(),d=$.el.div({class:"controller show-state"},$.el.span({class:"running"},l(s,"Abort")),$.el.span({class:"wait-next"},l(t,"Next"),l(e,"10"),l(n,"100"),l(i,"1,000")," ",l(a,"Stop")),$.el.span({class:"wait-input"},l(s,"Abort"),h.button,$.el.span(h.input)),u());return d}var r=$(this),o={};if(r.addClass("prolog-runner panel panel-default"),t.tabled&&r.addClass("tabled"),0!=t.title){var a=$.el.span({class:"query cm-s-prolog"});CodeMirror.runMode(t.query,"prolog",a),r.append($.el.div({class:"runner-title panel-heading"},e("remove-circle","Close","close"),e("minus","Iconify","toggleIconic"),e("download","Download CSV","downloadCSV"),n(),a))}else{var s=glyphButton("remove-circle","Close");r.append(s),$(s).on("click",function(){r.prologRunner("close")})}return t.chunk&&(o.chunk=t.chunk),r.append($.el.div({class:"runner-results panel-body"})),r.append(i()),r.data("prologRunner",o),r.prologRunner("populateActionMenu"),r.keydown(function(t){"wait-input"==r.prologRunner("getState")||t.ctrlKey||t.altKey||keyBindings[t.which]&&(t.preventDefault(),r.prologRunner(keyBindings[t.which]))}),r.on("click","a",links.followLink),o.savedFocus=document.activeElement,r.attr("tabindex",-1),r.focus(),o.query=t,o.answers=0,r.prologRunner("setScreenDimensions"),require([config.http.locations.pengines+"/pengines.js"],function(){o.prolog=new Pengine({server:config.http.locations.pengines,runner:r,application:"swish",src:t.source,destroy:!1,format:"json-html",oncreate:handleCreate,onsuccess:handleSuccess,onfailure:handleFailure,onstop:handleStop,onprompt:handlePrompt,onoutput:handleOutput,onping:handlePing,onerror:handleError,onabort:handleAbort}),o.prolog.state="idle",config.swish.ping&&void 0!=o.prolog.ping&&o.prolog.ping(1e3*config.swish.ping)}),this})},setScreenDimensions:function(){var t,e,n=this.data(pluginName),i=$.el.pre({class:"measure"},"xxxxxxxxxx"),r=this.width();e=this.closest(".prolog-runners"),0==e.length&&(e=this.closest(".nb-view")),e.length&&(t=e.height()),this.append(i);var o=$(i).width()/10,a=$(i).height();$(i).remove(),n.screen={width:r,cols:Math.floor(r/o)},void 0!==t&&(n.screen.height=t,n.screen.rows=Math.floor(t/a))},renderAnswer:function(t){var e=this.data("prologRunner"),n=++e.answers%2==0;if(e.query.tabled){if(1!=e.answers)return t.projection=e.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this;if(t.projection&&t.projection.length>0){var i=answerTable(t.projection);return addAnswer(this,i),e.table=i,e.projection=t.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this}}var r=$.el.div({class:"answer "+(n?"even":"odd")},$.el.span({class:"answer-no"},e.answers));addAnswer(this,r),$(r).prologAnswer(t)},outputHTML:function(t){var e=$.el.span({class:"output"});return addAnswer(this,e),e.innerHTML=t,runScripts(e),e},downloadButton:function(t){var e=$.el.a({class:"download"});addAnswer(this,e),$(e).downloader(t)},syntaxError:function(t){var e=this.data(pluginName);return t.data='<pre class="output msg-error">'+t.message+"</pre>",t.location.file=!0,$(e.query.query_editor).prologEditor("highlightError",t),this},error:function(t){var e;if("object"==typeof t){if("died"==t.code)return addAnswer(this,$.el.div({class:"RIP",title:"Remote pengine timed out"})),this;if("syntax_error"==t.code){var n=t.message.match(/^HTTP:DATA:(\d+):(\d+):\s*(.*)/);n&&4==n.length&&(this.prologRunner("syntaxError",{location:{line:parseInt(n[1])-1,ch:parseInt(n[2])},message:n[3]}),e="Cannot run query due to a syntax error (check query window)")}e||(e=t.message)}else e=t;return addAnswer(this,$.el.pre({class:"prolog-message msg-error"},e)),this},trace:function(t){function e(t){return t.charAt(0).toUpperCase()+t.slice(1)}function n(e,n,i){var r=$.el.button({class:n,title:e},$.el.span(e));return $(r).on("click",function(e){void 0!==i&&(n+="("+Pengine.stringify(i(e))+")"),t.pengine.respond(n),$(e.target).parent().remove()}),r}var i=$.el.span({class:"goal"}),r=t.data;$(i).html(r.goal),addAnswer(this,$.el.div({class:"prolog-trace"},$.el.span({class:"depth",style:"width:"+(5*r.depth-1)+"px"}," "),$.el.span({class:"port "+r.port},e(r.port),":"),i)),"exception"==r.port&&addAnswer(this,$.el.div({class:"prolog-exception"},r.exception.message)),addAnswer(this,$.el.div({class:"trace-buttons"},n("Continue","nodebug",function(t){return breakpoints($(t.target).closest(".prolog-runner"))}),n("Step into","continue"),n("Step over","skip"),n("Step out","up"),n("Retry","retry"),n("Abort","abort"))),this.closest(".swish").find(".tabbed").trigger("trace-location",r),this.prologRunner("setState","wait-debug")},setPrompt:function(t){this.find(".controller input").attr("placeholder",t)},jQuery:function(t){var e,n=t.data;if("string"==typeof n.selector)e=$(n.selector);else if("object"==typeof n.selector){switch(n.selector.root){case"this":root=this;break;case"swish":root=this.closest(".swish")}e=""==n.selector.sub?root:root.find(n.selector.sub)}console.log(e);var i=e[n.method].apply(e,n.arguments);console.log(i),t.pengine.respond(Pengine.stringify(i))},form:function(t){var e=this.data("prologRunner");modal.show({title:"Please enter parameters",body:function(){this.html(t.data.html),this.find("[data-search-in]").search({search:!1}),this.on("click","button[data-action]",function(t){var n=$(t.target).closest("button"),i=n.data("action");if("run"==i){var r=$(t.target).closest("form"),o=form.serializeAsObject(r,!0),a=Pengine.stringify(o);e.prolog.respond(a)}else"cancel"==i&&e.prolog.respond("cancel");return n.closest(".modal").modal("hide"),t.preventDefault(),!1})}})},respond:function(t){var e=this.data("prologRunner");if("term"==e.wait_for){if(s=termNoFullStop(t),""==s)return null}else s=Pengine.stringify(t+"\n");return addAnswer(this,$.el.div({class:"response"},t)),e.prolog.respond(s),this},stop:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.stop()})},stopOrAbort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner"),n=t.prologRunner("getState");switch(n){case"running":case"wait-input":e.prolog.abort();break;case"wait-next":e.prolog.stop()}})},next:function(t){return this.each(function(){var e=$(this),n=e.data("prologRunner");n.prolog.next(t),e.prologRunner("setState","running")})},abort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.abort()})},close:function(){if(this.length){var t=RS(this);this.each(function(){var t=$(this),e=t.data("prologRunner");t.prologRunner("alive")&&($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.abort())}),this.remove(),t.prologRunners("scrollToBottom",!0)}return this},help:function(){$(".swish-event-receiver").trigger("help",{file:"runner.html"})},toggleIconic:function(t){return void 0==t?this.toggleClass("iconic"):t?this.addClass("iconic"):this.removeClass("iconic"),RS(this).prologRunners("scrollToBottom",!0),this},populateActionMenu:function(t){var e=this.find(".runner-title .btn-group.dropdown");return t=$.extend({"Re-run":function(){console.log("Re-Run ",this)}},t),form.widgets.populateMenu(e,this,t),this},downloadCSV:function(t){var e=this.data("prologRunner"),n=termNoFullStop(e.query.query);return prolog.downloadCSV(n,e.query.source,t),this},setState:function(t){var e=this.data("prologRunner");if(e){if(e.prolog.state!=t){var n=this.find(".show-state");n.removeClass(e.prolog.state).addClass(t),e.prolog.state=t,!aliveState(t)&&e.savedFocus?($(e.savedFocus).focus(),e.savedFocus=null):"wait-input"==t&&this.find("input").focus()}var i=RS(this);return aliveState(t)?"wait-next"==t||"true"==t?setTimeout(function(){i.prologRunners("scrollToBottom")},100):i.prologRunners("scrollToBottom"):($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.destroy(),setTimeout(function(){i.prologRunners("scrollToBottom")},100)),this}},getState:function(){var t=this.data("prologRunner");return t.prolog?t.prolog.state:"idle"},alive:function(){return aliveState(this.prologRunner("getState"))},ping:function(t){function e(t,e){function n(t){t=t.toString();for(var e=/(-?\d+)(\d{3})/;e.test(t);)t=t.replace(e,"$1,$2");return t}var i=Math.round(Math.pow(10,e)/1e4*t);return n(i)}var n=this.data("prologRunner");if(n&&n.prolog&&"running"==n.prolog.state){var r=this.find(".sparklines"),o=["global","local","trail"],a=["red","blue","green"],s=["Global ","Local ","Trail "],l=10;for(n.stacks||(n.stacks={global:{usage:[]},local:{usage:[]},trail:{usage:[]}}),i=0;i<o.length;i++){var c=o[i],u=t.stacks[c].limit,h=t.stacks[c].usage,d=Math.log10(h/u*1e4);n.stacks[c].limit=u,n.stacks[c].usage.length>=l&&(n.stacks[c].usage=n.stacks[c].usage.slice(1)),n.stacks[c].usage.push(d),r.sparkline(n.stacks[c].usage,{height:r.parent().height(),composite:i>0,chartRangeMin:0,chartRangeMax:4,lineColor:a[i],tooltipPrefix:s[i],tooltipSuffix:" bytes",tooltipChartTitle:0==i?"Stack usage":void 0,numberFormatter:function(t){return e(u,t)}})}}}},node_id=1;Node.prototype.node=function(){return $(this.my_node)},Node.prototype.unique_id=function(){return this.uid||(this.uid=node_id++),this.uid},$.fn.prologRunner=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery)}),define("gitty",["jquery","config","form","modal","laconic"],function(t,e,n,i){function r(e,n){function i(t){(e[t]||n[t])&&e[t]!=n[t]&&(r[t]={from:e[t],to:n[t]})}var r={};return i("author"),i("title"),i("data"),i("public"),i("example"),i("name"),(d=a(e.tags,n.tags))&&(r.tags=d),t.isEmptyObject(r)?null:r}function o(e,n){var i={};for(var r in e)if(e.hasOwnProperty(r)){switch(typeof e[r]){case"object":if(t.isArray(e[r])&&!a(e[r],n[r]))continue;break;case"string":case"boolean":if(n[r]==e[r])continue}i[r]=e[r]}return i}function a(e,n){function i(t,e){for(var n=[],i=0;i<e.length;i++)t.indexOf(e[i])<0&&n.push(e[i]);return n}var r,o={};return e=e||[],n=n||[],(r=i(e,n)).length>0&&(o.added=r),(r=i(n,e)).length>0&&(o.deleted=r),t.isEmptyObject(o)?null:o}return function(t){var o="gitty",a={_init:function(e){return this.each(function(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}var i,r=t(this),a=r.data(o)||{},s=e.meta;a.commits=[],a.commits[s.commit]=s,a.commit=s.commit,a.editor=e.editor,henabled=!Boolean(s.previous),i=t(t.el.div({class:"tab-content"})),r.append(t.el.ul({class:"nav nav-tabs"},n("Meta data",!0,"gitty-meta-data"),n("History",!1,"gitty-history",henabled),n("Changes",!1,"gitty-diff",henabled))),r.append(i),i.append(t.el.div({class:"tab-pane fade in active gitty-meta-data",id:"gitty-meta-data"})),r.find('[href="#gitty-meta-data"]').on("show.bs.tab",function(t){r.gitty("showMetaData")}),i.append(t.el.div({class:"tab-pane fade gitty-history",id:"gitty-history"})),r.find('[href="#gitty-history"]').on("show.bs.tab",function(t){r.gitty("showHistory")}),i.append(t.el.div({class:"tab-pane fade gitty-diff",id:"gitty-diff"})),r.find('[href="#gitty-diff"]').on("show.bs.tab",function(t){r.gitty("showDiff")}),r.data(o,a),r.gitty("showMetaData")})},title:function(e){var n=t.el.span("File ",t.el.span({class:"filename"},e.name));return"HEAD"!=e.symbolic&&e.commit&&t(n).append("@",t.el.span({class:"sha1 abbrev"},e.commit.substring(0,7))),n},showMetaData:function(){return this.each(function(){var e,i=t(this),r=i.data(o),a=i.find(".gitty-meta-data"),s=r.commits[r.commit];r.metaData!=r.commit&&(r.metaData=r.commit,a.html(""),e=t.el.form({class:"form-horizontal"},n.fields.fileName(s.name,s.public,s.example,!0),n.fields.title(s.title),n.fields.author(s.author),n.fields.date(s.time,"Date","date"),n.fields.tags(s.tags)),"HEAD"==s.symbolic&&t(e).append(n.fields.buttons({label:"Update meta data",action:function(t,e){return r.editor.storage("save",e,"only-meta-data"),!1}})),a.append(e))})},showHistory:function(){return this.each(function(){var r,a=t(this),s=a.data(o),l=a.find(".gitty-history"),c=s.commits[s.commit];if(!s.history){l.html(""),l.append(t.el.table({class:"table table-striped table-condensed gitty-history","data-click-to-select":!0,"data-single-select":!0},t.el.tr(t.el.th("Comment"),t.el.th("Date"),t.el.th("User"),t.el.th("Changed")),t.el.tbody())),r=n.widgets.glyphIconButton("play",{title:"Open the highlighted version in SWISH",class:"btn-primary"}),l.append(r),t(r).on("click",function(e){var n=a.find("tr.success");if(1==n.length){var i=n.data("commit");"HEAD"==s.commits[i].symbolic?file=s.commits[i].name:file=i,a.parents(".swish").swish("playFile",file),t("#ajaxModal").modal("hide")}return!1});var u=e.http.locations.web_storage+encodeURI(c.name);t.ajax({url:u,contentType:"application/json",type:"GET",data:{format:"history",depth:6,to:s.commit},success:function(t){a.gitty("fillHistoryTable",t),s.history=s.commit},error:function(t){i.ajaxError(jqXHR)}})}})},fillHistoryTable:function(e){function n(e){var n,i,o=t.el.span();if(e.previous){if((n=a.commits[e.previous])&&(i=r(e,n))){var s=0;for(var l in i)if(i.hasOwnProperty(l)){var c="name"==l?"forked "+n.name:l;t(o).append(0==s++?void 0:", ",t.el.span({class:"change-type"},c))}}}else t(o).append("initial");return o}for(var i=this,a=this.data(o),s=this.find(".table.gitty-history tbody"),l=0;l<e.length;l++){var c=e[l];a.commits[c.commit]||(a.commits[c.commit]=c)}for(var l=0;l<e.length;l++){var u,c=e[l];if(l==e.length-1&&c.previous&&!a.commit[c.previous])break;var h={"data-commit":c.commit};a.commit==c.commit&&(h.class="success"),u=t.el.tr(h,t.el.td({class:"commit-message"},c.commit_message||"No comment"),t.el.td({class:"date"},new Date(1e3*c.time).toLocaleString()),t.el.td({class:"author"},c.author||"No author"),t.el.td({class:"changes"},n(c))),s.append(u)}s.on("click","tr",function(e){var n=t(e.target).parents("tr"),r=n.data("commit");i.gitty("setCommit",r)})},setCommit:function(t){var e=this.data(o),n=this.parent(".modal-content").find("h2");return n.html(""),n.append(this.gitty("title",e.commits[t])),this.find("tr.success").removeClass("success"),this.find("tr[data-commit="+t+"]").addClass("success"),e.commit=t,this},showDiff:function(){return this.each(function(){var n=t(this),r=n.data(o);if(r.diff!=r.commit){n.find(".gitty-diff").html("");var a=e.http.locations.web_storage+encodeURI(r.commit);t.ajax({url:a,contentType:"application/json",type:"GET",data:{format:"diff"},success:function(t){n.gitty("fillDiff",t),r.diff=r.commit},error:function(t){i.ajaxError(t)}})}})},fillDiff:function(t){t.tags&&this.gitty("diffTags",t.tags),t.data&&this.gitty("udiffData",t.data)},diffTags:function(e){function n(e,n){o.append(t.el.span({class:"diff-tag "+n},e))}var i=this.find(".gitty-diff"),r=t(t.el.div({class:"diff-tags"},t.el.label("Tags"))),o=t(t.el.span({class:"diff-tags"}));if(r.append(o),e.deleted.length){o.append("Removed: ");for(var a=0;a<e.deleted.length;a++)n(e.deleted[a],"deleted")}if(e.added.length){o.append(e.deleted.length?", ":"","Added: ");for(var a=0;a<e.added.length;a++)n(e.added[a],"added")}return i.append(r),this},udiffData:function(e){for(var n=this.find(".gitty-diff"),i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=0;o<i.length;o++){var a=i[o],s={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};r.append(t.el.span({class:s[a.charAt(0)]},a),t.el.br())}n.append(r)}};t.fn.gitty=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),{diffMeta:r,reduceMeta:o,diffTags:a}});var __whitespace={" ":!0,"\t":!0,"\n":!0,"\f":!0,"\r":!0},difflib={defaultJunkFunction:function(t){return __whitespace.hasOwnProperty(t)},stripLinebreaks:function(t){return t.replace(/^[\n\r]*|[\n\r]*$/g,"")},stringAsLines:function(t){for(var e=t.indexOf("\n"),n=t.indexOf("\r"),i=e>-1&&n>-1||n<0?"\n":"\r",r=t.split(i),o=0;o<r.length;o++)r[o]=difflib.stripLinebreaks(r[o]);return r},__reduce:function(t,e,n){if(null!=n)var i=n,r=0;else{if(!e)return null;var i=e[0],r=1}for(;r<e.length;r++)i=t(i,e[r]);return i},__ntuplecomp:function(t,e){for(var n=Math.max(t.length,e.length),i=0;i<n;i++){if(t[i]<e[i])return-1;if(t[i]>e[i])return 1}return t.length==e.length?0:t.length<e.length?-1:1},__calculate_ratio:function(t,e){return e?2*t/e:1},__isindict:function(t){return function(e){return t.hasOwnProperty(e)}},__dictget:function(t,e,n){return t.hasOwnProperty(e)?t[e]:n},SequenceMatcher:function(t,e,n){this.set_seqs=function(t,e){this.set_seq1(t),this.set_seq2(e)},this.set_seq1=function(t){t!=this.a&&(this.a=t,this.matching_blocks=this.opcodes=null)},this.set_seq2=function(t){t!=this.b&&(this.b=t,this.matching_blocks=this.opcodes=this.fullbcount=null,this.__chain_b())},this.__chain_b=function(){for(var t=this.b,e=t.length,n=this.b2j={},i={},r=0;r<t.length;r++){var o=t[r];if(n.hasOwnProperty(o)){var a=n[o];e>=200&&100*a.length>e?(i[o]=1,delete n[o]):a.push(r)}else n[o]=[r]}for(var o in i)i.hasOwnProperty(o)&&delete n[o];var s=this.isjunk,l={};if(s){for(var o in i)i.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete i[o]);for(var o in n)n.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete n[o])}this.isbjunk=difflib.__isindict(l),this.isbpopular=difflib.__isindict(i)},this.find_longest_match=function(t,e,n,i){for(var r,o=this.a,a=this.b,s=this.b2j,l=this.isbjunk,c=t,u=n,h=0,d=null,f={},p=[],g=t;g<e;g++){var m={},v=difflib.__dictget(s,o[g],p);for(var y in v)if(v.hasOwnProperty(y)){if(d=v[y],d<n)continue;if(d>=i)break;m[d]=r=difflib.__dictget(f,d-1,0)+1,r>h&&(c=g-r+1,u=d-r+1,h=r)}f=m}for(;c>t&&u>n&&!l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&!l(a[u+h])&&o[c+h]==a[u+h];)h++;for(;c>t&&u>n&&l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&l(a[u+h])&&o[c+h]==a[u+h];)h++;return[c,u,h]},this.get_matching_blocks=function(){if(null!=this.matching_blocks)return this.matching_blocks;for(var t,e,n,i,r,o,a,s,l,c=this.a.length,u=this.b.length,h=[[0,c,0,u]],d=[];h.length;)r=h.pop(),t=r[0],e=r[1],n=r[2],i=r[3],l=this.find_longest_match(t,e,n,i),o=l[0],a=l[1],s=l[2],s&&(d.push(l),t<o&&n<a&&h.push([t,o,n,a]),o+s<e&&a+s<i&&h.push([o+s,e,a+s,i]));d.sort(difflib.__ntuplecomp);var f,p,g,m=0,v=0,y=0,x=0,b=[];for(var _ in d)d.hasOwnProperty(_)&&(x=d[_],f=x[0],p=x[1],g=x[2],m+y==f&&v+y==p?y+=g:(y&&b.push([m,v,y]),m=f,v=p,y=g));return y&&b.push([m,v,y]),b.push([c,u,0]),this.matching_blocks=b,this.matching_blocks},this.get_opcodes=function(){if(null!=this.opcodes)return this.opcodes;var t=0,e=0,n=[];this.opcodes=n;var i,r,o,a,s,l=this.get_matching_blocks();for(var c in l)l.hasOwnProperty(c)&&(i=l[c],r=i[0],o=i[1],a=i[2],s="",t<r&&e<o?s="replace":t<r?s="delete":e<o&&(s="insert"),s&&n.push([s,t,r,e,o]),t=r+a,e=o+a,a&&n.push(["equal",r,t,o,e]));return n},this.get_grouped_opcodes=function(t){t||(t=3);var e=this.get_opcodes();e||(e=[["equal",0,1,0,1]]);var n,i,r,o,a,s;"equal"==e[0][0]&&(n=e[0],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[0]=[i,Math.max(r,o-t),o,Math.max(a,s-t),s]),"equal"==e[e.length-1][0]&&(n=e[e.length-1],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[e.length-1]=[i,r,Math.min(o,r+t),a,Math.min(s,a+t)]);var l=t+t,c=[],u=[];for(var h in e)e.hasOwnProperty(h)&&(n=e[h],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],"equal"==i&&o-r>l&&(c.push([i,r,Math.min(o,r+t),a,Math.min(s,a+t)]),u.push(c),c=[],r=Math.max(r,o-t),a=Math.max(a,s-t)),c.push([i,r,o,a,s]));return!c||1==c.length&&"equal"==c[0][0]||u.push(c),u},this.ratio=function(){return matches=difflib.__reduce(function(t,e){return t+e[e.length-1]},this.get_matching_blocks(),0),difflib.__calculate_ratio(matches,this.a.length+this.b.length)},this.quick_ratio=function(){var t,e;if(null==this.fullbcount){this.fullbcount=t={};for(var n=0;n<this.b.length;n++)e=this.b[n],t[e]=difflib.__dictget(t,e,0)+1}t=this.fullbcount;for(var i={},r=difflib.__isindict(i),o=numb=0,n=0;n<this.a.length;n++)e=this.a[n],r(e)?numb=i[e]:numb=difflib.__dictget(t,e,0),i[e]=numb-1,numb>0&&o++;return difflib.__calculate_ratio(o,this.a.length+this.b.length)},this.real_quick_ratio=function(){var t=this.a.length,e=this.b.length;return _calculate_ratio(Math.min(t,e),t+e)},this.isjunk=n?n:difflib.defaultJunkFunction,this.a=this.b=null,this.set_seqs(t,e)}};define("difflib",function(){}),diffview={buildView:function(t){function e(t,e){var n=document.createElement(t);return n.className=e,n}function n(t,e){var n=document.createElement(t);return n.appendChild(document.createTextNode(e)),n}function i(t,e,n){var i=document.createElement(t);return i.className=e,i.appendChild(document.createTextNode(n)),i}function r(t,r,o,a,s){return r<o?(t.appendChild(n("th",(r+1).toString())),t.appendChild(i("td",s,a[r].replace(/\t/g,"    "))),r+1):(t.appendChild(document.createElement("th")),t.appendChild(e("td","empty")),r)}function o(t,e,r,o,a){t.appendChild(n("th",null==e?"":(e+1).toString())),t.appendChild(n("th",null==r?"":(r+1).toString())),t.appendChild(i("td",a,o[null!=e?e:r].replace(/\t/g,"    ")))}var a=t.baseTextLines,s=t.newTextLines,l=t.opcodes,c=t.baseTextName?t.baseTextName:"Base Text",u=t.newTextName?t.newTextName:"New Text",h=t.contextSize,d=0==t.viewType||1==t.viewType?t.viewType:0;if(null==a)throw"Cannot build diff view; baseTextLines is not defined.";if(null==s)throw"Cannot build diff view; newTextLines is not defined.";if(!l)throw"Canno build diff view; opcodes is not defined.";var f=document.createElement("thead"),p=document.createElement("tr");f.appendChild(p),d?(p.appendChild(document.createElement("th")),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c+" vs. "+u))):(p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c)),p.appendChild(document.createElement("th")),
-p.appendChild(i("th","texttitle",u))),f=[f];for(var g,m=[],v=0;v<l.length;v++){code=l[v],change=code[0];for(var y=code[1],x=code[2],b=code[3],_=code[4],w=Math.max(x-y,_-b),S=[],C=[],T=0;T<w;T++){if(h&&l.length>1&&(v>0&&T==h||0==v&&0==T)&&"equal"==change){var k=w-(0==v?1:2)*h;if(k>1){if(S.push(p=document.createElement("tr")),y+=k,b+=k,T+=k-1,p.appendChild(n("th","...")),d||p.appendChild(i("td","skip","")),p.appendChild(n("th","...")),p.appendChild(i("td","skip","")),v+1==l.length)break;continue}}S.push(p=document.createElement("tr")),d?"insert"==change?o(p,null,b++,s,change):"replace"==change?(C.push(g=document.createElement("tr")),y<x&&o(p,y++,null,a,"delete"),b<_&&o(g,null,b++,s,"insert")):"delete"==change?o(p,y++,null,a,change):o(p,y++,b++,a,change):(y=r(p,y,x,a,change),b=r(p,b,_,s,change))}for(var T=0;T<S.length;T++)m.push(S[T]);for(var T=0;T<C.length;T++)m.push(C[T])}m.push(p=i("th","author","diff view generated by ")),p.setAttribute("colspan",d?3:4),p.appendChild(g=n("a","jsdifflib")),g.setAttribute("href","http://github.com/cemerick/jsdifflib"),f.push(p=document.createElement("tbody"));for(var v in m)m.hasOwnProperty(v)&&p.appendChild(m[v]);p=e("table","diff"+(d?" inlinediff":""));for(var v in f)f.hasOwnProperty(v)&&p.appendChild(f[v]);return p}},define("diffview",function(){}),define("diff",["jquery","difflib","diffview"],function(){!function(t){var e="diff",n={_init:function(e){return this.each(function(){var n=difflib.stringAsLines(e.base),i=difflib.stringAsLines(e.head),r=new difflib.SequenceMatcher(n,i),o=r.get_opcodes(),a=void 0==e.contextSize?3:e.contextSize;this.appendChild(diffview.buildView({baseTextLines:n,newTextLines:i,opcodes:o,baseTextName:e.baseName||"Base text",newTextName:e.headName||"Current text",contextSize:a,viewType:t("inline").checked?1:0}))})}};t.fn.diff=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("storage",["jquery","config","modal","form","gitty","history","tabbed","utils","laconic","diff"],function(t,e,n,i,r,o,a,s){function l(t){return t?t.split(".").slice(0,-1).join("."):null}function c(t){return t?t.split("/").pop():null}function u(e){if(e){for(var n=e.split("\n"),i=t(t.el.pre({class:"udiff"})),r=0;r<n.length;r++){var o=n[r],a={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};i.append(t.el.span({class:a[o.charAt(0)]},o),t.el.br())}return i}return t(t.el.div({class:"udiff"},"No changes"))}function h(e){function n(e,n){r.append(t.el.span({class:n},e),t.el.br())}for(var i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=null,a=0;a<i.length;a++){var s=i[a];"<<<<<<<"==s?(n(s,"edit-conflict-sep"),o="edit-conflict-me"):"edit-conflict-me"==o&&"======="==s?(n(s,"edit-conflict-sep"),o="edit-conflict-them"):"edit-conflict-them"==o&&">>>>>>>"==s?(n(s,"edit-conflict-sep"),o=null):o&&n(s,o)}return r}!function(t){function d(e,n){var i=t.el.table({class:"table table-striped"});t(i).append(t.el.tr(t.el.th("Path"),t.el.td(n.path))),t(i).append(t.el.tr(t.el.th("Modified"),t.el.td(new Date(1e3*n.last_modified).toLocaleString()))),t(i).append(t.el.tr(t.el.th("Loaded"),t.el.td(n.modified_since_loaded?"yes (modified)":n.loaded?"yes":"no"))),e.append(i)}function f(t,e){return"file_exists"==e.error?t+": file exists: "+e.file:JSON.stringify(e)}var p="storage",g={typeName:"program",is_clean:!0,markClean:function(t){}},m={_init:function(e){return this.each(function(){function n(e,n){var i=t(e.target);if(i.hasClass("storage")&&i.is(":visible")){var r=i.storage.apply(i,Array.prototype.slice.call(arguments,1));if("propagate"==r)return}e.stopPropagation()}var i=t(this),r=t.extend({},g,e);i.data(p,r),i.addClass("storage"),i.storage("update_tab_title"),i.on("save",function(t,e){n(t,"save",e)}),i.on("download",function(t){n(t,"download")}),i.on("fileInfo",function(t){n(t,"info")}),i.on("diff",function(t){n(t,"diff")}),i.on("revert",function(t){n(t,"revert")}),i.on("reload",function(t){n(t,"reload")}),i.on("chat-about-file",function(t){n(t,"chat")}),i.on("follow-file",function(t){n(t,"follow")}),i.on("activate-tab",function(t){}),i.on("data-is-clean",function(t,e){i.storage("markClean",e)}),i.on("fullscreen",function(t,e){e||i.storage("update_tab_title")}),t(window).bind("beforeunload",function(t){return i.storage("unload","beforeunload",t)}),i.storage("chat",(r.meta||{}).chat||"update")})},supportsType:function(t){var e=this.data(p),n=a.tabTypes[e.typeName];if("string"==typeof t&&(t={data:t}),t.meta&&t.meta.name||t.url){var i=t.meta&&t.meta.name?t.meta.name:t.url,r=i.split(".").pop();if(r!=n.dataType)return!1}return!0},setSource:function(n){var i=this.data(p);if("string"==typeof n&&(n={data:n}),this.storage("supportsType",n))return 0!=this.storage("unload","setSource")&&(n.meta?(i.file=n.meta.name,i.meta=n.meta,i.url=null,"HEAD"==n.meta.symbolic&&(n.url=e.http.locations.web_storage+n.meta.name)):(i.file=null,i.meta=null),i.url=n.url,i.st_type=n.st_type,i.chats=n.chats,i.setValue(n),i.cleanGeneration=i.changeGen(),i.cleanData=i.getValue(),i.cleanCheckpoint=n.cleanCheckpoint||"load",this.storage("update_tab_title"),n.url||(n.url=e.http.locations.swish),n.noHistory||o.push(n),this.storage("chat",n.chat||(n.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),this)},update_tab_title:function(e){return this.each(function(){var n=t(this),i=n.storage("docid");if("chats++"==e)n.tabbed("chats++",i);else{var r=n.data(p),o=a.tabTypes[r.typeName],s=l(r.file)||l(c(r.url))||o.label;i&&r.chats&&(r.chats.docid=i),n.tabbed("title",s,o.dataType),n.tabbed("chats",r.chats)}})},load:function(i){if(i){var r=this;this.data(p);t.ajax({url:e.http.locations.web_storage+i,dataType:"text",success:function(t){r.storage("setSource",{data:t,meta:{name:i}})},error:function(t){n.ajaxError(jqXHR)}})}return this},revert:function(){var t=this.data(p);return t.setValue(t.cleanData),t.cleanGeneration=t.changeGen(),t.markClean(!0),this},reload:function(){var i=this,r=i.data(p),o=e.http.locations.web_storage+encodeURI(r.file);return t.ajax({url:o,type:"GET",data:{format:"json"},success:function(e){e.url=o,e.st_type="gitty",e.noHistory=!0,i.storage("setSource",e),t("#chat").trigger("send",{type:"reloaded",file:r.file,commit:e.meta.commit})},error:function(t){n.ajaxError(t)}}),this},save:function(i,s){var l,c=this.data(p),u=a.tabTypes[c.typeName],h=e.http.locations.web_storage,d="POST",g=this;if(("filesys"==c.st_type||"external"==c.st_type)&&c.url)return this.storage("saveURL");if("as"==i)return this.storage("saveAs"),this;if(!c.file||i&&i.default||i&&i.name!=c.file||(h+=encodeURI(c.file),d="PUT"),"only-meta-data"==s){if(i=r.reduceMeta(i,c.meta),t.isEmptyObject(i))return void alert("No change");l={update:"meta-data"}}else if("POST"==d)l={data:c.getValue(),type:u.dataType};else if(c.isClean(c.cleanGeneration)){if(null==r.diffTags(c.meta.tags,i.tags))return void alert("No change")}else l={data:c.getValue(),type:u.dataType};return i&&(l.meta=i),c.meta&&(l.previous=c.meta.commit),t.ajax({url:h,dataType:"json",contentType:"application/json",type:d,data:JSON.stringify(l),success:function(e){e.error?n.alert(f("Could not save",e)):(c.meta&&c.meta.example!=e.meta.example&&g.closest(".swish").trigger("examples-changed"),c.file=e.file,c.meta=e.meta,c.st_type="gitty",c.cleanGeneration=c.changeGen(),c.cleanData=c.getValue(),c.cleanCheckpoint="save",c.markClean(!0),n.feedback({html:"Saved",owner:g}),"POST"==d&&(c.chats={docid:g.storage("docid"),total:0}),g.storage("update_tab_title"),g.storage("chat",(c.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),o.push(e))},error:function(t,e,i){409==t.status?g.storage("resolveEditConflict",JSON.parse(t.responseText)):403==t.status?n.alert("Permission denied.  Please try a different name"):(alert('Save failed; click "ok" to try again'),g.storage("saveAs"))}}),this},saveAs:function(e){function n(){this.append(t.el.form({class:"form-horizontal"},i.fields.hidden("identity",d.identity),i.fields.hidden("default",s.default),i.fields.hidden("chat",s.chat),d.identity?void 0:i.fields.hidden("avatar",d.avatar),i.fields.fileName(u?null:o.file,s.public,s.example),i.fields.title(s.title),i.fields.author(f,d.identity),c?i.fields.commit_message():void 0,i.fields.tags(s.tags),i.fields.modify(g,r),i.fields.follow(d.email),i.fields.buttons({label:u?"Fork "+h.label:c?"Update "+h.label:"Save "+h.label,action:function(t,e){return l.storage("save",e),!1}})))}var r,o=this.data(p),s=o.meta||{},l=this,c=Boolean(o.file),u=o.meta&&"HEAD"!=s.symbolic&&!s.default,h=a.tabTypes[o.typeName],d=t("#login").login("get_profile",["display_name","avatar","email","identity"]),f=d.display_name,g=s.modify;return void 0===s.public&&(s.public=!0),d.identity?g||(g=["login","owner"]):g=["any","login","owner"],r=d.identity==s.identity||d.identity&&!(s.identity||s.user),e=e||{},i.showDialog({title:e.title?e.title:u?"Fork from "+s.commit.substring(0,7):c?"Save new version":"Save "+h.label+" as",body:n}),this},saveURL:function(){var e=this.data(p),i=e.getValue(),r=a.type(e.url)||{},o=this;return e.isClean(e.cleanGeneration)?(alert("No change"),this):(t.ajax({url:e.url,dataType:"json",contentType:r.contentType||"text/plain",type:"PUT",data:i,success:function(t){t.error?n.alert(f("Could not save",t)):(e.cleanGeneration=e.changeGen(),e.cleanData=e.getValue(),e.cleanCheckpoint="save",e.markClean(!0),n.feedback({html:"Saved",owner:o}))},error:function(t){if(403==t.status){var i=e.url;delete e.meta,delete e.st_type,delete e.url,o.storage("saveAs",{title:"<div class='warning'>Could not save to "+i+"</div> Save a copy as"})}else n.ajaxError(t)}}),this)},resolveEditConflict:function(e){function n(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}function i(e,n){tabs.append(t.el.div({class:"tab-pane fade "+e+" "+n,id:e})),o.find('[href="#'+e+'"]').on("show.bs.tab",function(t){o.storage(e)})}var o=t(this);o.addClass("edit-conflict"),tabs=t(t.el.div({class:"tab-content"})),o.append(t.el.ul({class:"nav nav-tabs"},n("My edits",!0,"merge-my-edits"),n("Their edits",!1,"merge-server-edits"),n("Conflicts",!1,"merge-conflicts"))),o.append(tabs),i("merge-my-edits","in active"),i("merge-server-edits",""),i("merge-conflicts",""),o.data("edit-conflict",e),o.storage("merge-my-edits"),o.append(r=t.el.div({class:"form-group"},t.el.button({name:"merge",class:"btn btn-primary"},"Merge"),t.el.button({name:"discard-my-edits",class:"btn btn-primary"},"Discard my changes"),t.el.button({name:"discard-server-edits",class:"btn btn-primary"},"Discard changes on server"),t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel"))),t(r).on("click","button",function(e){return o.storage("editConflictAction",t(e.target).attr("name")),t(e.target).parents(".modal").modal("hide"),e.preventDefault(),!1})}var r;return e.storage=this,i.showDialog({title:"Edit conflict",body:n}),this},"merge-my-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-my-edits").empty().append(u(e.edit.me.data))},"merge-server-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-server-edits").empty().append(u(e.edit.server.data))},"merge-conflicts":function(){var e=t(this).data("edit-conflict"),n=t(this).find(".merge-conflicts");n.empty(),0!=e.patch_status?n.append(h(e.merged)):n.html("No merge conflicts")},editConflictAction:function(e){var n=t(this).data("edit-conflict"),i=t(n.storage).data(p);if("merge"==e)i.setValue(n.merged),i.meta.commit=n.edit.server.to.commit;else if("discard-my-edits"==e)t(n.storage).storage("reload");else if("discard-server-edits"==e){var i=t(n.storage).data(p);i.meta.commit=n.edit.server.to.commit}},download:function(){var e=this.data(p),n=a.tabTypes[e.typeName],i=e.getValue(),r="data:text/plain;charset=UTF-8,"+encodeURIComponent(i),o=t.el.a({href:r,download:e.file||"swish."+n.dataType});return this.append(o),o.click(),t(o).remove(),this},getData:function(e){var n=[];return e=e||{},this.each(function(){function i(t){r.meta[t]&&(o[t]=r.meta[t])}var r=t(this).data(p),o={};if(o.type=r.type,r.url&&(o.url=r.url),r.meta&&(i("name"),i("path"),i("modified"),i("loaded"),i("modified_since_loaded"),i("module")),1==t(this).closest(".tab-pane.active").length&&(o.active=!0),!e.type||e.name&&e.name.split(".").pop()==e.type){if(e.data){var a=r.getValue();o.modified=a!=r.cleanData,(1==e.data||o.modified&&"if_modified"==e.data)&&(o.data=a)}n.push(o)}}),n},match:function(e){for(var n=0;n<this.length;n++){me=t(this[n]);var i=me.data(p);if(e.file&&e.file==i.file)return me;if(e.url&&e.url==i.url)return me}},expose:function(t){var e=this.closest(".tab-pane");if(1==e.length){var i=e.closest(".tabbed");return i.tabbed("show",e.attr("id")),t&&n.feedback({html:t,owner:this}),this}},info:function(){function e(){"gitty"==r.st_type?(r.editor=a,this.gitty(r)):"filesys"==r.st_type?d(this,o):r.st_type||this.append(t.el.p("The source is not associated with a file. ","Use ",t.el.b("Save ...")," to save the source with meta information."))}var n,r=this.data(p),o=r.meta||{},a=this;return n="gitty"==r.st_type?t().gitty("title",o):"filesys"==r.st_type?"File system -- "+c(o.path):"external"==r.st_type?"External -- "+r.url:"Scratch source",i.showDialog({title:n,body:e}),this},diff:function(){function e(){var e=t.el.div(),i=n.getValue();if(this.append(e),i==n.cleanData)t(e).append(t.el.p("No changes"));else{var o,a=t.el.div({class:"btn-group diff",role:"group"},t.el.button({name:"close","data-dismiss":"modal",class:"btn btn-primary"},"Close"),o=t.el.button({name:"revert",class:"btn btn-danger","data-dismiss":"modal"},"Revert changes"));t(e).diff({base:n.cleanData,head:i,baseName:r[n.cleanCheckpoint]}),this.append(t.el.div({class:"wrapper text-center"},a)),t(o).on("click",function(e){t(".swish-event-receiver").trigger("revert")}),this.parents("div.modal-dialog").addClass("modal-wide")}}var n=this.data(p),r={load:"Loaded text",new:"New text",save:"Saved text"};return i.showDialog({title:"Changes since "+r[n.cleanCheckpoint],body:e}),this},getSelection:function(){if(this.hasClass("prolog-editor")){var t=this.prologEditor("getSelection");return t?t[0].selections:null}return this.hasClass("notebook")?this.notebook("getSelection"):void console.log("Don't know how to get selection from",this)},getSelectionLabel:function(t){function e(t){for(var e="",n=0;n<t.length;n++){var i=t[n];""!=e&&(e+=";"),e+="@L"+(i.from.line+1),i.to.line!=i.from.line&&(e+="-"+(i.to.line+1))}return e}if(t[0].selections){for(var n="",i=0;i<t.length;i++){var r=t[i];""!=n&&(n+=","),n+=(r.cell||"")+e(r.selections)}return n}return e(t)},restoreSelection:function(t){return this.hasClass("prolog-editor")?this.prologEditor("restoreSelection",t):this.hasClass("notebook")?this.notebook("restoreSelection",t):void console.log(t)},docid:function(t,e){if(e=e||this.data(p),!t||t==e.st_type){var n=e.meta||{};if("gitty"==e.st_type)return"gitty:"+n.name;if("filesys"==e.st_type)return"filesys:"+n.path;if("external"==e.st_type)return"url:"+e.url}},chat:function(e){var i=this.data(p),r=this.storage("docid","gitty");if(r){var o=this.closest(".tab-pane").find(".chatroom");if(o.length>0)"update"==e?o.chatroom("docid",r,"close"):s.flash(o);else if("update"!=e){var a="large"==e?80:20;o=t(t.el.div({class:"chatroom"})),o.chatroom({docid:r}),this.tile("split",o,"below",a,150).addClass("chat-container")}}else"update"==e?this.storage("close_chat"):i.st_type?n.alert("The chat facility is only available for user-saved files.<br>You can use the <b>Open hangout</b> menu from the top-right bell to access the hangout room."):n.alert("You can only chat about a saved document.<br>Please save your document and try again.");return this},close_chat:function(){this.closest(".chat-container").find(".chatroom").chatroom("close")},chat_message:function(e){return e.displayed||0!=e.create?this.each(function(){var n=t(this);if(e.docid==n.storage("docid")){var i=n.data(p);i.chats?(void 0!=i.chats.total&&i.chats.total++,void 0!=i.chats.count&&i.chats.count++):i.chats={total:1},n.storage("update_tab_title","chats++")}}):this},follow:function(){var t=this.storage("docid","gitty");t?n.server_form({title:"Follow file options",url:e.http.locations.follow_file_options,data:{docid:t}}):n.alert("Sorry, can only follow files")},unload:function(t,e){var n=this.data(p);if(n&&(n.meta&&o.addRecent({st_type:"gitty",id:n.meta.name}),n.cleanData!=n.getValue())){if("beforeunload"==t){var i="The source editor has unsaved changes.\nThese will be lost if you leave the page";return e=e||window.event,e&&(e.returnValue=i),i}var i="The source editor has unsaved changes.\nThese will be lost"+("setSource"==t?" if you load a new program":"closetab"==t?" close this tab":"");return confirm(i)}},close:function(){},markClean:function(t){var e=this.data(p);e.is_clean=t},chat_status:function(e){var n=[];this.each(function(){var e=t(this).data(p);if("gitty"==e.st_type&&e.meta&&e.meta.name){var i={file:e.meta.name};e.is_clean||(i.modified=!0),t(this).is(":visible")&&(i.visible=!0),n.push(i)}}),(e||n.length>0)&&t("#chat").trigger("send",{type:"has-open-files",files:n})}};t.fn.storage=function(e){return m[e]?m[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+p):m._init.apply(this,arguments)}}(jQuery)}),function(){"use strict";function t(t){t?(c[0]=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0,this.blocks=c):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,this.h3=271733878,this.h4=3285377520,this.block=this.start=this.bytes=0,this.finalized=this.hashed=!1,this.first=!0}var e="object"==typeof window?window:{},n=!e.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;n&&(e=global);var i=!e.JS_SHA1_NO_COMMON_JS&&"object"==typeof module&&module.exports,r="function"==typeof define&&define.amd,o="0123456789abcdef".split(""),a=[-2147483648,8388608,32768,128],s=[24,16,8,0],l=["hex","array","digest","arrayBuffer"],c=[],u=function(e){return function(n){return new t(!0).update(n)[e]()}},h=function(){var e=u("hex");n&&(e=d(e)),e.create=function(){return new t},e.update=function(t){return e.create().update(t)};for(var i=0;i<l.length;++i){var r=l[i];e[r]=u(r)}return e},d=function(t){var e=require("crypto"),n=require("buffer").Buffer,i=function(i){if("string"==typeof i)return e.createHash("sha1").update(i,"utf8").digest("hex");if(i.constructor===ArrayBuffer)i=new Uint8Array(i);else if(void 0===i.length)return t(i);return e.createHash("sha1").update(new n(i)).digest("hex")};return i};t.prototype.update=function(t){if(!this.finalized){var n="string"!=typeof t;n&&t.constructor===e.ArrayBuffer&&(t=new Uint8Array(t));for(var i,r,o=0,a=t.length||0,l=this.blocks;o<a;){if(this.hashed&&(this.hashed=!1,l[0]=this.block,l[16]=l[1]=l[2]=l[3]=l[4]=l[5]=l[6]=l[7]=l[8]=l[9]=l[10]=l[11]=l[12]=l[13]=l[14]=l[15]=0),n)for(r=this.start;o<a&&r<64;++o)l[r>>2]|=t[o]<<s[3&r++];else for(r=this.start;o<a&&r<64;++o)i=t.charCodeAt(o),i<128?l[r>>2]|=i<<s[3&r++]:i<2048?(l[r>>2]|=(192|i>>6)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):i<55296||i>=57344?(l[r>>2]|=(224|i>>12)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),l[r>>2]|=(240|i>>18)<<s[3&r++],l[r>>2]|=(128|i>>12&63)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]);this.lastByteIndex=r,this.bytes+=r-this.start,r>=64?(this.block=l[16],this.start=r-64,this.hash(),this.hashed=!0):this.start=r}return this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=a[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[15]=this.bytes<<3,this.hash()}},t.prototype.hash=function(){var t,e,n,i=this.h0,r=this.h1,o=this.h2,a=this.h3,s=this.h4,l=this.blocks;for(e=16;e<80;++e)n=l[e-3]^l[e-8]^l[e-14]^l[e-16],l[e]=n<<1|n>>>31;for(e=0;e<20;e+=5)t=r&o|~r&a,n=i<<5|i>>>27,s=n+t+s+1518500249+l[e]<<0,r=r<<30|r>>>2,t=i&r|~i&o,n=s<<5|s>>>27,a=n+t+a+1518500249+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|~s&r,n=a<<5|a>>>27,o=n+t+o+1518500249+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|~a&i,n=o<<5|o>>>27,r=n+t+r+1518500249+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|~o&s,n=r<<5|r>>>27,i=n+t+i+1518500249+l[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s+1859775393+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a+1859775393+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o+1859775393+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r+1859775393+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i+1859775393+l[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)t=r&o|r&a|o&a,n=i<<5|i>>>27,s=n+t+s-1894007588+l[e]<<0,r=r<<30|r>>>2,t=i&r|i&o|r&o,n=s<<5|s>>>27,a=n+t+a-1894007588+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|s&r|i&r,n=a<<5|a>>>27,o=n+t+o-1894007588+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|a&i|s&i,n=o<<5|o>>>27,r=n+t+r-1894007588+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|o&s|a&s,n=r<<5|r>>>27,i=n+t+i-1894007588+l[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s-899497514+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a-899497514+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o-899497514+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r-899497514+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i-899497514+l[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+i<<0,this.h1=this.h1+r<<0,this.h2=this.h2+o<<0,this.h3=this.h3+a<<0,this.h4=this.h4+s<<0},t.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return o[t>>28&15]+o[t>>24&15]+o[t>>20&15]+o[t>>16&15]+o[t>>12&15]+o[t>>8&15]+o[t>>4&15]+o[15&t]+o[e>>28&15]+o[e>>24&15]+o[e>>20&15]+o[e>>16&15]+o[e>>12&15]+o[e>>8&15]+o[e>>4&15]+o[15&e]+o[n>>28&15]+o[n>>24&15]+o[n>>20&15]+o[n>>16&15]+o[n>>12&15]+o[n>>8&15]+o[n>>4&15]+o[15&n]+o[i>>28&15]+o[i>>24&15]+o[i>>20&15]+o[i>>16&15]+o[i>>12&15]+o[i>>8&15]+o[i>>4&15]+o[15&i]+o[r>>28&15]+o[r>>24&15]+o[r>>20&15]+o[r>>16&15]+o[r>>12&15]+o[r>>8&15]+o[r>>4&15]+o[15&r]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,r>>24&255,r>>16&255,r>>8&255,255&r]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(20),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),t};var f=h();i?module.exports=f:(e.sha1=f,r&&define("sha1",[],function(){return f}))}(),define("notebook",["jquery","config","tabbed","form","preferences","modal","prolog","links","laconic","runner","storage","sha1"],function($,config,tabbed,form,preferences,modal,prolog,links){function glyphButton(t,e,n,i,r){r=r||"sm";var o=$.el.a({href:"#",class:"btn btn-"+i+" btn-"+r+" action-"+e,title:n,"data-action":e},$.el.span({class:"glyphicon glyphicon-"+t}));return o}function imageButton(t,e,n){n=n||"sm";var i=$.el.a({href:"#",class:"btn btn-default btn-image btn-"+n+" action-"+t,title:e,"data-action":t},$.el.span({class:"image-icon"}));return i}function glyphButtonGlyph(t,e,n){var i=t.find("a[data-action="+e+"] > span.glyphicon");i.removeClass(function(t,e){return e.match(/glyphicon-[-a-z]*/g).join(" ")}).addClass("glyphicon-"+n)}function sep(){return $.el.span({class:"thin-space"}," ")}function Notebook(t){this.my_cell=t.cell}var cellTypes={program:{label:"Program",prefix:"p"},query:{label:"Query",prefix:"q"},markdown:{label:"Markdown",prefix:"md"},html:{label:"HTML",prefix:"htm"}};!function(t){function e(e){var n=t(e).find(".nb-cell.active");return 1==n.length?n.first():null}function n(e){function n(t){if(attrs=t.match(/[-a-z]+="[^"]*"/g),attrs){for(var e=t.match(/^<[a-z]* /),n=0;n<attrs.length;n++){var i=attrs[n].split(/=(.*)/);attrs[n]=i[0].toLowerCase()+"="+i[1]}return e[0]+attrs.sort().join(" ")+">"}return t}var i=t(t.el.div(e)).html(),r=[];return i.replace(/(<div [^>]*>|<\/div>)/g,function(t){var e;return"</div>"==t?(e=r.pop(),e?"\n"+t+"\n":t):(e=null!=t.match(/(nb-cell|notebook)/),r.push(e),e?"\n"+n(t)+"\n":t)}).slice(1)}var i="notebook",r=null,o={_init:function(e){return e=e||{},this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"notebook-menu btn-transparent",ulClass:"pull-right",client:s,actions:{"Delete cell":function(){this.notebook("delete")},"Copy cell":function(){this.notebook("copy")},"Paste cell":function(){this.notebook("paste")},"Move cell up":function(){this.notebook("up")},"Move cell down":function(){this.notebook("down")},"Insert cell":function(){this.notebook("insertBelow")},"--":"Notebook actions","Exit fullscreen":function(){this.notebook("fullscreen",!1)}}});return n}function r(t){var e=a.data(t);e&&(l[t]=e)}var o,a,s=t(this),l={},c={};s.addClass("notebook"),s.addClass("swish-event-receiver"),s.append(o=t.el.div({class:"nb-toolbar"},glyphButton("trash","delete","Delete cell","warning"),glyphButton("copy","copy","Copy cell","default"),glyphButton("paste","paste","Paste cell below","default"),sep(),glyphButton("chevron-up","up","Move cell up","default"),glyphButton("chevron-down","down","Move cell down","default"),sep(),glyphButton("plus","insertBelow","Insert cell below","primary"),glyphButton("fullscreen","fullscreen","Full screen","default"))),s.append(n()),s.append(t.el.div({class:"nb-view",tabIndex:"-1"},a=t.el.div({class:"nb-content"}),t.el.div({class:"nb-bottom"}))),t(o).on("click","a.btn",function(e){var n=t(e.target).closest("a").data("action");return s.notebook(n),e.preventDefault(),!1}),t(a).on("click",".nb-cell-buttons a.btn",function(e){var n=t(e.target).closest("a"),i=n.closest(".nb-cell"),r=n.data("action");return i.nbCell(r),e.preventDefault(),!1}),s.focusin(function(e){var n=t(e.target).closest(".nb-cell");n.length>0?s.notebook("active",n):t(e.target).closest(".nb-view").length>0&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.focusout(function(e){t(e.target).closest(".notebook")[0]!=s[0]&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.on("activate-tab",function(e){if(e.target==s[0]){var n=s.find(".nb-content").children(".nb-cell.program"),i=n.filter(".active"),r=i[0]||n[0];r&&t(r).find(".prolog-editor").prologEditor("makeCurrent"),e.stopPropagation()}}),s.data(i,c);var a=s.find(".notebook-data");if(e.value)s.notebook("value",e.value);else if(a.length>0){r("file"),r("url"),r("title"),r("meta"),r("st_type"),r("chats");var u=s.storage("docid",void 0,l),h=preferences.getDocVal(u,"fullscreen",!0);s.notebook("value",a.text(),{fullscreen:h}),a.remove()}else s.notebook("placeHolder");s.notebook("setupStorage",l),s.on("data-is-clean",function(e,n){if(t(e.target).hasClass("prolog-editor"))return s.notebook("checkModified"),e.stopPropagation(),!1}),s.on("fullscreen",function(t,e){preferences.setDocVal(u,"fullscreen",e)})})},delete:function(t){return t=t||e(this),t&&(this.notebook("active",t.next()||t.prev()),t.nbCell("close"),this.notebook("updatePlaceHolder")),this.notebook("checkModified"),this},copy:function(i){if(i=i||e(this)){var o=t.el.div({class:"notebook"});t(o).append(t(i).nbCell("saveDOM")),t(o).find(".nb-cell").removeAttr("name"),r=n(o)}},paste:function(e){var n=this;if(e=e||r){var i=t.el.div();t(i).html(e);var o=t(i).find(".nb-cell");if(o.length>0)return t(i).find(".nb-cell").each(function(){n.notebook("insert",{where:"below",restore:t(this)})}),this;modal.alert("Not a SWISH notebook")}else modal.alert("Clipboard is empty")},up:function(t){return t=t||e(this),t&&(t.insertBefore(t.prev()),this.notebook("checkModified")),this},down:function(t){return t=t||e(this),t&&(t.insertAfter(t.next()),this.notebook("checkModified")),this},insertAbove:function(){return this.notebook("insert",{where:"above"})},insertBelow:function(){return 0==this.notebook("insert",{where:"below",if_visible:!0})&&modal.alert("<p>New cell would appear outside the visible area of the notebook.<p>Please select the cell below which you want the new cell to appear or scroll to the bottom of the notebook."),this},run:function(t){t=t||e(this),t&&t.nbCell("run")},fullscreen:function(e){if(void 0==e&&(e=!this.hasClass("fullscreen")),e){var n=this.closest(".chat-container"),i=1==n.length?n:this;t("body.swish").swish("fullscreen",i,this)}else t("body.swish").swish("exitFullscreen");return this},cellType:function(t,n){t=t||e(this),t&&t.nbCell("type",n)},getSelection:function(){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("getSelection")},restoreSelection:function(t){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("restoreSelection",t)},checkModified:function(){return this.each(function(){var e=t(this),n=e.data("storage"),i=n.cleanGeneration==e.notebook("changeGen");e.notebook("markClean",i)})},markClean:function(e){return this.each(function(){var n=t(this),r=n.data(i);r.clean_signalled!=e&&(r.clean_signalled=e,n.trigger("data-is-clean",e)),e&&n.find(".prolog-editor").prologEditor("setIsClean")})},active:function(t,e){function n(t){t.find(".nb-content .nb-cell.not-for-query").removeClass("not-for-query")}if(t){var i=this.find(".nb-content .nb-cell.active");1==t.length?1==i.length&&t[0]==i[0]||(n(this),i.nbCell("active",!1),t.nbCell("active",!0),e&&t.focus()):(n(this),i.nbCell("active",!1))}},insert:function(n){n=n||{};var i,r=e(this),o=n.cell||t.el.div({class:"nb-cell"}),a=this.find(".nb-view");if(n.if_visible&&a.find(".nb-content > div.nb-cell").length>0&&(i=a[0].getBoundingClientRect()),r)if("above"==n.where){if(i){var s=r[0].getBoundingClientRect().top;if(s<i.top)return!1}t(o).insertBefore(r)}else{if(i){var l=r[0].getBoundingClientRect().bottom;if(l>i.bottom-20)return!1}t(o).insertAfter(r)}else{var c=this.find(".nb-content");if(i){var u=c[0].getBoundingClientRect().bottom;if(u>i.bottom-20)return!1}c.append(o)}return n.cell||t(o).nbCell(n.restore),t(o).nbCell("assignName"),this.notebook("updatePlaceHolder"),this.notebook("active",t(o)),this.notebook("checkModified"),this},setupStorage:function(e){var n=this;return e=t.extend(e,{getValue:function(){return n.notebook("value")},setValue:function(t){return n.notebook("setSource",t)},changeGen:function(){return n.notebook("changeGen")},isClean:function(t){var e=n.notebook("changeGen");return t==e},markClean:function(t){n.notebook("markClean",t)},cleanGeneration:this.notebook("changeGen"),cleanData:this.notebook("value"),cleanCheckpoint:"load",typeName:"notebook"}),this.storage(e)},setSource:function(t){"string"==typeof t&&(t={data:t}),this.notebook("value",t.data)},value:function(e,i){if(i=i||{},void 0==e){var r=t.el.div({class:"notebook"});return this.notebook("assignCellNames",!1),this.find(".nb-cell").each(function(){cell=t(this),i.skipEmpty&&cell.nbCell("isEmpty")||t(r).append(cell.nbCell("saveDOM"))}),n(r)}var o=this.find(".nb-content"),r=t.el.div();o.html(""),r.innerHTML=e,void 0==i.fullscreen&&(i.fullscreen=t(r).find("div.notebook").hasClass("fullscreen")),i.fullscreen&&(this.removeClass("fullscreen"),this.notebook("fullscreen",!0)),t(r).find(".nb-cell").each(function(){var e=t.el.div({class:"nb-cell"});o.append(e),t(e).nbCell(t(this))}),this.find(".nb-cell").nbCell("onload"),this.notebook("updatePlaceHolder")},changeGen:function(){var e=[];return this.find(".nb-cell").each(function(){cell=t(this),e.push(cell.nbCell("changeGen"))}),sha1(e.join())},assignCellNames:function(t){return this.find(".nb-cell").nbCell("assignName"),0!=t&&this.notebook("checkModified"),this},updatePlaceHolder:function(){0==this.find(".nb-content").children().length?this.notebook("placeHolder"):this.find(".nb-placeholder").remove();
-},placeHolder:function(){var e=t.el.div({class:"nb-placeholder"});t.ajax({url:config.http.locations.help+"/notebook.html",dataType:"html",success:function(n){t(e).html(n)}}),this.find(".nb-content").append(e)}};tabbed.tabTypes.notebook={dataType:"swinb",typeName:"notebook",label:"Notebook",contentType:"text/x-prolog-notebook",order:200,create:function(e,n){t(e).notebook(n)}},t.fn.notebook=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):o._init.apply(this,arguments)}}(jQuery),function($){function cellText(t){return t.find(".editor").prologEditor("getSource",void 0,!0)}function fileInsertInput(){var t=$('<input type="file" name="file">');return t.on("change",function(t){var e=new FileReader;return e.onload=function(n){var i=$(t.target).closest(".nb-cell"),r=i.closest(".notebook");r.notebook("paste",e.result)&&i.remove()},e.readAsText(t.target.files[0]),t.preventDefault(),!1}),t}function typeMore(){var t=$('<div class="form-more"> <a href="#">more<a></div>');return t.find("a").on("click",function(t){var e=$(t.target).closest(".form-more");e.hide(400),e.next().show(400)}),t[0]}function typeLess(){for(var t=$('<div class="form-less" style="display:none"> <div><a href="#" class="less">less<a></div></div>'),e=0;e<arguments.length;e++)t.append(arguments[e]);return t.find("a.less").on("click",function(t){var e=$(t.target).closest(".form-less");e.hide(400),e.prev().show(400)}),t[0]}var pluginName="nbCell",id=0,methods={_init:function(t){return this.each(function(){var e,n=$(this),i={};if(n.data(pluginName,i),n.attr("tabIndex",-1),n.attr("id","nbc"+id++),t instanceof jQuery)n.nbCell("restoreDOM",t);else{var r=glyphButton("remove-circle","close","Close","default","xs");n.append(r),$(r).addClass("close-select"),$(r).on("click",function(){n.nbCell("close")}),n.append($.el.div({class:"nb-type-select"},$.el.label("Create a "),e=$.el.div({class:"btn-group",role:"group"}),$.el.label("cell here.")));for(var o in cellTypes)cellTypes.hasOwnProperty(o)&&$(e).append($.el.button({type:"button",class:"btn btn-default","data-type":o},cellTypes[o].label));$(e).on("click",".btn",function(t){n.nbCell("type",$(t.target).data("type"))}),n.append($.el.div({class:"nb-type-more"},typeMore(),typeLess($.el.label("Insert notebook from local file "),fileInsertInput()[0])))}})},active:function(t){var e=this.data(pluginName);if(t)switch(this.addClass("active"),e.type){case"program":this.find(".editor").prologEditor("makeCurrent");break;case"query":var n=this.prevAll(".program").first().find(".editor");1==n.length&&n.prologEditor("makeCurrent"),this.closest(".notebook").find(".nb-cell.program").not(this.nbCell("program_cells")).addClass("not-for-query")}else if(this.length>0)switch(this.removeClass("active"),e.type){case"markdown":case"html":this.hasClass("runnable")&&this.nbCell("run")}},type:function(t){var e=this.data(pluginName);return e.type!=t&&(methods.type[t].apply(this),e.type=t,this.addClass(t),this.removeAttr("name"),this.nbCell("assignName")),this},assignName:function(){return this.each(function(){var t=$(this);if(!t.attr("name")){var e=t.data(pluginName);if(e.type){var n=cellTypes[e.type].prefix,r=t.closest(".notebook");for(i=1;;i++){var o=n+i;if(0==r.find("*[name="+o+"]").length){t.attr("name",o);break}}}}})},run:function(){var t=arguments;return this.each(function(){var e=$(this);if(e.hasClass("runnable")){var n=e.data(pluginName);return methods.run[n.type].apply(e,t)}console.log("Cell is not runnable: ",e)})},runTabled:function(){return this.nbCell("run",{tabled:!0})},onload:function(){var t=arguments;return this.each(function(){var e=$(this),n=e.data(pluginName);methods.onload[n.type]&&methods.onload[n.type].apply(e,t)}),this.nbCell("refresh")},close:function(){return this.find(".prolog-runner").prologRunner("close"),this.remove()},refresh:function(){return this.hasClass("program")&&this.find("a[data-action='background']").attr("title",this.hasClass("background")?"Used for all queries in this notebook":"Used for queries below this cell"),this},getSettings:function(){return{tabled:"true"==this.data("tabled"),run:"onload"==this.data("run"),chunk:parseInt(this.data("chunk")||"1"),name:this.attr("name")}},settings:function(){function t(){this.append($.el.form({class:"form-horizontal"},form.fields.checkboxes([{name:"tabled",label:"table results",value:n.tabled,title:"Table results"},{name:"run",label:"run on page load",value:n.run,title:"Run when document is loaded"}],{col:3}),form.fields.chunk(n.chunk),form.fields.name(n.name||""),form.fields.buttons({label:"Apply",offset:3,action:function(t,i){i.tabled!=n.tabled&&(i.tabled?e.data("tabled","true"):e.removeData("tabled")),i.run!=n.run&&(i.run?e.data("run","onload"):e.removeData("run")),i.chunk!=n.chunk&&(1!=i.chunk?e.data("chunk",""+i.chunk):e.removeData("chunk"));var r=i.name?i.name.trim():"";r!=n.name&&(r?e.attr("name",r):e.attr("name",null)),e.closest(".notebook").notebook("checkModified")}})))}var e=this,n=this.nbCell("getSettings");form.showDialog({title:"Set options for query",body:t})},singleline:function(){return this.toggleClass("singleline"),this.find(".editor").prologEditor("refresh"),glyphButtonGlyph(this,"singleline",this.hasClass("singleline")?"triangle-left":"triangle-bottom"),this.find("a[data-action=singleline]").blur(),this},background:function(){return this.toggleClass("background"),this.find("a[data-action=background]").blur(),this.closest(".notebook").notebook("checkModified"),this.nbCell("refresh"),this},program_cells:function(){var t=(this.data(pluginName),this.closest(".notebook").find(".nb-cell.program.background"));return this.hasClass("program")?this.hasClass("background")||(t=t.add(this)):t=t.add(this.prevAll(".program").first()),t},programs:function(){var t=this.nbCell("program_cells");return t.find(".editor")},isEmpty:function(){return methods.isEmpty[this.data(pluginName).type].call(this)},saveDOM:function(){return methods.saveDOM[this.data(pluginName).type].call(this)},restoreDOM:function(t){function e(t){for(var e in cellTypes)if(cellTypes.hasOwnProperty(e)&&t.hasClass(e))return e}var n=this.data(pluginName);n.type=e(t),methods.restoreDOM[n.type].apply(this,arguments),this.addClass(n.type)},changeGen:function(){var t=this.data(pluginName).type;return t?methods.changeGen[t].call(this):0},text:function(){return cellText(this)}};methods.type.markdown=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="markdown",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.html=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="htmlmixed",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.program=function(t){var e,n=this;t=t||{},t.autoCurrent=!1,t.getSource=function(){var t=n.nbCell("programs");return t.prologEditor("getSource","source",!0)},this.html("");var i=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("triangle-bottom","singleline","Show only first line","default","xs"),imageButton("background","Use as background program","xs"));this.append(i,e=$.el.div({class:"editor with-buttons"})),t.background&&this.addClass("background"),t.singleline&&this.nbCell("singleline"),$(e).prologEditor(t)},methods.type.query=function(t){function e(e){void 0!=t[e]&&(o.data(e,""+t[e]),delete t[e])}function n(e){void 0!=t[e]&&(o.attr(e,""+t[e]),delete t[e])}function i(t){this.find(".editor.query").prologEditor("wrapSolution",$(t).text())}var r,o=this;this.html(""),t=t||{},void 0==t.tabled&&(t.tabled=preferences.getVal("tabled_results")),e("tabled"),e("chunk"),e("run"),n("name"),t=$.extend({},t,{role:"query",sourceID:function(){return o.nbCell("programs").prologEditor("getSourceID")}});var a=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("wrench","settings","Settings","default","xs"),glyphButton("play","run","Run query","primary","xs")),s=form.widgets.dropdownButton($.el.span({class:"glyphicon glyphicon-menu-hamburger"}),{client:o,divClass:"nb-query-menu",actions:{"Aggregate (count all)":i,"--":null,Projection:i,"Order by":i,Distinct:i,Limit:i,"---":null,"Download answers as CSV":function(){var t=cellText(this).replace(/\.\s*$/,""),e=this.nbCell("programs").prologEditor("getSource","source",!0),n={},i=this.attr("name");i&&(n.disposition=i),prolog.downloadCSV(t,e,n)}}});this.append(a,$.el.div({class:"query with-buttons"},s,$.el.span({class:"prolog-prompt"},"?-"),r=$.el.div({class:"editor query"}))),$(r).prologEditor(t),this.addClass("runnable")},methods.run.markdown=function(t){function e(t){var n=$(t.target).closest(".nb-cell"),i=n.data("markdownText");n.removeData("markdownText"),methods.type.markdown.call(n,{value:i}),n.off("dblclick",e),n.off("click",links.followLink)}function n(n){i.html(n),i.removeClass("runnable"),i.data("markdownText",t),i.on("dblclick",e),i.on("click","a",links.followLink)}var i=this;t=t||cellText(this),""!=t.trim()?$.ajax({type:"POST",url:config.http.locations.markdown,data:t,contentType:"text/plain; charset=UTF-8",success:n}):n("<div class='nb-placeholder'>Empty markdown cell.  Double click to edit</div>")},methods.run.html=function(htmlText,options){function makeEditable(t){var e=$(t.target).closest(".nb-cell"),n=e.data("htmlText");e.removeData("htmlText"),methods.type.html.call(e,{value:n}),e.off("dblclick",makeEditable),e.off("click",links.followLink)}function runScripts(){if(1==config.swish.notebook.eval_script&&0!=options.eval_script){var scripts=[];if(cell.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(notebook){"+scripts.join("\n")+"})",nb=new Notebook({cell:cell[0]});try{eval(script)(nb)}catch(t){alert(t)}}}}function runHTML(t){cell[0].innerHTML=t,runScripts()}function setHTML(t){runHTML(t),cell.removeClass("runnable"),cell.data("htmlText",htmlText),cell.on("dblclick",makeEditable),cell.on("click","a",links.followLink)}var cell=this;return options=options||{},0==options.html?void runScripts():(htmlText=(htmlText||cellText(this)).trim(),void setHTML(""!=htmlText?htmlText:"<div class='nb-placeholder'>Empty HTML cell.  Double click to edit</div>"))},methods.run.program=function(){modal.alert("Please define a query to run this program")},methods.run.query=function(t){var e=this.nbCell("programs"),n=this.nbCell("getSettings"),i=cellText(this);if(t=t||{},t.bindings){var r="";if("string"==typeof t.bindings)r=t.bindings;else for(var o in t.bindings)t.bindings.hasOwnProperty(o)&&(r&&(r+=", "),r+=o+" = "+Pengine.stringify(t.bindings[o]));r&&(i=r+", ("+prolog.trimFullStop(i)+")")}var a={source:e.prologEditor("getSource","source",!0),query:i,tabled:n.tabled||!1,chunk:n.chunk,title:!1,query_editor:this.find(".prolog-editor.query")};e[0]&&(a.editor=e[0]);var s=$.el.div({class:"prolog-runner"});this.find(".prolog-runner").prologRunner("close"),this.append(s),$(s).prologRunner(a)},methods.onload.query=function(){"onload"==this.data("run")&&this.nbCell("run")},methods.onload.html=function(){return methods.run.html.call(this,void 0,{html:!1,eval_script:!0})},methods.saveDOM.markdown=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("markdownText")||cellText(this),n=$.el.div({class:"nb-cell markdown"},e);return t("name"),n},methods.saveDOM.html=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("htmlText")||cellText(this),n=$.el.div({class:"nb-cell html"});return $(n).html(e),t("name"),n},methods.saveDOM.program=function(){function t(t){n.hasClass(t)&&$(i).attr("data-"+t,!0)}function e(t){var e;(e=n.attr(t))&&e&&$(i).attr(t,e)}var n=this,i=$.el.div({class:"nb-cell program"},cellText(this));return t("background"),t("singleline"),e("name"),i},methods.saveDOM.query=function(){function t(t,e){return!("tabled"!=t||e&&"false"!=e)}function e(e){var n;(n=i.data(e))&&!t(e,n)&&$(r).attr("data-"+e,n)}function n(t){var e;(e=i.attr(t))&&e&&$(r).attr(t,e)}var i=this,r=$.el.div({class:"nb-cell query"},cellText(this));return e("tabled"),e("chunk"),e("run"),n("name"),r},methods.restoreDOM.markdown=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this,i=t.text().trim();n.data("markdownText",i),e("name"),methods.run.markdown.call(this,i)},methods.restoreDOM.html=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this;e("name"),methods.run.html.call(this,t.html(),{eval_script:!1})},methods.restoreDOM.program=function(t){function e(e){var n;(n=t.data(e))&&(r[e]=n)}function n(e){var n;(n=t.attr(e))&&n&&i.attr(e,n)}var i=this,r={value:t.text().trim()};e("background"),e("singleline"),n("name"),methods.type.program.call(this,r)},methods.restoreDOM.query=function(t){function e(e){var n;(n=t.data(e))&&("chunk"==e?i.chunk=parseInt(n):i[e]=n)}function n(e){var n;(n=t.attr(e))&&(i[e]=n)}var i={value:t.text().trim()};e("tabled"),e("chunk"),e("run"),n("name"),void 0==i.tabled&&(i.tabled=!1),methods.type.query.call(this,i)},methods.changeGen.markdown=function(){var t=this.data("markdownText")||cellText(this);return sha1(t)},methods.changeGen.html=function(){var t=this.data("htmlText")||cellText(this);return sha1(t)},methods.changeGen.program=function(){function t(t,i){n.hasClass(t)&&(e+=i)}var e="",n=this;return t("background","B"),t("singleline","S"),e+="V"+cellText(this),sha1(e)},methods.changeGen.query=function(){function t(t,e){var r;(r=i.data(t))&&(n+=e+r)}function e(t,e){var r;(r=i.attr(t))&&(n+=e+r)}var n="",i=this;return t("tabled","T"),t("chunk","C"),t("run","R"),e("name","N"),n+="V"+cellText(this),sha1(n)},methods.isEmpty.markdown=function(){var t=this.data("markdownText")||cellText(this);return""==t.trim()},methods.isEmpty.html=function(){var t=this.data("htmlText")||cellText(this);return""==t.trim()},methods.isEmpty.program=function(){return""==cellText(this).trim()},methods.isEmpty.query=function(){return""==cellText(this).trim()},$.fn.nbCell=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),Notebook.prototype.swish=function(t){var e=this.cell().nbCell("programs"),n=e.prologEditor("getSource","source",!0);return n&&(t.src=n),$.swish(t)},Notebook.prototype.cell=function(t){return t?this.notebook().find('.nb-cell[name="'+t+'"]'):$(this.my_cell)},Notebook.prototype.notebook=function(){return $(this.my_cell).closest(".notebook")},Notebook.prototype.run=function(t,e){var n={};e&&(n.bindings=e),this.cell(t).nbCell("run",n)},Notebook.prototype.submit=function(t,e){var n=this.$(t),i=form.serializeAsObject(n);form.formError(n,null),this.swish({ask:e.predicate+"(("+Pengine.stringify(i)+"))",onerror:function(t){form.formError(n,t)},onsuccess:e.onsuccess})},Notebook.prototype.$=function(t){return this.cell().find(t)}}),define("navbar",["jquery","preferences","form","laconic"],function(t,e,n){!function(t){function i(i,r,o){function a(e){if(e)return t.el.span({class:"dropdown-icon glyphicon glyphicon-"+e})}if(void 0==o);else if("--"==o)i.append(t.el.li({class:"divider"}));else if("function"==typeof o){var s,l;if(o.typeIcon)s=t.el.a(n.widgets.typeIcon(o.typeIcon),r);else if(o.glyph)s=t.el.a(a(o.glyph),r);else if((l=r.indexOf("("))>0){var c=r.substr(l);s=t.el.a({class:"accelerated"},r.substr(0,l).trim(),t.el.span({class:"accell-spacer"},c),t.el.span({class:"accell-text"},c))}else s=t.el.a(r);t(s).data("navbar-action",o),o.name&&t(s).attr("id",o.name),i.append(t.el.li(s))}else if("checkbox"==o.type){var u=t(t.el.input({type:"checkbox"}));void 0!==o.preference?(u.addClass("swish-event-receiver"),e.getVal(o.preference)&&u.prop("checked",!0),u.on("click",function(){e.setVal(o.preference,t(this).prop("checked"))}),u.on("preference",function(t){t.name==o.preference&&u.prop("checked",t.value)})):(o.checked&&u.prop("checked",o.checked),u.on("click",function(){o.action(t(this).prop("checked"))})),i.append(t.el.li({class:"checkbox"},u[0],t.el.span(r)))}else if("submenu"==o.type){var h=t.el.ul({class:"dropdown-menu sub-menu"});if(i.append(t.el.li(t.el.a({class:"trigger right-caret"},a(o.glyph),r),h)),o.action&&t(h).data("navbar-action",o.action),o.items)for(var l=0;l<o.items.length;l++)t(h).append(t.el.li(t.el.a(o.items[l])));o.update&&t(h).on("update",function(t){o.update.call(t.target)})}else alert("Unknown navbar item")}function r(e,n){return e.find(".dropdown-menu").filter(function(){return t(this).attr("name")==n})}function o(e,n){if(!t(e).hasClass("trigger")){var i=t(e).data("navbar-action")||t(e).parents("ul").data("navbar-action");return s.call(e,n),i?(n.preventDefault(),i.call(e,n)):t(e).hasClass("trigger")&&a.call(e,n),!1}a.call(e,n)}function a(e){var n=t(this).next(),i=t(this).parent().parent();(t(this).hasClass("left-caret")||t(this).hasClass("right-caret"))&&t(this).toggleClass("right-caret left-caret"),i.find(".left-caret").not(this).toggleClass("right-caret left-caret"),i.find(".sub-menu:visible").not(n).hide(),n.trigger("update"),n.toggle(),e.stopPropagation()}function s(e){var n=t(this).closest(".dropdown");n.find(".left-caret").toggleClass("right-caret left-caret"),n.find(".sub-menu:visible").hide()}var l="navbar",c={_init:function(e){return this.each(function(){var n=t(this);for(var i in e)e.hasOwnProperty(i)&&(n.navbar("appendDropdown",i),n.navbar("populateDropdown",i,e[i]));n.on("click","a",function(t){o(this,t)})})},appendDropdown:function(e){var n=this.children(".nav.navbar-nav.menubar"),i=t.el.ul({name:e,class:"dropdown-menu"}),r=t.el.li({class:"dropdown"},t.el.a({class:"dropdown-toggle","data-toggle":"dropdown"},e,t.el.b({class:"caret"})),i);return n.append(r),this},populateDropdown:function(t,e){if("function"==typeof e)e(this,t);else{var n=r(this,t);for(var o in e)e.hasOwnProperty(o)&&i(n,o,e[o])}},clearDropdown:function(t){var e=r(this,t);return e.html(""),this},extendDropdown:function(t,e,n){var o=r(this,t);i(o,e,n)}};t.fn.navbar=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/templates-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e){return t.slice(0,e.length).toUpperCase()==e.toUpperCase()}function n(t){}function i(){this.marked=[],this.selectableMarkers=[],this.varIndex=-1}function r(t){return t._templateStack?t._templateStack.length:0}function o(t){this.name=t.name,this.description=t.description,this.text=t.text,t.varTemplates&&(this.varTemplates=t.varTemplates),null!=t.template?this.source=t.template:null!=t.tokens&&(this._tokens=t.tokens)}function a(t){for(var e=[],n=!1,i=null,r="",o=0;o<t.length;o++){var a=t.charAt(o);if("\n"==a)""!=r&&e.push(r),r="",e.push(a),i=null;else{var s=!0;if(n)"}"==a&&(n=!1,s=!1,"cursor"==r?e.push({cursor:!0}):"line_selection"==r?e.push({line_selection:!0}):e.push({variable:r}),r="");else if("$"==a&&o+1<=t.length){o++;var l=t.charAt(o);"{"==l&&(n=!0,s=!1,""!=r&&e.push(r),r="")}s&&"$"!=i?(r+=a,i=a):i=null}}return""!=r&&e.push(r),e}function s(t,e){var n=t.findMarksAt(e.from);if(n)for(var i=0;i<n.length;i++){var r=n[i];if(r._templateVar)return r}return null}function l(t,e){var n=t._templateState;if(e.origin&&n&&!n.updating)try{n.updating=!0;var i=s(t,e);if(null==i)f(t);else for(var r=i.find(),o=t.getRange(r.from,r.to),a=0;a<n.marked.length;a++){var l=n.marked[a];if(l!=i&&l._templateVar==i._templateVar){var c=l.find();t.replaceRange(o,c.from,c.to)}}}finally{n.updating=!1}}function c(t){n("template","endCompletion()",r(t)),r(t)&&f(t,!0)}function u(t,e){var n=t._templateState;if(n.selectableMarkers.length>0){if(n.varIndex++,n.varIndex>=n.selectableMarkers.length){if(e)return void d(t);n.varIndex=0}var i=n.selectableMarkers[n.varIndex],r=i.find();t.setSelection(r.from,r.to);for(var o=(i._templateVar,0);o<n.marked.length;o++){var a=n.marked[o];a==i?(a.className="",a.startStyle="",a.endStyle=""):a._templateVar==i._templateVar?(a.className="CodeMirror-templates-variable-selected",a.startStyle="",a.endStyle=""):(a.className="CodeMirror-templates-variable",a.startStyle="CodeMirror-templates-variable-start",a.endStyle="CodeMirror-templates-variable-end")}t.refresh()}else d(t)}function h(e){function n(t,e){return t.ch==e.ch&&t.line==e.line}var i=e._templateState,r=i.selectableMarkers[i.varIndex],o={state:i};e._hintTemplateMarker&&(o.marker=e._hintTemplateMarker),e._templateStack||(e._templateStack=[]),e._templateStack.push(o),delete e._templateState,e._hintTemplateMarker=r;var a=r.find(),s=e.listSelections();1==s.length&&n(s[0].anchor,a.from)&&n(s[0].head,a.to)&&e.replaceRange("☰",a.from,a.to),t.commands.autocomplete(e)}function d(t){var e=t._templateState.cursor;if(null!=e){var n=e.find();null!=n&&t.setSelection(n,n)}f(t)}function f(t,e){function i(){n("template","Canceled?");for(var e=0;e<r.marked.length;e++){var i=r.marked[e];if(i==t._hintTemplateMarker){var o=i.find();o&&"☰"==t.getRange(o.from,o.to)&&t.replaceRange(i._templateVar,o.from,o.to)}}}var r=t._templateState;if(r){n("template","Uninstall, clearing: ",r.marked.length);for(var o=0;o<r.marked.length;o++)r.marked[o].clear();null!=r.cursor&&r.cursor.clear(),r.marked.length=0,r.selectableMarkers.length=0}else n("template","Uninstall, no state");if(t._templateStack&&t._templateStack.length>0){n("template","Popping from level",t._templateStack.length);var a=t._templateStack.pop();r=t._templateState=a.state,e&&t._hintTemplateMarker&&i(),a.marker?t._hintTemplateMarker=a.marker:delete t._hintTemplateMarker}else n("template","Leaving template mode"),t.off("change",l),t.off("endCompletion",c),t.removeKeyMap(m),delete t._templateState,delete t._hintTemplateMarker}var p=[],g=t.Pos;t.templatesHint={};var m={Tab:u,Enter:function(t){u(t,!0)},Esc:f,"Ctrl-Space":h};o.prototype.tokens=function(){return null==this._tokens&&(this._tokens=a(this.source)),this._tokens},o.prototype.content=function(){if(null==this._content){for(var t=this.tokens(),e="",n=0;n<t.length;n++){var i=t[n];"string"==typeof i?e+=i:i.variable&&(e+=i.variable)}this._content=e}return this._content},o.prototype.insert=function(t,e){function o(t){if(a.varTemplates&&a.varTemplates[t])return a.varTemplates[t]}var a=this,s=r(t);if(n("template","Insert, nested",s,"template",a),(t._templateState||s)&&(n("template","Uninstall from insert()",s),f(t)),a.text)return void t.replaceRange(a.text,e.from,e.to);var h=new i;t._templateState=h;for(var d=this.tokens(),p="",v=e.from.line,y=e.from.ch,x=[],b=[],_=null,w=0;w<d.length;w++){var S=d[w];if("string"==typeof S)p+=S,"\n"==S?(v++,y=0):y+=S.length;else if(S.variable){p+=S.variable;var C=g(v,y),T=g(v,y+S.variable.length),k=0!=b[S.variable];y+=S.variable.length,x.push({from:C,to:T,variable:S.variable,selectable:k}),b[S.variable]=!1}else S.cursor&&(_=g(v,y))}var C=e.from,T=e.to,A=C.line;t.replaceRange(p,C,T);for(var w=0;w<x.length;w++){var M=x[w],C=M.from,T=M.to,L=t.markText(C,T,{className:"CodeMirror-templates-variable",startStyle:"CodeMirror-templates-variable-start",endStyle:"CodeMirror-templates-variable-end",inclusiveLeft:!0,inclusiveRight:!0,clearWhenEmpty:!1,_templateVar:M.variable,_templates:o(M.variable)});h.marked.push(L),1==M.selectable&&h.selectableMarkers.push(L)}null!=_&&(h.cursor=t.setBookmark(_));for(var E=p.split("\n"),P=1;P<E.length;P++){var N=A+P;t.indentLine(N)}s||(t.on("change",l),n("template","Installing endCompletion"),t.on("endCompletion",c),t.addKeyMap(m)),u(t,!0)},t.templatesHint.getCompletions=function(n,i,r){var o=n.doc.mode.name,a=p[o];if(a)for(var s=0;s<a.length;s++){var l=a[s];if(e(l.name,r)){var c=l.name;l.description&&(c+="- "+l.description);var u="CodeMirror-hint-template";l.className&&(u=l.className);var h={className:u,text:c,template:l};h.data=h,h.hint=function(t,e,n){n.template.insert(t,e)},h.info=function(e){var i=e.template.content();if(t.runMode){var r=document.createElement("div");return r.className="cm-s-default",n.options&&n.options.theme&&(r.className="cm-s-"+n.options.theme),t.runMode(i,n.getMode().name,r),r}return i},i.push(h)}}},t.templatesHint.Template=o,t.templatesHint.addTemplates=function(t){var e=t.context;if(e){var n=p[e];n||(n=[],p[e]=n),t.templates.forEach(function(t){n.push(new o(t))})}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog-template-hint",["../../lib/codemirror","../../addon/hint/templates-hint","jquery","config","laconic"],t):t(CodeMirror)}(function(t,e,n,i){"use strict";function r(t){function e(t){var e=/[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g,n=/\bis\s+(det|nondet|semidet|fail|multi)$/;if(i.template||(i.template=t.replace(e,"$${$1}").replace(n,""),i.template.match(/\${cursor}/)||(i.template+="${cursor}")),i.displayText||(i.displayText=t),!i.varTemplates){var r=t.match(/:[A-Z][A-Za-z_0-9]*/g);if(r&&r.length>0){for(var o={},a=0;a<r.length;a++)o[r[a].substring(1)]=l;i.varTemplates=o}}}var i=this,r=["template","displayText","text",{from:"summary",to:"description"},"className","varTemplates"];if("string"==typeof t)this.displayText=t,this.text=t;else{for(var o=0;o<r.length;o++){var a=r[o];"string"==typeof a?t[a]&&(this[a]=t[a]):t[a.from]&&(this[a.to]=t[a.from])}t.mode&&e(t.mode),t.classes&&(t.className=t.classes.join(" "))}this.render=function(t,e,i){n(t).append(i.displayText)},this.info=function(t){return t.description}}function o(e,n,i){function o(t,e){return t.slice(0,e.length)==e}var a=n.token.string,s=[],c=l;e._hintTemplateMarker&&("☰"==a&&(a=""),c=e._hintTemplateMarker._templates);var u=a.length>0&&!a.match(/\w/);if(c)for(var h=0;h<c.length;h++){var d=c[h];if("string"==typeof d)o(d,a)&&s.push(new r(d));else{var f=["name","mode","template","text"];if(u)d.name&&d.name.indexOf(a)>=0&&s.push(new r(d));else for(var p=0;p<f.length;p++)if(d[f[p]]){o(d[f[p]],a)&&s.push(new r(d));break}}}if(0==s.length)for(var g=t.hint.anyword,m=""==a&&e._hintTemplateMarker?{word:/[A-Z][A-Za-z0-9_]*/}:i,v=g(e,m),h=0;h<v.list.length;h++)s.push(new r(v.list[h]));return{list:s,from:n.position.from,to:n.position.to}}function a(e,n,i){var r=s(e),a=o(e,r,i);t.attachContextInfo(a),n(a)}function s(e){var n=e.getCursor(),i=e.getTokenAt(n),r=t.innerMode(e.getMode(),i.state);if("prolog"!=r.mode.name)return null;var o={from:new t.Pos(n.line,i.start),to:new t.Pos(n.line,i.end)};return{token:i,position:o}}var l=i.swish.templates||[];return r.prototype.hint=function(e,n,i){var r=new t.templatesHint.Template(this);r.insert(e,n)},a.async=!0,t.registerHelper("hint","prologTemplate",a),{getHints:a,getState:s}}),define("cm/mode/prolog/prolog-ctype",[],function(){function t(t){var n=t.charCodeAt(0),i=Math.floor(n/256);if(i<e){var r=de[i];return"number"==typeof r?r:r.charCodeAt(255&n)}return 0}var e=4353,n=1,i=2,r=4,o=8,a=16,s=32,l=64,c="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0@      ",u="",h="",d="\0\0\0\0\0\0\0\0\0\0",f="  ",p="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",g="@@@@@\0@\0@",m="\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",v="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",y="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0",x="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",b="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0",_="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",w="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",S="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",C="          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",T="\0\0\0\0\0\0\0\0",k="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",A='\0\0\0\0\0"""""""""           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',M="",L="\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",E="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0          \0\0\0\0\0\0",P="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",N='\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\0\0\0',O="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",R="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",D="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",I="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",j="",V="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",H="\b\b\b\b\b\b\b\b\b\b\b@@@@@\b\b@@@@@\b\b@@@@@\0@@@@@@@@@@ \0\0                \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",F="                 \0\0\0\0\0\0",z="\0\0\0\0\0\0\0\0\0\0\0\0",q="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                                                                                  ",G="\0                              ",B="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",$="\0\0\0\0\0\0\0 ",W="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",U="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",X="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Y="\b\0\0\0",Q="\0\0\0\0\0\0\0\0\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Z="\0                                                          \0",K="\0\0\0\0\0\0\0\0\0\0",J="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",tt="\0\0\0\0\0\0\0\0\0\0\0\0",et="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",nt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",it="\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",rt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ot="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",at="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",st="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",lt="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ct="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",ut="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ht="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",dt="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ft="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",pt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",mt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",vt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",yt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@\0\0",xt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",bt="\0\0\0\0                                             \0\0\0     \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",_t="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",wt="\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",St="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ct="\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Tt="      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",kt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",At="\0\0\0\0\0        \0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Mt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Lt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                               \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Et="\0\0\0\0                    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Pt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Nt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ot="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Rt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Dt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",It="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",jt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Vt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ht="\0\0\0\0\0\0\0\0\0\0",Ft="\0\0@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",zt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",qt="\0\0\0\0\0\0\0\0\0                  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Gt="\0\0\0\0\0\0\0\0\0\0\0\0",Bt="\0\0\0\0\0\0\0\0\0\0\0\0",$t="\0\0",Wt="\0\0",Ut="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Xt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Yt="           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Qt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Zt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Kt="\0\0\0\0\0\0",Jt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",te="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ee="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ne="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ie="\0\0\0\0\0\0\0\0\0\0\0",re="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",oe="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ae="\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",se="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",le="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ce="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0",ue="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",he="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0",de=[c,u,h,d,f,p,g,m,v,y,x,b,_,w,S,C,T,3,k,A,M,3,L,E,P,N,O,R,D,I,j,V,H,F,16,z,q,16,16,G,16,16,16,B,$,W,U,X,Y,Q,Z,16,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,K,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,J,3,3,3,3,tt,3,et,nt,it,rt,ot,at,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,st,lt,0,0,ct,ut,0,0,ht,dt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ft,3,pt,gt,3,mt,vt,yt,xt,bt,_t,wt,St,0,0,0,Ct,Tt,kt,At,Mt,0,Lt,0,Et,Pt,0,0,0,0,Nt,0,0,0,0,0,0,0,0,0,3,3,3,Ot,Rt,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,Dt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,It,0,0,0,0,jt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Vt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Ht,Ft,zt,qt,Gt,Bt,$t,Wt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Ut,0,Xt,Yt,Qt,Zt,Kt,Jt,te,ee,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,ne,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,ie,re,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,oe,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ae,se,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,le,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ce,ue,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,he,0];
-return{flags:t,id_start:function(e){return 0!=(t(e)&n)},id_continue:function(e){return 0!=(t(e)&i)},uppercase:function(e){return 0!=(t(e)&r)},separator:function(e){return 0!=(t(e)&o)},symbol:function(e){return 0!=(t(e)&a)},other:function(e){return 0!=(t(e)&s)},control:function(e){return 0!=(t(e)&l)}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog",["../../lib/codemirror","./prolog-ctype"],t):t(CodeMirror)}(function(t,e){"use strict";t.defineMode("prolog",function(n,i){function r(t,e,n){return e.tokenize=n,n(t,e)}function o(t,e,n){if(n>0){for(;n-- >0;)if(!e.test(t.next()))return!1}else for(;e.test(t.peek());)t.next();return!0}function a(t){var e=t.next();if(S.test(e))return!0;switch(e){case"u":return!!_.unicodeEscape&&o(t,T,4);case"U":return!!_.unicodeEscape&&o(t,T,8);case null:return!0;case"c":return t.eatSpace(),!0;case"x":return o(t,T,2)}return!!C.test(e)&&(!!o(t,C,-1)&&("\\"==t.peek()&&t.next(),!0))}function s(t,e,n){for(var i;null!=(i=t.next());){if(i==n&&n!=t.peek())return e.nesting.pop(),!1;if("\\"==i&&!a(t))return!1}return _.multiLineQuoted}function l(t){return t.nesting.slice(-1)[0]}function c(t){var e=l(t);e?0==e.arg?e.arg=1:"control"==e.type&&(t.goalStart=!1):t.goalStart=!1}function u(t){var e=l(t);e&&!e.alignment&&void 0!=e.arg&&(0==e.arg?e.alignment=e.leftCol?e.leftCol+4:e.column+4:e.alignment=e.column+1)}function h(t){var e=l(t);e?e.arg?e.arg++:"control"==e.type&&(t.goalStart=!0):t.goalStart=!0}function d(t){var e=l(t);return e?"control"==e.type:t.inBody}function f(t,e,n){return x=t,b=n,e}function p(t){return!(!t.eol()&&!/[\s%]/.test(t.peek()))}function g(t,n){var i=t.next();if("("==i)return"functor"==n.lastType?(n.nesting.push({functor:n.functorName,column:t.column(),leftCol:n.functorColumn,arg:0}),delete n.functorName,delete n.functorColumn):n.nesting.push({type:"control",closeColumn:t.column(),alignment:t.column()+4}),f("solo",null,"(");if("{"==i&&"tag"==n.lastType)return n.nesting.push({tag:n.tagName,column:t.column(),leftCol:n.tagColumn,arg:0}),delete n.tagName,delete n.tagColumn,f("dict_open",null);if("/"==i&&t.eat("*"))return r(t,n,y);if("%"==i)return t.skipToEnd(),f("comment","comment");if(c(n),k.test(i)){switch(i){case")":n.nesting.pop();break;case"]":return n.nesting.pop(),f("list_close",null,"]");case"}":var o=l(n),s=o&&o.tag?"dict_close":"brace_term_close";return n.nesting.pop(),f(s,null);case",":t.eol()&&(n.commaAtEOL=!0),h(n);case";":d(n)&&(n.goalStart=!0);break;case"[":return n.nesting.push({type:"list",closeColumn:t.column(),alignment:t.column()+2}),f("list_open",null,"[");case"{":return _.quasiQuotations&&t.eat("|")?(n.nesting.push({type:"quasi-quotation",alignment:t.column()+1}),f("qq_open","qq_open")):(n.nesting.push({type:"curly",closeColumn:t.column(),alignment:t.column()+2}),f("brace_term_open",null));case"|":if(_.quasiQuotations){if(t.eat("|"))return n.tokenize=v,f("qq_sep","qq_sep");if(t.eat("}"))return n.nesting.pop(),f("qq_close","qq_close")}d(n)&&(n.goalStart=!0)}return f("solo",null,i)}if('"'==i||"'"==i||"`"==i)return n.nesting.push({type:"quoted",alignment:t.column()+1}),r(t,n,m(i));if("0"==i){if(t.eat(/x/i))return t.eatWhile(/[\da-f]/i),f("number","number");if(t.eat(/o/i))return t.eatWhile(/[0-7]/i),f("number","number");if(t.eat(/'/)){var u=t.next();return"\\"!=u||a(t)?f("code","code"):f("error","error")}}if(/\d/.test(i)||/[+-]/.test(i)&&t.eat(/\d/))return _.groupedIntegers?t.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/):t.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),f("-"==i?"neg-number":"+"==i?"pos-number":"number");if(e.symbol(i)){t.eatWhile(e.symbol);var g=t.current();return"."==g&&p(t)?l(n)?f("fullstop","error",g):f("fullstop","fullstop",g):A.test(g)?f("neck","neck",g):d(n)&&M.test(g)?(n.goalStart=!0,f("symbol","operator",g)):f("symbol","operator",g)}t.eatWhile(e.id_continue);var x=t.current();if("{"==t.peek()&&_.dicts)return n.tagName=x,n.tagColumn=t.column(),f("tag","tag",x);if("_"==i){if(1==x.length)return f("var","anon",x);var b=x.charAt(1);return e.uppercase(b)?f("var","var-2",x):f("var","var",x)}return e.uppercase(i)?f("var","var",x):"("==t.peek()?(n.functorName=x,n.functorColumn=t.column(),f("functor","functor",x)):f("atom","atom",x)}function m(t){return function(e,n){if(!s(e,n,t)){if(n.tokenize=g,"("==e.peek()){var i=e.current();return n.functorName=i,f("functor","functor",i)}if("{"==e.peek()&&_.dicts){var i=e.current();return n.tagName=i,f("tag","tag",i)}}return f(w[t],w[t])}}function v(t,e){for(var n,i=!1;n=t.next();){if("}"==n&&i){e.tokenize=g,t.backUp(2);break}i="|"==n}return f("qq_content","qq_content")}function y(t,e){for(var n,i=!1;n=t.next();){if("/"==n&&i){e.tokenize=g;break}i="*"==n}return f("comment","comment")}var x,b,_={quasiQuotations:!0,dicts:!0,unicodeEscape:!0,multiLineQuoted:!0,groupedIntegers:!0},w={'"':"string","'":"qatom","`":"bqstring"},S=/[abref\\'"nrtsv]/,C=/[0-7]/,T=/[0-9a-fA-F]/,k=/[[\]{}(),;|!]/,A=/^(:-|-->)$/,M=/^(,|;|->|\*->|\\+|\|)$/;return{startState:function(){return{tokenize:g,inBody:!1,goalStart:!1,lastType:null,nesting:new Array,curTerm:null,curToken:null}},token:function(t,e){if(null==e.curTerm&&i.metainfo&&(e.curTerm=0,e.curToken=0),t.sol()&&delete e.commaAtEOL,e.tokenize==g&&t.eatSpace())return t.eol()&&u(e),null;var n=e.tokenize(t,e);return t.eol()&&u(e),"neck"==x?(e.inBody=!0,e.goalStart=!0):"fullstop"==x&&(e.inBody=!1,e.goalStart=!1),e.lastType=x,"function"==typeof i.enrich&&(n=i.enrich(t,e,x,b,n)),n},indent:function(e,n){if(e.tokenize==y)return t.Pass;var i;return(i=l(e))?i.closeColumn&&!e.commaAtEOL?i.closeColumn:i.alignment:e.inBody?4:0},theme:"prolog",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"%"}}),t.defineMIME("text/x-prolog","prolog")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_keys",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologStartIfThenElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 1==i.state.goalStart?void e.replaceSelection("(   ","end"):t.Pass},t.commands.prologStartThen=function(e){function n(t){var e=t.nesting.length;return e>0?t.nesting[e-1]:null}function i(t){var e=n(t);return e?"control"==e.type:t.inBody}var r=e.getCursor("start"),o=e.getTokenAt(r,!0);return r.ch==o.end&&"operator"==o.type&&"-"==o.string&&i(o.state)?void e.replaceSelection(">  ","end"):t.Pass},t.commands.prologStartElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 0!=i.start||n.ch!=i.end||/\S/.test(i.string)?t.Pass:void e.replaceSelection(";   ","end")},t.defineOption("prologKeys",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prolog"),n){var r={name:"prolog","'('":"prologStartIfThenElse","'>'":"prologStartThen","';'":"prologStartElse","Ctrl-L":"refreshHighlight"};e.addKeyMap(r)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_query",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologFireQuery=function(e){var n=e.lineCount(),i=e.getLine(n-1).length,r=e.getTokenAt({line:n,ch:i},!0);return"fullstop"==r.type?e.prologFireQuery(e.getValue()):t.Pass},t.defineOption("prologQuery",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prologQuery"),"function"==typeof n){var r={name:"prologQuery",Enter:"prologFireQuery","Ctrl-Enter":"newlineAndIndent"};e.addKeyMap(r),e.prologFireQuery=n}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_server",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){"object"==typeof t&&(this.enabled=t.enabled||!1,this.role=t.role||"source",t.sourceID&&(this.sourceID=t.sourceID),this.url={change:t.url+"change",tokens:t.url+"tokens",leave:t.url+"leave",info:t.url+"info"},this.delay=t.delay?t.delay:a,this.generationFromServer=-1,this.tmo=null)}function n(t,e){var n=t.state.prologHighlightServer;null!=n&&null!=n.url&&n.enabled&&(n.tmo&&t.askRefresh(),void 0!==n.changes&&n.changes.push(e),"setValue"!=e.origin&&n.generationFromServer!=-1||(n.changes=void 0,t.serverAssistedHighlight()))}function i(t){var e=t.state.prologHighlightServer;if(null!=e&&null!=e.url&&null!=e.uuid){var n=e.uuid;delete e.uuid,$.ajax({url:e.url.leave,async:!1,contentType:"application/json",type:"POST",dataType:"json",data:JSON.stringify({uuid:n})})}}function r(){var t=(new Date).getTime(),e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)});return e}function o(t,e,n,i,r){function o(t){var e=f.metainfo[t.curTerm];if(!e)return null;var n=e[t.curToken];return n?n:null}function a(){e.outOfSync||(console.log("Mismatch: ("+i+") "+n+"/"+p.type),e.outOfSync={okToken:e.curToken,okTerm:e.curTerm,skippedTerms:0,skippedTokens:[]}),f.editor.askRefresh()}function s(){var t=e.outOfSync;({curToken:t.okToken,curTerm:t.okTerm});return t.skippedTerms,null}function u(e){var n;if(i==e)return!0;if((n=e.lastIndexOf(i,1))>=0){for(var r=e.substring(i.length+n),o=0;o<r.length;o++)if(!t.eat(r.charAt(o)))return t.backUp(o),!1;return!0}return!1}function h(t){var e=t.slice(-1)[0];return e&&"quoted"==e.type}function d(t,e){if(t){if(!l[n])return i&&t.text==i?(e.curToken++,t.type):r;if(t.text&&i){if(u(t.text))return e.curToken++,t.type;return}if(l[n]==c[t.type])return"fullstop"==n?(e.curTerm++,e.curToken=0):h(e.nesting)||e.curToken++,t.type;if(l[n]==t.base)return e.curToken++,t.type;if("qatom"==n&&"atom"==c[t.type])return e.curToken++,t.type;if("number"==n&&"meta"==t.type)return e.curToken++,t.type;if("neg-number"==n&&t.text&&"-"==t.text)return e.curToken+=2,"number";if("pos-number"==n&&t.text&&"+"==t.text)return e.curToken+=2,"number"}}var f=this;if(null!=e.curTerm){var p,g;if(e.syntax_error)return"fullstop"==n&&(f.editor.askRefresh(),delete e.syntax_error),r;if(e.outOfSync){var m=e.outOfSync;if(m.skippedTerms<=3){if(m.skippedTokens.push({type:n,style:r,content:i}),g=s())return g;"fullstop"==n&&(m.skippedTokens=[],m.skippedTerms++)}return r}return(p=o(e))?void 0!==(g=d(p,e))?g:"syntax_error"==p.type?(e.syntax_error=!0,e.curToken=0,e.curTerm++,r):(a(),r+" outofsync"):(f.editor.askRefresh(),r)}return r}var a=1e3,s=1e3;t.defineOption("prologHighlightServer",!1,function(t,r,o){function a(){i(t)}t.state.prologHighlightServer?null==r?(i(t),t.off("change",n),window.removeEventListener("unload",a),delete t.state.prologHighlightServer,t.setOption("mode",{name:"prolog"})):r.enabled!=o.enabled&&(t.state.prologHighlightServer.enabled=r.enabled,r.enabled?(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)):(i(t),t.off("change",n),window.removeEventListener("unload",a),t.setOption("mode",{name:"prolog"}))):r&&(t.state.prologHighlightServer=new e(r),t.state.prologHighlightServer.enabled&&(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)))}),t.prototype.askRefresh=function(t){var e=this,n=e.state.prologHighlightServer;null!=n&&(void 0===t&&(t=n.delay),n.tmo&&clearTimeout(n.tmo),n.tmo=setTimeout(function(){e.serverAssistedHighlight()},t))},t.prototype.serverAssistedHighlight=function(t){function e(){var t=n.getOption("mode");return"object"!=typeof t?t={name:"prolog",enrich:o,editor:n}:t.enrich||(t.enrich=o,t.editor=n),t}var n=this,i=n.state.prologHighlightServer,a={};if(i.tmo=null,null!=i&&null!=i.url&&i.enabled&&(!n.isClean(i.generationFromServer)||t)){if(i.uuid)a.uuid=i.uuid,void 0==i.changes?(a.text=n.getValue(),a.text.length>s&&(i.changes=[])):(a.changes=i.changes,i.changes=[]);else{if(a.text=n.getValue(),""==a.text.trim())return;i.uuid=r(),a.uuid=i.uuid}a.role=i.role,"function"==typeof i.sourceID&&(a.sourceID=i.sourceID()),i.generationFromServer=n.changeGeneration(),$.ajax({url:i.url.tokens,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(a),success:function(t,i){var r=e();r.metainfo=t.tokens,n.setOption("mode",r)},error:function(t){409==t.status&&delete i.uuid}})}},t.commands.refreshHighlight=function(t){t.serverAssistedHighlight(!0)};var l={var:"var",atom:"atom",qatom:"qatom",bqstring:"string",symbol:"atom",functor:"functor",tag:"tag",number:"number",string:"string",code:"number","neg-number":"number","pos-number":"number",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop"},c={var:"var",singleton:"var",uatom:"var",atom:"atom",qatom:"qatom",string:"string",codes:"string",chars:"string",functor:"functor",tag:"tag",control:"atom",meta:"atom",op_type:"atom",int:"number",float:"number",key:"atom",sep:"atom",ext_quant:"atom",expanded:"expanded",comment_string:"string",identifier:"atom",delimiter:"atom",module:"atom",head_exported:"atom",head_public:"atom",head_extern:"atom",head_dynamic:"atom",head_multifile:"atom",head_unreferenced:"atom",head_hook:"atom",head_meta:"atom",head_constraint:"atom",head_imported:"atom",head_built_in:"atom",head_iso:"atom",head_def_iso:"atom",head_def_swi:"atom",head:"atom",goal_built_in:"atom",goal_imported:"atom",goal_autoload:"atom",goal_global:"atom",goal_undefined:"atom",goal_thread_local:"atom",goal_dynamic:"atom",goal_multifile:"atom",goal_expanded:"atom",goal_extern:"atom",goal_recursion:"atom",goal_meta:"atom",goal_foreign:"atom",goal_local:"atom",goal_constraint:"atom",goal_not_callable:"atom",xpce_method:"functor",xpce_class_builtin:"atom",xpce_class_lib:"atom",xpce_class_user:"atom",xpce_class_undef:"atom",option_name:"atom",no_option_name:"atom",flag_name:"atom",no_flag_name:"atom",file_no_depends:"atom",file:"atom",nofile:"atom",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",qq_type:"atom",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop",string_terminal:"string",html:"functor",entity:"atom",html_attribute:"functor",sgml_attr_function:"atom",http_location_for_id:"atom",http_no_location_for_id:"atom"};t.prototype.getEnrichedToken=function(t){if(null!=t.state.curTerm&&null!=t.state.curToken){var e,n=this.getOption("mode");if(n.metainfo&&(e=n.metainfo[t.state.curTerm]))return e[t.state.curToken-1]}},t.prototype.tokenInfo=function(t,e){var n=this.state.prologHighlightServer;return e||(e=$($.el.span({class:"token-info"},"..."))),$.ajax({url:n.url.info,data:t,success:function(t){e.html(t)}}),e[0]},t.prototype.getTokenReferences=function(t){function e(t,e){if(e&&0==e.indexOf("swish://"))return t.file=e.substring(8),!0}var n=[];switch(t.type){case"goal_local":var i={title:"Source for "+t.text+"/"+t.arity,line:t.line,regex:new RegExp("\\b"+RegExp.escape(t.text),"g"),showAllMatches:!0};e(i,t.file),n.push(i);break;case"file":var i={};e(i,t.path)&&(i.title="Included file "+i.file,n.push(i))}return n}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/xml/xml",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};t.defineMode("xml",function(i,r){function o(t,e){function n(n){return e.tokenize=n,n(t,e)}var i=t.next();if("<"==i)return t.eat("!")?t.eat("[")?t.match("CDATA[")?n(l("atom","]]>")):null:t.match("--")?n(l("comment","-->")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(c(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=l("meta","?>"),"meta"):(k=t.eat("/")?"closeTag":"openTag",e.tokenize=a,"tag bracket");if("&"==i){var r;return r=t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"),r?"atom":"error"}return t.eatWhile(/[^&<]/),null}function a(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=o,k=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return k="equals",null;if("<"==n){e.tokenize=o,e.state=f,e.tagName=e.tagStart=null;var i=e.tokenize(t,e);return i?i+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=s(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function s(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=a;break}return"string"};return e.isInAttribute=!0,e}function l(t,e){return function(n,i){for(;!n.eol();){if(n.match(e)){i.tokenize=o;break}n.next()}return t}}function c(t){return function(e,n){for(var i;null!=(i=e.next());){if("<"==i)return n.tokenize=c(t+1),n.tokenize(e,n);if(">"==i){if(1==t){n.tokenize=o;break}return n.tokenize=c(t-1),n.tokenize(e,n)}}return"meta"}}function u(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(S.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function h(t){t.context&&(t.context=t.context.prev)}function d(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!S.contextGrabbers.hasOwnProperty(n)||!S.contextGrabbers[n].hasOwnProperty(e))return;h(t)}}function f(t,e,n){return"openTag"==t?(n.tagStart=e.column(),p):"closeTag"==t?g:f}function p(t,e,n){return"word"==t?(n.tagName=e.current(),A="tag",y):(A="error",p)}function g(t,e,n){if("word"==t){var i=e.current();return n.context&&n.context.tagName!=i&&S.implicitlyClosed.hasOwnProperty(n.context.tagName)&&h(n),n.context&&n.context.tagName==i||S.matchClosing===!1?(A="tag",m):(A="tag error",v)}return A="error",v}function m(t,e,n){return"endTag"!=t?(A="error",m):(h(n),f)}function v(t,e,n){return A="error",m(t,e,n)}function y(t,e,n){if("word"==t)return A="attribute",x;if("endTag"==t||"selfcloseTag"==t){var i=n.tagName,r=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||S.autoSelfClosers.hasOwnProperty(i)?d(n,i):(d(n,i),n.context=new u(n,i,r==n.indented)),f}return A="error",y}function x(t,e,n){return"equals"==t?b:(S.allowMissing||(A="error"),y(t,e,n))}function b(t,e,n){return"string"==t?_:"word"==t&&S.allowUnquoted?(A="string",y):(A="error",y(t,e,n))}function _(t,e,n){return"string"==t?_:y(t,e,n)}var w=i.indentUnit,S={},C=r.htmlMode?e:n;for(var T in C)S[T]=C[T];for(var T in r)S[T]=r[T];var k,A;return o.isInText=!0,{startState:function(t){var e={tokenize:o,state:f,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;k=null;var n=e.tokenize(t,e);return(n||k)&&"comment"!=n&&(A=null,e.state=e.state(k||n,t,e),A&&(n="error"==A?n+" error":A)),n},indent:function(e,n,i){var r=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+w;if(r&&r.noIndent)return t.Pass;if(e.tokenize!=a&&e.tokenize!=o)return i?i.match(/^(\s*)/)[0].length:0;if(e.tagName)return S.multilineTagIndentPastTag!==!1?e.tagStart+e.tagName.length+2:e.tagStart+w*(S.multilineTagIndentFactor||1);if(S.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var s=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(s&&s[1])for(;r;){if(r.tagName==s[2]){r=r.prev;break}if(!S.implicitlyClosed.hasOwnProperty(r.tagName))break;r=r.prev}else if(s)for(;r;){var l=S.contextGrabbers[r.tagName];if(!l||!l.hasOwnProperty(s[2]))break;r=r.prev}for(;r&&r.prev&&!r.startOfLine;)r=r.prev;return r?r.indent+w:e.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:S.htmlMode?"html":"xml",helperType:S.htmlMode?"html":"xml",skipAttribute:function(t){t.state==b&&(t.state=y)}}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/meta",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",
-ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var e=0;e<t.modeInfo.length;e++){var n=t.modeInfo[e];n.mimes&&(n.mime=n.mimes[0])}t.findModeByMIME=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.mime==e)return i;if(i.mimes)for(var r=0;r<i.mimes.length;r++)if(i.mimes[r]==e)return i}return/\+xml$/.test(e)?t.findModeByMIME("application/xml"):/\+json$/.test(e)?t.findModeByMIME("application/json"):void 0},t.findModeByExtension=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.ext)for(var r=0;r<i.ext.length;r++)if(i.ext[r]==e)return i}},t.findModeByFileName=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.file&&i.file.test(e))return i}var r=e.lastIndexOf("."),o=r>-1&&e.substring(r+1,e.length);if(o)return t.findModeByExtension(o)},t.findModeByName=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.name.toLowerCase()==e)return i;if(i.alias)for(var r=0;r<i.alias.length;r++)if(i.alias[r].toLowerCase()==e)return i}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define("cm/mode/markdown/markdown",["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,n){function i(n){if(t.findModeByName){var i=t.findModeByName(n);i&&(n=i.mime||i.mimes[0])}var r=t.getMode(e,n);return"null"==r.name?null:r}function r(t,e,n){return e.f=e.inline=n,n(t,e)}function o(t,e,n){return e.f=e.block=n,n(t,e)}function a(t){return!t||!/\S/.test(t.string)}function s(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==c&&(t.f=f,t.block=l),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine=null,null}function l(e,o){var s=e.sol(),l=o.list!==!1,c=o.indentedCode;o.indentedCode=!1,l&&(o.indentationDiff>=0?(o.indentationDiff<4&&(o.indentation-=o.indentationDiff),o.list=null):o.indentation>0?o.list=null:o.list=!1);var d=null;if(o.indentationDiff>=4)return e.skipToEnd(),c||a(o.prevLine)?(o.indentation-=4,o.indentedCode=!0,w.code):null;if(e.eatSpace())return null;if((d=e.match(A))&&d[1].length<=6)return o.header=d[1].length,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(!(a(o.prevLine)||o.quote||l||c)&&(d=e.match(M)))return o.header="="==d[0].charAt(0)?1:2,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(e.eat(">"))return o.quote=s?1:o.quote+1,n.highlightFormatting&&(o.formatting="quote"),e.eatSpace(),h(o);if("["===e.peek())return r(e,o,v);if(e.match(C,!0))return o.hr=!0,w.hr;if(d=e.match(T)){var f=d[1]?"ol":"ul";for(o.indentation=e.column()+e.current().length,o.list=!0;o.listStack&&e.column()<o.listStack[o.listStack.length-1];)o.listStack.pop();return o.listStack.push(o.indentation),n.taskLists&&e.match(k,!1)&&(o.taskList=!0),o.f=o.inline,n.highlightFormatting&&(o.formatting=["list","list-"+f]),h(o)}return n.fencedCodeBlocks&&(d=e.match(E,!0))?(o.fencedChars=d[1],o.localMode=i(d[2]),o.localMode&&(o.localState=t.startState(o.localMode)),o.f=o.block=u,n.highlightFormatting&&(o.formatting="code-block"),o.code=-1,h(o)):r(e,o,o.inline)}function c(e,n){var i=b.token(e,n.htmlState);if(!_){var r=t.innerMode(b,n.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||n.md_inside&&e.current().indexOf(">")>-1)&&(n.f=f,n.block=l,n.htmlState=null)}return i}function u(t,e){if(e.fencedChars&&t.match(e.fencedChars)){n.highlightFormatting&&(e.formatting="code-block");var i=h(e);return e.localMode=e.localState=null,e.block=l,e.f=f,e.fencedChars=null,e.code=0,i}return e.fencedChars&&t.skipTo(e.fencedChars)?"comment":e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),w.code)}function h(t){var e=[];if(t.formatting){e.push(w.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var i=0;i<t.formatting.length;i++)e.push(w.formatting+"-"+t.formatting[i]),"header"===t.formatting[i]&&e.push(w.formatting+"-"+t.formatting[i]+"-"+t.header),"quote"===t.formatting[i]&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.formatting+"-"+t.formatting[i]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(w.linkHref,"url"):(t.strong&&e.push(w.strong),t.em&&e.push(w.em),t.strikethrough&&e.push(w.strikethrough),t.linkText&&e.push(w.linkText),t.code&&e.push(w.code),t.image&&e.push(w.image),t.imageAltText&&e.push(w.imageAltText,"link"),t.imageMarker&&e.push(w.imageMarker)),t.header&&e.push(w.header,w.header+"-"+t.header),t.quote&&(e.push(w.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.quote+"-"+t.quote):e.push(w.quote+"-"+n.maxBlockquoteDepth)),t.list!==!1){var r=(t.listStack.length-1)%3;r?1===r?e.push(w.list2):e.push(w.list3):e.push(w.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function d(t,e){if(t.match(L,!0))return h(e)}function f(e,i){var r=i.text(e,i);if("undefined"!=typeof r)return r;if(i.list)return i.list=null,h(i);if(i.taskList){var a="x"!==e.match(k,!0)[1];return a?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting="task"),i.taskList=!1,h(i)}if(i.taskOpen=!1,i.taskClosed=!1,i.header&&e.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting="header"),h(i);var s=e.next();if(i.linkTitle){i.linkTitle=!1;var l=s;"("===s&&(l=")"),l=(l+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var u="^\\s*(?:[^"+l+"\\\\]+|\\\\\\\\|\\\\.)"+l;if(e.match(new RegExp(u),!0))return w.linkHref}if("`"===s){var d=i.formatting;n.highlightFormatting&&(i.formatting="code"),e.eatWhile("`");var f=e.current().length;if(0==i.code)return i.code=f,h(i);if(f==i.code){var m=h(i);return i.code=0,m}return i.formatting=d,h(i)}if(i.code)return h(i);if("\\"===s&&(e.next(),n.highlightFormatting)){var v=h(i),y=w.formatting+"-escape";return v?v+" "+y:y}if("!"===s&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return i.imageMarker=!0,i.image=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("["===s&&i.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return i.imageMarker=!1,i.imageAltText=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("]"===s&&i.imageAltText){n.highlightFormatting&&(i.formatting="image");var v=h(i);return i.imageAltText=!1,i.image=!1,i.inline=i.f=g,v}if("["===s&&e.match(/[^\]]*\](\(.*\)| ?\[.*?\])/,!1)&&!i.image)return i.linkText=!0,n.highlightFormatting&&(i.formatting="link"),h(i);if("]"===s&&i.linkText&&e.match(/\(.*?\)| ?\[.*?\]/,!1)){n.highlightFormatting&&(i.formatting="link");var v=h(i);return i.linkText=!1,i.inline=i.f=g,v}if("<"===s&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkInline}if("<"===s&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkEmail}if("<"===s&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(x!=-1){var _=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(_)&&(i.md_inside=!0)}return e.backUp(1),i.htmlState=t.startState(b),o(e,i,c)}if("<"===s&&e.match(/^\/\w*?>/))return i.md_inside=!1,"tag";if("*"===s||"_"===s){for(var S=1,C=1==e.pos?" ":e.string.charAt(e.pos-2);S<3&&e.eat(s);)S++;var T=e.peek()||" ",A=!/\s/.test(T)&&(!P.test(T)||/\s/.test(C)||P.test(C)),M=!/\s/.test(C)&&(!P.test(C)||/\s/.test(T)||P.test(T)),L=null,E=null;if(S%2&&(i.em||!A||"*"!==s&&M&&!P.test(C)?i.em!=s||!M||"*"!==s&&A&&!P.test(T)||(L=!1):L=!0),S>1&&(i.strong||!A||"*"!==s&&M&&!P.test(C)?i.strong!=s||!M||"*"!==s&&A&&!P.test(T)||(E=!1):E=!0),null!=E||null!=L){n.highlightFormatting&&(i.formatting=null==L?"strong":null==E?"em":"strong em"),L===!0&&(i.em=s),E===!0&&(i.strong=s);var m=h(i);return L===!1&&(i.em=!1),E===!1&&(i.strong=!1),m}}else if(" "===s&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return h(i);e.backUp(1)}if(n.strikethrough)if("~"===s&&e.eatWhile(s)){if(i.strikethrough){n.highlightFormatting&&(i.formatting="strikethrough");var m=h(i);return i.strikethrough=!1,m}if(e.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting="strikethrough"),h(i)}else if(" "===s&&e.match(/^~~/,!0)){if(" "===e.peek())return h(i);e.backUp(2)}return" "===s&&(e.match(/ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),h(i)}function p(t,e){var i=t.next();if(">"===i){e.f=e.inline=f,n.highlightFormatting&&(e.formatting="link");var r=h(e);return r?r+=" ":r="",r+w.linkInline}return t.match(/^[^>]+/,!0),w.linkInline}function g(t,e){if(t.eatSpace())return null;var i=t.next();return"("===i||"["===i?(e.f=e.inline=m("("===i?")":"]",0),n.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,h(e)):"error"}function m(t){return function(e,i){var r=e.next();if(r===t){i.f=i.inline=f,n.highlightFormatting&&(i.formatting="link-string");var o=h(i);return i.linkHref=!1,o}return e.match(N[t]),i.linkHref=!0,h(i)}}function v(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=y,t.next(),n.highlightFormatting&&(e.formatting="link"),e.linkText=!0,h(e)):r(t,e,f)}function y(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=x,n.highlightFormatting&&(e.formatting="link");var i=h(e);return e.linkText=!1,i}return t.match(/^([^\]\\]|\\.)+/,!0),w.linkText}function x(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,w.linkHref+" url")}var b=t.getMode(e,"text/html"),_="null"==b.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var w={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var S in w)w.hasOwnProperty(S)&&n.tokenTypeOverrides[S]&&(w[S]=n.tokenTypeOverrides[S]);var C=/^([*\-_])(?:\s*\1){2,}\s*$/,T=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,k=/^\[(x| )\](?=\s)/,A=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,M=/^ *(?:\={1,}|-{1,})\s*$/,L=/^[^#!\[\]*_\\<>` "'(~]+/,E=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#-]*)"),P=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,N={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/},O={startState:function(){return{f:l,prevLine:null,thisLine:null,block:l,htmlState:null,indentation:0,inline:f,text:d,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(b,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkTitle:e.linkTitle,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,header:e.header,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedChars:e.fencedChars}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine){var n=e.header||e.hr;if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0)||n){if(s(e),!n)return null;e.prevLine=null}e.prevLine=e.thisLine,e.thisLine=t,e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block;var i=t.match(/^\s*/,!0)[0].replace(/\t/g,"    ").length;if(e.indentationDiff=Math.min(i-e.indentation,4),e.indentation=e.indentation+e.indentationDiff,i>0)return null}return e.f(t,e)},innerMode:function(t){return t.block==c?{state:t.htmlState,mode:b}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:O}},blankLine:s,getType:h,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return O},"xml"),t.defineMIME("text/x-markdown","markdown")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/edit/matchbrackets",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,i,r){var o=t.getLineHandle(e.line),l=e.ch-1,c=l>=0&&s[o.text.charAt(l)]||s[o.text.charAt(++l)];if(!c)return null;var u=">"==c.charAt(1)?1:-1;if(i&&u>0!=(l==e.ch))return null;var h=t.getTokenTypeAt(a(e.line,l+1)),d=n(t,a(e.line,l+(u>0?1:0)),u,h||null,r);return null==d?null:{from:a(e.line,l),to:d&&d.pos,match:d&&d.ch==c.charAt(0),forward:u>0}}function n(t,e,n,i,r){for(var o=r&&r.maxScanLineLength||1e4,l=r&&r.maxScanLines||1e3,c=[],u=r&&r.bracketRegex?r.bracketRegex:/[(){}[\]]/,h=n>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),d=e.line;d!=h;d+=n){var f=t.getLine(d);if(f){var p=n>0?0:f.length-1,g=n>0?f.length:-1;if(!(f.length>o))for(d==e.line&&(p=e.ch-(n<0?1:0));p!=g;p+=n){var m=f.charAt(p);if(u.test(m)&&(void 0===i||t.getTokenTypeAt(a(d,p+1))==i)){var v=s[m];if(">"==v.charAt(1)==n>0)c.push(m);else{if(!c.length)return{pos:a(d,p),ch:m};c.pop()}}}}}return d-n!=(n>0?t.lastLine():t.firstLine())&&null}function i(t,n,i){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,s=[],l=t.listSelections(),c=0;c<l.length;c++){var u=l[c].empty()&&e(t,l[c].head,!1,i);if(u&&t.getLine(u.from.line).length<=r){var h=u.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";s.push(t.markText(u.from,a(u.from.line,u.from.ch+1),{className:h})),u.to&&t.getLine(u.to.line).length<=r&&s.push(t.markText(u.to,a(u.to.line,u.to.ch+1),{className:h}))}}if(s.length){o&&t.state.focused&&t.focus();var d=function(){t.operation(function(){for(var t=0;t<s.length;t++)s[t].clear()})};if(!n)return d;setTimeout(d,800)}}function r(t){t.operation(function(){l&&(l(),l=null),l=i(t,!1,t.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=t.Pos,s={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},l=null;t.defineOption("matchBrackets",!1,function(e,n,i){i&&i!=t.Init&&(e.off("cursorActivity",r),l&&(l(),l=null)),n&&(e.state.matchBrackets="object"==typeof n?n:{},e.on("cursorActivity",r))}),t.defineExtension("matchBrackets",function(){i(this,!0)}),t.defineExtension("findMatchingBracket",function(t,n,i){return e(this,t,n,i)}),t.defineExtension("scanForBracket",function(t,e,i,r){return n(this,t,e,i,r)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/continuecomment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(e){if(e.getOption("disableInput"))return t.Pass;for(var i,r=e.listSelections(),o=[],a=0;a<r.length;a++){var s=r[a].head,l=e.getTokenAt(s);if("comment"!=l.type)return t.Pass;var c=t.innerMode(e.getMode(),l.state).mode;if(i){if(i!=c)return t.Pass}else i=c;var u=null;if(i.blockCommentStart&&i.blockCommentContinue){var h,d=l.string.indexOf(i.blockCommentEnd),f=e.getRange(t.Pos(s.line,0),t.Pos(s.line,l.end));if(d!=-1&&d==l.string.length-i.blockCommentEnd.length&&s.ch>=d);else if(0==l.string.indexOf(i.blockCommentStart)){if(u=f.slice(0,l.start),!/^\s*$/.test(u)){u="";for(var p=0;p<l.start;++p)u+=" "}}else(h=f.indexOf(i.blockCommentContinue))!=-1&&h+i.blockCommentContinue.length>l.start&&/^\s*$/.test(f.slice(0,h))&&(u=f.slice(0,h));null!=u&&(u+=i.blockCommentContinue)}if(null==u&&i.lineComment&&n(e)){var g=e.getLine(s.line),h=g.indexOf(i.lineComment);h>-1&&(u=g.slice(0,h),/\S/.test(u)?u=null:u+=i.lineComment+g.slice(h+i.lineComment.length).match(/^\s*/)[0])}if(null==u)return t.Pass;o[a]="\n"+u}e.operation(function(){for(var t=r.length-1;t>=0;t--)e.replaceRange(o[t],r[t].from(),r[t].to(),"+insert")})}function n(t){var e=t.getOption("continueComments");return!e||"object"!=typeof e||e.continueLineComment!==!1}for(var i=["clike","css","javascript"],r=0;r<i.length;++r)t.extendMode(i[r],{blockCommentContinue:" * "});t.defineOption("continueComments",null,function(n,i,r){if(r&&r!=t.Init&&n.removeKeyMap("continueComment"),i){var o="Enter";"string"==typeof i?o=i:"object"==typeof i&&i.key&&(o=i.key);var a={name:"continueComment"};a[o]=e,n.addKeyMap(a)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/comment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){var e=t.search(o);return e==-1?0:e}function n(t,e,n){return/\bstring\b/.test(t.getTokenTypeAt(a(e.line,0)))&&!/^[\'\"\`]/.test(n)}function i(t,e){var n=t.getMode();return n.useInnerComments!==!1&&n.innerMode?t.getModeAt(e):n}var r={},o=/[^\s\u00a0]/,a=t.Pos;t.commands.toggleComment=function(t){t.toggleComment()},t.defineExtension("toggleComment",function(t){t||(t=r);for(var e=this,n=1/0,i=this.listSelections(),o=null,s=i.length-1;s>=0;s--){var l=i[s].from(),c=i[s].to();l.line>=n||(c.line>=n&&(c=a(n,0)),n=l.line,null==o?e.uncomment(l,c,t)?o="un":(e.lineComment(l,c,t),o="line"):"un"==o?e.uncomment(l,c,t):e.lineComment(l,c,t))}}),t.defineExtension("lineComment",function(t,s,l){l||(l=r);var c=this,u=i(c,t),h=c.getLine(t.line);if(null!=h&&!n(c,t,h)){var d=l.lineComment||u.lineComment;if(!d)return void((l.blockCommentStart||u.blockCommentStart)&&(l.fullLines=!0,c.blockComment(t,s,l)));var f=Math.min(0!=s.ch||s.line==t.line?s.line+1:s.line,c.lastLine()+1),p=null==l.padding?" ":l.padding,g=l.commentBlankLines||t.line==s.line;c.operation(function(){if(l.indent){for(var n=null,i=t.line;i<f;++i){var r=c.getLine(i),s=r.slice(0,e(r));(null==n||n.length>s.length)&&(n=s)}for(var i=t.line;i<f;++i){var r=c.getLine(i),u=n.length;(g||o.test(r))&&(r.slice(0,u)!=n&&(u=e(r)),c.replaceRange(n+d+p,a(i,0),a(i,u)))}}else for(var i=t.line;i<f;++i)(g||o.test(c.getLine(i)))&&c.replaceRange(d+p,a(i,0))})}}),t.defineExtension("blockComment",function(t,e,n){n||(n=r);var s=this,l=i(s,t),c=n.blockCommentStart||l.blockCommentStart,u=n.blockCommentEnd||l.blockCommentEnd;if(!c||!u)return void((n.lineComment||l.lineComment)&&0!=n.fullLines&&s.lineComment(t,e,n));if(!/\bcomment\b/.test(s.getTokenTypeAt(a(t.line,0)))){var h=Math.min(e.line,s.lastLine());h!=t.line&&0==e.ch&&o.test(s.getLine(h))&&--h;var d=null==n.padding?" ":n.padding;t.line>h||s.operation(function(){if(0!=n.fullLines){var i=o.test(s.getLine(h));s.replaceRange(d+u,a(h)),s.replaceRange(c+d,a(t.line,0));var r=n.blockCommentLead||l.blockCommentLead;if(null!=r)for(var f=t.line+1;f<=h;++f)(f!=h||i)&&s.replaceRange(r+d,a(f,0))}else s.replaceRange(u,e),s.replaceRange(c,t)})}}),t.defineExtension("uncomment",function(t,e,n){n||(n=r);var s,l=this,c=i(l,t),u=Math.min(0!=e.ch||e.line==t.line?e.line:e.line-1,l.lastLine()),h=Math.min(t.line,u),d=n.lineComment||c.lineComment,f=[],p=null==n.padding?" ":n.padding;t:if(d){for(var g=h;g<=u;++g){var m=l.getLine(g),v=m.indexOf(d);if(v>-1&&!/comment/.test(l.getTokenTypeAt(a(g,v+1)))&&(v=-1),v==-1&&o.test(m))break t;if(v>-1&&o.test(m.slice(0,v)))break t;f.push(m)}if(l.operation(function(){for(var t=h;t<=u;++t){var e=f[t-h],n=e.indexOf(d),i=n+d.length;n<0||(e.slice(i,i+p.length)==p&&(i+=p.length),s=!0,l.replaceRange("",a(t,n),a(t,i)))}}),s)return!0}var y=n.blockCommentStart||c.blockCommentStart,x=n.blockCommentEnd||c.blockCommentEnd;if(!y||!x)return!1;var b=n.blockCommentLead||c.blockCommentLead,_=l.getLine(h),w=_.indexOf(y);if(w==-1)return!1;var S=u==h?_:l.getLine(u),C=S.indexOf(x,u==h?w+y.length:0);C==-1&&h!=u&&(S=l.getLine(--u),C=S.indexOf(x));var T=a(h,w+1),k=a(u,C+1);if(C==-1||!/comment/.test(l.getTokenTypeAt(T))||!/comment/.test(l.getTokenTypeAt(k))||l.getRange(T,k,"\n").indexOf(x)>-1)return!1;var A=_.lastIndexOf(y,t.ch),M=A==-1?-1:_.slice(0,t.ch).indexOf(x,A+y.length);if(A!=-1&&M!=-1&&M+x.length!=t.ch)return!1;M=S.indexOf(x,e.ch);var L=S.slice(e.ch).lastIndexOf(y,M-e.ch);return A=M==-1||L==-1?-1:e.ch+L,(M==-1||A==-1||A==e.ch)&&(l.operation(function(){l.replaceRange("",a(u,C-(p&&S.slice(C-p.length,C)==p?p.length:0)),a(u,C+x.length));var t=w+y.length;if(p&&_.slice(t,t+p.length)==p&&(t+=p.length),l.replaceRange("",a(h,w),a(h,t)),b)for(var e=h+1;e<=u;++e){var n=l.getLine(e),i=n.indexOf(b);if(i!=-1&&!o.test(n.slice(0,i))){var r=i+b.length;p&&n.slice(r,r+p.length)==p&&(r+=p.length),l.replaceRange("",a(e,i),a(e,r))}}}),!0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;t.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function n(e,n){var i=t.cmpPos(n.from,e.from);return i>0&&e.to.ch-e.from.ch!=n.to.ch-n.from.ch}function i(t,e,n){var i=t.options.hintOptions,r={};for(var o in g)r[o]=g[o];if(i)for(var o in i)void 0!==i[o]&&(r[o]=i[o]);if(n)for(var o in n)void 0!==n[o]&&(r[o]=n[o]);return r.hint.resolve&&(r.hint=r.hint.resolve(t,e)),r}function r(t){return"string"==typeof t?t:t.text}function o(t,e){function n(t,n){var r;r="string"!=typeof n?function(t){return n(t,e)}:i.hasOwnProperty(n)?i[n]:n,o[t]=r}var i={Up:function(){e.moveFocus(-1)},Down:function(){e.moveFocus(1)},PageUp:function(){e.moveFocus(-e.menuSize()+1,!0)},PageDown:function(){e.moveFocus(e.menuSize()-1,!0)},Home:function(){e.setFocus(0)},End:function(){e.setFocus(e.length-1)},Enter:e.pick,Tab:e.pick,Esc:e.close},r=t.options.customKeys,o=r?{}:i;if(r)for(var a in r)r.hasOwnProperty(a)&&n(a,r[a]);var s=t.options.extraKeys;if(s)for(var a in s)s.hasOwnProperty(a)&&n(a,s[a]);return o}function a(t,e){for(;e&&e!=t;){if("LI"===e.nodeName.toUpperCase()&&e.parentNode==t)return e;e=e.parentNode}}function s(e,n){this.completion=e,this.data=n,this.picked=!1;var i=this,s=e.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=n.selectedHint||0;for(var c=n.list,u=0;u<c.length;++u){var f=l.appendChild(document.createElement("li")),p=c[u],g=h+(u!=this.selectedHint?"":" "+d);null!=p.className&&(g=p.className+" "+g),f.className=g,p.render?p.render(f,n,p):f.appendChild(document.createTextNode(p.displayText||r(p))),f.hintId=u}var m=s.cursorCoords(e.options.alignWithWord?n.from:null),v=m.left,y=m.bottom,x=!0;l.style.left=v+"px",l.style.top=y+"px";var b=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),_=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(e.options.container||document.body).appendChild(l);var w=l.getBoundingClientRect(),S=w.bottom-_,C=l.scrollHeight>l.clientHeight+1,T=s.getScrollInfo();if(S>0){var k=w.bottom-w.top,A=m.top-(m.bottom-w.top);if(A-k>0)l.style.top=(y=m.top-k)+"px",x=!1;else if(k>_){l.style.height=_-5+"px",l.style.top=(y=m.bottom-w.top)+"px";var M=s.getCursor();n.from.ch!=M.ch&&(m=s.cursorCoords(M),l.style.left=(v=m.left)+"px",w=l.getBoundingClientRect())}}var L=w.right-b;if(L>0&&(w.right-w.left>b&&(l.style.width=b-5+"px",L-=w.right-w.left-b),l.style.left=(v=m.left-L)+"px"),C)for(var E=l.firstChild;E;E=E.nextSibling)E.style.paddingRight=s.display.nativeBarWidth+"px";if(s.addKeyMap(this.keyMap=o(e,{moveFocus:function(t,e){i.changeActive(i.selectedHint+t,e)},setFocus:function(t){i.changeActive(t)},menuSize:function(){return i.screenAmount()},length:c.length,close:function(){e.close()},pick:function(){i.pick()},data:n})),e.options.closeOnUnfocus){var P;s.on("blur",this.onBlur=function(){P=setTimeout(function(){e.close()},100)}),s.on("focus",this.onFocus=function(){clearTimeout(P)})}return s.on("scroll",this.onScroll=function(){var t=s.getScrollInfo(),n=s.getWrapperElement().getBoundingClientRect(),i=y+T.top-t.top,r=i-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return x||(r+=l.offsetHeight),r<=n.top||r>=n.bottom?e.close():(l.style.top=i+"px",void(l.style.left=v+T.left-t.left+"px"))}),t.on(l,"dblclick",function(t){var e=a(l,t.target||t.srcElement);e&&null!=e.hintId&&(i.changeActive(e.hintId),i.pick())}),t.on(l,"click",function(t){var n=a(l,t.target||t.srcElement);n&&null!=n.hintId&&(i.changeActive(n.hintId),e.options.completeOnSingleClick&&i.pick())}),t.on(l,"mousedown",function(){setTimeout(function(){s.focus()},20)}),t.signal(n,"select",c[0],l.firstChild),!0}function l(t,e){if(!t.somethingSelected())return e;for(var n=[],i=0;i<e.length;i++)e[i].supportsSelection&&n.push(e[i]);return n}function c(t,e,n,i){if(t.async)t(e,i,n);else{var r=t(e,n);r&&r.then?r.then(i):i(r)}}function u(e,n){var i,r=e.getHelpers(n,"hint");if(r.length){var o=function(t,e,n){function i(r){return r==o.length?e(null):void c(o[r],t,n,function(t){t&&t.list.length>0?e(t):i(r+1)})}var o=l(t,r);i(0)};return o.async=!0,o.supportsSelection=!0,o}return(i=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:i})}:t.hint.anyword?function(e,n){return t.hint.anyword(e,n)}:function(){}}var h="CodeMirror-hint",d="CodeMirror-hint-active";t.showHint=function(t,e,n){if(!e)return t.showHint(n);n&&n.async&&(e.async=!0);var i={hint:e};if(n)for(var r in n)i[r]=n[r];return t.showHint(i)},t.defineExtension("showHint",function(n){n=i(this,this.getCursor("start"),n);var r=this.listSelections();if(!(r.length>1)){if(this.somethingSelected()){if(!n.hint.supportsSelection)return;for(var o=0;o<r.length;o++)if(r[o].head.line!=r[o].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var a=this.state.completionActive=new e(this,n);a.options.hint&&(t.signal(this,"startCompletion",this),a.update(!0))}});var f=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},p=window.cancelAnimationFrame||clearTimeout;e.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,n){var i=e.list[n];i.hint?i.hint(this.cm,e,i):this.cm.replaceRange(r(i),i.from||e.from,i.to||e.to,"complete"),t.signal(e,"pick",i),this.close()},cursorActivity:function(){this.debounce&&(p(this.debounce),this.debounce=0);var t=this.cm.getCursor(),e=this.cm.getLine(t.line);if(t.line!=this.startPos.line||e.length-t.ch!=this.startLen-this.startPos.ch||t.ch<this.startPos.ch||this.cm.somethingSelected()||t.ch&&this.options.closeCharacters.test(e.charAt(t.ch-1)))this.close();else{var n=this;this.debounce=f(function(){n.update()}),this.widget&&this.widget.disable()}},update:function(t){if(null!=this.tick){var e=this,n=++this.tick;c(this.options.hint,this.cm,this.options,function(i){e.tick==n&&e.finishUpdate(i,t)})}},finishUpdate:function(e,i){this.data&&t.signal(this.data,"update");var r=this.widget&&this.widget.picked||i&&this.options.completeSingle;this.widget&&this.widget.close(),e&&this.data&&n(this.data,e)||(this.data=e,e&&e.list.length&&(r&&1==e.list.length?this.pick(e,0):(this.widget=new s(this,e),t.signal(e,"shown"))))}},s.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var t=this.completion.cm;this.completion.options.closeOnUnfocus&&(t.off("blur",this.onBlur),t.off("focus",this.onFocus)),t.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(e,n){if(e>=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+d,""),i=this.hints.childNodes[this.selectedHint=e],i.className+=" "+d,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],i)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",{resolve:u}),t.registerHelper("hint","fromList",function(e,n){var i=e.getCursor(),r=e.getTokenAt(i),o=t.Pos(i.line,r.end);if(r.string&&/\w/.test(r.string[r.string.length-1]))var a=r.string,s=t.Pos(i.line,r.start);else var a="",s=o;for(var l=[],c=0;c<n.words.length;c++){var u=n.words[c];u.slice(0,a.length)==a&&l.push(u)}if(l.length)return{list:l,from:s,to:o}}),t.commands.autocomplete=t.showHint;var g={hint:t.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/anyword-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=/[\w$]+/,n=500;t.registerHelper("hint","anyword",function(i,r){for(var o=r&&r.word||e,a=r&&r.range||n,s=i.getCursor(),l=i.getLine(s.line),c=s.ch,u=c;u&&o.test(l.charAt(u-1));)--u;for(var h=u!=c&&l.slice(u,c),d=r&&r.list||[],f={},p=new RegExp(o.source,"g"),g=-1;g<=1;g+=2)for(var m=s.line,v=Math.min(Math.max(m+g*a,i.firstLine()),i.lastLine())+g;m!=v;m+=g)for(var y,x=i.getLine(m);y=p.exec(x);)m==s.line&&y[0]===h||h&&0!=y[0].lastIndexOf(h,0)||Object.prototype.hasOwnProperty.call(f,y[0])||(f[y[0]]=!0,d.push(y[0]));return{list:d,from:t.Pos(s.line,u),to:t.Pos(s.line,c)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/display/placeholder",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t){t.state.placeholder&&(t.state.placeholder.parentNode.removeChild(t.state.placeholder),t.state.placeholder=null)}function n(t){e(t);var n=t.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var i=t.getOption("placeholder");"string"==typeof i&&(i=document.createTextNode(i)),n.appendChild(i),t.display.lineSpace.insertBefore(n,t.display.lineSpace.firstChild)}function i(t){o(t)&&n(t)}function r(t){var i=t.getWrapperElement(),r=o(t);i.className=i.className.replace(" CodeMirror-empty","")+(r?" CodeMirror-empty":""),r?n(t):e(t)}function o(t){return 1===t.lineCount()&&""===t.getLine(0)}t.defineOption("placeholder","",function(n,o,a){var s=a&&a!=t.Init;if(o&&!s)n.on("blur",i),n.on("change",r),n.on("swapDoc",r),r(n);else if(!o&&s){n.off("blur",i),n.off("change",r),n.off("swapDoc",r),e(n);var l=n.getWrapperElement();l.className=l.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&i(n)})}),function(t){
-"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/runmode/runmode",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.runMode=function(e,n,i,r){var o=t.getMode(t.defaults,n),a=/MSIE \d/.test(navigator.userAgent),s=a&&(null==document.documentMode||document.documentMode<9);if(i.appendChild){var l=r&&r.tabSize||t.defaults.tabSize,c=i,u=0;c.innerHTML="",i=function(t,e){if("\n"==t)return c.appendChild(document.createTextNode(s?"\r":t)),void(u=0);for(var n="",i=0;;){var r=t.indexOf("\t",i);if(r==-1){n+=t.slice(i),u+=t.length-i;break}u+=r-i,n+=t.slice(i,r);var o=l-u%l;u+=o;for(var a=0;a<o;++a)n+=" ";i=r+1}if(e){var h=c.appendChild(document.createElement("span"));h.className="cm-"+e.replace(/ +/g," cm-"),h.appendChild(document.createTextNode(n))}else c.appendChild(document.createTextNode(n))}}for(var h=t.splitLines(e),d=r&&r.state||t.startState(o),f=0,p=h.length;f<p;++f){f&&i("\n");var g=new t.StringStream(h[f]);for(!g.string&&o.blankLine&&o.blankLine(d);!g.eol();){var m=o.token(g,d);i(g.current(),m,f,g.start,d),g.start=g.pos}}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/search/searchcursor",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,r,o){if(this.atOccurrence=!1,this.doc=t,null==o&&"string"==typeof e&&(o=!1),r=r?t.clipPos(r):i(0,0),this.pos={from:r,to:r},"string"!=typeof e)e.global||(e=new RegExp(e.source,e.ignoreCase?"ig":"g")),this.matches=function(n,r){if(n){e.lastIndex=0;for(var o,a,s=t.getLine(r.line).slice(0,r.ch),l=0;;){e.lastIndex=l;var c=e.exec(s);if(!c)break;if(o=c,a=o.index,l=o.index+(o[0].length||1),l==s.length)break}var u=o&&o[0].length||0;u||(0==a&&0==s.length?o=void 0:a!=t.getLine(r.line).length&&u++)}else{e.lastIndex=r.ch;var s=t.getLine(r.line),o=e.exec(s),u=o&&o[0].length||0,a=o&&o.index;a+u==s.length||u||(u=1)}if(o&&u)return{from:i(r.line,a),to:i(r.line,a+u),match:o}};else{var a=e;o&&(e=e.toLowerCase());var s=o?function(t){return t.toLowerCase()}:function(t){return t},l=e.split("\n");if(1==l.length)e.length?this.matches=function(r,o){if(r){var l=t.getLine(o.line).slice(0,o.ch),c=s(l),u=c.lastIndexOf(e);if(u>-1)return u=n(l,c,u),{from:i(o.line,u),to:i(o.line,u+a.length)}}else{var l=t.getLine(o.line).slice(o.ch),c=s(l),u=c.indexOf(e);if(u>-1)return u=n(l,c,u)+o.ch,{from:i(o.line,u),to:i(o.line,u+a.length)}}}:this.matches=function(){};else{var c=a.split("\n");this.matches=function(e,n){var r=l.length-1;if(e){if(n.line-(l.length-1)<t.firstLine())return;if(s(t.getLine(n.line).slice(0,c[r].length))!=l[l.length-1])return;for(var o=i(n.line,c[r].length),a=n.line-1,u=r-1;u>=1;--u,--a)if(l[u]!=s(t.getLine(a)))return;var h=t.getLine(a),d=h.length-c[0].length;if(s(h.slice(d))!=l[0])return;return{from:i(a,d),to:o}}if(!(n.line+(l.length-1)>t.lastLine())){var h=t.getLine(n.line),d=h.length-c[0].length;if(s(h.slice(d))==l[0]){for(var f=i(n.line,d),a=n.line+1,u=1;u<r;++u,++a)if(l[u]!=s(t.getLine(a)))return;if(s(t.getLine(a).slice(0,c[r].length))==l[r])return{from:f,to:i(a,c[r].length)}}}}}}}function n(t,e,n){if(t.length==e.length)return n;for(var i=Math.min(n,t.length);;){var r=t.slice(0,i).toLowerCase().length;if(r<n)++i;else{if(!(r>n))return i;--i}}}var i=t.Pos;e.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){function e(t){var e=i(t,0);return n.pos={from:e,to:e},n.atOccurrence=!1,!1}for(var n=this,r=this.doc.clipPos(t?this.pos.from:this.pos.to);;){if(this.pos=this.matches(t,r))return this.atOccurrence=!0,this.pos.match||!0;if(t){if(!r.line)return e(0);r=i(r.line-1,this.doc.getLine(r.line-1).length)}else{var o=this.doc.lineCount();if(r.line==o-1)return e(o);r=i(r.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var r=t.splitLines(e);this.doc.replaceRange(r,this.pos.from,this.pos.to,n),this.pos.to=i(this.pos.from.line+r.length-1,r[r.length-1].length+(1==r.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",function(t,n,i){return new e(this.doc,t,n,i)}),t.defineDocExtension("getSearchCursor",function(t,n,i){return new e(this,t,n,i)}),t.defineExtension("selectMatches",function(e,n){for(var i=[],r=this.getSearchCursor(e,this.getCursor("from"),n);r.findNext()&&!(t.cmpPos(r.to(),this.getCursor("to"))>0);)i.push({anchor:r.from(),head:r.to()});i.length&&this.setSelections(i,0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/dialog/dialog",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,n){var i,r=t.getWrapperElement();return i=r.appendChild(document.createElement("div")),n?i.className="CodeMirror-dialog CodeMirror-dialog-bottom":i.className="CodeMirror-dialog CodeMirror-dialog-top","string"==typeof e?i.innerHTML=e:i.appendChild(e),i}function n(t,e){t.state.currentNotificationClose&&t.state.currentNotificationClose(),t.state.currentNotificationClose=e}t.defineExtension("openDialog",function(i,r,o){function a(t){if("string"==typeof t)h.value=t;else{if(c)return;c=!0,l.parentNode.removeChild(l),u.focus(),o.onClose&&o.onClose(l)}}o||(o={}),n(this,null);var s,l=e(this,i,o.bottom),c=!1,u=this,h=l.getElementsByTagName("input")[0];return h?(h.focus(),o.value&&(h.value=o.value,o.selectValueOnOpen!==!1&&h.select()),o.onInput&&t.on(h,"input",function(t){o.onInput(t,h.value,a)}),o.onKeyUp&&t.on(h,"keyup",function(t){o.onKeyUp(t,h.value,a)}),t.on(h,"keydown",function(e){o&&o.onKeyDown&&o.onKeyDown(e,h.value,a)||((27==e.keyCode||o.closeOnEnter!==!1&&13==e.keyCode)&&(h.blur(),t.e_stop(e),a()),13==e.keyCode&&r(h.value,e))}),o.closeOnBlur!==!1&&t.on(h,"blur",a)):(s=l.getElementsByTagName("button")[0])&&(t.on(s,"click",function(){a(),u.focus()}),o.closeOnBlur!==!1&&t.on(s,"blur",a),s.focus()),a}),t.defineExtension("openConfirm",function(i,r,o){function a(){c||(c=!0,s.parentNode.removeChild(s),u.focus())}n(this,null);var s=e(this,i,o&&o.bottom),l=s.getElementsByTagName("button"),c=!1,u=this,h=1;l[0].focus();for(var d=0;d<l.length;++d){var f=l[d];!function(e){t.on(f,"click",function(n){t.e_preventDefault(n),a(),e&&e(u)})}(r[d]),t.on(f,"blur",function(){--h,setTimeout(function(){h<=0&&a()},200)}),t.on(f,"focus",function(){++h})}}),t.defineExtension("openNotification",function(i,r){function o(){l||(l=!0,clearTimeout(a),s.parentNode.removeChild(s))}n(this,o);var a,s=e(this,i,r&&r.bottom),l=!1,c=r&&"undefined"!=typeof r.duration?r.duration:5e3;return t.on(s,"click",function(e){t.e_preventDefault(e),o()}),c&&(a=setTimeout(o,c)),o})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/search",["../../lib/codemirror","./searchcursor","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return"string"==typeof t?t=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e?"gi":"g"):t.global||(t=new RegExp(t.source,t.ignoreCase?"gi":"g")),{token:function(e){t.lastIndex=e.pos;var n=t.exec(e.string);return n&&n.index==e.pos?(e.pos+=n[0].length||1,"searching"):void(n?e.pos=n.index:e.skipToEnd())}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function i(t){return t.state.search||(t.state.search=new n)}function r(t){return"string"==typeof t&&t==t.toLowerCase()}function o(t,e,n){return t.getSearchCursor(e,n,r(e))}function a(t,e,n,i,r){t.openDialog(e,i,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){p(t)},onKeyDown:r})}function s(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function l(t,e,n,i){t.openConfirm?t.openConfirm(e,i):confirm(n)&&i[0]()}function c(t){return t.replace(/\\(.)/g,function(t,e){return"n"==e?"\n":"r"==e?"\r":e})}function u(t){var e=t.match(/^\/(.*)\/([a-z]*)$/);if(e)try{t=new RegExp(e[1],e[2].indexOf("i")==-1?"":"i")}catch(t){}else t=c(t);return("string"==typeof t?""==t:t.test(""))&&(t=/x^/),t}function h(t,n,i){n.queryText=i,n.query=u(i),t.removeOverlay(n.overlay,r(n.query)),n.overlay=e(n.query,r(n.query)),t.addOverlay(n.overlay),t.showMatchesOnScrollbar&&(n.annotate&&(n.annotate.clear(),n.annotate=null),n.annotate=t.showMatchesOnScrollbar(n.query,r(n.query)))}function d(e,n,r,o){var l=i(e);if(l.query)return f(e,n);var c=e.getSelection()||l.lastQuery;if(r&&e.openDialog){var u=null,d=function(n,i){t.e_stop(i),n&&(n!=l.queryText&&(h(e,l,n),l.posFrom=l.posTo=e.getCursor()),u&&(u.style.opacity=1),f(e,i.shiftKey,function(t,n){var i;n.line<3&&document.querySelector&&(i=e.display.wrapper.querySelector(".CodeMirror-dialog"))&&i.getBoundingClientRect().bottom-4>e.cursorCoords(n,"window").top&&((u=i).style.opacity=.4)}))};a(e,v,c,d,function(n,r){var o=t.keyName(n),a=t.keyMap[e.getOption("keyMap")][o];a||(a=e.getOption("extraKeys")[o]),"findNext"==a||"findPrev"==a||"findPersistentNext"==a||"findPersistentPrev"==a?(t.e_stop(n),h(e,i(e),r),e.execCommand(a)):"find"!=a&&"findPersistent"!=a||(t.e_stop(n),d(r,n))}),o&&c&&(h(e,l,c),f(e,n))}else s(e,v,"Search for:",c,function(t){t&&!l.query&&e.operation(function(){h(e,l,t),l.posFrom=l.posTo=e.getCursor(),f(e,n)})})}function f(e,n,r){e.operation(function(){var a=i(e),s=o(e,a.query,n?a.posFrom:a.posTo);(s.find(n)||(s=o(e,a.query,n?t.Pos(e.lastLine()):t.Pos(e.firstLine(),0)),s.find(n)))&&(e.setSelection(s.from(),s.to()),e.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),r&&r(s.from(),s.to()))})}function p(t){t.operation(function(){var e=i(t);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,t.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function g(t,e,n){t.operation(function(){for(var i=o(t,e);i.findNext();)if("string"!=typeof e){var r=t.getRange(i.from(),i.to()).match(e);i.replace(n.replace(/\$(\d)/g,function(t,e){return r[e]}))}else i.replace(n)})}function m(t,e){if(!t.getOption("readOnly")){var n=t.getSelection()||i(t).lastQuery,r='<span class="CodeMirror-search-label">'+(e?"Replace all:":"Replace:")+"</span>";s(t,r+y,r,n,function(n){n&&(n=u(n),s(t,x,"Replace with:","",function(i){if(i=c(i),e)g(t,n,i);else{p(t);var r=o(t,n,t.getCursor("from")),a=function(){var e,c=r.from();!(e=r.findNext())&&(r=o(t,n),!(e=r.findNext())||c&&r.from().line==c.line&&r.from().ch==c.ch)||(t.setSelection(r.from(),r.to()),t.scrollIntoView({from:r.from(),to:r.to()}),l(t,b,"Replace?",[function(){s(e)},a,function(){g(t,n,i)}]))},s=function(t){r.replace("string"==typeof n?i:i.replace(/\$(\d)/g,function(e,n){return t[n]})),a()};a()}}))})}}var v='<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',y=' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',x='<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',b='<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';t.commands.find=function(t){p(t),d(t)},t.commands.findPersistent=function(t){p(t),d(t,!1,!0)},t.commands.findPersistentNext=function(t){d(t,!1,!0,!0)},t.commands.findPersistentPrev=function(t){d(t,!0,!0,!0)},t.commands.findNext=d,t.commands.findPrev=function(t){d(t,!0)},t.commands.clearSearch=p,t.commands.replace=m,t.commands.replaceAll=function(t){m(t,!0)}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/jump-to-line",["../../lib/codemirror","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function n(t,e){var n=Number(e);return/^[-+]/.test(e)?t.getCursor().line+n:n-1}var i='Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>';t.commands.jumpToLine=function(t){var r=t.getCursor();e(t,i,"Jump to line:",r.line+1+":"+r.ch,function(e){if(e){var i;if(i=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(e))t.setCursor(n(t,i[1]),Number(i[2]));else if(i=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(e)){var o=Math.round(t.lineCount()*Number(i[1])/100);/^[-+]/.test(i[1])&&(o=r.line+o+1),t.setCursor(o-1,r.ch)}else(i=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(e))&&t.setCursor(n(t,i[1]),r.ch)}})},t.keyMap.default["Alt-G"]="jumpToLine"}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hover/text-hover",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";!function(){function e(e,n){function i(e){return r.parentNode?(r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",void(r.style.left=e.clientX+5+"px")):t.off(document,"mousemove",i)}var r=document.createElement("div");return r.className="CodeMirror-hover-tooltip","string"==typeof n&&(n=document.createTextNode(n)),r.appendChild(n),document.body.appendChild(r),t.on(document,"mousemove",i),i(e),null!=r.style.opacity&&(r.style.opacity=1),r}function n(t){t.parentNode&&t.parentNode.removeChild(t)}function i(t){t.parentNode&&(null==t.style.opacity&&n(t),t.style.opacity=0,setTimeout(function(){n(t)},600))}function r(n,r,o,a,s){function l(){t.off(o,"mouseout",l),t.off(o,"click",l),o.className=o.className.replace(h,""),c&&(i(c),c=null),s.removeKeyMap(a.keyMap)}var c=e(n,r),u=setInterval(function(){if(c)for(var t=o;;t=t.parentNode){if(t==document.body)return;if(!t){l();break}}if(!c)return clearInterval(u)},400);t.on(o,"mouseout",l),t.on(o,"click",l),a.keyMap={Esc:l},s.addKeyMap(a.keyMap)}function o(t,e){this.options=e,this.timeout=null,e.delay?this.onMouseOver=function(e){s(t,e)}:this.onMouseOver=function(e){l(t,e)},this.keyMap=null}function a(e,n){if(n instanceof Function)return{getTextHover:n};if(n&&n!==!0||(n={}),n.getTextHover||(n.getTextHover=e.getHelper(t.Pos(0,0),"textHover")),!n.getTextHover)throw new Error("Required option 'getTextHover' missing (text-hover addon)");return n}function s(t,e){var n=t.state.textHover,i=n.options.delay;if(clearTimeout(n.timeout),e.srcElement){var r={srcElement:e.srcElement,clientX:e.clientX,clientY:e.clientY};e=r}n.timeout=setTimeout(function(){l(t,e)},i)}function l(t,e){var n=e.target||e.srcElement;if(n){var i=t.state.textHover,o=u(t,e),a=i.options.getTextHover(t,o,e);a&&(n.className+=h,"function"==typeof a?a(r,o,e,n,i,t):r(e,a,n,i,t))}}function c(e,n,i){if(i&&i!=t.Init&&(t.off(e.getWrapperElement(),"mouseover",e.state.textHover.onMouseOver),delete e.state.textHover),n){var r=e.state.textHover=new o(e,a(e,n));t.on(e.getWrapperElement(),"mouseover",r.onMouseOver)}}function u(t,e){for(var n=e.target||e.srcElement,i=n.innerText||n.textContent,r=0;r<d.length;r+=2){var o=t.coordsChar({left:e.clientX+d[r],top:e.clientY+d[r+1]}),a=t.getTokenAt(o);if(a&&a.string===i)return{token:a,pos:o}}}var h=" CodeMirror-hover",d=[0,0,0,5,0,-5,5,0,-5,0];t.defineOption("textHover",!1,c)}()}),define("cm/addon/hover/prolog-hover",["../../lib/codemirror","jquery","laconic"],function(t,e){"use strict";function n(t){return e.el.span({class:"pred-name"},t.text+"/"+t.arity)}function i(t,e,n){s[n]=e}function r(t,e){var n;return s[t.file]?s[t.file]:(n=t.file.lastIndexOf("/"))?t.file.substring(n+1):t.file}function o(t,n,i){return n&&n.file?e.el.div(a(t)+" included from ",e.el.span({class:"file-path"},n.file)):n&&n.line?a(t)+" defined in line "+n.line:"Locally defined "+t}function a(t){return t[0].toUpperCase()+t.slice(1)}var s={},l={goal_built_in:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Built-in predicate"},goal_global:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Global predicate"},goal_autoload:function(t,i){return t?e.el.div(n(t)," (autoload from ",r(t,i),"): ",i.tokenInfo(t)):"Autoloaded predicate"},goal_imported:function(t,i){return t?e.el.div(n(t)," (imported from ",r(t,i),"): ",i.tokenInfo(t)):"Imported predicate"},goal_recursion:"Recursive call",goal_dynamic:"Dynamic predicate",goal_undefined:"Undefined predicate",goal_local:function(t,e){return o("predicate",t,e)},goal_constraint:function(t,e){return o("CHR constraint",t,e)},head_unreferenced:"Predicate is not called",unused_import:"Imported predicate is not used",undefined_import:"Imported predicate is not defined",head_constraint:"CHR constraint",file:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path))):"File name"},file_no_depends:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path),e.el.div({class:"hover-remark"},"does not resolve any dependencies"))):"File name (does not resolve any dependencies)"},error:function(t,n){return t&&t.expected?e.el.div("error: ",e.el.strong(t.expected)," expected"):"error"},singleton:"Variable appearing only once",codes:"List of Unicode code points (integers)",chars:"List of one-character atoms",string:"Packed string (SWI7, use `text` for a list of codes)",qatom:"Quoted atom",uatom:"Uppercase atom due to var_prefix flag",tag:"Tag of a SWI7 dict",ext_quant:"Existential quantification operator",instantiation_error:"No variable allowed here",string_terminal:"Terminal (DCG)",head:null,control:null,fullstop:null,var:null,int:null,float:null,number:null,atom:null,functor:null,comment:null,neck:null,operator:null,sep:null,list_open:null,list_close:null,dict_open:null,dict_close:null};t.registerHelper("textHover","prolog",function(t,n,i){if(n){var r,o=n.token,a=l[o.type];if(void 0===a)return(r=t.getEnrichedToken(o))?r.summary&&"ask"===r.info?e.el.div(r.summary,t.tokenInfo(r)):r.summary?e.el.div(r.summary):e.el.div(o.type):e.el.div(o.type);if("function"==typeof a){var s=a(t.getEnrichedToken(o),t);return"string"==typeof s?e.el.div(s):s}if("string"==typeof a)return e.el.div(a)}return null})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-context-info",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=null;t.attachContextInfo=function(n){t.on(n,"select",function(t,n){n=n.parentNode;var i=null;if(t.info&&(i=t.info(t)),i){var r=n.getBoundingClientRect();null==e&&(e=document.createElement("div"),e.className="CodeMirror-hints-contextInfo",document.body.appendChild(e)),e.innerHTML="",e.style.top=n.style.top,e.style.left=r.right+"px","string"==typeof i?e.innerHTML=i:e.appendChild(i),e.style.display="block"}else null!=e&&(e.innerHTML="",e.style.display="none")}),t.on(n,"close",function(){null!=e&&e.parentNode.removeChild(e),e=null})},t.showContextInfo=function(e){return function(n,i,r){r||(r=i);var o=e(n,r);return t.attachContextInfo(o),o}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/keymap/emacs",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return t.line==e.line&&t.ch==e.ch}function n(t){R.push(t),R.length>50&&R.shift()}function i(t){return R.length?void(R[R.length-1]+=t):n(t)}function r(t){return R[R.length-(t?Math.min(t,1):1)]||""}function o(){return R.length>1&&R.pop(),r()}function a(t,r,o,a,s){null==s&&(s=t.getRange(r,o)),a&&D&&D.cm==t&&e(r,D.pos)&&t.isClean(D.gen)?i(s):n(s),t.replaceRange("",r,o,"+delete"),D=a?{cm:t,pos:r,gen:t.changeGeneration()}:null}function s(t,e,n){return t.findPosH(e,n,"char",!0)}function l(t,e,n){return t.findPosH(e,n,"word",!0)}function c(t,e,n){return t.findPosV(e,n,"line",t.doc.sel.goalColumn)}function u(t,e,n){return t.findPosV(e,n,"page",t.doc.sel.goalColumn)}function h(t,e,n){for(var i=e.line,r=t.getLine(i),o=/\S/.test(n<0?r.slice(0,e.ch):r.slice(e.ch)),a=t.firstLine(),s=t.lastLine();;){if(i+=n,i<a||i>s)return t.clipPos(O(i-n,n<0?0:null));r=t.getLine(i);var l=/\S/.test(r);if(l)o=!0;else if(o)return O(i,0)}}function d(t,e,n){for(var i=e.line,r=e.ch,o=t.getLine(e.line),a=!1;;){var s=o.charAt(r+(n<0?-1:0));if(s){if(a&&/[!?.]/.test(s))return O(i,r+(n>0?1:0));a||(a=/\w/.test(s)),r+=n}else{if(i==(n<0?t.firstLine():t.lastLine()))return O(i,r);if(o=t.getLine(i+n),!/\S/.test(o))return O(i,r);i+=n,r=n<0?o.length:0}}}function f(t,n,i){var r;if(t.findMatchingBracket&&(r=t.findMatchingBracket(n,!0))&&r.match&&(r.forward?1:-1)==i)return i>0?O(r.to.line,r.to.ch+1):r.to;for(var o=!0;;o=!1){var a=t.getTokenAt(n),s=O(n.line,i<0?a.start:a.end);if(!(o&&i>0&&a.end==n.ch)&&/\w/.test(a.string))return s;var l=t.findPosH(s,i,"char");if(e(s,l))return n;n=l}}function p(t,e){var n=t.state.emacsPrefix;return n?(w(t),"-"==n?-1:Number(n)):e?null:1}function g(t){var e="string"==typeof t?function(e){e.execCommand(t)}:t;return function(t){var n=p(t);e(t);for(var i=1;i<n;++i)e(t)}}function m(t,n,i,r){var o=p(t);o<0&&(r=-r,o=-o);for(var a=0;a<o;++a){var s=i(t,n,r);if(e(s,n))break;n=s}return n}function v(t,e){var n=function(n){n.extendSelection(m(n,n.getCursor(),t,e))};return n.motion=!0,n}function y(t,e,n){for(var i,r=t.listSelections(),o=r.length;o--;)i=r[o].head,a(t,i,m(t,i,e,n),!0)}function x(t){if(t.somethingSelected()){for(var e,n=t.listSelections(),i=n.length;i--;)e=n[i],a(t,e.anchor,e.head);return!0}}function b(t,e){return t.state.emacsPrefix?void("-"!=e&&(t.state.emacsPrefix+=e)):(t.state.emacsPrefix=e,t.on("keyHandled",_),void t.on("inputRead",S))}function _(t,e){t.state.emacsPrefixMap||I.hasOwnProperty(e)||w(t)}function w(t){t.state.emacsPrefix=null,t.off("keyHandled",_),t.off("inputRead",S)}function S(t,e){var n=p(t);if(n>1&&"+input"==e.origin){for(var i=e.text.join("\n"),r="",o=1;o<n;++o)r+=i;t.replaceSelection(r)}}function C(t){t.state.emacsPrefixMap=!0,t.addKeyMap(V),t.on("keyHandled",T),t.on("inputRead",T)}function T(t,e){("string"!=typeof e||!/^\d$/.test(e)&&"Ctrl-U"!=e)&&(t.removeKeyMap(V),t.state.emacsPrefixMap=!1,t.off("keyHandled",T),t.off("inputRead",T))}function k(t){t.setCursor(t.getCursor()),t.setExtending(!t.getExtending()),t.on("change",function(){t.setExtending(!1)})}function A(t){t.setExtending(!1),t.setCursor(t.getCursor())}function M(t,e,n){t.openDialog?t.openDialog(e+': <input type="text" style="width: 10em"/>',n,{bottom:!0}):n(prompt(e,""))}function L(t,e){var n=t.getCursor(),i=t.findPosH(n,1,"word");t.replaceRange(e(t.getRange(n,i)),n,i),t.setCursor(i)}function E(t){for(var e=t.getCursor(),n=e.line,i=e.ch,r=[];n>=t.firstLine();){for(var o=t.getLine(n),a=null==i?o.length:i;a>0;){var i=o.charAt(--a);if(")"==i)r.push("(");else if("]"==i)r.push("[");else if("}"==i)r.push("{");else if(/[\(\{\[]/.test(i)&&(!r.length||r.pop()!=i))return t.extendSelection(O(n,a))}--n,i=null}}function P(t){t.execCommand("clearSearch"),A(t)}function N(t){V[t]=function(e){b(e,t)},j["Ctrl-"+t]=function(e){b(e,t)},I["Ctrl-"+t]=!0}var O=t.Pos,R=[],D=null,I={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};t.emacs={kill:a,killRegion:x,repeated:g};for(var j=t.keyMap.emacs=t.normalizeKeyMap({"Ctrl-W":function(t){a(t,t.getCursor("start"),t.getCursor("end"))},"Ctrl-K":g(function(t){var e=t.getCursor(),n=t.clipPos(O(e.line)),i=t.getRange(e,n);/\S/.test(i)||(i+="\n",n=O(e.line+1,0)),a(t,e,n,!0,i)}),"Alt-W":function(t){n(t.getSelection()),A(t)},"Ctrl-Y":function(t){var e=t.getCursor();t.replaceRange(r(p(t)),e,e,"paste"),t.setSelection(e,t.getCursor())},"Alt-Y":function(t){t.replaceSelection(o(),"around","paste")},"Ctrl-Space":k,"Ctrl-Shift-2":k,"Ctrl-F":v(s,1),"Ctrl-B":v(s,-1),Right:v(s,1),Left:v(s,-1),"Ctrl-D":function(t){y(t,s,1)},Delete:function(t){x(t)||y(t,s,1)},"Ctrl-H":function(t){y(t,s,-1)},Backspace:function(t){x(t)||y(t,s,-1)},"Alt-F":v(l,1),"Alt-B":v(l,-1),"Alt-D":function(t){y(t,l,1)},"Alt-Backspace":function(t){y(t,l,-1)},"Ctrl-N":v(c,1),"Ctrl-P":v(c,-1),Down:v(c,1),Up:v(c,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":v(u,-1),"Ctrl-V":v(u,1),PageUp:v(u,-1),PageDown:v(u,1),"Ctrl-Up":v(h,-1),"Ctrl-Down":v(h,1),"Alt-A":v(d,-1),"Alt-E":v(d,1),"Alt-K":function(t){y(t,d,1)},"Ctrl-Alt-K":function(t){y(t,f,1)},"Ctrl-Alt-Backspace":function(t){y(t,f,-1)},"Ctrl-Alt-F":v(f,1),"Ctrl-Alt-B":v(f,-1),"Shift-Ctrl-Alt-2":function(t){var e=t.getCursor();t.setSelection(m(t,e,f,1),e)},"Ctrl-Alt-T":function(t){var e=f(t,t.getCursor(),-1),n=f(t,e,1),i=f(t,n,1),r=f(t,i,-1);t.replaceRange(t.getRange(r,i)+t.getRange(n,r)+t.getRange(e,n),e,i)},"Ctrl-Alt-U":g(E),"Alt-Space":function(t){for(var e=t.getCursor(),n=e.ch,i=e.ch,r=t.getLine(e.line);n&&/\s/.test(r.charAt(n-1));)--n;for(;i<r.length&&/\s/.test(r.charAt(i));)++i;t.replaceRange(" ",O(e.line,n),O(e.line,i))},"Ctrl-O":g(function(t){t.replaceSelection("\n","start")}),"Ctrl-T":g(function(t){t.execCommand("transposeChars")}),"Alt-C":g(function(t){L(t,function(t){var e=t.search(/\w/);return e==-1?t:t.slice(0,e)+t.charAt(e).toUpperCase()+t.slice(e+1).toLowerCase()})}),"Alt-U":g(function(t){L(t,function(t){return t.toUpperCase()})}),"Alt-L":g(function(t){L(t,function(t){return t.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":g("undo"),"Shift-Ctrl--":g("undo"),"Ctrl-Z":g("undo"),"Cmd-Z":g("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findNext","Ctrl-R":"findPrev","Ctrl-G":P,"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":g(function(t){t.replaceSelection("\n","end")}),Tab:"indentAuto","Alt-G G":function(t){var e=p(t,!0);return null!=e&&e>0?t.setCursor(e-1):void M(t,"Goto line",function(e){var n;e&&!isNaN(n=Number(e))&&n==(0|n)&&n>0&&t.setCursor(n-1)})},"Ctrl-X Tab":function(t){t.indentSelection(p(t,!0)||t.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(t){t.setSelection(t.getCursor("head"),t.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":g("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(t){a(t,t.getCursor(),d(t,t.getCursor(),1),!0)},"Ctrl-X H":"selectAll","Ctrl-Q Tab":g("insertTab"),"Ctrl-U":C}),V={"Ctrl-G":w},H=0;H<10;++H)N(String(H));N("-")}),define("editor",["cm/lib/codemirror","config","preferences","form","cm/mode/prolog/prolog-template-hint","modal","tabbed","prolog","storage","cm/mode/prolog/prolog","cm/mode/prolog/prolog_keys","cm/mode/prolog/prolog_query","cm/mode/prolog/prolog_server","cm/mode/markdown/markdown","cm/addon/edit/matchbrackets","cm/addon/comment/continuecomment","cm/addon/comment/comment","cm/addon/hint/show-hint","cm/addon/hint/anyword-hint","cm/addon/display/placeholder","cm/addon/runmode/runmode","cm/addon/search/search","cm/addon/search/searchcursor","cm/addon/search/jump-to-line","cm/addon/dialog/dialog","cm/addon/hover/text-hover","cm/addon/hover/prolog-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","jquery","laconic","cm/keymap/emacs"],function(t,e,n,i,r,o,a,s){function l(t,e){var n=[];e=e||"",n.push("<style>\n");for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];n.push(e,i,"{");for(var o in r)r.hasOwnProperty(o)&&n.push(o,":",r[o],";");n.push("}\n")}n.push("</style>\n"),$("body").append(n.join(""))}!function(i){var l,c="prologEditor",u={prolog:{mode:"prolog",role:"source",placeholder:"Your Prolog rules and facts go here ...",lineNumbers:!0,autoCurrent:!0,save:!1,theme:"prolog",matchBrackets:!0,textHover:!0,prologKeys:!0,extraKeys:{"Ctrl-Space":"autocomplete","Alt-/":"autocomplete"},hintOptions:{hint:r.getHints,completeSingle:!1}},markdown:{mode:"markdown",placeholder:"Your markdown block goes here ...",lineWrapping:!0,save:!1}},h={query:{mode:"prolog",role:"query",placeholder:"Your query goes here ...",lineNumbers:!1,lineWrapping:!0,save:!1}},d={_init:function(r){return this.each(function(){function o(t){var e=p.long_click,n=t.clientX-e.clientX,i=t.clientY-e.clientY;Math.sqrt(n*n+i*i)>5&&a()}function a(){d.off("mousemove",o);var t=p.long_click;t.timeout&&(clearTimeout(t.timeout),t.target=void 0,t.timeout=void 0)}function s(t){var e=i(l).data(t);e&&(f[t]=e)}var l,d=i(this),f={},p={};r=r||{},r.mode=r.mode||"prolog";var g=i.extend({},u[r.mode]);r.role&&h[r.role]&&(g=i.extend(g,h[r.role])),g=i.extend(g,r),n.getVal("emacs-keybinding")&&(g.keyMap="emacs"),"prolog"==g.mode&&(p.role=g.role,g.getSource&&(p.getSource=g.getSource),e.http.locations.cm_highlight&&(g.prologHighlightServer={url:e.http.locations.cm_highlight,role:g.role,enabled:n.getVal("semantic-highlighting")},g.sourceID&&(g.prologHighlightServer.sourceID=g.sourceID),g.extraKeys["Ctrl-R"]="refreshHighlight"),"source"==g.role&&(g.continueComments="Enter",g.gutters=["Prolog-breakpoints"]),p.long_click={},d.on("mousedown",".CodeMirror-code",function(t){var e=p.long_click;e.clientX=t.clientX,e.clientY=t.clientY,d.on("mousemove",o),p.long_click.timeout=setTimeout(function(){a(),d.prologEditor("contextAction")},500)}),d.on("mouseup",function(t){a()})),(l=d.children("textarea")[0])?(s("file"),s("url"),s("title"),s("meta"),s("st_type"),s("chats"),p.cm=t.fromTextArea(l,g)):(g.value||(g.value=d.text()),p.cm=t(d[0],g)),d.data(c,p),d.prologEditor("loadMode",g.mode),d.addClass("swish-event-receiver"),d.addClass("prolog-editor"),d.on("preference",function(t,e){d.prologEditor("preference",e)}),d.on("print",function(){"query"!=p.role&&d.prologEditor("print")}),d.on("clearMessages",function(t){d.prologEditor("clearMessages")}),d.on("edit-command",function(t,e){d.prologEditor("execCommand",e)}),p.cm.on("blur",function(t){d.prologEditor("execCommand","prepare")}),g.save&&(f.typeName=g.typeName||"program",d.prologEditor("setupStorage",f)),"prolog"==g.mode&&"source"==p.role&&(d.on("activate-tab",function(t){g.autoCurrent&&d.prologEditor("makeCurrent"),p.cm.refresh()}),d.on("source-error",function(t,e){d.prologEditor("highlightError",e)}),d.on("pengine-died",function(t,e){if(p.pengines){var n=p.pengines.indexOf(e);n>=0&&p.pengines.splice(n,1)}p.traceMark&&p.traceMark.pengine==e&&(p.traceMark.clear(),p.traceMark=null)}),d.on("addExample",function(t,e){d.prologEditor("addExample",e)}),p.cm.on("gutterClick",function(t,e){function n(){return i('<span class="breakpoint-marker">&#9679;</span>')[0]}var r=t.lineInfo(e);r.gutterMarkers?t.setGutterMarker(e,"Prolog-breakpoints",null):t.setGutterMarker(e,"Prolog-breakpoints",n())})),p.cm.on("change",function(t,e){var n;if("setValue"==e.origin)n=!0;else{var i=d.data("storage"),r=i?i.cleanGeneration:p.cleanGeneration;n=p.cm.isClean(r)}d.prologEditor("markClean",n)})})},getOption:function(t){return this.data(c)[t]},setKeybinding:function(t){t=t||"default",this.data(c).cm.options.keyMap=t},loadMode:function(e){var n=this.data(c);return t.modes[e]?e!=n.mode&&n.cm.setOption("mode",e):require(["cm/mode/"+e+"/"+e],function(){n.cm.setOption("mode",e)}),this},isPengineSource:function(){var t=i(this).data(c);if(t&&"source"==t.role){var e=i(this).data("storage");if(e&&e.meta&&(e.meta.loaded||e.meta.module))return!1}return this},getBreakpoints:function(t){var e=[];return this.each(function(){for(var n=i(this).data(c),r=[],o=0,a=n.cm,s=a.firstLine(),l=a.lastLine();s<l;s++){var u=a.lineInfo(s);u.gutterMarkers&&r.push(o+s+1)}if(r.length>0){var h;if(n.pengines&&n.pengines.indexOf(t)>=0)h="pengine://"+t+"/src";else{var d=i(this).data("storage");d&&(h="swish://"+d.file)}h&&e.push({file:h,breakpoints:r})}}),e},getSource:function(t,e){var n=[];return this.each(function(){if(i(this).prologEditor("isPengineSource")){var r=i(this).data(c);if(r&&(!t||t==r.role)){var o;o="function"!=typeof r.getSource||e?r.cm.getValue():r.getSource(),n.push(o)}}}),n.join("\n\n")},getSourceEx:function(){var t={value:this.data(c).cm.getValue()
-},e=this.prologEditor("getBreakpoints");return e.length>0&&(t.breakpoints=e),t},docid:function(){var t;return this.hasClass("storage")?this.storage("docid"):(t=this.closest(".storage"))&&t.length>0&&(stdoc=t.storage("docid"),stdoc)?stdoc+"#"+this.closest(".nb-cell").attr("name"):void 0},getSourceID:function(){var t=[];return this.each(function(){var e=i(this).data(c);e&&e.cm&&e.cm.state.prologHighlightServer?t.push(e.cm.state.prologHighlightServer.uuid):t.push(null)}),t},setSource:function(t,e){if("string"==typeof t&&(t={data:t}),this.data("storage")&&1!=e)this.storage("setSource",t);else{var n=this.data(c);n.cm.setValue(t.data),(t.line||t.prompt)&&(n.cm.refresh(),t.line?this.prologEditor("gotoLine",t.line,t):this.prologEditor("showTracePort",t.prompt)),"source"==n.role&&i(".swish-event-receiver").trigger("program-loaded",this)}return this},makeCurrent:function(){return i(".swish-event-receiver").trigger("current-program",this),this},markClean:function(t){var e=this.data(c);e.clean_signalled!=t&&(e.clean_signalled=t,this.trigger("data-is-clean",t))},setIsClean:function(){return this.each(function(){var t=i(this),e=t.data(c);e.cleanGeneration=e.cm.changeGeneration()})},pengine:function(t){var e=this.data(c);if(e){if(t.add)return e.pengines=e.pengines||[],e.pengines.indexOf(t.add)<0&&e.pengines.push(t.add),this;if(t.has)return e.pengines&&e.pengines.indexOf(t.has)>=0}},print:function(n){function r(t){var e=i.el.iframe({src:"about:blank"});i("body").append(e),i("body",e.contentWindow.document).append(t),e.contentWindow.print()}var a=i.el.pre({class:"cm-s-prolog"});return n||(n=this.prologEditor("getSource")),t.runMode(n,"prolog",a),i.ajax({url:e.http.locations.swish+"js/codemirror/theme/prolog.css",dataType:"text",success:function(t){r(i.el.div(i.el.style(t),a))},error:function(t){o.ajaxError(t)}}),this},preference:function(t){var e=this.data(c);return"semantic-highlighting"==t.name&&e.cm.setOption("prologHighlightServer",{enabled:t.value}),"emacs-keybinding"==t.name&&(1==t.value?e.cm.setOption("keyMap","emacs"):e.cm.setOption("keyMap","default")),this},highlightError:function(t){if(t.location.file&&(1==t.location.file||this.prologEditor("isMyFile",t.location.file))){var e,n=this.data(c);t.location.ch&&(left=n.cm.charCoords({line:t.location.line-1,ch:t.location.ch-1},"local").left,e=i.el.div({class:"source-msg-charmark"},i.el.span({class:"glyphicon glyphicon-chevron-up"})),i(e).css("padding-left",left+"px"));var r=i.el.div({class:"source-msg error error-context",title:"Error message.  Click to remove"},e,i(t.data)[0],i.el.span({class:"glyphicon glyphicon-remove-circle"})),o=n.cm.addLineWidget(t.location.line-1,r);t.error_context&&i(r).data("error_context",t.error_context),i(r).on("click",function(e){t.error_handler&&0==t.error_handler(e)||o.clear()}),i(r).data("cm-widget",o)}return this},refreshHighlight:function(){var t=this.data(c);return t.cm.serverAssistedHighlight(!0),this},refresh:function(){var t=this.data(c);return t&&t.cm.refresh(),this},clearMessages:function(){return this.find(".source-msg").each(function(){i(this).data("cm-widget").clear()}),this.prologEditor("showTracePort",null),this},execCommand:function(t){if("prepare"==t)l=this[0];else if(l==this[0]){elem=i(l);var e=elem.data(c);e.cm.execCommand(t),elem.find(".Codemirror-dialog input").focus()}return this},isMyFile:function(t){var e="swish://";if(t.startsWith("pengine://")){var n=this.data(c);if(n.pengines&&(id=t.split("/")[2])&&n.pengines.indexOf(id)>=0)return!0}if(t.startsWith(e)){var i=this.data("storage");if(i&&t.slice(e.length)==i.file)return!0}return!1},showTracePort:function(t){if(0==this.length)return this;var e=this.data(c);if(e.traceMark&&(e.traceMark.clear(),e.traceMark=null),!(t&&t.source&&t.source.file))return this;var n=t.source.file;if(this.prologEditor("isMyFile",n)){if(t.source.from&&t.source.to){var i=e.cm.charOffsetToPos(t.source.from),r=e.cm.charOffsetToPos(t.source.to);this.is(":visible")||this.storage("expose","trace"),i&&r&&(e.traceMark=e.cm.markText(i,r,{className:"trace "+t.port}),e.traceMark.pengine=t.pengine,e.cm.scrollIntoView(i,50))}return this}},getSelection:function(){var t=[];return this.each(function(){function e(t,e){return t.line<e.line?-1:t.line>e.line?1:t.ch<e.ch?-1:t.ch>e.ch?1:0}function n(t){return{line:t.line,ch:0}}function r(t){return{line:t.line,ch:s.cm.getLine(t.line).length}}function o(t){return{line:t.line,ch:t.ch}}var a=i(this),s=a.data(c);if(1==s.cm.somethingSelected()){var l=s.cm.listSelections(),u={selections:[]},h=a.closest(".nb-cell").attr("name");h&&(u.cell=h);for(var d=0;d<l.length;d++){var f=l[d],p={};switch(e(f.anchor,f.head)){case-1:p.from=o(f.anchor),p.to=o(f.head);break;case 1:p.to=o(f.anchor),p.from=o(f.head);break;case 0:continue}p.string=s.cm.getRange(p.from,p.to),p.context=s.cm.getRange(n(p.from),r(p.to)),u.selections.push(p)}t.push(u)}}),t.length>0?t:null},restoreSelection:function(t){function e(t,e){function n(t){function e(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++)if(r.getLine(t+i)!=n[i])return!1;return!0}function n(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++){var o,a=r.getLine(t),s=n[i];if(0==i){if(i==n.length-1)return a.indexOf(s);if(o=a.indexOf(s),!(o>=0&&s.length+o==a.length))return-1}else if(i==n.length-1){if(0!=a.indexOf(s))return-1}else if(r.getLine(t+i)!=n[i])return-1}return o}function i(t,e,n){return n=n||0,{line:t.line+e,ch:t.ch+n}}if(r.getRange(t.from,t.to)==t.string)return{anchor:t.from,head:t.to};for(var o=r.firstLine(),a=r.lastLine(),s=0,l=1;t.from.line+s>=o&&t.to.line+s<=a;){var c;if(e(t.from.line+s,t.context))return{anchor:i(t.from,s),head:i(t.to,s),offset:s};if((c=n(t.from.line+s,t.string))>=0){var u=c-t.from.ch,h=t.to.line!=t.from.line?0:u;return{anchor:i(t.from,s,u),head:i(t.to,s,h),offset:s}}l++,s=Math.floor(l/2),l%2==1&&(s=-s)}}for(var i=t.data(c),r=i.cm,a=[],s="",l=0;l<e.length;l++){var u=n(e[l]);u&&(a.push(u),u.offset&&(""!=s&&(s+=";"),s+=u.offset))}if(a.length>0&&r.setSelections(a,0),""!=s||a.length<e.length){var h;h=a.length==e.length?"Found selections at offset "+s:""==s?"Could not restore all selections":"Only found some selections at offsets "+s,o.feedback({html:h,owner:t})}}function n(t){for(var e=0;e<r.length;e++)if(i(r[e]).closest(".nb-cell").attr("name")==t)return i(r[e])}if(t[0].cell)for(var r=this,a=0;a<t.length;a++){var s=t[a],l=n(s.cell);l&&e(l,s.selections)}else e(this,t);return this},getExamples:function(t,e){var n,r=t?t:this.prologEditor("getSource"),o=[];if(""==i.trim(r))return null;if(n=0==e?[t]:r.match(/\/\*\* *<?examples>?[\s\S]*?\*\//gim))for(var a=0;a<n.length;a++){var s=n[a].match(/^ *\?-[\s\S]*?[^-#$&*+.\/:<=>?@\\^~]\.\s/gm);if(s)for(var l=0;l<s.length;l++){var c=s[l].replace(/^ *\?-\s*/,"").replace(/\s*$/,"");o.push(c)}}return o},addExample:function(t){var e=this.data(c).cm,n=this.prologEditor("getSource"),i=this.prologEditor("search",/\/\*\* *<?examples>?/gim,{dir:-1,max:1}),r=this.prologEditor("search",/\*\//,{start:i.line,max:1});if(1==i.length){var r=this.prologEditor("search",/\*\//,{start:i[0].line,max:1}),a=this.prologEditor("getExamples",n);if(a&&a.indexOf(t)!=-1)return o.alert("Query is already in examples"),this;if(1!=r.length)return o.alert("/** <examples> block is not terminated with */"),this;t=t.split("\n").join("\n   "),e.setSelection({line:r[0].line-1,ch:0}),e.replaceSelection("?- "+t+"\n")}else e.setSelection({line:e.lastLine(),ch:0}),e.replaceSelection("/** <examples>\n?- "+t+"\n*/\n");return this},search:function(t,e){var n=this.data(c).cm,i=e.dir||1,r=void 0==e.start?n.firstLine():e.start,o=void 0==e.end?n.lastLine():e.end,a=[];if(i==-1&&o>r||1==i&&r>o){var s=r;r=o,o=s}if(i>0&&r>o||i<0&&r<o)return a;o+=i;for(var l=r;l!=o;l+=i){var u=n.getLine(l);if(u.search(t)>=0&&(a.push({line:l+1,text:u}),e.max&&e.max===a.length))return a}return a},gotoLine:function(t,e){function n(t){if(void 0!==t._searchMarkers){for(var e=0;e<t._searchMarkers.length;e++)t._searchMarkers[e].clear();t.off("cursorActivity",n)}t._searchMarkers=[]}function i(t,e){for(var n;n=r.exec(a.getLine(t));)a._searchMarkers.push(a.markText({line:t,ch:n.index},{line:t,ch:n.index+n[0].length},{className:e,clearOnEnter:!0,clearWhenEmpty:!0,title:"Search match"}))}var r,o=this.data(c),a=o.cm,s=0;n(a),e=e||{},r=e.regex,t-=1,r&&(s=a.getLine(t).search(r),s<0&&(s=0)),a.setCursor({line:t,ch:s});var l=a.getScrollInfo().clientHeight,u=a.charCoords({line:t,ch:0},"local");if(a.scrollTo(null,(u.top+u.bottom-l)/2),r){if(i(t,"CodeMirror-search-match"),e.showAllMatches)for(var h=a.getViewport(),d=h.from;d<h.to;d++)d!=t&&i(d,"CodeMirror-search-alt-match");a._searchMarkers.length>0&&a.on("cursorActivity",n)}else a._searchMarkers.push(a.markText({line:t,ch:0},{line:t,ch:a.getLine(t).length},{className:"CodeMirror-search-match",clearOnEnter:!0,clearWhenEmpty:!0,title:"Target line"}));return this},changeGen:function(){return this.data(c).cm.changeGeneration()},isClean:function(t){return this.data(c).cm.isClean(t)},setupStorage:function(t){var e=this.data(c),n=this;return t.setValue=function(t){n.prologEditor("setSource",t,!0)},t.getValue=function(){return e.cm.getValue()},t.changeGen=function(){return e.cm.changeGeneration()},t.isClean=function(t){return e.cm.isClean(t)},t.markClean=function(t){n.prologEditor("markClean",t)},t.cleanGeneration=e.cm.changeGeneration(),t.cleanData=e.cm.getValue(),t.cleanCheckpoint="load",this.storage(t),this},contextAction:function(){var t=this,e=this.data(c),n=e.cm.getCursor(),r=e.cm.getTokenAt(n,!0),a=e.cm.getEnrichedToken(r),s=e.cm.getTokenReferences(a);if(s&&s.length>0){for(var l=i.el.ul(),u=i.el.div({class:"goto-source"},i.el.div("Go to"),l),h=i.el.div({class:"edit-modal"},i.el.div({class:"mask"}),u),d=0;d<s.length;d++){var f=s[d];i(l).append(i.el.li(i.el.a({"data-locindex":d},f.title)))}var p=e.cm.cursorCoords(!0);i(u).css({top:p.bottom,left:p.left}),i("body").append(h),i(h).on("click",function(n){var r=i(n.target).data("locindex");if(i(h).remove(),void 0!==r){var a=s[r];if(a.file)t.closest(".swish").swish("playFile",a);else{var l;"query"==e.role?(l=t.closest(".prolog-query-editor").queryEditor("getProgramEditor"),l[0]||o.alert("No related program editor")):l=t,l&&l[0]&&l.prologEditor("gotoLine",a.line,a).focus()}}}),i(h).show()}return this},variables:function(e,n){function r(t){i(o).find(t).each(function(){var t=i(this).text();a.indexOf(t)<0&&a.push(t)})}var o=i.el.span({class:"query cm-s-prolog"}),a=[];return t.runMode(e,"prolog",o),r("span.cm-var"),n&&r("span.cm-var-2"),a},wrapSolution:function(t){function e(t,e){return o.prologEditor("setSource",t+"("+r+")"+e+".").focus(),o}function n(t){return o.prologEditor("setSource",t+r+".").focus(),o}function i(t){for(var e=[],n=0;n<a.length;n++)e.push("asc("+a[n]+")");return e.join(",")}var r=s.trimFullStop(this.prologEditor("getSource","query")),o=this,a=this.prologEditor("variables",r);switch(t){case"Aggregate (count all)":return e("aggregate_all(count, ",", Count)");case"Projection":return n("projection(["+a.join(",")+"]),\n");case"Order by":return e("order_by(["+i(a)+"], ",")");case"Distinct":return e("distinct(["+a.join(",")+"], ",")");case"Limit":return e("limit(10, ",")");case"Time":return e("time(",")");case"Debug (trace)":return e("trace, ","");default:alert('Unknown wrapper: "'+t+'"')}}};if(a.tabTypes.program={dataType:"pl",typeName:"program",label:"Program",contentType:"text/x-prolog",order:100,create:function(t,e){i(t).addClass("prolog-editor").prologEditor(i.extend({save:!0},e)).prologEditor("makeCurrent")}},e.swish.tab_types)for(var f={save:!0,lineNumbers:!0},p=0;p<e.swish.tab_types.length;p++){var g=e.swish.tab_types[p];if(g.editor){var m=i.extend({typeName:g.typeName},f,g.editor);g.create=function(t){i(t).addClass("prolog-editor").prologEditor(m)},a.tabTypes[g.typeName]=g}}i.fn.prologEditor=function(t){return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void i.error("Method "+t+" does not exist on jQuery."+c):d._init.apply(this,arguments)}}(jQuery),t.prototype.charOffsetToPos=function(t){for(var e=this.firstLine(),n=this.lastLine(),i=0;e<n;e++){var r=this.getLine(e);if(i<=t&&i+r.length>=t)return{line:e,ch:t-i};i+=r.length+1}},t.keyMap.emacs.Enter="newlineAndIndent",e.swish.cm_style&&l(e.swish.cm_style,".cm-s-prolog span.cm-"),e.swish.cm_hover_style&&l(e.swish.cm_hover_style,".CodeMirror-hover-tooltip ")}),define("query",["jquery","config","preferences","cm/lib/codemirror","modal","laconic","editor"],function(t,e,n,i,r){!function(t){function i(e){return t(e).closest(".prolog-query-editor")}function o(e,n,r){var o=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+e,"data-toggle":"dropdown"},n,t.el.span({class:"caret"})),t.el.ul({class:"dropdown-menu "+e}));return t(o).on("click","a",function(){var e=t(this).closest("li");e.hasClass("add-example")?i(this).queryEditor("addExample"):i(this).queryEditor("setQuery",t(this).text())}),o}function a(e){function n(e){var n=e.examples();t.isArray(n)&&i(r).queryEditor("setExamples",n,!0)}var r=o("examples","Examples",e),a=t(r).find("ul");if("function"==typeof e.examples){var s=t.extend({},e);t(r).mousedown(function(t){1==t.which&&n(s)})}else if(e.examples)for(var l=e.examples,c=0;c<l.length;c++)a.append(t.el.li(t.el.a(l[c])));return r}function s(t){return o("history","History",t)}function l(e){for(var n,r="aggregate",o=e.aggregates||["Aggregate (count all)","--","Projection","Order by","Distinct","Limit","--","Time","Debug (trace)"],a=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+r,"data-toggle":"dropdown"},"Solutions",t.el.span({class:"caret"})),n=t.el.ul({class:"dropdown-menu "+r})),s=0;s<o.length;s++){var l=o[s];"--"==l?t(n).append(t.el.li({class:"divider"})):t(n).append(t.el.li(t.el.a(l)))}return t(a).on("click","a",function(){i(this).find(".query").prologEditor("wrapSolution",t(this).text())}),a}function c(e){var n=t.el.button({class:"run-btn-query",class:"btn btn-default btn-primary btn-xs"},"Run!");return t(n).on("click",function(){i(this).queryEditor("run",void 0,u(this))}),n}function u(e){return t(e).parent().find("input").prop("checked")}function h(i){var r=n.getVal("tabled_results"),o={type:"checkbox",name:"table"};void 0===r&&(r=e.swish.tabled_results),r&&(o.checked="checked");var a=t.el.input(o),s=t.el.span({class:"run-chk-table"},a," table results");return t(a).on("change",function(e){n.setVal("tabled_results",t(e.target).prop("checked"))}),s}var d="queryEditor",f={maxHistoryLength:50},p={_init:function(e){return this.each(function(){function n(){return t(u).find("input").prop("checked")}var i=t(this),r=t.extend({},f,e),o=t.el.div({class:"query"}),u=h(r);i.addClass("prolog-query-editor swish-event-receiver reactive-size"),i.append(o,t.el.div({class:"prolog-prompt"},"?-"),t.el.div({class:"query-buttons"},t.el.span({class:"buttons-left"},a(r),s(r),l(r)),t.el.span({class:"buttons-right"},u,c(r)))),t(o).append(i.children("textarea")).prologEditor({role:"query",sourceID:function(){return r.sourceID()},prologQuery:function(t){i.queryEditor("run",t,n())}}),i.data(d,r),t(o).prologEditor("getSource","query")||("object"==typeof r.examples?r.examples[0]&&t(o).prologEditor("setSource",r.examples[0]):i[d]("setProgramEditor",t(r.editor),!0)),i.on("current-program",function(e,n){i[d]("setProgramEditor",t(n))}),i.on("program-loaded",function(e,n){if(t(r.editor).data("prologEditor")==t(n).data("prologEditor")){var o=r.examples();i.queryEditor("setQuery",o&&o[0]?o[0]:"")}})})},setProgramEditor:function(e,n){var i=this.data(d);if(i.editor==e[0]&&!n)return this;if(i.editor=e[0],i.editor){i.examples=function(){var n=e.prologEditor("getExamples")||[],i=e.parents(".swish").swish("examples",!0)||[];return t.isArray(i)&&n.concat(i),n},e.prologEditor("isPengineSource")?i.source=function(){var n=e.prologEditor("getSource","source"),i=t(".background.prolog.source").text();return i&&(n+="\n%@background@\n"+i),n}:i.source="",i.sourceID=function(){return e.prologEditor("getSourceID")};var r=i.examples();r&&r[0]&&this.queryEditor("isClean")?this.queryEditor("setQuery",r[0]):e.prologEditor("refreshHighlight")}else i.examples=""},getProgramEditor:function(){var e=this.data(d);return e.editor?t(e.editor):t()},setExamples:function(e,n){function i(t){var e;if((e=r.data("examples"))&&e.length==t.length){for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}return!1}var r=this.find("ul.examples");if(e||(e=[]),void 0===n&&(n=!0),n&&i(e))return this;n===!0&&r.html(""),r.find("li.add-example, li.divider").remove();for(var o=0;o<e.length;o++)r.append(t.el.li(t.el.a(e[o])));return r.data("examples",e.slice(0)),r.append(t.el.li({class:"divider"})),r.append(t.el.li({class:"add-example"},t.el.a("Add current query to examples"))),this},addExample:function(){var e=this.find(".query").prologEditor("getSource");return""!=e.trim()?t(".swish-event-receiver:visible").trigger("addExample",this.find(".query").prologEditor("getSource")):r.alert("The query window is empty"),this},addHistory:function(e){function n(){return i.children().filter(function(){return t(this).text()==e})}var i=this.find("ul.history"),r=this.data("queryEditor");if(e){var o;(o=n())&&o.remove(),i.children().length>=r.maxHistoryLength&&i.children().first().remove(),i.append(t.el.li(t.el.a(e)))}return this},setQuery:function(t){var e=this.data(d);return e.cleanGen=this.find(".query").prologEditor("setSource",t).focus().prologEditor("changeGen"),this},isClean:function(){var t=this.data(d);return!this.queryEditor("getQuery")||t.cleanGen&&this.find(".query").prologEditor("isClean",t.cleanGen)},getQuery:function(){return this.find(".query").prologEditor("getSource","query")},run:function(e,n){var i=this.data("queryEditor");if(void 0===e&&(e=this.queryEditor("getQuery")),e=t.trim(e),!e)return t(".swish-event-receiver").trigger("help",{file:"query.html"}),this;t(".swish-event-receiver").trigger("clearMessages");var r={query:e,editor:i.editor,query_editor:this.find(".query")};return"function"==typeof i.source?r.source=i.source(e):"string"==typeof i.source&&(r.source=i.source),n&&(r.tabled=!0),this.queryEditor("addHistory",e),i.runner.prologRunners("run",r),this}};t.fn.queryEditor=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+d):p._init.apply(this,arguments)}}(jQuery)}),define("term",["jquery"],function(){function t(){$(this).next().toggleClass("fold"),$(this).remove()}$(document).on("click",".pl-functor, .pl-infix",function(){var e=$(this).parent();$(e).toggleClass("fold"),$(e).before('<span class="pl-ellipsis">...</span>').prev().click(t)})}),define("login",["jquery","modal","config","form","laconic"],function(t,e,n,i){var r=["display_name","email","avatar"];!function(t){function o(t,e,n){t||(t=".force_logout");try{var i=navigator.userAgent.toLowerCase();if(i.indexOf("msie")!=-1)document.execCommand("ClearAuthenticationCache");else if(i.indexOf("webkit")!=-1&&"basic"==e){var r=a(n);r&&(r.open("GET",t,!0),r.setRequestHeader("Authorization","Basic logout"),r.send())}else{var r=a(n);r&&(r.open("GET",t,!0,"logout","logout"),r.send(""),r.abort())}}catch(t){return}}function a(t){var e;try{window.XMLHttpRequest?e=new XMLHttpRequest:window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),t&&(e.addEventListener("load",t),e.addEventListener("error",t),e.addEventListener("abort",t))}catch(t){}return e}function s(t,e,n,i){var r=window.open(t,e,n),o=window.setInterval(function(){try{(null==r||r.closed)&&(window.clearInterval(o),i(r))}catch(t){}},1e3);return window.focus&&r.focus(),r}var l="login",c={_init:function(e){return this.each(function(){var e=t(this),n={};n.url=e.attr("href"),e.removeAttr("href"),e.on("click",function(t){e.hasClass("login")&&e.login("login",t)}),e.data(l,n),e.login("update","startup")})},update:function(e){var r=t(this);t.get(n.http.locations.user_info,{reason:e},function(e){if(e){n.swish.user=e,r.removeClass("login").addClass("logout");var o,a=r.find("span.logout span.value");o=e.avatar?t.el.img({class:"profile-picture",src:e.avatar}):t.el.span({class:"glyphicon glyphicon-user"}),o=t.el.span(o,t.el.b({class:"caret"})),a.html(""),a.append(i.widgets.dropdownButton(o,{divClass:"user-menu btn-transparent",ulClass:"pull-right",client:r,actions:{Logout:r.hasClass("no-logout")?void 0:function(){this.login("logout")},Profile:function(){this.login("profile")}}}))}else delete n.swish.user,r.removeClass("logout").addClass("login")},"json")},login:function(n){var i=t(this),r=this.data(l),o=t(n.target),a=r.url,c=o.closest("[data-server]").data("server"),u=o.closest("[data-frame]").data("frame")||"iframe";c&&(a+="?server="+encodeURIComponent(c)),"popup"==u?s(a,"_blank","location=true,status=true,height=400,width=800",function(){i.login("logged_in")}):e.show({title:"Login",body:function(){var e=t.el.button({name:"ok",class:"btn btn-primary login-cont","data-dismiss":"modal"},"Continue");this.append(t.el.iframe({class:"login",src:a}),e)},onclose:function(){i.login("logged_in")}})},logged_in:function(){this.login("update","login")},profile:function(){var i=t(this);e.server_form({title:"User profile",url:n.swish.user.swish_profile_url||n.http.locations.user_profile,onreply:function(){i.login("update","profile")}})},get_profile:function(e){function i(e,n){var i=t("#chat");if(1==i.length){var r=i.chat("self",[n]);r[n]&&(o[e]=r[n])}}var o={},a=n.swish.user||{};e=e||r;for(var s=0;s<e.length;s++){var l=e[s];a[l]?o[l]=a[l]:"display_name"==l?a.name?o.display_name=a.name:a.given_name&&a.family_name?o.display_name=a.given_name+" "+a.family_name:a.family_name?o.display_name=a.family_name:a.given_name?o.display_name=a.given_name:a.nick_name?o.display_name=a.nick_name:i("display_name","name"):"identity"==l?a.external_identity&&a.identity_provider&&(o.identity=a.identity_provider+":"+a.external_identity):"avatar"==l&&i("avatar","avatar")}return o},logout:function(){var i=n.swish.user,r=t(this);i&&(i.logout_url?t.ajax({url:i.logout_url,success:function(){r.login("update","logout_by_url")},error:function(t){e.ajaxError(t)}}):"basic"==i.auth_method||"digest"==i.auth_method?o(n.http.locations.http_logout,n.swish.user.auth_method,function(){r.login("update","logout_by_http")}):alert("Don't know how to logout"))}};t.fn.login=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),!function(){function t(t){return t&&(t.ownerDocument||t.document||t).documentElement}function e(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function n(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function i(t){return null===t?NaN:+t}function r(t){return!isNaN(t)}function o(t){return{left:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)<0?i=o+1:r=o}return i},right:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)>0?r=o:i=o+1}return i}}}function a(t){return t.length}function s(t){for(var e=1;t*e%1;)e*=10;return e}function l(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function c(){this._=Object.create(null)}function u(t){return(t+="")===xa||t[0]===ba?ba+t:t}function h(t){return(t+="")[0]===ba?t.slice(1):t}function d(t){return u(t)in this._}function f(t){return(t=u(t))in this._&&delete this._[t]}function p(){var t=[];for(var e in this._)t.push(h(e));return t}function g(){var t=0;for(var e in this._)++t;return t}function m(){for(var t in this._)return!1;return!0}function v(){this._=Object.create(null)}function y(t){return t}function x(t,e,n){return function(){var i=n.apply(e,arguments);return i===e?t:i}}function b(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,i=_a.length;n<i;++n){var r=_a[n]+e;if(r in t)return r}}function _(){}function w(){}function S(t){function e(){for(var e,i=n,r=-1,o=i.length;++r<o;)(e=i[r].on)&&e.apply(this,arguments);return t}var n=[],i=new c;return e.on=function(e,r){var o,a=i.get(e);return arguments.length<2?a&&a.on:(a&&(a.on=null,n=n.slice(0,o=n.indexOf(a)).concat(n.slice(o+1)),i.remove(e)),r&&n.push(i.set(e,{on:r})),t)},e}function C(){la.event.preventDefault()}function T(){for(var t,e=la.event;t=e.sourceEvent;)e=t;return e}function k(t){for(var e=new w,n=0,i=arguments.length;++n<i;)e[arguments[n]]=S(e);return e.of=function(n,i){return function(r){try{var o=r.sourceEvent=la.event;r.target=t,la.event=r,e[r.type].apply(n,i)}finally{la.event=o}}},e}function A(t){return Sa(t,Aa),t}function M(t){return"function"==typeof t?t:function(){return Ca(t,this)}}function L(t){return"function"==typeof t?t:function(){return Ta(t,this)}}function E(t,e){function n(){this.removeAttribute(t)}function i(){this.removeAttributeNS(t.space,t.local)}function r(){this.setAttribute(t,e)}function o(){this.setAttributeNS(t.space,t.local,e)}function a(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}function s(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}return t=la.ns.qualify(t),null==e?t.local?i:n:"function"==typeof e?t.local?s:a:t.local?o:r}function P(t){return t.trim().replace(/\s+/g," ")}function N(t){return new RegExp("(?:^|\\s+)"+la.requote(t)+"(?:\\s+|$)","g")}function O(t){return(t+"").trim().split(/^|\s+/)}function R(t,e){function n(){for(var n=-1;++n<r;)t[n](this,e)}function i(){for(var n=-1,i=e.apply(this,arguments);++n<r;)t[n](this,i)}t=O(t).map(D);var r=t.length;return"function"==typeof e?i:n}function D(t){var e=N(t);return function(n,i){if(r=n.classList)return i?r.add(t):r.remove(t);var r=n.getAttribute("class")||"";i?(e.lastIndex=0,e.test(r)||n.setAttribute("class",P(r+" "+t))):n.setAttribute("class",P(r.replace(e," ")))}}function I(t,e,n){function i(){this.style.removeProperty(t)}function r(){this.style.setProperty(t,e,n)}function o(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}return null==e?i:"function"==typeof e?o:r}function j(t,e){function n(){delete this[t]}function i(){this[t]=e}function r(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}return null==e?n:"function"==typeof e?r:i}function V(t){function e(){var e=this.ownerDocument,n=this.namespaceURI;return n===Ma&&e.documentElement.namespaceURI===Ma?e.createElement(t):e.createElementNS(n,t)}function n(){return this.ownerDocument.createElementNS(t.space,t.local)}return"function"==typeof t?t:(t=la.ns.qualify(t)).local?n:e}function H(){var t=this.parentNode;t&&t.removeChild(this)}function F(t){return{__data__:t}}function z(t){return function(){return ka(this,t)}}function q(t){return arguments.length||(t=n),function(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}}function G(t,e){for(var n=0,i=t.length;n<i;n++)for(var r,o=t[n],a=0,s=o.length;a<s;a++)(r=o[a])&&e(r,a,n);return t}function B(t){return Sa(t,Ea),t}function $(t){var e,n;return function(i,r,o){var a,s=t[o].update,l=s.length;for(o!=n&&(n=o,e=0),r>=e&&(e=r+1);!(a=s[e])&&++e<l;);return a}}function W(t,e,n){function i(){var e=this[a];e&&(this.removeEventListener(t,e,e.$),delete this[a])}function r(){var r=l(e,ua(arguments));i.call(this),this.addEventListener(t,this[a]=r,r.$=n),r._=e}function o(){var e,n=new RegExp("^__on([^.]+)"+la.requote(t)+"$");for(var i in this)if(e=i.match(n)){var r=this[i];this.removeEventListener(e[1],r,r.$),delete this[i]}}var a="__on"+t,s=t.indexOf("."),l=U;s>0&&(t=t.slice(0,s));var c=Pa.get(t);return c&&(t=c,l=X),s?e?r:i:e?_:o}function U(t,e){return function(n){var i=la.event;la.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{la.event=i}}}function X(t,e){var n=U(t,e);return function(t){var e=this,i=t.relatedTarget;i&&(i===e||8&i.compareDocumentPosition(e))||n.call(e,t)}}function Y(n){var i=".dragsuppress-"+ ++Oa,r="click"+i,o=la.select(e(n)).on("touchmove"+i,C).on("dragstart"+i,C).on("selectstart"+i,C);if(null==Na&&(Na=!("onselectstart"in n)&&b(n.style,"userSelect")),Na){var a=t(n).style,s=a[Na];a[Na]="none"}return function(t){if(o.on(i,null),Na&&(a[Na]=s),t){var e=function(){o.on(r,null)};o.on(r,function(){C(),e()},!0),setTimeout(e,0)}}}function Q(t,n){n.changedTouches&&(n=n.changedTouches[0]);var i=t.ownerSVGElement||t;if(i.createSVGPoint){var r=i.createSVGPoint();if(Ra<0){var o=e(t);if(o.scrollX||o.scrollY){i=la.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=i[0][0].getScreenCTM();Ra=!(a.f||a.e),i.remove()}}return Ra?(r.x=n.pageX,r.y=n.pageY):(r.x=n.clientX,r.y=n.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var s=t.getBoundingClientRect();return[n.clientX-s.left-t.clientLeft,n.clientY-s.top-t.clientTop]}function Z(){return la.event.changedTouches[0].identifier}function K(t){return t>0?1:t<0?-1:0}function J(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function tt(t){return t>1?0:t<-1?ja:Math.acos(t)}function et(t){return t>1?Fa:t<-1?-Fa:Math.asin(t)}function nt(t){return((t=Math.exp(t))-1/t)/2}function it(t){return((t=Math.exp(t))+1/t)/2}function rt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ot(t){return(t=Math.sin(t/2))*t}function at(){}function st(t,e,n){return this instanceof st?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof st?new st(t.h,t.s,t.l):_t(""+t,wt,st):new st(t,e,n)}function lt(t,e,n){function i(t){return t>360?t-=360:t<0&&(t+=360),t<60?o+(a-o)*t/60:t<180?a:t<240?o+(a-o)*(240-t)/60:o}function r(t){return Math.round(255*i(t))}var o,a;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:e<0?0:e>1?1:e,n=n<0?0:n>1?1:n,a=n<=.5?n*(1+e):n+e-n*e,o=2*n-a,new vt(r(t+120),r(t),r(t-120))}function ct(t,e,n){return this instanceof ct?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof ct?new ct(t.h,t.c,t.l):t instanceof ht?ft(t.l,t.a,t.b):ft((t=St((t=la.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new ct(t,e,n)}function ut(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new ht(n,Math.cos(t*=za)*e,Math.sin(t)*e)}function ht(t,e,n){return this instanceof ht?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof ht?new ht(t.l,t.a,t.b):t instanceof ct?ut(t.h,t.c,t.l):St((t=vt(t)).r,t.g,t.b):new ht(t,e,n)}function dt(t,e,n){var i=(t+16)/116,r=i+e/500,o=i-n/200;return r=pt(r)*Ka,i=pt(i)*Ja,o=pt(o)*ts,new vt(mt(3.2404542*r-1.5371385*i-.4985314*o),mt(-.969266*r+1.8760108*i+.041556*o),mt(.0556434*r-.2040259*i+1.0572252*o))}function ft(t,e,n){return t>0?new ct(Math.atan2(n,e)*qa,Math.sqrt(e*e+n*n),t):new ct(NaN,NaN,t)}function pt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function gt(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function mt(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function vt(t,e,n){return this instanceof vt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof vt?new vt(t.r,t.g,t.b):_t(""+t,vt,lt):new vt(t,e,n)}function yt(t){return new vt(t>>16,t>>8&255,255&t)}function xt(t){return yt(t)+""}function bt(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function _t(t,e,n){var i,r,o,a=0,s=0,l=0;if(i=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(r=i[2].split(","),i[1]){case"hsl":return n(parseFloat(r[0]),parseFloat(r[1])/100,parseFloat(r[2])/100);case"rgb":return e(Tt(r[0]),Tt(r[1]),Tt(r[2]))}return(o=is.get(t))?e(o.r,o.g,o.b):(null==t||"#"!==t.charAt(0)||isNaN(o=parseInt(t.slice(1),16))||(4===t.length?(a=(3840&o)>>4,a|=a>>4,s=240&o,s|=s>>4,l=15&o,l|=l<<4):7===t.length&&(a=(16711680&o)>>16,s=(65280&o)>>8,l=255&o)),e(a,s,l))}function wt(t,e,n){var i,r,o=Math.min(t/=255,e/=255,n/=255),a=Math.max(t,e,n),s=a-o,l=(a+o)/2;return s?(r=l<.5?s/(a+o):s/(2-a-o),i=t==a?(e-n)/s+(e<n?6:0):e==a?(n-t)/s+2:(t-e)/s+4,i*=60):(i=NaN,r=l>0&&l<1?0:i),new st(i,r,l)}function St(t,e,n){t=Ct(t),e=Ct(e),n=Ct(n);var i=gt((.4124564*t+.3575761*e+.1804375*n)/Ka),r=gt((.2126729*t+.7151522*e+.072175*n)/Ja),o=gt((.0193339*t+.119192*e+.9503041*n)/ts);
-return ht(116*r-16,500*(i-r),200*(r-o))}function Ct(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Tt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function kt(t){return"function"==typeof t?t:function(){return t}}function At(t){return function(e,n,i){return 2===arguments.length&&"function"==typeof n&&(i=n,n=null),Mt(e,n,t,i)}}function Mt(t,e,n,i){function r(){var t,e=l.status;if(!e&&Et(l)||e>=200&&e<300||304===e){try{t=n.call(o,l)}catch(t){return void a.error.call(o,t)}a.load.call(o,t)}else a.error.call(o,l)}var o={},a=la.dispatch("beforesend","progress","load","error"),s={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(t)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=r:l.onreadystatechange=function(){l.readyState>3&&r()},l.onprogress=function(t){var e=la.event;la.event=t;try{a.progress.call(o,l)}finally{la.event=e}},o.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?s[t]:(null==e?delete s[t]:s[t]=e+"",o)},o.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",o):e},o.responseType=function(t){return arguments.length?(c=t,o):c},o.response=function(t){return n=t,o},["get","post"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(ua(arguments)))}}),o.send=function(n,i,r){if(2===arguments.length&&"function"==typeof i&&(r=i,i=null),l.open(n,t,!0),null==e||"accept"in s||(s.accept=e+",*/*"),l.setRequestHeader)for(var u in s)l.setRequestHeader(u,s[u]);return null!=e&&l.overrideMimeType&&l.overrideMimeType(e),null!=c&&(l.responseType=c),null!=r&&o.on("error",r).on("load",function(t){r(null,t)}),a.beforesend.call(o,l),l.send(null==i?null:i),o},o.abort=function(){return l.abort(),o},la.rebind(o,a,"on"),null==i?o:o.get(Lt(i))}function Lt(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function Et(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Pt(t,e,n){var i=arguments.length;i<2&&(e=0),i<3&&(n=Date.now());var r=n+e,o={c:t,t:r,n:null};return os?os.n=o:rs=o,os=o,as||(ss=clearTimeout(ss),as=1,ls(Nt)),o}function Nt(){var t=Ot(),e=Rt()-t;e>24?(isFinite(e)&&(clearTimeout(ss),ss=setTimeout(Nt,e)),as=0):(as=1,ls(Nt))}function Ot(){for(var t=Date.now(),e=rs;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Rt(){for(var t,e=rs,n=1/0;e;)e.c?(e.t<n&&(n=e.t),e=(t=e).n):e=t?t.n=e.n:rs=e.n;return os=t,n}function Dt(t,e){return e-(t?Math.ceil(Math.log(t)/Math.LN10):1)}function It(t,e){var n=Math.pow(10,3*ya(8-e));return{scale:e>8?function(t){return t/n}:function(t){return t*n},symbol:t}}function jt(t){var e=t.decimal,n=t.thousands,i=t.grouping,r=t.currency,o=i&&n?function(t,e){for(var r=t.length,o=[],a=0,s=i[0],l=0;r>0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),o.push(t.substring(r-=s,r+s)),!((l+=s+1)>e));)s=i[a=(a+1)%i.length];return o.reverse().join(n)}:y;return function(t){var n=us.exec(t),i=n[1]||" ",a=n[2]||">",s=n[3]||"-",l=n[4]||"",c=n[5],u=+n[6],h=n[7],d=n[8],f=n[9],p=1,g="",m="",v=!1,y=!0;switch(d&&(d=+d.substring(1)),(c||"0"===i&&"="===a)&&(c=i="0",a="="),f){case"n":h=!0,f="g";break;case"%":p=100,m="%",f="f";break;case"p":p=100,m="%",f="r";break;case"b":case"o":case"x":case"X":"#"===l&&(g="0"+f.toLowerCase());case"c":y=!1;case"d":v=!0,d=0;break;case"s":p=-1,f="r"}"$"===l&&(g=r[0],m=r[1]),"r"!=f||d||(f="g"),null!=d&&("g"==f?d=Math.max(1,Math.min(21,d)):"e"!=f&&"f"!=f||(d=Math.max(0,Math.min(20,d)))),f=hs.get(f)||Vt;var x=c&&h;return function(t){var n=m;if(v&&t%1)return"";var r=t<0||0===t&&1/t<0?(t=-t,"-"):"-"===s?"":s;if(p<0){var l=la.formatPrefix(t,d);t=l.scale(t),n=l.symbol+m}else t*=p;t=f(t,d);var b,_,w=t.lastIndexOf(".");if(w<0){var S=y?t.lastIndexOf("e"):-1;S<0?(b=t,_=""):(b=t.substring(0,S),_=t.substring(S))}else b=t.substring(0,w),_=e+t.substring(w+1);!c&&h&&(b=o(b,1/0));var C=g.length+b.length+_.length+(x?0:r.length),T=C<u?new Array(C=u-C+1).join(i):"";return x&&(b=o(T+b,T.length?u-_.length:1/0)),r+=g,t=b+_,("<"===a?r+t+T:">"===a?T+r+t:"^"===a?T.substring(0,C>>=1)+r+t+T.substring(C):r+(x?t:T+t))+n}}}function Vt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(t,e,n){function i(e){var n=t(e),i=o(n,1);return e-n<i-e?n:i}function r(n){return e(n=t(new fs(n-1)),1),n}function o(t,n){return e(t=new fs(+t),n),t}function a(t,i,o){var a=r(t),s=[];if(o>1)for(;a<i;)n(a)%o||s.push(new Date(+a)),e(a,1);else for(;a<i;)s.push(new Date(+a)),e(a,1);return s}function s(t,e,n){try{fs=Ht;var i=new Ht;return i._=t,a(i,e,n)}finally{fs=Date}}t.floor=t,t.round=i,t.ceil=r,t.offset=o,t.range=a;var l=t.utc=zt(t);return l.floor=l,l.round=zt(i),l.ceil=zt(r),l.offset=zt(o),l.range=s,t}function zt(t){return function(e,n){try{fs=Ht;var i=new Ht;return i._=e,t(i,n)._}finally{fs=Date}}}function qt(t){function e(t){function e(e){for(var n,r,o,a=[],s=-1,l=0;++s<i;)37===t.charCodeAt(s)&&(a.push(t.slice(l,s)),null!=(r=gs[n=t.charAt(++s)])&&(n=t.charAt(++s)),(o=M[n])&&(n=o(e,null==r?"e"===n?" ":"0":r)),a.push(n),l=s+1);return a.push(t.slice(l,s)),a.join("")}var i=t.length;return e.parse=function(e){var i={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},r=n(i,t,e,0);if(r!=e.length)return null;"p"in i&&(i.H=i.H%12+12*i.p);var o=null!=i.Z&&fs!==Ht,a=new(o?Ht:fs);return"j"in i?a.setFullYear(i.y,0,i.j):"W"in i||"U"in i?("w"in i||(i.w="W"in i?1:0),a.setFullYear(i.y,0,1),a.setFullYear(i.y,0,"W"in i?(i.w+6)%7+7*i.W-(a.getDay()+5)%7:i.w+7*i.U-(a.getDay()+6)%7)):a.setFullYear(i.y,i.m,i.d),a.setHours(i.H+(i.Z/100|0),i.M+i.Z%100,i.S,i.L),o?a._:a},e.toString=function(){return t},e}function n(t,e,n,i){for(var r,o,a,s=0,l=e.length,c=n.length;s<l;){if(i>=c)return-1;if(r=e.charCodeAt(s++),37===r){if(a=e.charAt(s++),o=L[a in gs?e.charAt(s++):a],!o||(i=o(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}function i(t,e,n){w.lastIndex=0;var i=w.exec(e.slice(n));return i?(t.w=S.get(i[0].toLowerCase()),n+i[0].length):-1}function r(t,e,n){b.lastIndex=0;var i=b.exec(e.slice(n));return i?(t.w=_.get(i[0].toLowerCase()),n+i[0].length):-1}function o(t,e,n){k.lastIndex=0;var i=k.exec(e.slice(n));return i?(t.m=A.get(i[0].toLowerCase()),n+i[0].length):-1}function a(t,e,n){C.lastIndex=0;var i=C.exec(e.slice(n));return i?(t.m=T.get(i[0].toLowerCase()),n+i[0].length):-1}function s(t,e,i){return n(t,M.c.toString(),e,i)}function l(t,e,i){return n(t,M.x.toString(),e,i)}function c(t,e,i){return n(t,M.X.toString(),e,i)}function u(t,e,n){var i=x.get(e.slice(n,n+=2).toLowerCase());return null==i?-1:(t.p=i,n)}var h=t.dateTime,d=t.date,f=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{fs=Ht;var e=new fs;return e._=t,i(e)}finally{fs=Date}}var i=e(t);return n.parse=function(t){try{fs=Ht;var e=i.parse(t);return e&&e._}finally{fs=Date}},n.toString=i.toString,n},e.multi=e.utc.multi=le;var x=la.map(),b=Bt(g),_=$t(g),w=Bt(m),S=$t(m),C=Bt(v),T=$t(v),k=Bt(y),A=$t(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var M={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(h),d:function(t,e){return Gt(t.getDate(),e,2)},e:function(t,e){return Gt(t.getDate(),e,2)},H:function(t,e){return Gt(t.getHours(),e,2)},I:function(t,e){return Gt(t.getHours()%12||12,e,2)},j:function(t,e){return Gt(1+ds.dayOfYear(t),e,3)},L:function(t,e){return Gt(t.getMilliseconds(),e,3)},m:function(t,e){return Gt(t.getMonth()+1,e,2)},M:function(t,e){return Gt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Gt(t.getSeconds(),e,2)},U:function(t,e){return Gt(ds.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Gt(ds.mondayOfYear(t),e,2)},x:e(d),X:e(f),y:function(t,e){return Gt(t.getFullYear()%100,e,2)},Y:function(t,e){return Gt(t.getFullYear()%1e4,e,4)},Z:ae,"%":function(){return"%"}},L={a:i,A:r,b:o,B:a,c:s,d:te,e:te,H:ne,I:ne,j:ee,L:oe,m:Jt,M:ie,p:u,S:re,U:Ut,w:Wt,W:Xt,x:l,X:c,y:Qt,Y:Yt,Z:Zt,"%":se};return e}function Gt(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",o=r.length;return i+(o<n?new Array(n-o+1).join(e)+r:r)}function Bt(t){return new RegExp("^(?:"+t.map(la.requote).join("|")+")","i")}function $t(t){for(var e=new c,n=-1,i=t.length;++n<i;)e.set(t[n].toLowerCase(),n);return e}function Wt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function Ut(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.U=+i[0],n+i[0].length):-1}function Xt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.W=+i[0],n+i[0].length):-1}function Yt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function Qt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.y=Kt(+i[0]),n+i[0].length):-1}function Zt(t,e,n){return/^[+-]\d{4}$/.test(e=e.slice(n,n+5))?(t.Z=-e,n+5):-1}function Kt(t){return t+(t>68?1900:2e3)}function Jt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function te(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function ee(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.j=+i[0],n+i[0].length):-1}function ne(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function ie(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function re(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function oe(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function ae(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",i=ya(e)/60|0,r=ya(e)%60;return n+Gt(i,"0",2)+Gt(r,"0",2)}function se(t,e,n){vs.lastIndex=0;var i=vs.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function le(t){for(var e=t.length,n=-1;++n<e;)t[n][0]=this(t[n][0]);return function(e){for(var n=0,i=t[n];!i[1](e);)i=t[++n];return i[0](e)}}function ce(){}function ue(t,e,n){var i=n.s=t+e,r=i-t,o=i-r;n.t=t-o+(e-r)}function he(t,e){t&&_s.hasOwnProperty(t.type)&&_s[t.type](t,e)}function de(t,e,n){var i,r=-1,o=t.length-n;for(e.lineStart();++r<o;)i=t[r],e.point(i[0],i[1],i[2]);e.lineEnd()}function fe(t,e){var n=-1,i=t.length;for(e.polygonStart();++n<i;)de(t[n],e,1);e.polygonEnd()}function pe(){function t(t,e){t*=za,e=e*za/2+ja/4;var n=t-i,a=n>=0?1:-1,s=a*n,l=Math.cos(e),c=Math.sin(e),u=o*c,h=r*l+u*Math.cos(s),d=u*a*Math.sin(s);Ss.add(Math.atan2(d,h)),i=t,r=l,o=c}var e,n,i,r,o;Cs.point=function(a,s){Cs.point=t,i=(e=a)*za,r=Math.cos(s=(n=s)*za/2+ja/4),o=Math.sin(s)},Cs.lineEnd=function(){t(e,n)}}function ge(t){var e=t[0],n=t[1],i=Math.cos(n);return[i*Math.cos(e),i*Math.sin(e),Math.sin(n)]}function me(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ve(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function ye(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function xe(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function be(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function _e(t){return[Math.atan2(t[1],t[0]),et(t[2])]}function we(t,e){return ya(t[0]-e[0])<Da&&ya(t[1]-e[1])<Da}function Se(t,e){t*=za;var n=Math.cos(e*=za);Ce(n*Math.cos(t),n*Math.sin(t),Math.sin(e))}function Ce(t,e,n){++Ts,As+=(t-As)/Ts,Ms+=(e-Ms)/Ts,Ls+=(n-Ls)/Ts}function Te(){function t(t,r){t*=za;var o=Math.cos(r*=za),a=o*Math.cos(t),s=o*Math.sin(t),l=Math.sin(r),c=Math.atan2(Math.sqrt((c=n*l-i*s)*c+(c=i*a-e*l)*c+(c=e*s-n*a)*c),e*a+n*s+i*l);ks+=c,Es+=c*(e+(e=a)),Ps+=c*(n+(n=s)),Ns+=c*(i+(i=l)),Ce(e,n,i)}var e,n,i;Is.point=function(r,o){r*=za;var a=Math.cos(o*=za);e=a*Math.cos(r),n=a*Math.sin(r),i=Math.sin(o),Is.point=t,Ce(e,n,i)}}function ke(){Is.point=Se}function Ae(){function t(t,e){t*=za;var n=Math.cos(e*=za),a=n*Math.cos(t),s=n*Math.sin(t),l=Math.sin(e),c=r*l-o*s,u=o*a-i*l,h=i*s-r*a,d=Math.sqrt(c*c+u*u+h*h),f=i*a+r*s+o*l,p=d&&-tt(f)/d,g=Math.atan2(d,f);Os+=p*c,Rs+=p*u,Ds+=p*h,ks+=g,Es+=g*(i+(i=a)),Ps+=g*(r+(r=s)),Ns+=g*(o+(o=l)),Ce(i,r,o)}var e,n,i,r,o;Is.point=function(a,s){e=a,n=s,Is.point=t,a*=za;var l=Math.cos(s*=za);i=l*Math.cos(a),r=l*Math.sin(a),o=Math.sin(s),Ce(i,r,o)},Is.lineEnd=function(){t(e,n),Is.lineEnd=ke,Is.point=Se}}function Me(t,e){function n(n,i){return n=t(n,i),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,i){return n=e.invert(n,i),n&&t.invert(n[0],n[1])}),n}function Le(){return!0}function Ee(t,e,n,i,r){var o=[],a=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n=t[0],i=t[e];if(we(n,i)){r.lineStart();for(var s=0;s<e;++s)r.point((n=t[s])[0],n[1]);return void r.lineEnd()}var l=new Ne(n,t,null,!0),c=new Ne(n,null,l,!1);l.o=c,o.push(l),a.push(c),l=new Ne(i,t,null,!1),c=new Ne(i,null,l,!0),l.o=c,o.push(l),a.push(c)}}),a.sort(e),Pe(o),Pe(a),o.length){for(var s=0,l=n,c=a.length;s<c;++s)a[s].e=l=!l;for(var u,h,d=o[0];;){for(var f=d,p=!0;f.v;)if((f=f.n)===d)return;u=f.z,r.lineStart();do{if(f.v=f.o.v=!0,f.e){if(p)for(var s=0,c=u.length;s<c;++s)r.point((h=u[s])[0],h[1]);else i(f.x,f.n.x,1,r);f=f.n}else{if(p){u=f.p.z;for(var s=u.length-1;s>=0;--s)r.point((h=u[s])[0],h[1])}else i(f.x,f.p.x,-1,r);f=f.p}f=f.o,u=f.z,p=!p}while(!f.v);r.lineEnd()}}}function Pe(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i<e;)r.n=n=t[i],n.p=r,r=n;r.n=n=t[0],n.p=r}}function Ne(t,e,n,i){this.x=t,this.z=e,this.o=n,this.e=i,this.v=!1,this.n=this.p=null}function Oe(t,e,n,i){return function(r,o){function a(e,n){var i=r(e,n);t(e=i[0],n=i[1])&&o.point(e,n)}function s(t,e){var n=r(t,e);m.point(n[0],n[1])}function l(){y.point=s,m.lineStart()}function c(){y.point=a,m.lineEnd()}function u(t,e){g.push([t,e]);var n=r(t,e);b.point(n[0],n[1])}function h(){b.lineStart(),g=[]}function d(){u(g[0][0],g[0][1]),b.lineEnd();var t,e=b.clean(),n=x.buffer(),i=n.length;if(g.pop(),p.push(g),g=null,i)if(1&e){t=n[0];var r,i=t.length-1,a=-1;if(i>0){for(_||(o.polygonStart(),_=!0),o.lineStart();++a<i;)o.point((r=t[a])[0],r[1]);o.lineEnd()}}else i>1&&2&e&&n.push(n.pop().concat(n.shift())),f.push(n.filter(Re))}var f,p,g,m=e(o),v=r.invert(i[0],i[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=u,y.lineStart=h,y.lineEnd=d,f=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,f=la.merge(f);var t=Fe(v,p);f.length?(_||(o.polygonStart(),_=!0),Ee(f,Ie,t,n,o)):t&&(_||(o.polygonStart(),_=!0),o.lineStart(),n(null,null,1,o),o.lineEnd()),_&&(o.polygonEnd(),_=!1),f=p=null},sphere:function(){o.polygonStart(),o.lineStart(),n(null,null,1,o),o.lineEnd(),o.polygonEnd()}},x=De(),b=e(x),_=!1;return y}}function Re(t){return t.length>1}function De(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:_,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function Ie(t,e){return((t=t.x)[0]<0?t[1]-Fa-Da:Fa-t[1])-((e=e.x)[0]<0?e[1]-Fa-Da:Fa-e[1])}function je(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var s=o>0?ja:-ja,l=ya(o-n);ya(l-ja)<Da?(t.point(n,i=(i+a)/2>0?Fa:-Fa),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(o,i),e=0):r!==s&&l>=ja&&(ya(n-r)<Da&&(n-=r*Da),ya(o-s)<Da&&(o-=s*Da),i=Ve(n,i,o,a),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=o,i=a),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}}function Ve(t,e,n,i){var r,o,a=Math.sin(t-n);return ya(a)>Da?Math.atan((Math.sin(e)*(o=Math.cos(i))*Math.sin(n)-Math.sin(i)*(r=Math.cos(e))*Math.sin(t))/(r*o*a)):(e+i)/2}function He(t,e,n,i){var r;if(null==t)r=n*Fa,i.point(-ja,r),i.point(0,r),i.point(ja,r),i.point(ja,0),i.point(ja,-r),i.point(0,-r),i.point(-ja,-r),i.point(-ja,0),i.point(-ja,r);else if(ya(t[0]-e[0])>Da){var o=t[0]<e[0]?ja:-ja;r=n*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(e[0],e[1])}function Fe(t,e){var n=t[0],i=t[1],r=[Math.sin(n),-Math.cos(n),0],o=0,a=0;Ss.reset();for(var s=0,l=e.length;s<l;++s){var c=e[s],u=c.length;if(u)for(var h=c[0],d=h[0],f=h[1]/2+ja/4,p=Math.sin(f),g=Math.cos(f),m=1;;){m===u&&(m=0),t=c[m];var v=t[0],y=t[1]/2+ja/4,x=Math.sin(y),b=Math.cos(y),_=v-d,w=_>=0?1:-1,S=w*_,C=S>ja,T=p*x;if(Ss.add(Math.atan2(T*w*Math.sin(S),g*b+T*Math.cos(S))),o+=C?_+w*Va:_,C^d>=n^v>=n){var k=ve(ge(h),ge(t));be(k);var A=ve(r,k);be(A);var M=(C^_>=0?-1:1)*et(A[2]);(i>M||i===M&&(k[0]||k[1]))&&(a+=C^_>=0?1:-1)}if(!m++)break;d=v,p=x,g=b,h=t}}return(o<-Da||o<Da&&Ss<-Da)^1&a}function ze(t){function e(t,e){return Math.cos(t)*Math.cos(e)>o}function n(t){var n,o,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(h,d){var f,p=[h,d],g=e(h,d),m=a?g?0:r(h,d):g?r(h+(h<0?ja:-ja),d):0;if(!n&&(c=l=g)&&t.lineStart(),g!==l&&(f=i(n,p),(we(n,f)||we(p,f))&&(p[0]+=Da,p[1]+=Da,g=e(p[0],p[1]))),g!==l)u=0,g?(t.lineStart(),f=i(p,n),t.point(f[0],f[1])):(f=i(n,p),t.point(f[0],f[1]),t.lineEnd()),n=f;else if(s&&n&&a^g){var v;m&o||!(v=i(p,n,!0))||(u=0,a?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&we(n,p)||t.point(p[0],p[1]),n=p,l=g,o=m},lineEnd:function(){l&&t.lineEnd(),n=null},clean:function(){return u|(c&&l)<<1}}}function i(t,e,n){var i=ge(t),r=ge(e),a=[1,0,0],s=ve(i,r),l=me(s,s),c=s[0],u=l-c*c;if(!u)return!n&&t;var h=o*l/u,d=-o*c/u,f=ve(a,s),p=xe(a,h),g=xe(s,d);ye(p,g);var m=f,v=me(p,m),y=me(m,m),x=v*v-y*(me(p,p)-1);if(!(x<0)){var b=Math.sqrt(x),_=xe(m,(-v-b)/y);if(ye(_,p),_=_e(_),!n)return _;var w,S=t[0],C=e[0],T=t[1],k=e[1];C<S&&(w=S,S=C,C=w);var A=C-S,M=ya(A-ja)<Da,L=M||A<Da;if(!M&&k<T&&(w=T,T=k,k=w),L?M?T+k>0^_[1]<(ya(_[0]-S)<Da?T:k):T<=_[1]&&_[1]<=k:A>ja^(S<=_[0]&&_[0]<=C)){var E=xe(m,(-v+b)/y);return ye(E,p),[_,_e(E)]}}}function r(e,n){var i=a?t:ja-t,r=0;return e<-i?r|=1:e>i&&(r|=2),n<-i?r|=4:n>i&&(r|=8),r}var o=Math.cos(t),a=o>0,s=ya(o)>Da,l=gn(t,6*za);return Oe(e,n,l,a?[0,-t]:[-ja,t-ja])}function qe(t,e,n,i){return function(r){var o,a=r.a,s=r.b,l=a.x,c=a.y,u=s.x,h=s.y,d=0,f=1,p=u-l,g=h-c;if(o=t-l,p||!(o>0)){if(o/=p,p<0){if(o<d)return;o<f&&(f=o)}else if(p>0){if(o>f)return;o>d&&(d=o)}if(o=n-l,p||!(o<0)){if(o/=p,p<0){if(o>f)return;o>d&&(d=o)}else if(p>0){if(o<d)return;o<f&&(f=o)}if(o=e-c,g||!(o>0)){if(o/=g,g<0){if(o<d)return;o<f&&(f=o)}else if(g>0){if(o>f)return;o>d&&(d=o)}if(o=i-c,g||!(o<0)){if(o/=g,g<0){if(o>f)return;o>d&&(d=o)}else if(g>0){if(o<d)return;o<f&&(f=o)}return d>0&&(r.a={x:l+d*p,y:c+d*g}),f<1&&(r.b={x:l+f*p,y:c+f*g}),r}}}}}}function Ge(t,e,n,i){function r(i,r){return ya(i[0]-t)<Da?r>0?0:3:ya(i[0]-n)<Da?r>0?2:1:ya(i[1]-e)<Da?r>0?1:0:r>0?3:2}function o(t,e){return a(t.x,e.x)}function a(t,e){var n=r(t,1),i=r(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){function l(t){for(var e=0,n=m.length,i=t[1],r=0;r<n;++r)for(var o,a=1,s=m[r],l=s.length,c=s[0];a<l;++a)o=s[a],c[1]<=i?o[1]>i&&J(c,o,t)>0&&++e:o[1]<=i&&J(c,o,t)<0&&--e,c=o;return 0!==e}function c(o,s,l,c){var u=0,h=0;if(null==o||(u=r(o,l))!==(h=r(s,l))||a(o,s)<0^l>0){do c.point(0===u||3===u?t:n,u>1?i:e);while((u=(u+l+4)%4)!==h)}else c.point(s[0],s[1])}function u(r,o){return t<=r&&r<=n&&e<=o&&o<=i}function h(t,e){u(t,e)&&s.point(t,e)}function d(){L.point=p,m&&m.push(v=[]),C=!0,S=!1,_=w=NaN}function f(){g&&(p(y,x),b&&S&&A.rejoin(),g.push(A.buffer())),L.point=h,S&&s.lineEnd()}function p(t,e){t=Math.max(-Vs,Math.min(Vs,t)),e=Math.max(-Vs,Math.min(Vs,e));var n=u(t,e);if(m&&v.push([t,e]),C)y=t,x=e,b=n,C=!1,n&&(s.lineStart(),s.point(t,e));else if(n&&S)s.point(t,e);else{var i={a:{x:_,y:w},b:{x:t,y:e}};M(i)?(S||(s.lineStart(),s.point(i.a.x,i.a.y)),s.point(i.b.x,i.b.y),n||s.lineEnd(),T=!1):n&&(s.lineStart(),s.point(t,e),T=!1)}_=t,w=e,S=n}var g,m,v,y,x,b,_,w,S,C,T,k=s,A=De(),M=qe(t,e,n,i),L={point:h,lineStart:d,lineEnd:f,polygonStart:function(){s=A,g=[],m=[],T=!0},polygonEnd:function(){s=k,g=la.merge(g);var e=l([t,i]),n=T&&e,r=g.length;(n||r)&&(s.polygonStart(),n&&(s.lineStart(),c(null,null,1,s),s.lineEnd()),r&&Ee(g,o,e,c,s),s.polygonEnd()),g=m=v=null}};return L}}function Be(t){var e=0,n=ja/3,i=sn(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*ja/180,n=t[1]*ja/180):[e/ja*180,n/ja*180]},r}function $e(t,e){function n(t,e){var n=Math.sqrt(o-2*r*Math.sin(e))/r;return[n*Math.sin(t*=r),a-n*Math.cos(t)]}var i=Math.sin(t),r=(i+Math.sin(e))/2,o=1+i*(2*r-i),a=Math.sqrt(o)/r;return n.invert=function(t,e){var n=a-e;return[Math.atan2(t,n)/r,et((o-(t*t+n*n)*r*r)/(2*r))]},n}function We(){function t(t,e){Fs+=r*t-i*e,i=t,r=e}var e,n,i,r;$s.point=function(o,a){$s.point=t,e=i=o,n=r=a},$s.lineEnd=function(){t(e,n)}}function Ue(t,e){t<zs&&(zs=t),t>Gs&&(Gs=t),e<qs&&(qs=e),e>Bs&&(Bs=e)}function Xe(){function t(t,e){a.push("M",t,",",e,o)}function e(t,e){a.push("M",t,",",e),s.point=n}function n(t,e){a.push("L",t,",",e)}function i(){s.point=t}function r(){a.push("Z")}var o=Ye(4.5),a=[],s={point:t,lineStart:function(){s.point=e},lineEnd:i,polygonStart:function(){s.lineEnd=r},polygonEnd:function(){s.lineEnd=i,s.point=t},pointRadius:function(t){return o=Ye(t),s},result:function(){if(a.length){var t=a.join("");return a=[],t}}};return s}function Ye(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Qe(t,e){As+=t,Ms+=e,++Ls}function Ze(){function t(t,i){var r=t-e,o=i-n,a=Math.sqrt(r*r+o*o);Es+=a*(e+t)/2,Ps+=a*(n+i)/2,Ns+=a,Qe(e=t,n=i)}var e,n;Us.point=function(i,r){Us.point=t,Qe(e=i,n=r)}}function Ke(){Us.point=Qe}function Je(){function t(t,e){var n=t-i,o=e-r,a=Math.sqrt(n*n+o*o);Es+=a*(i+t)/2,Ps+=a*(r+e)/2,Ns+=a,a=r*t-i*e,Os+=a*(i+t),Rs+=a*(r+e),Ds+=3*a,Qe(i=t,r=e)}var e,n,i,r;Us.point=function(o,a){Us.point=t,Qe(e=i=o,n=r=a)},Us.lineEnd=function(){t(e,n)}}function tn(t){function e(e,n){t.moveTo(e+a,n),t.arc(e,n,a,0,Va)}function n(e,n){t.moveTo(e,n),s.point=i}function i(e,n){t.lineTo(e,n)}function r(){s.point=e}function o(){t.closePath()}var a=4.5,s={point:e,lineStart:function(){s.point=n},lineEnd:r,polygonStart:function(){s.lineEnd=o},polygonEnd:function(){s.lineEnd=r,s.point=e},pointRadius:function(t){return a=t,s},result:_};return s}function en(t){function e(t){return(s?i:n)(t)}function n(e){return on(e,function(n,i){n=t(n,i),e.point(n[0],n[1])})}function i(e){function n(n,i){n=t(n,i),e.point(n[0],n[1])}function i(){x=NaN,C.point=o,e.lineStart()}function o(n,i){var o=ge([n,i]),a=t(n,i);r(x,b,y,_,w,S,x=a[0],b=a[1],y=n,_=o[0],w=o[1],S=o[2],s,e),e.point(x,b)}function a(){C.point=n,e.lineEnd()}function l(){i(),C.point=c,C.lineEnd=u}function c(t,e){o(h=t,d=e),f=x,p=b,g=_,m=w,v=S,C.point=o}function u(){r(x,b,y,_,w,S,f,p,h,g,m,v,s,e),C.lineEnd=a,a()}var h,d,f,p,g,m,v,y,x,b,_,w,S,C={point:n,lineStart:i,lineEnd:a,polygonStart:function(){e.polygonStart(),C.lineStart=l},polygonEnd:function(){e.polygonEnd(),C.lineStart=i}};return C}function r(e,n,i,s,l,c,u,h,d,f,p,g,m,v){var y=u-e,x=h-n,b=y*y+x*x;if(b>4*o&&m--){var _=s+f,w=l+p,S=c+g,C=Math.sqrt(_*_+w*w+S*S),T=Math.asin(S/=C),k=ya(ya(S)-1)<Da||ya(i-d)<Da?(i+d)/2:Math.atan2(w,_),A=t(k,T),M=A[0],L=A[1],E=M-e,P=L-n,N=x*E-y*P;(N*N/b>o||ya((y*E+x*P)/b-.5)>.3||s*f+l*p+c*g<a)&&(r(e,n,i,s,l,c,M,L,k,_/=C,w/=C,S,m,v),v.point(M,L),r(M,L,k,_,w,S,u,h,d,f,p,g,m,v))}}var o=.5,a=Math.cos(30*za),s=16;return e.precision=function(t){return arguments.length?(s=(o=t*t)>0&&16,e):Math.sqrt(o)},e}function nn(t){var e=en(function(e,n){return t([e*qa,n*qa])});return function(t){return ln(e(t))}}function rn(t){this.stream=t}function on(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function an(t){return sn(function(){return t})()}function sn(t){function e(t){return t=s(t[0]*za,t[1]*za),[t[0]*d+l,c-t[1]*d]}function n(t){return t=s.invert((t[0]-l)/d,(c-t[1])/d),t&&[t[0]*qa,t[1]*qa]}function i(){s=Me(a=hn(v,x,b),o);var t=o(g,m);return l=f-t[0]*d,c=p+t[1]*d,r()}function r(){return u&&(u.valid=!1,u=null),e}var o,a,s,l,c,u,h=en(function(t,e){return t=o(t,e),[t[0]*d+l,c-t[1]*d]}),d=150,f=480,p=250,g=0,m=0,v=0,x=0,b=0,_=js,w=y,S=null,C=null;return e.stream=function(t){return u&&(u.valid=!1),u=ln(_(a,h(w(t)))),u.valid=!0,u},e.clipAngle=function(t){return arguments.length?(_=null==t?(S=t,js):ze((S=+t)*za),r()):S},e.clipExtent=function(t){return arguments.length?(C=t,w=t?Ge(t[0][0],t[0][1],t[1][0],t[1][1]):y,r()):C},e.scale=function(t){return arguments.length?(d=+t,i()):d},e.translate=function(t){return arguments.length?(f=+t[0],p=+t[1],i()):[f,p]},e.center=function(t){return arguments.length?(g=t[0]%360*za,m=t[1]%360*za,i()):[g*qa,m*qa]},e.rotate=function(t){return arguments.length?(v=t[0]%360*za,x=t[1]%360*za,b=t.length>2?t[2]%360*za:0,i()):[v*qa,x*qa,b*qa]},la.rebind(e,h,"precision"),function(){return o=t.apply(this,arguments),e.invert=o.invert&&n,i()}}function ln(t){return on(t,function(e,n){t.point(e*za,n*za)})}function cn(t,e){return[t,e]}function un(t,e){return[t>ja?t-Va:t<-ja?t+Va:t,e]}function hn(t,e,n){return t?e||n?Me(fn(t),pn(e,n)):fn(t):e||n?pn(e,n):un}function dn(t){return function(e,n){return e+=t,[e>ja?e-Va:e<-ja?e+Va:e,n]}}function fn(t){var e=dn(t);return e.invert=dn(-t),e}function pn(t,e){function n(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*i+s*r;return[Math.atan2(l*o-u*a,s*i-c*r),et(u*o+l*a)]}var i=Math.cos(t),r=Math.sin(t),o=Math.cos(e),a=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*o-l*a;return[Math.atan2(l*o+c*a,s*i+u*r),et(u*i-s*r)]},n}function gn(t,e){var n=Math.cos(t),i=Math.sin(t);return function(r,o,a,s){var l=a*e;null!=r?(r=mn(n,r),o=mn(n,o),(a>0?r<o:r>o)&&(r+=a*Va)):(r=t+a*Va,o=t-.5*l);for(var c,u=r;a>0?u>o:u<o;u-=l)s.point((c=_e([n,-i*Math.cos(u),-i*Math.sin(u)]))[0],c[1])}}function mn(t,e){var n=ge(e);n[0]-=t,be(n);var i=tt(-n[1]);return((-n[2]<0?-i:i)+2*Math.PI-Da)%(2*Math.PI)}function vn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[t,e]})}}function yn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[e,t]})}}function xn(t){return t.source}function bn(t){return t.target}function _n(t,e,n,i){var r=Math.cos(e),o=Math.sin(e),a=Math.cos(i),s=Math.sin(i),l=r*Math.cos(t),c=r*Math.sin(t),u=a*Math.cos(n),h=a*Math.sin(n),d=2*Math.asin(Math.sqrt(ot(i-e)+r*a*ot(n-t))),f=1/Math.sin(d),p=d?function(t){var e=Math.sin(t*=d)*f,n=Math.sin(d-t)*f,i=n*l+e*u,r=n*c+e*h,a=n*o+e*s;return[Math.atan2(r,i)*qa,Math.atan2(a,Math.sqrt(i*i+r*r))*qa]}:function(){return[t*qa,e*qa]};return p.distance=d,p}function wn(){function t(t,r){var o=Math.sin(r*=za),a=Math.cos(r),s=ya((t*=za)-e),l=Math.cos(s);Xs+=Math.atan2(Math.sqrt((s=a*Math.sin(s))*s+(s=i*o-n*a*l)*s),n*o+i*a*l),e=t,n=o,i=a}var e,n,i;Ys.point=function(r,o){e=r*za,n=Math.sin(o*=za),i=Math.cos(o),Ys.point=t},Ys.lineEnd=function(){Ys.point=Ys.lineEnd=_}}function Sn(t,e){function n(e,n){var i=Math.cos(e),r=Math.cos(n),o=t(i*r);return[o*r*Math.sin(e),o*Math.sin(n)]}return n.invert=function(t,n){var i=Math.sqrt(t*t+n*n),r=e(i),o=Math.sin(r),a=Math.cos(r);return[Math.atan2(t*o,i*a),Math.asin(i&&n*o/i)]},n}function Cn(t,e){function n(t,e){a>0?e<-Fa+Da&&(e=-Fa+Da):e>Fa-Da&&(e=Fa-Da);var n=a/Math.pow(r(e),o);return[n*Math.sin(o*t),a-n*Math.cos(o*t)]}var i=Math.cos(t),r=function(t){return Math.tan(ja/4+t/2)},o=t===e?Math.sin(t):Math.log(i/Math.cos(e))/Math.log(r(e)/r(t)),a=i*Math.pow(r(t),o)/o;return o?(n.invert=function(t,e){var n=a-e,i=K(o)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/o,2*Math.atan(Math.pow(a/i,1/o))-Fa]},n):kn}function Tn(t,e){function n(t,e){var n=o-e;return[n*Math.sin(r*t),o-n*Math.cos(r*t)]}var i=Math.cos(t),r=t===e?Math.sin(t):(i-Math.cos(e))/(e-t),o=i/r+t;return ya(r)<Da?cn:(n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/r,o-K(r)*Math.sqrt(t*t+n*n)]},n)}function kn(t,e){return[t,Math.log(Math.tan(ja/4+e/2))]}function An(t){var e,n=an(t),i=n.scale,r=n.translate,o=n.clipExtent;return n.scale=function(){var t=i.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.translate=function(){var t=r.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.clipExtent=function(t){var a=o.apply(n,arguments);if(a===n){if(e=null==t){var s=ja*i(),l=r();o([[l[0]-s,l[1]-s],[l[0]+s,l[1]+s]])}}else e&&(a=null);return a},n.clipExtent(null)}function Mn(t,e){return[Math.log(Math.tan(ja/4+e/2)),-t]}function Ln(t){return t[0]}function En(t){return t[1]}function Pn(t){for(var e=t.length,n=[0,1],i=2,r=2;r<e;r++){for(;i>1&&J(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}function Nn(t,e){return t[0]-e[0]||t[1]-e[1]}function On(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function Rn(t,e,n,i){var r=t[0],o=n[0],a=e[0]-r,s=i[0]-o,l=t[1],c=n[1],u=e[1]-l,h=i[1]-c,d=(s*(l-c)-h*(r-o))/(h*a-s*u);return[r+d*a,l+d*u]}function Dn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function In(){ii(this),this.edge=this.site=this.circle=null}function jn(t){var e=sl.pop()||new In;return e.site=t,e}function Vn(t){Xn(t),rl.remove(t),sl.push(t),ii(t)}function Hn(t){var e=t.circle,n=e.x,i=e.cy,r={x:n,y:i},o=t.P,a=t.N,s=[t];Vn(t);for(var l=o;l.circle&&ya(n-l.circle.x)<Da&&ya(i-l.circle.cy)<Da;)o=l.P,s.unshift(l),Vn(l),l=o;s.unshift(l),Xn(l);for(var c=a;c.circle&&ya(n-c.circle.x)<Da&&ya(i-c.circle.cy)<Da;)a=c.N,s.push(c),Vn(c),c=a;s.push(c),Xn(c);var u,h=s.length;for(u=1;u<h;++u)c=s[u],l=s[u-1],ti(c.edge,l.site,c.site,r);l=s[0],c=s[h-1],c.edge=Kn(l.site,c.site,null,r),Un(l),Un(c)}function Fn(t){for(var e,n,i,r,o=t.x,a=t.y,s=rl._;s;)if(i=zn(s,a)-o,i>Da)s=s.L;else{if(r=o-qn(s,a),!(r>Da)){i>-Da?(e=s.P,n=s):r>-Da?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}var l=jn(t);if(rl.insert(e,l),e||n){if(e===n)return Xn(e),n=jn(e.site),rl.insert(l,n),l.edge=n.edge=Kn(e.site,l.site),Un(e),void Un(n);if(!n)return void(l.edge=Kn(e.site,l.site));Xn(e),Xn(n);var c=e.site,u=c.x,h=c.y,d=t.x-u,f=t.y-h,p=n.site,g=p.x-u,m=p.y-h,v=2*(d*m-f*g),y=d*d+f*f,x=g*g+m*m,b={x:(m*y-f*x)/v+u,y:(d*x-g*y)/v+h};ti(n.edge,c,p,b),l.edge=Kn(c,t,null,b),n.edge=Kn(t,p,null,b),Un(e),Un(n)}}function zn(t,e){var n=t.site,i=n.x,r=n.y,o=r-e;if(!o)return i;var a=t.P;if(!a)return-(1/0);n=a.site;var s=n.x,l=n.y,c=l-e;if(!c)return s;var u=s-i,h=1/o-1/c,d=u/c;return h?(-d+Math.sqrt(d*d-2*h*(u*u/(-2*c)-l+c/2+r-o/2)))/h+i:(i+s)/2}function qn(t,e){var n=t.N;if(n)return zn(n,e);var i=t.site;return i.y===e?i.x:1/0}function Gn(t){this.site=t,this.edges=[]}function Bn(t){for(var e,n,i,r,o,a,s,l,c,u,h=t[0][0],d=t[1][0],f=t[0][1],p=t[1][1],g=il,m=g.length;m--;)if(o=g[m],o&&o.prepare())for(s=o.edges,l=s.length,a=0;a<l;)u=s[a].end(),i=u.x,r=u.y,c=s[++a%l].start(),e=c.x,n=c.y,(ya(i-e)>Da||ya(r-n)>Da)&&(s.splice(a,0,new ei(Jn(o.site,u,ya(i-h)<Da&&p-r>Da?{x:h,y:ya(e-h)<Da?n:p}:ya(r-p)<Da&&d-i>Da?{x:ya(n-p)<Da?e:d,y:p}:ya(i-d)<Da&&r-f>Da?{x:d,y:ya(e-d)<Da?n:f}:ya(r-f)<Da&&i-h>Da?{x:ya(n-f)<Da?e:h,y:f}:null),o.site,null)),++l)}function $n(t,e){return e.angle-t.angle}function Wn(){ii(this),this.x=this.y=this.arc=this.site=this.cy=null}function Un(t){var e=t.P,n=t.N;if(e&&n){var i=e.site,r=t.site,o=n.site;if(i!==o){var a=r.x,s=r.y,l=i.x-a,c=i.y-s,u=o.x-a,h=o.y-s,d=2*(l*h-c*u);if(!(d>=-Ia)){var f=l*l+c*c,p=u*u+h*h,g=(h*f-c*p)/d,m=(l*p-u*f)/d,h=m+s,v=ll.pop()||new Wn;v.arc=t,v.site=r,v.x=g+a,v.y=h+Math.sqrt(g*g+m*m),v.cy=h,t.circle=v;for(var y=null,x=al._;x;)if(v.y<x.y||v.y===x.y&&v.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}al.insert(y,v),y||(ol=v)}}}}function Xn(t){var e=t.circle;e&&(e.P||(ol=e.N),al.remove(e),ll.push(e),ii(e),t.circle=null)}function Yn(t){for(var e,n=nl,i=qe(t[0][0],t[0][1],t[1][0],t[1][1]),r=n.length;r--;)e=n[r],(!Qn(e,t)||!i(e)||ya(e.a.x-e.b.x)<Da&&ya(e.a.y-e.b.y)<Da)&&(e.a=e.b=null,n.splice(r,1))}function Qn(t,e){var n=t.b;if(n)return!0;var i,r,o=t.a,a=e[0][0],s=e[1][0],l=e[0][1],c=e[1][1],u=t.l,h=t.r,d=u.x,f=u.y,p=h.x,g=h.y,m=(d+p)/2,v=(f+g)/2;if(g===f){if(m<a||m>=s)return;if(d>p){if(o){if(o.y>=c)return}else o={x:m,y:l};n={x:m,y:c}}else{if(o){if(o.y<l)return}else o={x:m,y:c};n={x:m,y:l}}}else if(i=(d-p)/(g-f),r=v-i*m,
-i<-1||i>1)if(d>p){if(o){if(o.y>=c)return}else o={x:(l-r)/i,y:l};n={x:(c-r)/i,y:c}}else{if(o){if(o.y<l)return}else o={x:(c-r)/i,y:c};n={x:(l-r)/i,y:l}}else if(f<g){if(o){if(o.x>=s)return}else o={x:a,y:i*a+r};n={x:s,y:i*s+r}}else{if(o){if(o.x<a)return}else o={x:s,y:i*s+r};n={x:a,y:i*a+r}}return t.a=o,t.b=n,!0}function Zn(t,e){this.l=t,this.r=e,this.a=this.b=null}function Kn(t,e,n,i){var r=new Zn(t,e);return nl.push(r),n&&ti(r,t,e,n),i&&ti(r,e,t,i),il[t.i].edges.push(new ei(r,t,e)),il[e.i].edges.push(new ei(r,e,t)),r}function Jn(t,e,n){var i=new Zn(t,null);return i.a=e,i.b=n,nl.push(i),i}function ti(t,e,n,i){t.a||t.b?t.l===n?t.b=i:t.a=i:(t.a=i,t.l=e,t.r=n)}function ei(t,e,n){var i=t.a,r=t.b;this.edge=t,this.site=e,this.angle=n?Math.atan2(n.y-e.y,n.x-e.x):t.l===e?Math.atan2(r.x-i.x,i.y-r.y):Math.atan2(i.x-r.x,r.y-i.y)}function ni(){this._=null}function ii(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function ri(t,e){var n=e,i=e.R,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.R=i.L,n.R&&(n.R.U=n),i.L=n}function oi(t,e){var n=e,i=e.L,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.L=i.R,n.L&&(n.L.U=n),i.R=n}function ai(t){for(;t.L;)t=t.L;return t}function si(t,e){var n,i,r,o=t.sort(li).pop();for(nl=[],il=new Array(t.length),rl=new ni,al=new ni;;)if(r=ol,o&&(!r||o.y<r.y||o.y===r.y&&o.x<r.x))o.x===n&&o.y===i||(il[o.i]=new Gn(o),Fn(o),n=o.x,i=o.y),o=t.pop();else{if(!r)break;Hn(r.arc)}e&&(Yn(e),Bn(e));var a={cells:il,edges:nl};return rl=al=nl=il=null,a}function li(t,e){return e.y-t.y||e.x-t.x}function ci(t,e,n){return(t.x-n.x)*(e.y-t.y)-(t.x-e.x)*(n.y-t.y)}function ui(t){return t.x}function hi(t){return t.y}function di(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fi(t,e,n,i,r,o){if(!t(e,n,i,r,o)){var a=.5*(n+r),s=.5*(i+o),l=e.nodes;l[0]&&fi(t,l[0],n,i,a,s),l[1]&&fi(t,l[1],a,i,r,s),l[2]&&fi(t,l[2],n,s,a,o),l[3]&&fi(t,l[3],a,s,r,o)}}function pi(t,e,n,i,r,o,a){var s,l=1/0;return function t(c,u,h,d,f){if(!(u>o||h>a||d<i||f<r)){if(p=c.point){var p,g=e-c.x,m=n-c.y,v=g*g+m*m;if(v<l){var y=Math.sqrt(l=v);i=e-y,r=n-y,o=e+y,a=n+y,s=p}}for(var x=c.nodes,b=.5*(u+d),_=.5*(h+f),w=e>=b,S=n>=_,C=S<<1|w,T=C+4;C<T;++C)if(c=x[3&C])switch(3&C){case 0:t(c,u,h,b,_);break;case 1:t(c,b,h,d,_);break;case 2:t(c,u,_,b,f);break;case 3:t(c,b,_,d,f)}}}(t,i,r,o,a),s}function gi(t,e){t=la.rgb(t),e=la.rgb(e);var n=t.r,i=t.g,r=t.b,o=e.r-n,a=e.g-i,s=e.b-r;return function(t){return"#"+bt(Math.round(n+o*t))+bt(Math.round(i+a*t))+bt(Math.round(r+s*t))}}function mi(t,e){var n,i={},r={};for(n in t)n in e?i[n]=xi(t[n],e[n]):r[n]=t[n];for(n in e)n in t||(r[n]=e[n]);return function(t){for(n in i)r[n]=i[n](t);return r}}function vi(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function yi(t,e){var n,i,r,o=ul.lastIndex=hl.lastIndex=0,a=-1,s=[],l=[];for(t+="",e+="";(n=ul.exec(t))&&(i=hl.exec(e));)(r=i.index)>o&&(r=e.slice(o,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:vi(n,i)})),o=hl.lastIndex;return o<e.length&&(r=e.slice(o),s[a]?s[a]+=r:s[++a]=r),s.length<2?l[0]?(e=l[0].x,function(t){return e(t)+""}):function(){return e}:(e=l.length,function(t){for(var n,i=0;i<e;++i)s[(n=l[i]).i]=n.x(t);return s.join("")})}function xi(t,e){for(var n,i=la.interpolators.length;--i>=0&&!(n=la.interpolators[i](t,e)););return n}function bi(t,e){var n,i=[],r=[],o=t.length,a=e.length,s=Math.min(t.length,e.length);for(n=0;n<s;++n)i.push(xi(t[n],e[n]));for(;n<o;++n)r[n]=t[n];for(;n<a;++n)r[n]=e[n];return function(t){for(n=0;n<s;++n)r[n]=i[n](t);return r}}function _i(t){return function(e){return e<=0?0:e>=1?1:t(e)}}function wi(t){return function(e){return 1-t(1-e)}}function Si(t){return function(e){return.5*(e<.5?t(2*e):2-t(2-2*e))}}function Ci(t){return t*t}function Ti(t){return t*t*t}function ki(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(t<.5?n:3*(t-e)+n-.75)}function Ai(t){return function(e){return Math.pow(e,t)}}function Mi(t){return 1-Math.cos(t*Fa)}function Li(t){return Math.pow(2,10*(t-1))}function Ei(t){return 1-Math.sqrt(1-t*t)}function Pi(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Va*Math.asin(1/t):(t=1,n=e/4),function(i){return 1+t*Math.pow(2,-10*i)*Math.sin((i-n)*Va/e)}}function Ni(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function Oi(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function Ri(t,e){t=la.hcl(t),e=la.hcl(e);var n=t.h,i=t.c,r=t.l,o=e.h-n,a=e.c-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.c:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return ut(n+o*t,i+a*t,r+s*t)+""}}function Di(t,e){t=la.hsl(t),e=la.hsl(e);var n=t.h,i=t.s,r=t.l,o=e.h-n,a=e.s-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.s:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return lt(n+o*t,i+a*t,r+s*t)+""}}function Ii(t,e){t=la.lab(t),e=la.lab(e);var n=t.l,i=t.a,r=t.b,o=e.l-n,a=e.a-i,s=e.b-r;return function(t){return dt(n+o*t,i+a*t,r+s*t)+""}}function ji(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Vi(t){var e=[t.a,t.b],n=[t.c,t.d],i=Fi(e),r=Hi(e,n),o=Fi(zi(n,e,-r))||0;e[0]*n[1]<n[0]*e[1]&&(e[0]*=-1,e[1]*=-1,i*=-1,r*=-1),this.rotate=(i?Math.atan2(e[1],e[0]):Math.atan2(-n[0],n[1]))*qa,this.translate=[t.e,t.f],this.scale=[i,o],this.skew=o?Math.atan2(r,o)*qa:0}function Hi(t,e){return t[0]*e[0]+t[1]*e[1]}function Fi(t){var e=Math.sqrt(Hi(t,t));return e&&(t[0]/=e,t[1]/=e),e}function zi(t,e,n){return t[0]+=n*e[0],t[1]+=n*e[1],t}function qi(t){return t.length?t.pop()+",":""}function Gi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push("translate(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else(e[0]||e[1])&&n.push("translate("+e+")")}function Bi(t,e,n,i){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(qi(n)+"rotate(",null,")")-2,x:vi(t,e)})):e&&n.push(qi(n)+"rotate("+e+")")}function $i(t,e,n,i){t!==e?i.push({i:n.push(qi(n)+"skewX(",null,")")-2,x:vi(t,e)}):e&&n.push(qi(n)+"skewX("+e+")")}function Wi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push(qi(n)+"scale(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(qi(n)+"scale("+e+")")}function Ui(t,e){var n=[],i=[];return t=la.transform(t),e=la.transform(e),Gi(t.translate,e.translate,n,i),Bi(t.rotate,e.rotate,n,i),$i(t.skew,e.skew,n,i),Wi(t.scale,e.scale,n,i),t=e=null,function(t){for(var e,r=-1,o=i.length;++r<o;)n[(e=i[r]).i]=e.x(t);return n.join("")}}function Xi(t,e){return e=(e-=t=+t)||1/e,function(n){return(n-t)/e}}function Yi(t,e){return e=(e-=t=+t)||1/e,function(n){return Math.max(0,Math.min(1,(n-t)/e))}}function Qi(t){for(var e=t.source,n=t.target,i=Ki(e,n),r=[e];e!==i;)e=e.parent,r.push(e);for(var o=r.length;n!==i;)r.splice(o,0,n),n=n.parent;return r}function Zi(t){for(var e=[],n=t.parent;null!=n;)e.push(t),t=n,n=n.parent;return e.push(t),e}function Ki(t,e){if(t===e)return t;for(var n=Zi(t),i=Zi(e),r=n.pop(),o=i.pop(),a=null;r===o;)a=r,r=n.pop(),o=i.pop();return a}function Ji(t){t.fixed|=2}function tr(t){t.fixed&=-7}function er(t){t.fixed|=4,t.px=t.x,t.py=t.y}function nr(t){t.fixed&=-5}function ir(t,e,n){var i=0,r=0;if(t.charge=0,!t.leaf)for(var o,a=t.nodes,s=a.length,l=-1;++l<s;)o=a[l],null!=o&&(ir(o,e,n),t.charge+=o.charge,i+=o.charge*o.cx,r+=o.charge*o.cy);if(t.point){t.leaf||(t.point.x+=Math.random()-.5,t.point.y+=Math.random()-.5);var c=e*n[t.point.index];t.charge+=t.pointCharge=c,i+=c*t.point.x,r+=c*t.point.y}t.cx=i/t.charge,t.cy=r/t.charge}function rr(t,e){return la.rebind(t,e,"sort","children","value"),t.nodes=t,t.links=ur,t}function or(t,e){for(var n=[t];null!=(t=n.pop());)if(e(t),(r=t.children)&&(i=r.length))for(var i,r;--i>=0;)n.push(r[i])}function ar(t,e){for(var n=[t],i=[];null!=(t=n.pop());)if(i.push(t),(o=t.children)&&(r=o.length))for(var r,o,a=-1;++a<r;)n.push(o[a]);for(;null!=(t=i.pop());)e(t)}function sr(t){return t.children}function lr(t){return t.value}function cr(t,e){return e.value-t.value}function ur(t){return la.merge(t.map(function(t){return(t.children||[]).map(function(e){return{source:t,target:e}})}))}function hr(t){return t.x}function dr(t){return t.y}function fr(t,e,n){t.y0=e,t.y=n}function pr(t){return la.range(t.length)}function gr(t){for(var e=-1,n=t[0].length,i=[];++e<n;)i[e]=0;return i}function mr(t){for(var e,n=1,i=0,r=t[0][1],o=t.length;n<o;++n)(e=t[n][1])>r&&(i=n,r=e);return i}function vr(t){return t.reduce(yr,0)}function yr(t,e){return t+e[1]}function xr(t,e){return br(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function br(t,e){for(var n=-1,i=+t[0],r=(t[1]-i)/e,o=[];++n<=e;)o[n]=r*n+i;return o}function _r(t){return[la.min(t),la.max(t)]}function wr(t,e){return t.value-e.value}function Sr(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Cr(t,e){t._pack_next=e,e._pack_prev=t}function Tr(t,e){var n=e.x-t.x,i=e.y-t.y,r=t.r+e.r;return.999*r*r>n*n+i*i}function kr(t){function e(t){u=Math.min(t.x-t.r,u),h=Math.max(t.x+t.r,h),d=Math.min(t.y-t.r,d),f=Math.max(t.y+t.r,f)}if((n=t.children)&&(c=n.length)){var n,i,r,o,a,s,l,c,u=1/0,h=-(1/0),d=1/0,f=-(1/0);if(n.forEach(Ar),i=n[0],i.x=-i.r,i.y=0,e(i),c>1&&(r=n[1],r.x=r.r,r.y=0,e(r),c>2))for(o=n[2],Er(i,r,o),e(o),Sr(i,o),i._pack_prev=o,Sr(o,r),r=i._pack_next,a=3;a<c;a++){Er(i,r,o=n[a]);var p=0,g=1,m=1;for(s=r._pack_next;s!==r;s=s._pack_next,g++)if(Tr(s,o)){p=1;break}if(1==p)for(l=i._pack_prev;l!==s._pack_prev&&!Tr(l,o);l=l._pack_prev,m++);p?(g<m||g==m&&r.r<i.r?Cr(i,r=s):Cr(i=l,r),a--):(Sr(i,o),r=o,e(o))}var v=(u+h)/2,y=(d+f)/2,x=0;for(a=0;a<c;a++)o=n[a],o.x-=v,o.y-=y,x=Math.max(x,o.r+Math.sqrt(o.x*o.x+o.y*o.y));t.r=x,n.forEach(Mr)}}function Ar(t){t._pack_next=t._pack_prev=t}function Mr(t){delete t._pack_next,delete t._pack_prev}function Lr(t,e,n,i){var r=t.children;if(t.x=e+=i*t.x,t.y=n+=i*t.y,t.r*=i,r)for(var o=-1,a=r.length;++o<a;)Lr(r[o],e,n,i)}function Er(t,e,n){var i=t.r+n.r,r=e.x-t.x,o=e.y-t.y;if(i&&(r||o)){var a=e.r+n.r,s=r*r+o*o;a*=a,i*=i;var l=.5+(i-a)/(2*s),c=Math.sqrt(Math.max(0,2*a*(i+s)-(i-=s)*i-a*a))/(2*s);n.x=t.x+l*r+c*o,n.y=t.y+l*o-c*r}else n.x=t.x+i,n.y=t.y}function Pr(t,e){return t.parent==e.parent?1:2}function Nr(t){var e=t.children;return e.length?e[0]:t.t}function Or(t){var e,n=t.children;return(e=n.length)?n[e-1]:t.t}function Rr(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function Dr(t){for(var e,n=0,i=0,r=t.children,o=r.length;--o>=0;)e=r[o],e.z+=n,e.m+=n,n+=e.s+(i+=e.c)}function Ir(t,e,n){return t.a.parent===e.parent?t.a:n}function jr(t){return 1+la.max(t,function(t){return t.y})}function Vr(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hr(t){var e=t.children;return e&&e.length?Hr(e[0]):t}function Fr(t){var e,n=t.children;return n&&(e=n.length)?Fr(n[e-1]):t}function zr(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function qr(t,e){var n=t.x+e[3],i=t.y+e[0],r=t.dx-e[1]-e[3],o=t.dy-e[0]-e[2];return r<0&&(n+=r/2,r=0),o<0&&(i+=o/2,o=0),{x:n,y:i,dx:r,dy:o}}function Gr(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function Br(t){return t.rangeExtent?t.rangeExtent():Gr(t.range())}function $r(t,e,n,i){var r=n(t[0],t[1]),o=i(e[0],e[1]);return function(t){return o(r(t))}}function Wr(t,e){var n,i=0,r=t.length-1,o=t[i],a=t[r];return a<o&&(n=i,i=r,r=n,n=o,o=a,a=n),t[i]=e.floor(o),t[r]=e.ceil(a),t}function Ur(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:wl}function Xr(t,e,n,i){var r=[],o=[],a=0,s=Math.min(t.length,e.length)-1;for(t[s]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<=s;)r.push(n(t[a-1],t[a])),o.push(i(e[a-1],e[a]));return function(e){var n=la.bisect(t,e,1,s)-1;return o[n](r[n](e))}}function Yr(t,e,n,i){function r(){var r=Math.min(t.length,e.length)>2?Xr:$r,l=i?Yi:Xi;return a=r(t,e,l,n),s=r(e,t,l,xi),o}function o(t){return a(t)}var a,s;return o.invert=function(t){return s(t)},o.domain=function(e){return arguments.length?(t=e.map(Number),r()):t},o.range=function(t){return arguments.length?(e=t,r()):e},o.rangeRound=function(t){return o.range(t).interpolate(ji)},o.clamp=function(t){return arguments.length?(i=t,r()):i},o.interpolate=function(t){return arguments.length?(n=t,r()):n},o.ticks=function(e){return Jr(t,e)},o.tickFormat=function(e,n){return to(t,e,n)},o.nice=function(e){return Zr(t,e),r()},o.copy=function(){return Yr(t,e,n,i)},r()}function Qr(t,e){return la.rebind(t,e,"range","rangeRound","interpolate","clamp")}function Zr(t,e){return Wr(t,Ur(Kr(t,e)[2])),Wr(t,Ur(Kr(t,e)[2])),t}function Kr(t,e){null==e&&(e=10);var n=Gr(t),i=n[1]-n[0],r=Math.pow(10,Math.floor(Math.log(i/e)/Math.LN10)),o=e/i*r;return o<=.15?r*=10:o<=.35?r*=5:o<=.75&&(r*=2),n[0]=Math.ceil(n[0]/r)*r,n[1]=Math.floor(n[1]/r)*r+.5*r,n[2]=r,n}function Jr(t,e){return la.range.apply(la,Kr(t,e))}function to(t,e,n){var i=Kr(t,e);if(n){var r=us.exec(n);if(r.shift(),"s"===r[8]){var o=la.formatPrefix(Math.max(ya(i[0]),ya(i[1])));return r[7]||(r[7]="."+eo(o.scale(i[2]))),r[8]="f",n=la.format(r.join("")),function(t){return n(o.scale(t))+o.symbol}}r[7]||(r[7]="."+no(r[8],i)),n=r.join("")}else n=",."+eo(i[2])+"f";return la.format(n)}function eo(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function no(t,e){var n=eo(e[2]);return t in Sl?Math.abs(n-eo(Math.max(ya(e[0]),ya(e[1]))))+ +("e"!==t):n-2*("%"===t)}function io(t,e,n,i){function r(t){return(n?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function o(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function a(e){return t(r(e))}return a.invert=function(e){return o(t.invert(e))},a.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((i=e.map(Number)).map(r)),a):i},a.base=function(n){return arguments.length?(e=+n,t.domain(i.map(r)),a):e},a.nice=function(){var e=Wr(i.map(r),n?Math:Tl);return t.domain(e),i=e.map(o),a},a.ticks=function(){var t=Gr(i),a=[],s=t[0],l=t[1],c=Math.floor(r(s)),u=Math.ceil(r(l)),h=e%1?2:e;if(isFinite(u-c)){if(n){for(;c<u;c++)for(var d=1;d<h;d++)a.push(o(c)*d);a.push(o(c))}else for(a.push(o(c));c++<u;)for(var d=h-1;d>0;d--)a.push(o(c)*d);for(c=0;a[c]<s;c++);for(u=a.length;a[u-1]>l;u--);a=a.slice(c,u)}return a},a.tickFormat=function(t,n){if(!arguments.length)return Cl;arguments.length<2?n=Cl:"function"!=typeof n&&(n=la.format(n));var i=Math.max(1,e*t/a.ticks().length);return function(t){var a=t/o(Math.round(r(t)));return a*e<e-.5&&(a*=e),a<=i?n(t):""}},a.copy=function(){return io(t.copy(),e,n,i)},Qr(a,t)}function ro(t,e,n){function i(e){return t(r(e))}var r=oo(e),o=oo(1/e);return i.invert=function(e){return o(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(r)),i):n},i.ticks=function(t){return Jr(n,t)},i.tickFormat=function(t,e){return to(n,t,e)},i.nice=function(t){return i.domain(Zr(n,t))},i.exponent=function(a){return arguments.length?(r=oo(e=a),o=oo(1/e),t.domain(n.map(r)),i):e},i.copy=function(){return ro(t.copy(),e,n)},Qr(i,t)}function oo(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ao(t,e){function n(n){return o[((r.get(n)||("range"===e.t?r.set(n,t.push(n)):NaN))-1)%o.length]}function i(e,n){return la.range(t.length).map(function(t){return e+n*t})}var r,o,a;return n.domain=function(i){if(!arguments.length)return t;t=[],r=new c;for(var o,a=-1,s=i.length;++a<s;)r.has(o=i[a])||r.set(o,t.push(o));return n[e.t].apply(n,e.a)},n.range=function(t){return arguments.length?(o=t,a=0,e={t:"range",a:arguments},n):o},n.rangePoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=(l+c)/2,0):(c-l)/(t.length-1+s);return o=i(l+u*s/2,u),a=0,e={t:"rangePoints",a:arguments},n},n.rangeRoundPoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(t.length-1+s)|0;return o=i(l+Math.round(u*s/2+(c-l-(t.length-1+s)*u)/2),u),a=0,e={t:"rangeRoundPoints",a:arguments},n},n.rangeBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=(h-u)/(t.length-s+2*l);return o=i(u+d*l,d),c&&o.reverse(),a=d*(1-s),e={t:"rangeBands",a:arguments},n},n.rangeRoundBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=Math.floor((h-u)/(t.length-s+2*l));return o=i(u+Math.round((h-u-(t.length-s)*d)/2),d),c&&o.reverse(),a=Math.round(d*(1-s)),e={t:"rangeRoundBands",a:arguments},n},n.rangeBand=function(){return a},n.rangeExtent=function(){return Gr(e.a[0])},n.copy=function(){return ao(t,e)},n.domain(t)}function so(t,e){function o(){var n=0,i=e.length;for(s=[];++n<i;)s[n-1]=la.quantile(t,n/i);return a}function a(t){if(!isNaN(t=+t))return e[la.bisect(s,t)]}var s;return a.domain=function(e){return arguments.length?(t=e.map(i).filter(r).sort(n),o()):t},a.range=function(t){return arguments.length?(e=t,o()):e},a.quantiles=function(){return s},a.invertExtent=function(n){return n=e.indexOf(n),n<0?[NaN,NaN]:[n>0?s[n-1]:t[0],n<s.length?s[n]:t[t.length-1]]},a.copy=function(){return so(t,e)},o()}function lo(t,e,n){function i(e){return n[Math.max(0,Math.min(a,Math.floor(o*(e-t))))]}function r(){return o=n.length/(e-t),a=n.length-1,i}var o,a;return i.domain=function(n){return arguments.length?(t=+n[0],e=+n[n.length-1],r()):[t,e]},i.range=function(t){return arguments.length?(n=t,r()):n},i.invertExtent=function(e){return e=n.indexOf(e),e=e<0?NaN:e/o+t,[e,e+1/o]},i.copy=function(){return lo(t,e,n)},r()}function co(t,e){function n(n){if(n<=n)return e[la.bisect(t,n)]}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return co(t,e)},n}function uo(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return Jr(t,e)},e.tickFormat=function(e,n){return to(t,e,n)},e.copy=function(){return uo(t)},e}function ho(){return 0}function fo(t){return t.innerRadius}function po(t){return t.outerRadius}function go(t){return t.startAngle}function mo(t){return t.endAngle}function vo(t){return t&&t.padAngle}function yo(t,e,n,i){return(t-n)*e-(e-i)*t>0?0:1}function xo(t,e,n,i,r){var o=t[0]-e[0],a=t[1]-e[1],s=(r?i:-i)/Math.sqrt(o*o+a*a),l=s*a,c=-s*o,u=t[0]+l,h=t[1]+c,d=e[0]+l,f=e[1]+c,p=(u+d)/2,g=(h+f)/2,m=d-u,v=f-h,y=m*m+v*v,x=n-i,b=u*f-d*h,_=(v<0?-1:1)*Math.sqrt(Math.max(0,x*x*y-b*b)),w=(b*v-m*_)/y,S=(-b*m-v*_)/y,C=(b*v+m*_)/y,T=(-b*m+v*_)/y,k=w-p,A=S-g,M=C-p,L=T-g;return k*k+A*A>M*M+L*L&&(w=C,S=T),[[w-l,S-c],[w*n/x,S*n/x]]}function bo(t){function e(e){function a(){c.push("M",o(t(u),s))}for(var l,c=[],u=[],h=-1,d=e.length,f=kt(n),p=kt(i);++h<d;)r.call(this,l=e[h],h)?u.push([+f.call(this,l,h),+p.call(this,l,h)]):u.length&&(a(),u=[]);return u.length&&a(),c.length?c.join(""):null}var n=Ln,i=En,r=Le,o=_o,a=o.key,s=.7;return e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e.defined=function(t){return arguments.length?(r=t,e):r},e.interpolate=function(t){return arguments.length?(a="function"==typeof t?o=t:(o=Pl.get(t)||_o).key,e):a},e.tension=function(t){return arguments.length?(s=t,e):s},e}function _o(t){return t.length>1?t.join("L"):t+"Z"}function wo(t){return t.join("L")+"Z"}function So(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i[0]+(i=t[e])[0])/2,"V",i[1]);return n>1&&r.push("H",i[0]),r.join("")}function Co(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("V",(i=t[e])[1],"H",i[0]);return r.join("")}function To(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i=t[e])[0],"V",i[1]);return r.join("")}function ko(t,e){return t.length<4?_o(t):t[1]+Lo(t.slice(1,-1),Eo(t,e))}function Ao(t,e){return t.length<3?wo(t):t[0]+Lo((t.push(t[0]),t),Eo([t[t.length-2]].concat(t,[t[1]]),e))}function Mo(t,e){return t.length<3?_o(t):t[0]+Lo(t,Eo(t,e))}function Lo(t,e){if(e.length<1||t.length!=e.length&&t.length!=e.length+2)return _o(t);var n=t.length!=e.length,i="",r=t[0],o=t[1],a=e[0],s=a,l=1;if(n&&(i+="Q"+(o[0]-2*a[0]/3)+","+(o[1]-2*a[1]/3)+","+o[0]+","+o[1],r=t[1],l=2),e.length>1){s=e[1],o=t[l],l++,i+="C"+(r[0]+a[0])+","+(r[1]+a[1])+","+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1];for(var c=2;c<e.length;c++,l++)o=t[l],s=e[c],i+="S"+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1]}if(n){var u=t[l];i+="Q"+(o[0]+2*s[0]/3)+","+(o[1]+2*s[1]/3)+","+u[0]+","+u[1]}return i}function Eo(t,e){for(var n,i=[],r=(1-e)/2,o=t[0],a=t[1],s=1,l=t.length;++s<l;)n=o,o=a,a=t[s],i.push([r*(a[0]-n[0]),r*(a[1]-n[1])]);return i}function Po(t){if(t.length<3)return _o(t);var e=1,n=t.length,i=t[0],r=i[0],o=i[1],a=[r,r,r,(i=t[1])[0]],s=[o,o,o,i[1]],l=[r,",",o,"L",Do(Rl,a),",",Do(Rl,s)];for(t.push(t[n-1]);++e<=n;)i=t[e],a.shift(),a.push(i[0]),s.shift(),s.push(i[1]),Io(l,a,s);return t.pop(),l.push("L",i),l.join("")}function No(t){if(t.length<4)return _o(t);for(var e,n=[],i=-1,r=t.length,o=[0],a=[0];++i<3;)e=t[i],o.push(e[0]),a.push(e[1]);for(n.push(Do(Rl,o)+","+Do(Rl,a)),--i;++i<r;)e=t[i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Io(n,o,a);return n.join("")}function Oo(t){for(var e,n,i=-1,r=t.length,o=r+4,a=[],s=[];++i<4;)n=t[i%r],a.push(n[0]),s.push(n[1]);for(e=[Do(Rl,a),",",Do(Rl,s)],--i;++i<o;)n=t[i%r],a.shift(),a.push(n[0]),s.shift(),s.push(n[1]),Io(e,a,s);return e.join("")}function Ro(t,e){var n=t.length-1;if(n)for(var i,r,o=t[0][0],a=t[0][1],s=t[n][0]-o,l=t[n][1]-a,c=-1;++c<=n;)i=t[c],r=c/n,i[0]=e*i[0]+(1-e)*(o+r*s),i[1]=e*i[1]+(1-e)*(a+r*l);return Po(t)}function Do(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Io(t,e,n){t.push("C",Do(Nl,e),",",Do(Nl,n),",",Do(Ol,e),",",Do(Ol,n),",",Do(Rl,e),",",Do(Rl,n))}function jo(t,e){return(e[1]-t[1])/(e[0]-t[0])}function Vo(t){for(var e=0,n=t.length-1,i=[],r=t[0],o=t[1],a=i[0]=jo(r,o);++e<n;)i[e]=(a+(a=jo(r=o,o=t[e+1])))/2;return i[e]=a,i}function Ho(t){for(var e,n,i,r,o=[],a=Vo(t),s=-1,l=t.length-1;++s<l;)e=jo(t[s],t[s+1]),ya(e)<Da?a[s]=a[s+1]=0:(n=a[s]/e,i=a[s+1]/e,r=n*n+i*i,r>9&&(r=3*e/Math.sqrt(r),a[s]=r*n,a[s+1]=r*i));for(s=-1;++s<=l;)r=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+a[s]*a[s])),o.push([r||0,a[s]*r||0]);return o}function Fo(t){return t.length<3?_o(t):t[0]+Lo(t,Ho(t))}function zo(t){for(var e,n,i,r=-1,o=t.length;++r<o;)e=t[r],n=e[0],i=e[1]-Fa,e[0]=n*Math.cos(i),e[1]=n*Math.sin(i);return t}function qo(t){function e(e){function l(){g.push("M",s(t(v),h),u,c(t(m.reverse()),h),"Z")}for(var d,f,p,g=[],m=[],v=[],y=-1,x=e.length,b=kt(n),_=kt(r),w=n===i?function(){return f}:kt(i),S=r===o?function(){return p}:kt(o);++y<x;)a.call(this,d=e[y],y)?(m.push([f=+b.call(this,d,y),p=+_.call(this,d,y)]),v.push([+w.call(this,d,y),+S.call(this,d,y)])):m.length&&(l(),m=[],v=[]);return m.length&&l(),g.length?g.join(""):null}var n=Ln,i=Ln,r=0,o=En,a=Le,s=_o,l=s.key,c=s,u="L",h=.7;return e.x=function(t){return arguments.length?(n=i=t,e):i},e.x0=function(t){return arguments.length?(n=t,e):n},e.x1=function(t){return arguments.length?(i=t,e):i},e.y=function(t){return arguments.length?(r=o=t,e):o},e.y0=function(t){return arguments.length?(r=t,e):r},e.y1=function(t){return arguments.length?(o=t,e):o},e.defined=function(t){return arguments.length?(a=t,e):a},e.interpolate=function(t){return arguments.length?(l="function"==typeof t?s=t:(s=Pl.get(t)||_o).key,c=s.reverse||s,u=s.closed?"M":"L",e):l},e.tension=function(t){return arguments.length?(h=t,e):h},e}function Go(t){return t.radius}function Bo(t){return[t.x,t.y]}function $o(t){return function(){var e=t.apply(this,arguments),n=e[0],i=e[1]-Fa;return[n*Math.cos(i),n*Math.sin(i)]}}function Wo(){return 64}function Uo(){return"circle"}function Xo(t){var e=Math.sqrt(t/ja);return"M0,"+e+"A"+e+","+e+" 0 1,1 0,"+-e+"A"+e+","+e+" 0 1,1 0,"+e+"Z"}function Yo(t){return function(){var e,n,i;(e=this[t])&&(i=e[n=e.active])&&(i.timer.c=null,i.timer.t=NaN,--e.count?delete e[n]:delete this[t],e.active+=.5,i.event&&i.event.interrupt.call(this,this.__data__,i.index))}}function Qo(t,e,n){return Sa(t,zl),t.namespace=e,t.id=n,t}function Zo(t,e,n,i){var r=t.id,o=t.namespace;return G(t,"function"==typeof n?function(t,a,s){t[o][r].tween.set(e,i(n.call(t,t.__data__,a,s)))}:(n=i(n),function(t){t[o][r].tween.set(e,n)}))}function Ko(t){return null==t&&(t=""),function(){this.textContent=t}}function Jo(t){return null==t?"__transition__":"__transition_"+t+"__"}function ta(t,e,n,i,r){function o(t){var e=g.delay;return u.t=e+l,e<=t?a(t-e):void(u.c=a)}function a(n){var r=p.active,o=p[r];o&&(o.timer.c=null,o.timer.t=NaN,--p.count,delete p[r],o.event&&o.event.interrupt.call(t,t.__data__,o.index));for(var a in p)if(+a<i){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}u.c=s,Pt(function(){return u.c&&s(n||1)&&(u.c=null,u.t=NaN),1},0,l),p.active=i,g.event&&g.event.start.call(t,t.__data__,e),f=[],g.tween.forEach(function(n,i){(i=i.call(t,t.__data__,e))&&f.push(i)}),d=g.ease,h=g.duration}function s(r){for(var o=r/h,a=d(o),s=f.length;s>0;)f[--s].call(t,a);if(o>=1)return g.event&&g.event.end.call(t,t.__data__,e),--p.count?delete p[i]:delete t[n],1}var l,u,h,d,f,p=t[n]||(t[n]={active:0,count:0}),g=p[i];g||(l=r.time,u=Pt(o,0,l),g=p[i]={tween:new c,time:l,timer:u,delay:r.delay,duration:r.duration,ease:r.ease,index:e},r=null,++p.count)}function ea(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate("+(isFinite(i)?i:n(t))+",0)"})}function na(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate(0,"+(isFinite(i)?i:n(t))+")"})}function ia(t){return t.toISOString()}function ra(t,e,n){function i(e){return t(e)}function r(t,n){var i=t[1]-t[0],r=i/n,o=la.bisect(Ql,r);return o==Ql.length?[e.year,Kr(t.map(function(t){return t/31536e6}),n)[2]]:o?e[r/Ql[o-1]<Ql[o]/r?o-1:o]:[Jl,Kr(t,n)[2]]}return i.invert=function(e){return oa(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain(e),i):t.domain().map(oa)},i.nice=function(t,e){function n(n){return!isNaN(n)&&!t.range(n,oa(+n+1),e).length}var o=i.domain(),a=Gr(o),s=null==t?r(a,10):"number"==typeof t&&r(a,t);return s&&(t=s[0],e=s[1]),i.domain(Wr(o,e>1?{floor:function(e){for(;n(e=t.floor(e));)e=oa(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=oa(+e+1);return e}}:t))},i.ticks=function(t,e){var n=Gr(i.domain()),o=null==t?r(n,10):"number"==typeof t?r(n,t):!t.range&&[{range:t},e];return o&&(t=o[0],e=o[1]),t.range(n[0],oa(+n[1]+1),e<1?1:e)},i.tickFormat=function(){return n},i.copy=function(){return ra(t.copy(),e,n)},Qr(i,t)}function oa(t){return new Date(t)}function aa(t){return JSON.parse(t.responseText)}function sa(t){var e=ha.createRange();return e.selectNode(ha.body),e.createContextualFragment(t.responseText)}var la={version:"3.5.17"},ca=[].slice,ua=function(t){return ca.call(t)},ha=this.document;if(ha)try{ua(ha.documentElement.childNodes)[0].nodeType}catch(t){ua=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),ha)try{ha.createElement("DIV").style.setProperty("opacity",0,"")}catch(t){var da=this.Element.prototype,fa=da.setAttribute,pa=da.setAttributeNS,ga=this.CSSStyleDeclaration.prototype,ma=ga.setProperty;da.setAttribute=function(t,e){fa.call(this,t,e+"")},da.setAttributeNS=function(t,e,n){pa.call(this,t,e,n+"")},ga.setProperty=function(t,e,n){ma.call(this,t,e+"",n)}}la.ascending=n,la.descending=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},la.min=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&n>i&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&n>i&&(n=i)}return n},la.max=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&i>n&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&i>n&&(n=i)}return n},la.extent=function(t,e){var n,i,r,o=-1,a=t.length;if(1===arguments.length){for(;++o<a;)if(null!=(i=t[o])&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=t[o])&&(n>i&&(n=i),r<i&&(r=i))}else{for(;++o<a;)if(null!=(i=e.call(t,t[o],o))&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=e.call(t,t[o],o))&&(n>i&&(n=i),r<i&&(r=i))}return[n,r]},la.sum=function(t,e){var n,i=0,o=t.length,a=-1;if(1===arguments.length)for(;++a<o;)r(n=+t[a])&&(i+=n);else for(;++a<o;)r(n=+e.call(t,t[a],a))&&(i+=n);return i},la.mean=function(t,e){var n,o=0,a=t.length,s=-1,l=a;if(1===arguments.length)for(;++s<a;)r(n=i(t[s]))?o+=n:--l;else for(;++s<a;)r(n=i(e.call(t,t[s],s)))?o+=n:--l;if(l)return o/l},la.quantile=function(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r},la.median=function(t,e){var o,a=[],s=t.length,l=-1;if(1===arguments.length)for(;++l<s;)r(o=i(t[l]))&&a.push(o);else for(;++l<s;)r(o=i(e.call(t,t[l],l)))&&a.push(o);if(a.length)return la.quantile(a.sort(n),.5)},la.variance=function(t,e){var n,o,a=t.length,s=0,l=0,c=-1,u=0;if(1===arguments.length)for(;++c<a;)r(n=i(t[c]))&&(o=n-s,s+=o/++u,l+=o*(n-s));else for(;++c<a;)r(n=i(e.call(t,t[c],c)))&&(o=n-s,s+=o/++u,l+=o*(n-s));if(u>1)return l/(u-1)},la.deviation=function(){var t=la.variance.apply(this,arguments);return t?Math.sqrt(t):t};var va=o(n);la.bisectLeft=va.left,la.bisect=la.bisectRight=va.right,la.bisector=function(t){return o(1===t.length?function(e,i){return n(t(e),i)}:t)},la.shuffle=function(t,e,n){(o=arguments.length)<3&&(n=t.length,o<2&&(e=0));for(var i,r,o=n-e;o;)r=Math.random()*o--|0,i=t[o+e],t[o+e]=t[r+e],t[r+e]=i;return t},la.permute=function(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i},la.pairs=function(t){for(var e,n=0,i=t.length-1,r=t[0],o=new Array(i<0?0:i);n<i;)o[n]=[e=r,r=t[++n]];return o},la.transpose=function(t){if(!(r=t.length))return[];for(var e=-1,n=la.min(t,a),i=new Array(n);++e<n;)for(var r,o=-1,s=i[e]=new Array(r);++o<r;)s[o]=t[o][e];return i},la.zip=function(){return la.transpose(arguments)},la.keys=function(t){var e=[];for(var n in t)e.push(n);return e},la.values=function(t){var e=[];for(var n in t)e.push(t[n]);return e},la.entries=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e},la.merge=function(t){for(var e,n,i,r=t.length,o=-1,a=0;++o<r;)a+=t[o].length;for(n=new Array(a);--r>=0;)for(i=t[r],e=i.length;--e>=0;)n[--a]=i[e];return n};var ya=Math.abs;la.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var i,r=[],o=s(ya(n)),a=-1;if(t*=o,e*=o,n*=o,n<0)for(;(i=t+n*++a)>e;)r.push(i/o);else for(;(i=t+n*++a)<e;)r.push(i/o);return r},la.map=function(t,e){var n=new c;if(t instanceof c)t.forEach(function(t,e){n.set(t,e)});else if(Array.isArray(t)){var i,r=-1,o=t.length;if(1===arguments.length)for(;++r<o;)n.set(r,t[r]);else for(;++r<o;)n.set(e.call(t,i=t[r],r),i)}else for(var a in t)n.set(a,t[a]);return n};var xa="__proto__",ba="\0";l(c,{has:d,get:function(t){return this._[u(t)]},set:function(t,e){return this._[u(t)]=e},remove:f,keys:p,values:function(){var t=[];for(var e in this._)t.push(this._[e]);return t},entries:function(){var t=[];for(var e in this._)t.push({key:h(e),value:this._[e]});return t},size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e),this._[e])}}),la.nest=function(){function t(e,a,s){if(s>=o.length)return i?i.call(r,a):n?a.sort(n):a;for(var l,u,h,d,f=-1,p=a.length,g=o[s++],m=new c;++f<p;)(d=m.get(l=g(u=a[f])))?d.push(u):m.set(l,[u]);return e?(u=e(),h=function(n,i){u.set(n,t(e,i,s))}):(u={},h=function(n,i){u[n]=t(e,i,s)}),m.forEach(h),u}function e(t,n){if(n>=o.length)return t;var i=[],r=a[n++];return t.forEach(function(t,r){i.push({key:t,values:e(r,n)})}),r?i.sort(function(t,e){return r(t.key,e.key)}):i}var n,i,r={},o=[],a=[];return r.map=function(e,n){return t(n,e,0)},r.entries=function(n){return e(t(la.map,n,0),0)},r.key=function(t){return o.push(t),r},r.sortKeys=function(t){return a[o.length-1]=t,r},r.sortValues=function(t){return n=t,r},r.rollup=function(t){return i=t,r},r},la.set=function(t){var e=new v;if(t)for(var n=0,i=t.length;n<i;++n)e.add(t[n]);return e},l(v,{has:d,
-add:function(t){return this._[u(t+="")]=!0,t},remove:f,values:p,size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e))}}),la.behavior={},la.rebind=function(t,e){for(var n,i=1,r=arguments.length;++i<r;)t[n=arguments[i]]=x(t,e,e[n]);return t};var _a=["webkit","ms","moz","Moz","o","O"];la.dispatch=function(){for(var t=new w,e=-1,n=arguments.length;++e<n;)t[arguments[e]]=S(t);return t},w.prototype.on=function(t,e){var n=t.indexOf("."),i="";if(n>=0&&(i=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(i):this[t].on(i,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(i,null);return this}},la.event=null,la.requote=function(t){return t.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Ca=function(t,e){return e.querySelector(t)},Ta=function(t,e){return e.querySelectorAll(t)},ka=function(t,e){var n=t.matches||t[b(t,"matchesSelector")];return(ka=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Ca=function(t,e){return Sizzle(t,e)[0]||null},Ta=Sizzle,ka=Sizzle.matchesSelector),la.selection=function(){return la.select(ha.documentElement)};var Aa=la.selection.prototype=[];Aa.select=function(t){var e,n,i,r,o=[];t=M(t);for(var a=-1,s=this.length;++a<s;){o.push(e=[]),e.parentNode=(i=this[a]).parentNode;for(var l=-1,c=i.length;++l<c;)(r=i[l])?(e.push(n=t.call(r,r.__data__,l,a)),n&&"__data__"in r&&(n.__data__=r.__data__)):e.push(null)}return A(o)},Aa.selectAll=function(t){var e,n,i=[];t=L(t);for(var r=-1,o=this.length;++r<o;)for(var a=this[r],s=-1,l=a.length;++s<l;)(n=a[s])&&(i.push(e=ua(t.call(n,n.__data__,s,r))),e.parentNode=n);return A(i)};var Ma="http://www.w3.org/1999/xhtml",La={svg:"http://www.w3.org/2000/svg",xhtml:Ma,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};la.ns={prefix:La,qualify:function(t){var e=t.indexOf(":"),n=t;return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),La.hasOwnProperty(n)?{space:La[n],local:t}:t}},Aa.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=la.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(E(e,t[e]));return this}return this.each(E(t,e))},Aa.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),i=(t=O(t)).length,r=-1;if(e=n.classList){for(;++r<i;)if(!e.contains(t[r]))return!1}else for(e=n.getAttribute("class");++r<i;)if(!N(t[r]).test(e))return!1;return!0}for(e in t)this.each(R(e,t[e]));return this}return this.each(R(t,e))},Aa.style=function(t,n,i){var r=arguments.length;if(r<3){if("string"!=typeof t){r<2&&(n="");for(i in t)this.each(I(i,t[i],n));return this}if(r<2){var o=this.node();return e(o).getComputedStyle(o,null).getPropertyValue(t)}i=""}return this.each(I(t,n,i))},Aa.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(j(e,t[e]));return this}return this.each(j(t,e))},Aa.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Aa.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Aa.append=function(t){return t=V(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Aa.insert=function(t,e){return t=V(t),e=M(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(H)},Aa.data=function(t,e){function n(t,n){var i,r,o,a=t.length,h=n.length,d=Math.min(a,h),f=new Array(h),p=new Array(h),g=new Array(a);if(e){var m,v=new c,y=new Array(a);for(i=-1;++i<a;)(r=t[i])&&(v.has(m=e.call(r,r.__data__,i))?g[i]=r:v.set(m,r),y[i]=m);for(i=-1;++i<h;)(r=v.get(m=e.call(n,o=n[i],i)))?r!==!0&&(f[i]=r,r.__data__=o):p[i]=F(o),v.set(m,!0);for(i=-1;++i<a;)i in y&&v.get(y[i])!==!0&&(g[i]=t[i])}else{for(i=-1;++i<d;)r=t[i],o=n[i],r?(r.__data__=o,f[i]=r):p[i]=F(o);for(;i<h;++i)p[i]=F(n[i]);for(;i<a;++i)g[i]=t[i]}p.update=f,p.parentNode=f.parentNode=g.parentNode=t.parentNode,s.push(p),l.push(f),u.push(g)}var i,r,o=-1,a=this.length;if(!arguments.length){for(t=new Array(a=(i=this[0]).length);++o<a;)(r=i[o])&&(t[o]=r.__data__);return t}var s=B([]),l=A([]),u=A([]);if("function"==typeof t)for(;++o<a;)n(i=this[o],t.call(i,i.parentNode.__data__,o));else for(;++o<a;)n(i=this[o],t);return l.enter=function(){return s},l.exit=function(){return u},l},Aa.datum=function(t){return arguments.length?this.property("__data__",t):this.property("__data__")},Aa.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]),e.parentNode=(n=this[o]).parentNode;for(var s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return A(r)},Aa.order=function(){for(var t=-1,e=this.length;++t<e;)for(var n,i=this[t],r=i.length-1,o=i[r];--r>=0;)(n=i[r])&&(o&&o!==n.nextSibling&&o.parentNode.insertBefore(n,o),o=n);return this},Aa.sort=function(t){t=q.apply(this,arguments);for(var e=-1,n=this.length;++e<n;)this[e].sort(t);return this.order()},Aa.each=function(t){return G(this,function(e,n,i){t.call(e,e.__data__,n,i)})},Aa.call=function(t){var e=ua(arguments);return t.apply(e[0]=this,e),this},Aa.empty=function(){return!this.node()},Aa.node=function(){for(var t=0,e=this.length;t<e;t++)for(var n=this[t],i=0,r=n.length;i<r;i++){var o=n[i];if(o)return o}return null},Aa.size=function(){var t=0;return G(this,function(){++t}),t};var Ea=[];la.selection.enter=B,la.selection.enter.prototype=Ea,Ea.append=Aa.append,Ea.empty=Aa.empty,Ea.node=Aa.node,Ea.call=Aa.call,Ea.size=Aa.size,Ea.select=function(t){for(var e,n,i,r,o,a=[],s=-1,l=this.length;++s<l;){i=(r=this[s]).update,a.push(e=[]),e.parentNode=r.parentNode;for(var c=-1,u=r.length;++c<u;)(o=r[c])?(e.push(i[c]=n=t.call(r.parentNode,o.__data__,c,s)),n.__data__=o.__data__):e.push(null)}return A(a)},Ea.insert=function(t,e){return arguments.length<2&&(e=$(this)),Aa.insert.call(this,t,e)},la.select=function(e){var n;return"string"==typeof e?(n=[Ca(e,ha)],n.parentNode=ha.documentElement):(n=[e],n.parentNode=t(e)),A([n])},la.selectAll=function(t){var e;return"string"==typeof t?(e=ua(Ta(t,ha)),e.parentNode=ha.documentElement):(e=ua(t),e.parentNode=null),A([e])},Aa.on=function(t,e,n){var i=arguments.length;if(i<3){if("string"!=typeof t){i<2&&(e=!1);for(n in t)this.each(W(n,t[n],e));return this}if(i<2)return(i=this.node()["__on"+t])&&i._;n=!1}return this.each(W(t,e,n))};var Pa=la.map({mouseenter:"mouseover",mouseleave:"mouseout"});ha&&Pa.forEach(function(t){"on"+t in ha&&Pa.remove(t)});var Na,Oa=0;la.mouse=function(t){return Q(t,T())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;la.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=T().changedTouches),e)for(var i,r=0,o=e.length;r<o;++r)if((i=e[r]).identifier===n)return Q(t,i)},la.behavior.drag=function(){function t(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function n(t,e,n,o,a){return function(){function s(){var t,n,i=e(d,g);i&&(t=i[0]-x[0],n=i[1]-x[1],p|=t|n,x=i,f({type:"drag",x:i[0]+c[0],y:i[1]+c[1],dx:t,dy:n}))}function l(){e(d,g)&&(v.on(o+m,null).on(a+m,null),y(p),f({type:"dragend"}))}var c,u=this,h=la.event.target.correspondingElement||la.event.target,d=u.parentNode,f=i.of(u,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=la.select(n(h)).on(o+m,s).on(a+m,l),y=Y(h),x=e(d,g);r?(c=r.apply(u,arguments),c=[c.x-x[0],c.y-x[1]]):c=[0,0],f({type:"dragstart"})}}var i=k(t,"drag","dragstart","dragend"),r=null,o=n(_,la.mouse,e,"mousemove","mouseup"),a=n(Z,la.touch,y,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},la.rebind(t,i,"on")},la.touches=function(t,e){return arguments.length<2&&(e=T().touches),e?ua(e).map(function(e){var n=Q(t,e);return n.identifier=e.identifier,n}):[]};var Da=1e-6,Ia=Da*Da,ja=Math.PI,Va=2*ja,Ha=Va-Da,Fa=ja/2,za=ja/180,qa=180/ja,Ga=Math.SQRT2,Ba=2,$a=4;la.interpolateZoom=function(t,e){var n,i,r=t[0],o=t[1],a=t[2],s=e[0],l=e[1],c=e[2],u=s-r,h=l-o,d=u*u+h*h;if(d<Ia)i=Math.log(c/a)/Ga,n=function(t){return[r+t*u,o+t*h,a*Math.exp(Ga*t*i)]};else{var f=Math.sqrt(d),p=(c*c-a*a+$a*d)/(2*a*Ba*f),g=(c*c-a*a-$a*d)/(2*c*Ba*f),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);i=(v-m)/Ga,n=function(t){var e=t*i,n=it(m),s=a/(Ba*f)*(n*rt(Ga*e+m)-nt(m));return[r+s*u,o+s*h,a*n/it(Ga*e+m)]}}return n.duration=1e3*i,n},la.behavior.zoom=function(){function t(t){t.on(P,h).on(Ua+".zoom",f).on("dblclick.zoom",p).on(R,d)}function n(t){return[(t[0]-T.x)/T.k,(t[1]-T.y)/T.k]}function i(t){return[t[0]*T.k+T.x,t[1]*T.k+T.y]}function r(t){T.k=Math.max(M[0],Math.min(M[1],t))}function o(t,e){e=i(e),T.x+=t[0]-e[0],T.y+=t[1]-e[1]}function a(e,n,i,a){e.__chart__={x:T.x,y:T.y,k:T.k},r(Math.pow(2,a)),o(m=n,i),e=la.select(e),L>0&&(e=e.transition().duration(L)),e.call(t.event)}function s(){_&&_.domain(b.range().map(function(t){return(t-T.x)/T.k}).map(b.invert)),S&&S.domain(w.range().map(function(t){return(t-T.y)/T.k}).map(w.invert))}function l(t){E++||t({type:"zoomstart"})}function c(t){s(),t({type:"zoom",scale:T.k,translate:[T.x,T.y]})}function u(t){--E||(t({type:"zoomend"}),m=null)}function h(){function t(){s=1,o(la.mouse(r),d),c(a)}function i(){h.on(N,null).on(O,null),f(s),u(a)}var r=this,a=D.of(r,arguments),s=0,h=la.select(e(r)).on(N,t).on(O,i),d=n(la.mouse(r)),f=Y(r);Fl.call(r),l(a)}function d(){function t(){var t=la.touches(p);return f=T.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=n(t))}),t}function e(){var e=la.event.target;la.select(e).on(b,i).on(_,s),w.push(e);for(var n=la.event.changedTouches,r=0,o=n.length;r<o;++r)m[n[r].identifier]=null;var l=t(),c=Date.now();if(1===l.length){if(c-x<500){var u=l[0];a(p,u,m[u.identifier],Math.floor(Math.log(T.k)/Math.LN2)+1),C()}x=c}else if(l.length>1){var u=l[0],h=l[1],d=u[0]-h[0],f=u[1]-h[1];v=d*d+f*f}}function i(){var t,e,n,i,a=la.touches(p);Fl.call(p);for(var s=0,l=a.length;s<l;++s,i=null)if(n=a[s],i=m[n.identifier]){if(e)break;t=n,e=i}if(i){var u=(u=n[0]-t[0])*u+(u=n[1]-t[1])*u,h=v&&Math.sqrt(u/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+i[0])/2,(e[1]+i[1])/2],r(h*f)}x=null,o(t,e),c(g)}function s(){if(la.event.touches.length){for(var e=la.event.changedTouches,n=0,i=e.length;n<i;++n)delete m[e[n].identifier];for(var r in m)return void t()}la.selectAll(w).on(y,null),S.on(P,h).on(R,d),k(),u(g)}var f,p=this,g=D.of(p,arguments),m={},v=0,y=".zoom-"+la.event.changedTouches[0].identifier,b="touchmove"+y,_="touchend"+y,w=[],S=la.select(p),k=Y(p);e(),l(g),S.on(P,null).on(R,e)}function f(){var t=D.of(this,arguments);y?clearTimeout(y):(Fl.call(this),g=n(m=v||la.mouse(this)),l(t)),y=setTimeout(function(){y=null,u(t)},50),C(),r(Math.pow(2,.002*Wa())*T.k),o(m,g),c(t)}function p(){var t=la.mouse(this),e=Math.log(T.k)/Math.LN2;a(this,t,n(t),la.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var g,m,v,y,x,b,_,w,S,T={x:0,y:0,k:1},A=[960,500],M=Xa,L=250,E=0,P="mousedown.zoom",N="mousemove.zoom",O="mouseup.zoom",R="touchstart.zoom",D=k(t,"zoomstart","zoom","zoomend");return Ua||(Ua="onwheel"in ha?(Wa=function(){return-la.event.deltaY*(la.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ha?(Wa=function(){return la.event.wheelDelta},"mousewheel"):(Wa=function(){return-la.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=D.of(this,arguments),e=T;Vl?la.select(this).transition().each("start.zoom",function(){T=this.__chart__||{x:0,y:0,k:1},l(t)}).tween("zoom:zoom",function(){var n=A[0],i=A[1],r=m?m[0]:n/2,o=m?m[1]:i/2,a=la.interpolateZoom([(r-T.x)/T.k,(o-T.y)/T.k,n/T.k],[(r-e.x)/e.k,(o-e.y)/e.k,n/e.k]);return function(e){var i=a(e),s=n/i[2];this.__chart__=T={x:r-i[0]*s,y:o-i[1]*s,k:s},c(t)}}).each("interrupt.zoom",function(){u(t)}).each("end.zoom",function(){u(t)}):(this.__chart__=T,l(t),c(t),u(t))})},t.translate=function(e){return arguments.length?(T={x:+e[0],y:+e[1],k:T.k},s(),t):[T.x,T.y]},t.scale=function(e){return arguments.length?(T={x:T.x,y:T.y,k:null},r(+e),s(),t):T.k},t.scaleExtent=function(e){return arguments.length?(M=null==e?Xa:[+e[0],+e[1]],t):M},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(A=e&&[+e[0],+e[1]],t):A},t.duration=function(e){return arguments.length?(L=+e,t):L},t.x=function(e){return arguments.length?(_=e,b=e.copy(),T={x:0,y:0,k:1},t):_},t.y=function(e){return arguments.length?(S=e,w=e.copy(),T={x:0,y:0,k:1},t):S},la.rebind(t,D,"on")};var Wa,Ua,Xa=[0,1/0];la.color=at,at.prototype.toString=function(){return this.rgb()+""},la.hsl=st;var Ya=st.prototype=new at;Ya.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,this.l/t)},Ya.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,t*this.l)},Ya.rgb=function(){return lt(this.h,this.s,this.l)},la.hcl=ct;var Qa=ct.prototype=new at;Qa.brighter=function(t){return new ct(this.h,this.c,Math.min(100,this.l+Za*(arguments.length?t:1)))},Qa.darker=function(t){return new ct(this.h,this.c,Math.max(0,this.l-Za*(arguments.length?t:1)))},Qa.rgb=function(){return ut(this.h,this.c,this.l).rgb()},la.lab=ht;var Za=18,Ka=.95047,Ja=1,ts=1.08883,es=ht.prototype=new at;es.brighter=function(t){return new ht(Math.min(100,this.l+Za*(arguments.length?t:1)),this.a,this.b)},es.darker=function(t){return new ht(Math.max(0,this.l-Za*(arguments.length?t:1)),this.a,this.b)},es.rgb=function(){return dt(this.l,this.a,this.b)},la.rgb=vt;var ns=vt.prototype=new at;ns.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,i=this.b,r=30;return e||n||i?(e&&e<r&&(e=r),n&&n<r&&(n=r),i&&i<r&&(i=r),new vt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,i/t))):new vt(r,r,r)},ns.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new vt(t*this.r,t*this.g,t*this.b)},ns.hsl=function(){return wt(this.r,this.g,this.b)},ns.toString=function(){return"#"+bt(this.r)+bt(this.g)+bt(this.b)};var is=la.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});is.forEach(function(t,e){is.set(t,yt(e))}),la.functor=kt,la.xhr=At(y),la.dsv=function(t,e){function n(t,n,o){arguments.length<3&&(o=n,n=null);var a=Mt(t,e,null==n?i:r(n),o);return a.row=function(t){return arguments.length?a.response(null==(n=t)?i:r(t)):n},a}function i(t){return n.parse(t.responseText)}function r(t){return function(e){return n.parse(e.responseText,t)}}function o(e){return e.map(a).join(t)}function a(t){return s.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var s=new RegExp('["'+t+"\n]"),l=t.charCodeAt(0);return n.parse=function(t,e){var i;return n.parseRows(t,function(t,n){if(i)return i(t,n-1);var r=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");i=e?function(t,n){return e(r(t),n)}:r})},n.parseRows=function(t,e){function n(){if(u>=c)return a;if(r)return r=!1,o;var e=u;if(34===t.charCodeAt(e)){for(var n=e;n++<c;)if(34===t.charCodeAt(n)){if(34!==t.charCodeAt(n+1))break;++n}u=n+2;var i=t.charCodeAt(n+1);return 13===i?(r=!0,10===t.charCodeAt(n+2)&&++u):10===i&&(r=!0),t.slice(e+1,n).replace(/""/g,'"')}for(;u<c;){var i=t.charCodeAt(u++),s=1;if(10===i)r=!0;else if(13===i)r=!0,10===t.charCodeAt(u)&&(++u,++s);else if(i!==l)continue;return t.slice(e,u-s)}return t.slice(e)}for(var i,r,o={},a={},s=[],c=t.length,u=0,h=0;(i=n())!==a;){for(var d=[];i!==o&&i!==a;)d.push(i),i=n();e&&null==(d=e(d,h++))||s.push(d)}return s},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var i=new v,r=[];return e.forEach(function(t){for(var e in t)i.has(e)||r.push(i.add(e))}),[r.map(a).join(t)].concat(e.map(function(e){return r.map(function(t){return a(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(o).join("\n")},n},la.csv=la.dsv(",","text/csv"),la.tsv=la.dsv("\t","text/tab-separated-values");var rs,os,as,ss,ls=this[b(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};la.timer=function(){Pt.apply(this,arguments)},la.timer.flush=function(){Ot(),Rt()},la.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var cs=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(It);la.formatPrefix=function(t,e){var n=0;return(t=+t)&&(t<0&&(t*=-1),e&&(t=la.round(t,Dt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),cs[8+n/3]};var us=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,hs=la.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=la.round(t,Dt(t,e))).toFixed(Math.max(0,Math.min(20,Dt(t*(1+1e-15),e))))}}),ds=la.time={},fs=Date;Ht.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ps.setUTCDate.apply(this._,arguments)},setDay:function(){ps.setUTCDay.apply(this._,arguments)},setFullYear:function(){ps.setUTCFullYear.apply(this._,arguments)},setHours:function(){ps.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ps.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ps.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ps.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ps.setUTCSeconds.apply(this._,arguments)},setTime:function(){ps.setTime.apply(this._,arguments)}};var ps=Date.prototype;ds.year=Ft(function(t){return t=ds.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),ds.years=ds.year.range,ds.years.utc=ds.year.utc.range,ds.day=Ft(function(t){var e=new fs(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),ds.days=ds.day.range,ds.days.utc=ds.day.utc.range,ds.dayOfYear=function(t){var e=ds.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=ds[t]=Ft(function(t){return(t=ds.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});ds[t+"s"]=n.range,ds[t+"s"].utc=n.utc.range,ds[t+"OfYear"]=function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)}}),ds.week=ds.sunday,ds.weeks=ds.sunday.range,ds.weeks.utc=ds.sunday.utc.range,ds.weekOfYear=ds.sundayOfYear;var gs={"-":"",_:" ",0:"0"},ms=/^\s*\d+/,vs=/^%/;la.locale=function(t){return{numberFormat:jt(t),timeFormat:qt(t)}};var ys=la.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});la.format=ys.numberFormat,la.geo={},ce.prototype={s:0,t:0,add:function(t){ue(t,this.t,xs),ue(xs.s,this.s,this),this.s?this.t+=xs.t:this.s=xs.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xs=new ce;la.geo.stream=function(t,e){t&&bs.hasOwnProperty(t.type)?bs[t.type](t,e):he(t,e)};var bs={Feature:function(t,e){he(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i<r;)he(n[i].geometry,e)}},_s={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)t=n[i],e.point(t[0],t[1],t[2])},LineString:function(t,e){de(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)de(n[i],e,0)},Polygon:function(t,e){fe(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)fe(n[i],e)},GeometryCollection:function(t,e){for(var n=t.geometries,i=-1,r=n.length;++i<r;)he(n[i],e)}};la.geo.area=function(t){return ws=0,la.geo.stream(t,Cs),ws};var ws,Ss=new ce,Cs={sphere:function(){ws+=4*ja},point:_,lineStart:_,lineEnd:_,polygonStart:function(){Ss.reset(),Cs.lineStart=pe},polygonEnd:function(){var t=2*Ss;ws+=t<0?4*ja+t:t,Cs.lineStart=Cs.lineEnd=Cs.point=_}};la.geo.bounds=function(){function t(t,e){x.push(b=[u=t,d=t]),e<h&&(h=e),e>f&&(f=e)}function e(e,n){var i=ge([e*za,n*za]);if(v){var r=ve(v,i),o=[r[1],-r[0],0],a=ve(o,r);be(a),a=_e(a);var l=e-p,c=l>0?1:-1,g=a[0]*qa*c,m=ya(l)>180;if(m^(c*p<g&&g<c*e)){var y=a[1]*qa;y>f&&(f=y)}else if(g=(g+360)%360-180,m^(c*p<g&&g<c*e)){var y=-a[1]*qa;y<h&&(h=y)}else n<h&&(h=n),n>f&&(f=n);m?e<p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e):d>=u?(e<u&&(u=e),e>d&&(d=e)):e>p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e)}else t(e,n);v=i,p=e}function n(){_.point=e}function i(){b[0]=u,b[1]=d,_.point=t,v=null}function r(t,n){if(v){var i=t-p;y+=ya(i)>180?i+(i>0?360:-360):i}else g=t,m=n;Cs.point(t,n),e(t,n)}function o(){Cs.lineStart()}function a(){r(g,m),Cs.lineEnd(),ya(y)>Da&&(u=-(d=180)),b[0]=u,b[1]=d,v=null}function s(t,e){return(e-=t)<0?e+360:e}function l(t,e){return t[0]-e[0]}function c(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}var u,h,d,f,p,g,m,v,y,x,b,_={point:t,lineStart:n,lineEnd:i,polygonStart:function(){_.point=r,_.lineStart=o,_.lineEnd=a,y=0,Cs.polygonStart()},polygonEnd:function(){Cs.polygonEnd(),_.point=t,_.lineStart=n,_.lineEnd=i,Ss<0?(u=-(d=180),h=-(f=90)):y>Da?f=90:y<-Da&&(h=-90),b[0]=u,b[1]=d}};return function(t){f=d=-(u=h=1/0),x=[],la.geo.stream(t,_);var e=x.length;if(e){x.sort(l);for(var n,i=1,r=x[0],o=[r];i<e;++i)n=x[i],c(n[0],r)||c(n[1],r)?(s(r[0],n[1])>s(r[0],r[1])&&(r[1]=n[1]),s(n[0],r[1])>s(r[0],r[1])&&(r[0]=n[0])):o.push(r=n);for(var a,n,p=-(1/0),e=o.length-1,i=0,r=o[e];i<=e;r=n,++i)n=o[i],(a=s(r[1],n[0]))>p&&(p=a,u=n[0],d=r[1])}return x=b=null,u===1/0||h===1/0?[[NaN,NaN],[NaN,NaN]]:[[u,h],[d,f]]}}(),la.geo.centroid=function(t){Ts=ks=As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,Is);var e=Os,n=Rs,i=Ds,r=e*e+n*n+i*i;return r<Ia&&(e=Es,n=Ps,i=Ns,ks<Da&&(e=As,n=Ms,i=Ls),r=e*e+n*n+i*i,r<Ia)?[NaN,NaN]:[Math.atan2(n,e)*qa,et(i/Math.sqrt(r))*qa]};var Ts,ks,As,Ms,Ls,Es,Ps,Ns,Os,Rs,Ds,Is={sphere:_,point:Se,lineStart:Te,lineEnd:ke,polygonStart:function(){Is.lineStart=Ae},polygonEnd:function(){Is.lineStart=Te}},js=Oe(Le,je,He,[-ja,-ja/2]),Vs=1e9;la.geo.clipExtent=function(){var t,e,n,i,r,o,a={stream:function(t){return r&&(r.valid=!1),r=o(t),r.valid=!0,r},extent:function(s){return arguments.length?(o=Ge(t=+s[0][0],e=+s[0][1],n=+s[1][0],i=+s[1][1]),r&&(r.valid=!1,r=null),a):[[t,e],[n,i]]}};return a.extent([[0,0],[960,500]])},(la.geo.conicEqualArea=function(){return Be($e)}).raw=$e,la.geo.albers=function(){return la.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},la.geo.albersUsa=function(){function t(t){var o=t[0],a=t[1];return e=null,n(o,a),e||(i(o,a),e)||r(o,a),e}var e,n,i,r,o=la.geo.albers(),a=la.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=la.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=o.scale(),n=o.translate(),i=(t[0]-n[0])/e,r=(t[1]-n[1])/e;return(r>=.12&&r<.234&&i>=-.425&&i<-.214?a:r>=.166&&r<.234&&i>=-.214&&i<-.115?s:o).invert(t)},t.stream=function(t){var e=o.stream(t),n=a.stream(t),i=s.stream(t);return{point:function(t,r){e.point(t,r),n.point(t,r),i.point(t,r)},sphere:function(){e.sphere(),n.sphere(),i.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),i.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),i.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),i.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),i.polygonEnd()}}},t.precision=function(e){return arguments.length?(o.precision(e),a.precision(e),s.precision(e),t):o.precision()},t.scale=function(e){return arguments.length?(o.scale(e),a.scale(.35*e),s.scale(e),t.translate(o.translate())):o.scale()},t.translate=function(e){if(!arguments.length)return o.translate();var c=o.scale(),u=+e[0],h=+e[1];return n=o.translate(e).clipExtent([[u-.455*c,h-.238*c],[u+.455*c,h+.238*c]]).stream(l).point,i=a.translate([u-.307*c,h+.201*c]).clipExtent([[u-.425*c+Da,h+.12*c+Da],[u-.214*c-Da,h+.234*c-Da]]).stream(l).point,r=s.translate([u-.205*c,h+.212*c]).clipExtent([[u-.214*c+Da,h+.166*c+Da],[u-.115*c-Da,h+.234*c-Da]]).stream(l).point,t},t.scale(1070)};var Hs,Fs,zs,qs,Gs,Bs,$s={point:_,lineStart:_,lineEnd:_,polygonStart:function(){Fs=0,$s.lineStart=We},polygonEnd:function(){$s.lineStart=$s.lineEnd=$s.point=_,Hs+=ya(Fs/2)}},Ws={point:Ue,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},Us={point:Qe,lineStart:Ze,lineEnd:Ke,polygonStart:function(){Us.lineStart=Je},polygonEnd:function(){Us.point=Qe,Us.lineStart=Ze,Us.lineEnd=Ke}};la.geo.path=function(){function t(t){return t&&("function"==typeof s&&o.pointRadius(+s.apply(this,arguments)),a&&a.valid||(a=r(o)),la.geo.stream(t,a)),o.result()}function e(){return a=null,t}var n,i,r,o,a,s=4.5;return t.area=function(t){return Hs=0,la.geo.stream(t,r($s)),Hs},t.centroid=function(t){return As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,r(Us)),Ds?[Os/Ds,Rs/Ds]:Ns?[Es/Ns,Ps/Ns]:Ls?[As/Ls,Ms/Ls]:[NaN,NaN]},t.bounds=function(t){return Gs=Bs=-(zs=qs=1/0),la.geo.stream(t,r(Ws)),[[zs,qs],[Gs,Bs]]},t.projection=function(t){return arguments.length?(r=(n=t)?t.stream||nn(t):y,e()):n},t.context=function(t){return arguments.length?(o=null==(i=t)?new Xe:new tn(t),"function"!=typeof s&&o.pointRadius(s),e()):i},t.pointRadius=function(e){return arguments.length?(s="function"==typeof e?e:(o.pointRadius(+e),+e),t):s},t.projection(la.geo.albersUsa()).context(null)},la.geo.transform=function(t){return{stream:function(e){var n=new rn(e);for(var i in t)n[i]=t[i];return n}}},rn.prototype={point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},la.geo.projection=an,la.geo.projectionMutator=sn,(la.geo.equirectangular=function(){return an(cn)}).raw=cn.invert=cn,la.geo.rotation=function(t){function e(e){return e=t(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e}return t=hn(t[0]%360*za,t[1]*za,t.length>2?t[2]*za:0),e.invert=function(e){return e=t.invert(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e},e},un.invert=cn,la.geo.circle=function(){function t(){var t="function"==typeof i?i.apply(this,arguments):i,e=hn(-t[0]*za,-t[1]*za,0).invert,r=[];return n(null,null,1,{point:function(t,n){r.push(t=e(t,n)),t[0]*=qa,t[1]*=qa}}),{type:"Polygon",coordinates:[r]}}var e,n,i=[0,0],r=6;return t.origin=function(e){return arguments.length?(i=e,t):i},t.angle=function(i){return arguments.length?(n=gn((e=+i)*za,r*za),t):e},t.precision=function(i){return arguments.length?(n=gn(e*za,(r=+i)*za),t):r},t.angle(90)},la.geo.distance=function(t,e){var n,i=(e[0]-t[0])*za,r=t[1]*za,o=e[1]*za,a=Math.sin(i),s=Math.cos(i),l=Math.sin(r),c=Math.cos(r),u=Math.sin(o),h=Math.cos(o);return Math.atan2(Math.sqrt((n=h*a)*n+(n=c*u-l*h*s)*n),l*u+c*h*s)},la.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return la.range(Math.ceil(o/m)*m,r,m).map(d).concat(la.range(Math.ceil(c/v)*v,l,v).map(f)).concat(la.range(Math.ceil(i/p)*p,n,p).filter(function(t){return ya(t%m)>Da}).map(u)).concat(la.range(Math.ceil(s/g)*g,a,g).filter(function(t){return ya(t%v)>Da}).map(h))}var n,i,r,o,a,s,l,c,u,h,d,f,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[d(o).concat(f(l).slice(1),d(r).reverse().slice(1),f(c).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(o=+e[0][0],r=+e[1][0],c=+e[0][1],l=+e[1][1],o>r&&(e=o,o=r,r=e),c>l&&(e=c,c=l,l=e),t.precision(y)):[[o,c],[r,l]]},t.minorExtent=function(e){return arguments.length?(i=+e[0][0],n=+e[1][0],s=+e[0][1],a=+e[1][1],i>n&&(e=i,i=n,n=e),s>a&&(e=s,s=a,a=e),t.precision(y)):[[i,s],[n,a]];
-},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,u=vn(s,a,90),h=yn(i,n,y),d=vn(c,l,90),f=yn(o,r,y),t):y},t.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},la.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||i.apply(this,arguments),n||r.apply(this,arguments)]}}var e,n,i=xn,r=bn;return t.distance=function(){return la.geo.distance(e||i.apply(this,arguments),n||r.apply(this,arguments))},t.source=function(n){return arguments.length?(i=n,e="function"==typeof n?null:n,t):i},t.target=function(e){return arguments.length?(r=e,n="function"==typeof e?null:e,t):r},t.precision=function(){return arguments.length?t:0},t},la.geo.interpolate=function(t,e){return _n(t[0]*za,t[1]*za,e[0]*za,e[1]*za)},la.geo.length=function(t){return Xs=0,la.geo.stream(t,Ys),Xs};var Xs,Ys={sphere:_,point:_,lineStart:wn,lineEnd:_,polygonStart:_,polygonEnd:_},Qs=Sn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(la.geo.azimuthalEqualArea=function(){return an(Qs)}).raw=Qs;var Zs=Sn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},y);(la.geo.azimuthalEquidistant=function(){return an(Zs)}).raw=Zs,(la.geo.conicConformal=function(){return Be(Cn)}).raw=Cn,(la.geo.conicEquidistant=function(){return Be(Tn)}).raw=Tn;var Ks=Sn(function(t){return 1/t},Math.atan);(la.geo.gnomonic=function(){return an(Ks)}).raw=Ks,kn.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Fa]},(la.geo.mercator=function(){return An(kn)}).raw=kn;var Js=Sn(function(){return 1},Math.asin);(la.geo.orthographic=function(){return an(Js)}).raw=Js;var tl=Sn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(la.geo.stereographic=function(){return an(tl)}).raw=tl,Mn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Fa]},(la.geo.transverseMercator=function(){var t=An(Mn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Mn,la.geom={},la.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,r=kt(n),o=kt(i),a=t.length,s=[],l=[];for(e=0;e<a;e++)s.push([+r.call(this,t[e],e),+o.call(this,t[e],e),e]);for(s.sort(Nn),e=0;e<a;e++)l.push([s[e][0],-s[e][1]]);var c=Pn(s),u=Pn(l),h=u[0]===c[0],d=u[u.length-1]===c[c.length-1],f=[];for(e=c.length-1;e>=0;--e)f.push(t[s[c[e]][2]]);for(e=+h;e<u.length-d;++e)f.push(t[s[u[e]][2]]);return f}var n=Ln,i=En;return arguments.length?e(t):(e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e)},la.geom.polygon=function(t){return Sa(t,el),t};var el=la.geom.polygon.prototype=[];el.area=function(){for(var t,e=-1,n=this.length,i=this[n-1],r=0;++e<n;)t=i,i=this[e],r+=t[1]*i[0]-t[0]*i[1];return.5*r},el.centroid=function(t){var e,n,i=-1,r=this.length,o=0,a=0,s=this[r-1];for(arguments.length||(t=-1/(6*this.area()));++i<r;)e=s,s=this[i],n=e[0]*s[1]-s[0]*e[1],o+=(e[0]+s[0])*n,a+=(e[1]+s[1])*n;return[o*t,a*t]},el.clip=function(t){for(var e,n,i,r,o,a,s=Dn(t),l=-1,c=this.length-Dn(this),u=this[c-1];++l<c;){for(e=t.slice(),t.length=0,r=this[l],o=e[(i=e.length-s)-1],n=-1;++n<i;)a=e[n],On(a,u,r)?(On(o,u,r)||t.push(Rn(o,a,u,r)),t.push(a)):On(o,u,r)&&t.push(Rn(o,a,u,r)),o=a;s&&t.push(t[0]),u=r}return t};var nl,il,rl,ol,al,sl=[],ll=[];Gn.prototype.prepare=function(){for(var t,e=this.edges,n=e.length;n--;)t=e[n].edge,t.b&&t.a||e.splice(n,1);return e.sort($n),e.length},ei.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},ni.prototype={insert:function(t,e){var n,i,r;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=ai(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)i=n.U,n===i.L?(r=i.R,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.R&&(ri(this,n),t=n,n=t.U),n.C=!1,i.C=!0,oi(this,i))):(r=i.L,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.L&&(oi(this,n),t=n,n=t.U),n.C=!1,i.C=!0,ri(this,i))),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,i,r=t.U,o=t.L,a=t.R;if(n=o?a?ai(a):o:a,r?r.L===t?r.L=n:r.R=n:this._=n,o&&a?(i=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(r=n.U,n.U=t.U,t=n.R,r.L=t,n.R=a,a.U=n):(n.U=r,r=n,t=n.R)):(i=t.C,t=n),t&&(t.U=r),!i){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===r.L){if(e=r.R,e.C&&(e.C=!1,r.C=!0,ri(this,r),e=r.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,oi(this,e),e=r.R),e.C=r.C,r.C=e.R.C=!1,ri(this,r),t=this._;break}}else if(e=r.L,e.C&&(e.C=!1,r.C=!0,oi(this,r),e=r.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,ri(this,e),e=r.L),e.C=r.C,r.C=e.L.C=!1,oi(this,r),t=this._;break}e.C=!0,t=r,r=r.U}while(!t.C);t&&(t.C=!1)}}},la.geom.voronoi=function(t){function e(t){var e=new Array(t.length),i=s[0][0],r=s[0][1],o=s[1][0],a=s[1][1];return si(n(t),s).cells.forEach(function(n,s){var l=n.edges,c=n.site,u=e[s]=l.length?l.map(function(t){var e=t.start();return[e.x,e.y]}):c.x>=i&&c.x<=o&&c.y>=r&&c.y<=a?[[i,a],[o,a],[o,r],[i,r]]:[];u.point=t[s]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(o(t,e)/Da)*Da,y:Math.round(a(t,e)/Da)*Da,i:e}})}var i=Ln,r=En,o=i,a=r,s=cl;return t?e(t):(e.links=function(t){return si(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return si(n(t)).cells.forEach(function(n,i){for(var r,o,a=n.site,s=n.edges.sort($n),l=-1,c=s.length,u=s[c-1].edge,h=u.l===a?u.r:u.l;++l<c;)r=u,o=h,u=s[l].edge,h=u.l===a?u.r:u.l,i<o.i&&i<h.i&&ci(a,o,h)<0&&e.push([t[i],t[o.i],t[h.i]])}),e},e.x=function(t){return arguments.length?(o=kt(i=t),e):i},e.y=function(t){return arguments.length?(a=kt(r=t),e):r},e.clipExtent=function(t){return arguments.length?(s=null==t?cl:t,e):s===cl?null:s},e.size=function(t){return arguments.length?e.clipExtent(t&&[[0,0],t]):s===cl?null:s&&s[1]},e)};var cl=[[-1e6,-1e6],[1e6,1e6]];la.geom.delaunay=function(t){return la.geom.voronoi().triangles(t)},la.geom.quadtree=function(t,e,n,i,r){function o(t){function o(t,e,n,i,r,o,a,s){if(!isNaN(n)&&!isNaN(i))if(t.leaf){var l=t.x,u=t.y;if(null!=l)if(ya(l-n)+ya(u-i)<.01)c(t,e,n,i,r,o,a,s);else{var h=t.point;t.x=t.y=t.point=null,c(t,h,l,u,r,o,a,s),c(t,e,n,i,r,o,a,s)}else t.x=n,t.y=i,t.point=e}else c(t,e,n,i,r,o,a,s)}function c(t,e,n,i,r,a,s,l){var c=.5*(r+s),u=.5*(a+l),h=n>=c,d=i>=u,f=d<<1|h;t.leaf=!1,t=t.nodes[f]||(t.nodes[f]=di()),h?r=c:s=c,d?a=u:l=u,o(t,e,n,i,r,a,s,l)}var u,h,d,f,p,g,m,v,y,x=kt(s),b=kt(l);if(null!=e)g=e,m=n,v=i,y=r;else if(v=y=-(g=m=1/0),h=[],d=[],p=t.length,a)for(f=0;f<p;++f)u=t[f],u.x<g&&(g=u.x),u.y<m&&(m=u.y),u.x>v&&(v=u.x),u.y>y&&(y=u.y),h.push(u.x),d.push(u.y);else for(f=0;f<p;++f){var _=+x(u=t[f],f),w=+b(u,f);_<g&&(g=_),w<m&&(m=w),_>v&&(v=_),w>y&&(y=w),h.push(_),d.push(w)}var S=v-g,C=y-m;S>C?y=m+S:v=g+C;var T=di();if(T.add=function(t){o(T,t,+x(t,++f),+b(t,f),g,m,v,y)},T.visit=function(t){fi(t,T,g,m,v,y)},T.find=function(t){return pi(T,t[0],t[1],g,m,v,y)},f=-1,null==e){for(;++f<p;)o(T,t[f],h[f],d[f],g,m,v,y);--f}else t.forEach(T.add);return h=d=t=u=null,T}var a,s=Ln,l=En;return(a=arguments.length)?(s=ui,l=hi,3===a&&(r=n,i=e,n=e=0),o(t)):(o.x=function(t){return arguments.length?(s=t,o):s},o.y=function(t){return arguments.length?(l=t,o):l},o.extent=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=+t[0][0],n=+t[0][1],i=+t[1][0],r=+t[1][1]),o):null==e?null:[[e,n],[i,r]]},o.size=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=n=0,i=+t[0],r=+t[1]),o):null==e?null:[i-e,r-n]},o)},la.interpolateRgb=gi,la.interpolateObject=mi,la.interpolateNumber=vi,la.interpolateString=yi;var ul=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hl=new RegExp(ul.source,"g");la.interpolate=xi,la.interpolators=[function(t,e){var n=typeof e;return("string"===n?is.has(e.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(e)?gi:yi:e instanceof at?gi:Array.isArray(e)?bi:"object"===n&&isNaN(e)?mi:vi)(t,e)}],la.interpolateArray=bi;var dl=function(){return y},fl=la.map({linear:dl,poly:Ai,quad:function(){return Ci},cubic:function(){return Ti},sin:function(){return Mi},exp:function(){return Li},circle:function(){return Ei},elastic:Pi,back:Ni,bounce:function(){return Oi}}),pl=la.map({in:y,out:wi,"in-out":Si,"out-in":function(t){return Si(wi(t))}});la.ease=function(t){var e=t.indexOf("-"),n=e>=0?t.slice(0,e):t,i=e>=0?t.slice(e+1):"in";return n=fl.get(n)||dl,i=pl.get(i)||y,_i(i(n.apply(null,ca.call(arguments,1))))},la.interpolateHcl=Ri,la.interpolateHsl=Di,la.interpolateLab=Ii,la.interpolateRound=ji,la.transform=function(t){var e=ha.createElementNS(la.ns.prefix.svg,"g");return(la.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Vi(n?n.matrix:gl)})(t)},Vi.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var gl={a:1,b:0,c:0,d:1,e:0,f:0};la.interpolateTransform=Ui,la.layout={},la.layout.bundle=function(){return function(t){for(var e=[],n=-1,i=t.length;++n<i;)e.push(Qi(t[n]));return e}},la.layout.chord=function(){function t(){var t,c,h,d,f,p={},g=[],m=la.range(o),v=[];for(n=[],i=[],t=0,d=-1;++d<o;){for(c=0,f=-1;++f<o;)c+=r[d][f];g.push(c),v.push(la.range(o)),t+=c}for(a&&m.sort(function(t,e){return a(g[t],g[e])}),s&&v.forEach(function(t,e){t.sort(function(t,n){return s(r[e][t],r[e][n])})}),t=(Va-u*o)/t,c=0,d=-1;++d<o;){for(h=c,f=-1;++f<o;){var y=m[d],x=v[y][f],b=r[y][x],_=c,w=c+=b*t;p[y+"-"+x]={index:y,subindex:x,startAngle:_,endAngle:w,value:b}}i[y]={index:y,startAngle:h,endAngle:c,value:g[y]},c+=u}for(d=-1;++d<o;)for(f=d-1;++f<o;){var S=p[d+"-"+f],C=p[f+"-"+d];(S.value||C.value)&&n.push(S.value<C.value?{source:C,target:S}:{source:S,target:C})}l&&e()}function e(){n.sort(function(t,e){return l((t.source.value+t.target.value)/2,(e.source.value+e.target.value)/2)})}var n,i,r,o,a,s,l,c={},u=0;return c.matrix=function(t){return arguments.length?(o=(r=t)&&r.length,n=i=null,c):r},c.padding=function(t){return arguments.length?(u=t,n=i=null,c):u},c.sortGroups=function(t){return arguments.length?(a=t,n=i=null,c):a},c.sortSubgroups=function(t){return arguments.length?(s=t,n=null,c):s},c.sortChords=function(t){return arguments.length?(l=t,n&&e(),c):l},c.chords=function(){return n||t(),n},c.groups=function(){return i||t(),i},c},la.layout.force=function(){function t(t){return function(e,n,i,r){if(e.point!==t){var o=e.cx-t.x,a=e.cy-t.y,s=r-n,l=o*o+a*a;if(s*s/v<l){if(l<g){var c=e.charge/l;t.px-=o*c,t.py-=a*c}return!0}if(e.point&&l&&l<g){var c=e.pointCharge/l;t.px-=o*c,t.py-=a*c}}return!e.charge}}function e(t){t.px=la.event.x,t.py=la.event.y,l.resume()}var n,i,r,o,a,s,l={},c=la.dispatch("start","tick","end"),u=[1,1],h=.9,d=ml,f=vl,p=-30,g=yl,m=.1,v=.64,x=[],b=[];return l.tick=function(){if((r*=.99)<.005)return n=null,c.end({type:"end",alpha:r=0}),!0;var e,i,l,d,f,g,v,y,_,w=x.length,S=b.length;for(i=0;i<S;++i)l=b[i],d=l.source,f=l.target,y=f.x-d.x,_=f.y-d.y,(g=y*y+_*_)&&(g=r*a[i]*((g=Math.sqrt(g))-o[i])/g,y*=g,_*=g,f.x-=y*(v=d.weight+f.weight?d.weight/(d.weight+f.weight):.5),f.y-=_*v,d.x+=y*(v=1-v),d.y+=_*v);if((v=r*m)&&(y=u[0]/2,_=u[1]/2,i=-1,v))for(;++i<w;)l=x[i],l.x+=(y-l.x)*v,l.y+=(_-l.y)*v;if(p)for(ir(e=la.geom.quadtree(x),r,s),i=-1;++i<w;)(l=x[i]).fixed||e.visit(t(l));for(i=-1;++i<w;)l=x[i],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*h,l.y-=(l.py-(l.py=l.y))*h);c.tick({type:"tick",alpha:r})},l.nodes=function(t){return arguments.length?(x=t,l):x},l.links=function(t){return arguments.length?(b=t,l):b},l.size=function(t){return arguments.length?(u=t,l):u},l.linkDistance=function(t){return arguments.length?(d="function"==typeof t?t:+t,l):d},l.distance=l.linkDistance,l.linkStrength=function(t){return arguments.length?(f="function"==typeof t?t:+t,l):f},l.friction=function(t){return arguments.length?(h=+t,l):h},l.charge=function(t){return arguments.length?(p="function"==typeof t?t:+t,l):p},l.chargeDistance=function(t){return arguments.length?(g=t*t,l):Math.sqrt(g)},l.gravity=function(t){return arguments.length?(m=+t,l):m},l.theta=function(t){return arguments.length?(v=t*t,l):Math.sqrt(v)},l.alpha=function(t){return arguments.length?(t=+t,r?t>0?r=t:(n.c=null,n.t=NaN,n=null,c.end({type:"end",alpha:r=0})):t>0&&(c.start({type:"start",alpha:r=t}),n=Pt(l.tick)),l):r},l.start=function(){function t(t,i){if(!n){for(n=new Array(r),l=0;l<r;++l)n[l]=[];for(l=0;l<c;++l){var o=b[l];n[o.source.index].push(o.target),n[o.target.index].push(o.source)}}for(var a,s=n[e],l=-1,u=s.length;++l<u;)if(!isNaN(a=s[l][t]))return a;return Math.random()*i}var e,n,i,r=x.length,c=b.length,h=u[0],g=u[1];for(e=0;e<r;++e)(i=x[e]).index=e,i.weight=0;for(e=0;e<c;++e)i=b[e],"number"==typeof i.source&&(i.source=x[i.source]),"number"==typeof i.target&&(i.target=x[i.target]),++i.source.weight,++i.target.weight;for(e=0;e<r;++e)i=x[e],isNaN(i.x)&&(i.x=t("x",h)),isNaN(i.y)&&(i.y=t("y",g)),isNaN(i.px)&&(i.px=i.x),isNaN(i.py)&&(i.py=i.y);if(o=[],"function"==typeof d)for(e=0;e<c;++e)o[e]=+d.call(this,b[e],e);else for(e=0;e<c;++e)o[e]=d;if(a=[],"function"==typeof f)for(e=0;e<c;++e)a[e]=+f.call(this,b[e],e);else for(e=0;e<c;++e)a[e]=f;if(s=[],"function"==typeof p)for(e=0;e<r;++e)s[e]=+p.call(this,x[e],e);else for(e=0;e<r;++e)s[e]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return i||(i=la.behavior.drag().origin(y).on("dragstart.force",Ji).on("drag.force",e).on("dragend.force",tr)),arguments.length?void this.on("mouseover.force",er).on("mouseout.force",nr).call(i):i},la.rebind(l,c,"on")};var ml=20,vl=1,yl=1/0;la.layout.hierarchy=function(){function t(r){var o,a=[r],s=[];for(r.depth=0;null!=(o=a.pop());)if(s.push(o),(c=n.call(t,o,o.depth))&&(l=c.length)){for(var l,c,u;--l>=0;)a.push(u=c[l]),u.parent=o,u.depth=o.depth+1;i&&(o.value=0),o.children=c}else i&&(o.value=+i.call(t,o,o.depth)||0),delete o.children;return ar(r,function(t){var n,r;e&&(n=t.children)&&n.sort(e),i&&(r=t.parent)&&(r.value+=t.value)}),s}var e=cr,n=sr,i=lr;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(i=e,t):i},t.revalue=function(e){return i&&(or(e,function(t){t.children&&(t.value=0)}),ar(e,function(e){var n;e.children||(e.value=+i.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},la.layout.partition=function(){function t(e,n,i,r){var o=e.children;if(e.x=n,e.y=e.depth*r,e.dx=i,e.dy=r,o&&(a=o.length)){var a,s,l,c=-1;for(i=e.value?i/e.value:0;++c<a;)t(s=o[c],n,l=s.value*i,r),n+=l}}function e(t){var n=t.children,i=0;if(n&&(r=n.length))for(var r,o=-1;++o<r;)i=Math.max(i,e(n[o]));return 1+i}function n(n,o){var a=i.call(this,n,o);return t(a[0],0,r[0],r[1]/e(a[0])),a}var i=la.layout.hierarchy(),r=[1,1];return n.size=function(t){return arguments.length?(r=t,n):r},rr(n,i)},la.layout.pie=function(){function t(a){var s,l=a.length,c=a.map(function(n,i){return+e.call(t,n,i)}),u=+("function"==typeof i?i.apply(this,arguments):i),h=("function"==typeof r?r.apply(this,arguments):r)-u,d=Math.min(Math.abs(h)/l,+("function"==typeof o?o.apply(this,arguments):o)),f=d*(h<0?-1:1),p=la.sum(c),g=p?(h-l*f)/p:0,m=la.range(l),v=[];return null!=n&&m.sort(n===xl?function(t,e){return c[e]-c[t]}:function(t,e){return n(a[t],a[e])}),m.forEach(function(t){v[t]={data:a[t],value:s=c[t],startAngle:u,endAngle:u+=s*g+f,padAngle:d}}),v}var e=Number,n=xl,i=0,r=Va,o=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(i=e,t):i},t.endAngle=function(e){return arguments.length?(r=e,t):r},t.padAngle=function(e){return arguments.length?(o=e,t):o},t};var xl={};la.layout.stack=function(){function t(s,l){if(!(d=s.length))return s;var c=s.map(function(n,i){return e.call(t,n,i)}),u=c.map(function(e){return e.map(function(e,n){return[o.call(t,e,n),a.call(t,e,n)]})}),h=n.call(t,u,l);c=la.permute(c,h),u=la.permute(u,h);var d,f,p,g,m=i.call(t,u,l),v=c[0].length;for(p=0;p<v;++p)for(r.call(t,c[0][p],g=m[p],u[0][p][1]),f=1;f<d;++f)r.call(t,c[f][p],g+=u[f-1][p][1],u[f][p][1]);return s}var e=y,n=pr,i=gr,r=fr,o=hr,a=dr;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:bl.get(e)||pr,t):n},t.offset=function(e){return arguments.length?(i="function"==typeof e?e:_l.get(e)||gr,t):i},t.x=function(e){return arguments.length?(o=e,t):o},t.y=function(e){return arguments.length?(a=e,t):a},t.out=function(e){return arguments.length?(r=e,t):r},t};var bl=la.map({"inside-out":function(t){var e,n,i=t.length,r=t.map(mr),o=t.map(vr),a=la.range(i).sort(function(t,e){return r[t]-r[e]}),s=0,l=0,c=[],u=[];for(e=0;e<i;++e)n=a[e],s<l?(s+=o[n],c.push(n)):(l+=o[n],u.push(n));return u.reverse().concat(c)},reverse:function(t){return la.range(t.length).reverse()},default:pr}),_l=la.map({silhouette:function(t){var e,n,i,r=t.length,o=t[0].length,a=[],s=0,l=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];i>s&&(s=i),a.push(i)}for(n=0;n<o;++n)l[n]=(s-a[n])/2;return l},wiggle:function(t){var e,n,i,r,o,a,s,l,c,u=t.length,h=t[0],d=h.length,f=[];for(f[0]=l=c=0,n=1;n<d;++n){for(e=0,r=0;e<u;++e)r+=t[e][n][1];for(e=0,o=0,s=h[n][0]-h[n-1][0];e<u;++e){for(i=0,a=(t[e][n][1]-t[e][n-1][1])/(2*s);i<e;++i)a+=(t[i][n][1]-t[i][n-1][1])/s;o+=a*t[e][n][1]}f[n]=l-=r?o/r*s:0,l<c&&(c=l)}for(n=0;n<d;++n)f[n]-=c;return f},expand:function(t){var e,n,i,r=t.length,o=t[0].length,a=1/r,s=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];if(i)for(e=0;e<r;e++)t[e][n][1]/=i;else for(e=0;e<r;e++)t[e][n][1]=a}for(n=0;n<o;++n)s[n]=0;return s},zero:gr});la.layout.histogram=function(){function t(t,o){for(var a,s,l=[],c=t.map(n,this),u=i.call(this,c,o),h=r.call(this,u,c,o),o=-1,d=c.length,f=h.length-1,p=e?1:1/d;++o<f;)a=l[o]=[],a.dx=h[o+1]-(a.x=h[o]),a.y=0;if(f>0)for(o=-1;++o<d;)s=c[o],s>=u[0]&&s<=u[1]&&(a=l[la.bisect(h,s,1,f)-1],a.y+=p,a.push(t[o]));return l}var e=!0,n=Number,i=_r,r=xr;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(i=kt(e),t):i},t.bins=function(e){return arguments.length?(r="number"==typeof e?function(t){return br(t,e)}:kt(e),t):r},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},la.layout.pack=function(){function t(t,o){var a=n.call(this,t,o),s=a[0],l=r[0],c=r[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(s.x=s.y=0,ar(s,function(t){t.r=+u(t.value)}),ar(s,kr),i){var h=i*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;ar(s,function(t){t.r+=h}),ar(s,kr),ar(s,function(t){t.r-=h})}return Lr(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),a}var e,n=la.layout.hierarchy().sort(wr),i=0,r=[1,1];return t.size=function(e){return arguments.length?(r=e,t):r},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(i=+e,t):i},rr(t,n)},la.layout.tree=function(){function t(t,r){var u=a.call(this,t,r),h=u[0],d=e(h);if(ar(d,n),d.parent.m=-d.z,or(d,i),c)or(h,o);else{var f=h,p=h,g=h;or(h,function(t){t.x<f.x&&(f=t),t.x>p.x&&(p=t),t.depth>g.depth&&(g=t)});var m=s(f,p)/2-f.x,v=l[0]/(p.x+s(p,f)/2+m),y=l[1]/(g.depth||1);or(h,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return u}function e(t){for(var e,n={A:null,children:[t]},i=[n];null!=(e=i.pop());)for(var r,o=e.children,a=0,s=o.length;a<s;++a)i.push((o[a]=r={_:o[a],parent:e,children:(r=o[a].children)&&r.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=r);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){Dr(t);var o=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+s(t._,i._),t.m=t.z-o):t.z=o}else i&&(t.z=i.z+s(t._,i._));t.parent.A=r(t,i,t.parent.A||n[0])}function i(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t,e,n){if(e){for(var i,r=t,o=t,a=e,l=r.parent.children[0],c=r.m,u=o.m,h=a.m,d=l.m;a=Or(a),r=Nr(r),a&&r;)l=Nr(l),o=Or(o),o.a=t,i=a.z+h-r.z-c+s(a._,r._),i>0&&(Rr(Ir(a,t,n),t,i),c+=i,u+=i),h+=a.m,c+=r.m,d+=l.m,u+=o.m;a&&!Or(o)&&(o.t=a,o.m+=h-u),r&&!Nr(l)&&(l.t=r,l.m+=c-d,n=t)}return n}function o(t){t.x*=l[0],t.y=t.depth*l[1]}var a=la.layout.hierarchy().sort(null).value(null),s=Pr,l=[1,1],c=null;return t.separation=function(e){return arguments.length?(s=e,t):s},t.size=function(e){return arguments.length?(c=null==(l=e)?o:null,t):c?null:l},t.nodeSize=function(e){return arguments.length?(c=null==(l=e)?null:o,t):c?l:null},rr(t,a)},la.layout.cluster=function(){function t(t,o){var a,s=e.call(this,t,o),l=s[0],c=0;ar(l,function(t){var e=t.children;e&&e.length?(t.x=Vr(e),t.y=jr(e)):(t.x=a?c+=n(t,a):0,t.y=0,a=t)});var u=Hr(l),h=Fr(l),d=u.x-n(u,h)/2,f=h.x+n(h,u)/2;return ar(l,r?function(t){t.x=(t.x-l.x)*i[0],t.y=(l.y-t.y)*i[1]}:function(t){t.x=(t.x-d)/(f-d)*i[0],t.y=(1-(l.y?t.y/l.y:1))*i[1]}),s}var e=la.layout.hierarchy().sort(null).value(null),n=Pr,i=[1,1],r=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(r=null==(i=e),t):r?null:i},t.nodeSize=function(e){return arguments.length?(r=null!=(i=e),t):r?i:null},rr(t,e)},la.layout.treemap=function(){function t(t,e){for(var n,i,r=-1,o=t.length;++r<o;)i=(n=t[r]).value*(e<0?0:e),n.area=isNaN(i)||i<=0?0:i}function e(n){var o=n.children;if(o&&o.length){var a,s,l,c=h(n),u=[],d=o.slice(),p=1/0,g="slice"===f?c.dx:"dice"===f?c.dy:"slice-dice"===f?1&n.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(t(d,c.dx*c.dy/n.value),u.area=0;(l=d.length)>0;)u.push(a=d[l-1]),u.area+=a.area,"squarify"!==f||(s=i(u,g))<=p?(d.pop(),p=s):(u.area-=u.pop().area,r(u,g,c,!1),g=Math.min(c.dx,c.dy),u.length=u.area=0,p=1/0);u.length&&(r(u,g,c,!0),u.length=u.area=0),o.forEach(e)}}function n(e){var i=e.children;if(i&&i.length){var o,a=h(e),s=i.slice(),l=[];for(t(s,a.dx*a.dy/e.value),l.area=0;o=s.pop();)l.push(o),l.area+=o.area,null!=o.z&&(r(l,o.z?a.dx:a.dy,a,!s.length),l.length=l.area=0);i.forEach(n)}}function i(t,e){for(var n,i=t.area,r=0,o=1/0,a=-1,s=t.length;++a<s;)(n=t[a].area)&&(n<o&&(o=n),n>r&&(r=n));return i*=i,e*=e,i?Math.max(e*r*p/i,i/(e*o*p)):1/0}function r(t,e,n,i){var r,o=-1,a=t.length,s=n.x,c=n.y,u=e?l(t.area/e):0;if(e==n.dx){for((i||u>n.dy)&&(u=n.dy);++o<a;)r=t[o],r.x=s,r.y=c,r.dy=u,s+=r.dx=Math.min(n.x+n.dx-s,u?l(r.area/u):0);r.z=!0,r.dx+=n.x+n.dx-s,n.y+=u,n.dy-=u}else{for((i||u>n.dx)&&(u=n.dx);++o<a;)r=t[o],r.x=s,r.y=c,r.dx=u,c+=r.dy=Math.min(n.y+n.dy-c,u?l(r.area/u):0);r.z=!1,r.dy+=n.y+n.dy-c,n.x+=u,n.dx-=u}}function o(i){var r=a||s(i),o=r[0];return o.x=o.y=0,o.value?(o.dx=c[0],o.dy=c[1]):o.dx=o.dy=0,a&&s.revalue(o),t([o],o.dx*o.dy/o.value),(a?n:e)(o),d&&(a=r),r}var a,s=la.layout.hierarchy(),l=Math.round,c=[1,1],u=null,h=zr,d=!1,f="squarify",p=.5*(1+Math.sqrt(5));return o.size=function(t){return arguments.length?(c=t,o):c},o.padding=function(t){function e(e){var n=t.call(o,e,e.depth);return null==n?zr(e):qr(e,"number"==typeof n?[n,n,n,n]:n)}function n(e){return qr(e,t)}if(!arguments.length)return u;var i;return h=null==(u=t)?zr:"function"==(i=typeof t)?e:"number"===i?(t=[t,t,t,t],n):n,o},o.round=function(t){return arguments.length?(l=t?Math.round:Number,o):l!=Number},o.sticky=function(t){return arguments.length?(d=t,a=null,o):d},o.ratio=function(t){return arguments.length?(p=t,o):p},o.mode=function(t){return arguments.length?(f=t+"",o):f},rr(o,s)},la.random={normal:function(t,e){var n=arguments.length;return n<2&&(e=1),n<1&&(t=0),function(){var n,i,r;do n=2*Math.random()-1,i=2*Math.random()-1,r=n*n+i*i;while(!r||r>1);return t+e*n*Math.sqrt(-2*Math.log(r)/r)}},logNormal:function(){var t=la.random.normal.apply(la,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=la.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;n<t;n++)e+=Math.random();return e}}},la.scale={};var wl={floor:y,ceil:y};la.scale.linear=function(){return Yr([0,1],[0,1],xi,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};la.scale.log=function(){return io(la.scale.linear().domain([0,1]),10,!0,[1,10])};var Cl=la.format(".0e"),Tl={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};la.scale.pow=function(){return ro(la.scale.linear(),1,[0,1])},la.scale.sqrt=function(){return la.scale.pow().exponent(.5)},la.scale.ordinal=function(){return ao([],{t:"range",a:[[]]})},la.scale.category10=function(){return la.scale.ordinal().range(kl)},la.scale.category20=function(){return la.scale.ordinal().range(Al)},la.scale.category20b=function(){return la.scale.ordinal().range(Ml)},la.scale.category20c=function(){return la.scale.ordinal().range(Ll)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xt),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xt),Ml=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xt),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xt);la.scale.quantile=function(){return so([],[])},la.scale.quantize=function(){return lo(0,1,[0,1])},la.scale.threshold=function(){return co([.5],[0,1])},la.scale.identity=function(){return uo([0,1])},la.svg={},la.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),c=Math.max(0,+i.apply(this,arguments)),u=a.apply(this,arguments)-Fa,h=s.apply(this,arguments)-Fa,d=Math.abs(h-u),f=u>h?0:1;if(c<t&&(p=c,c=t,t=p),d>=Ha)return e(c,f)+(t?e(t,1-f):"")+"Z";var p,g,m,v,y,x,b,_,w,S,C,T,k=0,A=0,M=[];if((v=(+l.apply(this,arguments)||0)/2)&&(m=o===El?Math.sqrt(t*t+c*c):+o.apply(this,arguments),f||(A*=-1),c&&(A=et(m/c*Math.sin(v))),t&&(k=et(m/t*Math.sin(v)))),c){y=c*Math.cos(u+A),x=c*Math.sin(u+A),b=c*Math.cos(h-A),_=c*Math.sin(h-A);var L=Math.abs(h-u-2*A)<=ja?0:1;if(A&&yo(y,x,b,_)===f^L){var E=(u+h)/2;y=c*Math.cos(E),x=c*Math.sin(E),b=_=null}}else y=x=0;if(t){w=t*Math.cos(h-k),S=t*Math.sin(h-k),C=t*Math.cos(u+k),T=t*Math.sin(u+k);var P=Math.abs(u-h+2*k)<=ja?0:1;if(k&&yo(w,S,C,T)===1-f^P){var N=(u+h)/2;w=t*Math.cos(N),S=t*Math.sin(N),C=T=null}}else w=S=0;if(d>Da&&(p=Math.min(Math.abs(c-t)/2,+r.apply(this,arguments)))>.001){g=t<c^f?0:1;var O=p,R=p;if(d<ja){var D=null==C?[w,S]:null==b?[y,x]:Rn([y,x],[C,T],[b,_],[w,S]),I=y-D[0],j=x-D[1],V=b-D[0],H=_-D[1],F=1/Math.sin(Math.acos((I*V+j*H)/(Math.sqrt(I*I+j*j)*Math.sqrt(V*V+H*H)))/2),z=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(t-z)/(F-1)),O=Math.min(p,(c-z)/(F+1))}if(null!=b){var q=xo(null==C?[w,S]:[C,T],[y,x],c,O,f),G=xo([b,_],[w,S],c,O,f);p===O?M.push("M",q[0],"A",O,",",O," 0 0,",g," ",q[1],"A",c,",",c," 0 ",1-f^yo(q[1][0],q[1][1],G[1][0],G[1][1]),",",f," ",G[1],"A",O,",",O," 0 0,",g," ",G[0]):M.push("M",q[0],"A",O,",",O," 0 1,",g," ",G[0])}else M.push("M",y,",",x);if(null!=C){var B=xo([y,x],[C,T],t,-R,f),$=xo([w,S],null==b?[y,x]:[b,_],t,-R,f);p===R?M.push("L",$[0],"A",R,",",R," 0 0,",g," ",$[1],"A",t,",",t," 0 ",f^yo($[1][0],$[1][1],B[1][0],B[1][1]),",",1-f," ",B[1],"A",R,",",R," 0 0,",g," ",B[0]):M.push("L",$[0],"A",R,",",R," 0 0,",g," ",B[0])}else M.push("L",w,",",S)}else M.push("M",y,",",x),null!=b&&M.push("A",c,",",c," 0 ",L,",",f," ",b,",",_),M.push("L",w,",",S),null!=C&&M.push("A",t,",",t," 0 ",P,",",1-f," ",C,",",T);return M.push("Z"),M.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=fo,i=po,r=ho,o=El,a=go,s=mo,l=vo;return t.innerRadius=function(e){return arguments.length?(n=kt(e),t):n},t.outerRadius=function(e){return arguments.length?(i=kt(e),t):i},t.cornerRadius=function(e){return arguments.length?(r=kt(e),t):r},t.padRadius=function(e){return arguments.length?(o=e==El?El:kt(e),t):o},t.startAngle=function(e){return arguments.length?(a=kt(e),t):a},t.endAngle=function(e){return arguments.length?(s=kt(e),t):s},t.padAngle=function(e){return arguments.length?(l=kt(e),t):l},t.centroid=function(){var t=(+n.apply(this,arguments)+ +i.apply(this,arguments))/2,e=(+a.apply(this,arguments)+ +s.apply(this,arguments))/2-Fa;return[Math.cos(e)*t,Math.sin(e)*t]},t};var El="auto";la.svg.line=function(){return bo(y)};var Pl=la.map({linear:_o,"linear-closed":wo,step:So,"step-before":Co,"step-after":To,basis:Po,"basis-open":No,"basis-closed":Oo,bundle:Ro,cardinal:Mo,"cardinal-open":ko,"cardinal-closed":Ao,monotone:Fo});Pl.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var Nl=[0,2/3,1/3,0],Ol=[0,1/3,2/3,0],Rl=[0,1/6,2/3,1/6];la.svg.line.radial=function(){var t=bo(zo);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Co.reverse=To,To.reverse=Co,la.svg.area=function(){return qo(y)},la.svg.area.radial=function(){var t=qo(zo);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},la.svg.chord=function(){function t(t,s){var l=e(this,o,t,s),c=e(this,a,t,s);return"M"+l.p0+i(l.r,l.p1,l.a1-l.a0)+(n(l,c)?r(l.r,l.p1,l.r,l.p0):r(l.r,l.p1,c.r,c.p0)+i(c.r,c.p1,c.a1-c.a0)+r(c.r,c.p1,l.r,l.p0))+"Z"}function e(t,e,n,i){var r=e.call(t,n,i),o=s.call(t,r,i),a=l.call(t,r,i)-Fa,u=c.call(t,r,i)-Fa;return{r:o,a0:a,a1:u,p0:[o*Math.cos(a),o*Math.sin(a)],p1:[o*Math.cos(u),o*Math.sin(u)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function i(t,e,n){return"A"+t+","+t+" 0 "+ +(n>ja)+",1 "+e}function r(t,e,n,i){return"Q 0,0 "+i}var o=xn,a=bn,s=Go,l=go,c=mo;return t.radius=function(e){return arguments.length?(s=kt(e),t):s},t.source=function(e){return arguments.length?(o=kt(e),t):o},t.target=function(e){return arguments.length?(a=kt(e),t):a},t.startAngle=function(e){return arguments.length?(l=kt(e),t):l},t.endAngle=function(e){return arguments.length?(c=kt(e),t):c},t},la.svg.diagonal=function(){function t(t,r){var o=e.call(this,t,r),a=n.call(this,t,r),s=(o.y+a.y)/2,l=[o,{x:o.x,y:s},{x:a.x,y:s},a];return l=l.map(i),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var e=xn,n=bn,i=Bo;return t.source=function(n){return arguments.length?(e=kt(n),t):e},t.target=function(e){return arguments.length?(n=kt(e),t):n},t.projection=function(e){return arguments.length?(i=e,t):i},t},la.svg.diagonal.radial=function(){var t=la.svg.diagonal(),e=Bo,n=t.projection;return t.projection=function(t){return arguments.length?n($o(e=t)):e},t},la.svg.symbol=function(){function t(t,i){return(Dl.get(e.call(this,t,i))||Xo)(n.call(this,t,i))}var e=Uo,n=Wo;return t.type=function(n){return arguments.length?(e=kt(n),t):e},t.size=function(e){return arguments.length?(n=kt(e),t):n},t};var Dl=la.map({circle:Xo,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*jl)),n=e*jl;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});la.svg.symbolTypes=Dl.keys();var Il=Math.sqrt(3),jl=Math.tan(30*za);Aa.transition=function(t){for(var e,n,i=Vl||++ql,r=Jo(t),o=[],a=Hl||{time:Date.now(),ease:ki,delay:0,duration:250},s=-1,l=this.length;++s<l;){o.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(n=c[u])&&ta(n,u,r,i,a),e.push(n)}return Qo(o,r,i)},Aa.interrupt=function(t){return this.each(null==t?Fl:Yo(Jo(t)));
-};var Vl,Hl,Fl=Yo(Jo()),zl=[],ql=0;zl.call=Aa.call,zl.empty=Aa.empty,zl.node=Aa.node,zl.size=Aa.size,la.transition=function(t,e){return t&&t.transition?Vl?t.transition(e):t:la.selection().transition(t)},la.transition.prototype=zl,zl.select=function(t){var e,n,i,r=this.id,o=this.namespace,a=[];t=M(t);for(var s=-1,l=this.length;++s<l;){a.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(i=c[u])&&(n=t.call(i,i.__data__,u,s))?("__data__"in i&&(n.__data__=i.__data__),ta(n,u,o,r,i[o][r]),e.push(n)):e.push(null)}return Qo(a,o,r)},zl.selectAll=function(t){var e,n,i,r,o,a=this.id,s=this.namespace,l=[];t=L(t);for(var c=-1,u=this.length;++c<u;)for(var h=this[c],d=-1,f=h.length;++d<f;)if(i=h[d]){o=i[s][a],n=t.call(i,i.__data__,d,c),l.push(e=[]);for(var p=-1,g=n.length;++p<g;)(r=n[p])&&ta(r,p,s,a,o),e.push(r)}return Qo(l,s,a)},zl.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]);for(var n=this[o],s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return Qo(r,this.namespace,this.id)},zl.tween=function(t,e){var n=this.id,i=this.namespace;return arguments.length<2?this.node()[i][n].tween.get(t):G(this,null==e?function(e){e[i][n].tween.remove(t)}:function(r){r[i][n].tween.set(t,e)})},zl.attr=function(t,e){function n(){this.removeAttribute(s)}function i(){this.removeAttributeNS(s.space,s.local)}function r(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(s);return n!==t&&(e=a(n,t),function(t){this.setAttribute(s,e(t))})})}function o(t){return null==t?i:(t+="",function(){var e,n=this.getAttributeNS(s.space,s.local);return n!==t&&(e=a(n,t),function(t){this.setAttributeNS(s.space,s.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var a="transform"==t?Ui:xi,s=la.ns.qualify(t);return Zo(this,"attr."+t,e,s.local?o:r)},zl.attrTween=function(t,e){function n(t,n){var i=e.call(this,t,n,this.getAttribute(r));return i&&function(t){this.setAttribute(r,i(t))}}function i(t,n){var i=e.call(this,t,n,this.getAttributeNS(r.space,r.local));return i&&function(t){this.setAttributeNS(r.space,r.local,i(t))}}var r=la.ns.qualify(t);return this.tween("attr."+t,r.local?i:n)},zl.style=function(t,n,i){function r(){this.style.removeProperty(t)}function o(n){return null==n?r:(n+="",function(){var r,o=e(this).getComputedStyle(this,null).getPropertyValue(t);return o!==n&&(r=xi(o,n),function(e){this.style.setProperty(t,r(e),i)})})}var a=arguments.length;if(a<3){if("string"!=typeof t){a<2&&(n="");for(i in t)this.style(i,t[i],n);return this}i=""}return Zo(this,"style."+t,n,o)},zl.styleTween=function(t,n,i){function r(r,o){var a=n.call(this,r,o,e(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),i)}}return arguments.length<3&&(i=""),this.tween("style."+t,r)},zl.text=function(t){return Zo(this,"text",t,Ko)},zl.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},zl.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=la.ease.apply(la,arguments)),G(this,function(i){i[n][e].ease=t}))},zl.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:G(this,"function"==typeof t?function(i,r,o){i[n][e].delay=+t.call(i,i.__data__,r,o)}:(t=+t,function(i){i[n][e].delay=t}))},zl.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:G(this,"function"==typeof t?function(i,r,o){i[n][e].duration=Math.max(1,t.call(i,i.__data__,r,o))}:(t=Math.max(1,t),function(i){i[n][e].duration=t}))},zl.each=function(t,e){var n=this.id,i=this.namespace;if(arguments.length<2){var r=Hl,o=Vl;try{Vl=n,G(this,function(e,r,o){Hl=e[i][n],t.call(e,e.__data__,r,o)})}finally{Hl=r,Vl=o}}else G(this,function(r){var o=r[i][n];(o.event||(o.event=la.dispatch("start","end","interrupt"))).on(t,e)});return this},zl.transition=function(){for(var t,e,n,i,r=this.id,o=++ql,a=this.namespace,s=[],l=0,c=this.length;l<c;l++){s.push(t=[]);for(var e=this[l],u=0,h=e.length;u<h;u++)(n=e[u])&&(i=n[a][r],ta(n,u,a,o,{time:i.time,ease:i.ease,delay:i.delay+i.duration,duration:i.duration})),t.push(n)}return Qo(s,a,o)},la.svg.axis=function(){function t(t){t.each(function(){var t,c=la.select(this),u=this.__chart__||n,h=this.__chart__=n.copy(),d=null==l?h.ticks?h.ticks.apply(h,s):h.domain():l,f=null==e?h.tickFormat?h.tickFormat.apply(h,s):y:e,p=c.selectAll(".tick").data(d,h),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),m=la.transition(p.exit()).style("opacity",Da).remove(),v=la.transition(p.order()).style("opacity",1),x=Math.max(r,0)+a,b=Br(h),_=c.selectAll(".domain").data([0]),w=(_.enter().append("path").attr("class","domain"),la.transition(_));g.append("line"),g.append("text");var S,C,T,k,A=g.select("line"),M=v.select("line"),L=p.select("text").text(f),E=g.select("text"),P=v.select("text"),N="top"===i||"left"===i?-1:1;if("bottom"===i||"top"===i?(t=ea,S="x",T="y",C="x2",k="y2",L.attr("dy",N<0?"0em":".71em").style("text-anchor","middle"),w.attr("d","M"+b[0]+","+N*o+"V0H"+b[1]+"V"+N*o)):(t=na,S="y",T="x",C="y2",k="x2",L.attr("dy",".32em").style("text-anchor",N<0?"end":"start"),w.attr("d","M"+N*o+","+b[0]+"H0V"+b[1]+"H"+N*o)),A.attr(k,N*r),E.attr(T,N*x),M.attr(C,0).attr(k,N*r),P.attr(S,0).attr(T,N*x),h.rangeBand){var O=h,R=O.rangeBand()/2;u=h=function(t){return O(t)+R}}else u.rangeBand?u=h:m.call(t,h,u);g.call(t,u,h),v.call(t,h,h)})}var e,n=la.scale.linear(),i=Gl,r=6,o=6,a=3,s=[10],l=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(i=e in Bl?e+"":Gl,t):i},t.ticks=function(){return arguments.length?(s=ua(arguments),t):s},t.tickValues=function(e){return arguments.length?(l=e,t):l},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(r=+e,o=+arguments[n-1],t):r},t.innerTickSize=function(e){return arguments.length?(r=+e,t):r},t.outerTickSize=function(e){return arguments.length?(o=+e,t):o},t.tickPadding=function(e){return arguments.length?(a=+e,t):a},t.tickSubdivide=function(){return arguments.length&&t},t};var Gl="bottom",Bl={top:1,right:1,bottom:1,left:1};la.svg.brush=function(){function t(e){e.each(function(){var e=la.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",o).on("touchstart.brush",o),a=e.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),e.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var s=e.selectAll(".resize").data(g,y);s.exit().remove(),s.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return $l[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),s.style("display",t.empty()?"none":null);var l,h=la.transition(e),d=la.transition(a);c&&(l=Br(c),d.attr("x",l[0]).attr("width",l[1]-l[0]),i(h)),u&&(l=Br(u),d.attr("y",l[0]).attr("height",l[1]-l[0]),r(h)),n(h)})}function n(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+h[+/e$/.test(t)]+","+d[+/^s/.test(t)]+")"})}function i(t){t.select(".extent").attr("x",h[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",h[1]-h[0])}function r(t){t.select(".extent").attr("y",d[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",d[1]-d[0])}function o(){function o(){32==la.event.keyCode&&(L||(x=null,P[0]-=h[1],P[1]-=d[1],L=2),C())}function g(){32==la.event.keyCode&&2==L&&(P[0]+=h[1],P[1]+=d[1],L=0,C())}function m(){var t=la.mouse(_),e=!1;b&&(t[0]+=b[0],t[1]+=b[1]),L||(la.event.altKey?(x||(x=[(h[0]+h[1])/2,(d[0]+d[1])/2]),P[0]=h[+(t[0]<x[0])],P[1]=d[+(t[1]<x[1])]):x=null),A&&v(t,c,0)&&(i(T),e=!0),M&&v(t,u,1)&&(r(T),e=!0),e&&(n(T),S({type:"brush",mode:L?"move":"resize"}))}function v(t,e,n){var i,r,o=Br(e),l=o[0],c=o[1],u=P[n],g=n?d:h,m=g[1]-g[0];if(L&&(l-=u,c-=m+u),i=(n?p:f)?Math.max(l,Math.min(c,t[n])):t[n],L?r=(i+=u)+m:(x&&(u=Math.max(l,Math.min(c,2*x[n]-i))),u<i?(r=i,i=u):r=u),g[0]!=i||g[1]!=r)return n?s=null:a=null,g[0]=i,g[1]=r,!0}function y(){m(),T.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),la.select("body").style("cursor",null),N.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),E(),S({type:"brushend"})}var x,b,_=this,w=la.select(la.event.target),S=l.of(_,arguments),T=la.select(_),k=w.datum(),A=!/^(n|s)$/.test(k)&&c,M=!/^(e|w)$/.test(k)&&u,L=w.classed("extent"),E=Y(_),P=la.mouse(_),N=la.select(e(_)).on("keydown.brush",o).on("keyup.brush",g);if(la.event.changedTouches?N.on("touchmove.brush",m).on("touchend.brush",y):N.on("mousemove.brush",m).on("mouseup.brush",y),T.interrupt().selectAll("*").interrupt(),L)P[0]=h[0]-P[0],P[1]=d[0]-P[1];else if(k){var O=+/w$/.test(k),R=+/^n/.test(k);b=[h[1-O]-P[0],d[1-R]-P[1]],P[0]=h[O],P[1]=d[R]}else la.event.altKey&&(x=P.slice());T.style("pointer-events","none").selectAll(".resize").style("display",null),la.select("body").style("cursor",w.style("cursor")),S({type:"brushstart"}),m()}var a,s,l=k(t,"brushstart","brush","brushend"),c=null,u=null,h=[0,0],d=[0,0],f=!0,p=!0,g=Wl[0];return t.event=function(t){t.each(function(){var t=l.of(this,arguments),e={x:h,y:d,i:a,j:s},n=this.__chart__||e;this.__chart__=e,Vl?la.select(this).transition().each("start.brush",function(){a=n.i,s=n.j,h=n.x,d=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=bi(h,e.x),i=bi(d,e.y);return a=s=null,function(r){h=e.x=n(r),d=e.y=i(r),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,s=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(c=e,g=Wl[!c<<1|!u],t):c},t.y=function(e){return arguments.length?(u=e,g=Wl[!c<<1|!u],t):u},t.clamp=function(e){return arguments.length?(c&&u?(f=!!e[0],p=!!e[1]):c?f=!!e:u&&(p=!!e),t):c&&u?[f,p]:c?f:u?p:null},t.extent=function(e){var n,i,r,o,l;return arguments.length?(c&&(n=e[0],i=e[1],u&&(n=n[0],i=i[0]),a=[n,i],c.invert&&(n=c(n),i=c(i)),i<n&&(l=n,n=i,i=l),n==h[0]&&i==h[1]||(h=[n,i])),u&&(r=e[0],o=e[1],c&&(r=r[1],o=o[1]),s=[r,o],u.invert&&(r=u(r),o=u(o)),o<r&&(l=r,r=o,o=l),r==d[0]&&o==d[1]||(d=[r,o])),t):(c&&(a?(n=a[0],i=a[1]):(n=h[0],i=h[1],c.invert&&(n=c.invert(n),i=c.invert(i)),i<n&&(l=n,n=i,i=l))),u&&(s?(r=s[0],o=s[1]):(r=d[0],o=d[1],u.invert&&(r=u.invert(r),o=u.invert(o)),o<r&&(l=r,r=o,o=l))),c&&u?[[n,r],[i,o]]:c?[n,i]:u&&[r,o])},t.clear=function(){return t.empty()||(h=[0,0],d=[0,0],a=s=null),t},t.empty=function(){return!!c&&h[0]==h[1]||!!u&&d[0]==d[1]},la.rebind(t,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Wl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Ul=ds.format=ys.timeFormat,Xl=Ul.utc,Yl=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Ul.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ia:Yl,ia.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},ia.toString=Yl.toString,ds.second=Ft(function(t){return new fs(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),ds.seconds=ds.second.range,ds.seconds.utc=ds.second.utc.range,ds.minute=Ft(function(t){return new fs(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),ds.minutes=ds.minute.range,ds.minutes.utc=ds.minute.utc.range,ds.hour=Ft(function(t){var e=t.getTimezoneOffset()/60;return new fs(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),ds.hours=ds.hour.range,ds.hours.utc=ds.hour.utc.range,ds.month=Ft(function(t){return t=ds.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),ds.months=ds.month.range,ds.months.utc=ds.month.utc.range;var Ql=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Zl=[[ds.second,1],[ds.second,5],[ds.second,15],[ds.second,30],[ds.minute,1],[ds.minute,5],[ds.minute,15],[ds.minute,30],[ds.hour,1],[ds.hour,3],[ds.hour,6],[ds.hour,12],[ds.day,1],[ds.day,2],[ds.week,1],[ds.month,1],[ds.month,3],[ds.year,1]],Kl=Ul.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Le]]),Jl={range:function(t,e,n){return la.range(Math.ceil(t/n)*n,+e,n).map(oa)},floor:y,ceil:y};Zl.year=ds.year,ds.scale=function(){return ra(la.scale.linear(),Zl,Kl)};var tc=Zl.map(function(t){return[t[0].utc,t[1]]}),ec=Xl.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Le]]);tc.year=ds.year.utc,ds.scale.utc=function(){return ra(la.scale.linear(),tc,ec)},la.text=At(function(t){return t.responseText}),la.json=function(t,e){return Mt(t,"application/json",aa,e)},la.html=function(t,e){return Mt(t,"text/html",sa,e)},la.xml=At(function(t){return t.responseXML}),"function"==typeof define&&define.amd?(this.d3=la,define("d3",la)):"object"==typeof module&&module.exports?module.exports=la:this.d3=la}(),function(t){"use strict";function e(t){this.owner=t}function n(t,e){if(Object.create)e.prototype=Object.create(t.prototype);else{var n=function(){};n.prototype=t.prototype,e.prototype=new n}return e.prototype.constructor=e,e}function i(t){var e=this.internal=new r(this);e.loadConfig(t),e.beforeInit(t),e.init(),e.afterInit(t),function t(e,n,i){Object.keys(e).forEach(function(r){n[r]=e[r].bind(i),Object.keys(e[r]).length>0&&t(e[r],n[r],i)})}(s,this,this)}function r(e){var n=this;n.d3=t.d3?t.d3:"undefined"!=typeof require?require("d3"):void 0,n.api=e,n.config=n.getDefaultConfig(),n.data={},n.cache={},n.axes={}}function o(t){e.call(this,t)}function a(t,e){function n(t,e){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+b)+", 0)"})}function i(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})}function r(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function o(t){var e,n,i=[];if(t.ticks)return t.ticks.apply(t,f);for(n=t.domain(),e=Math.ceil(n[0]);e<n[1];e++)i.push(e);return i.length>0&&i[0]>0&&i.unshift(i[0]-(i[1]-i[0])),i}function a(){var t,n=g.copy();return e.isCategory&&(t=g.domain(),n.domain([t[0],t[1]-1])),n}function s(t){var e=d?d(t):t;return"undefined"!=typeof e?e:""}function l(t){if(k)return k;var e={h:11.5,w:5.5};return t.select("text").text(s).each(function(t){var n=this.getBoundingClientRect(),i=s(t),r=n.height,o=i?n.width/i.length:void 0;r&&o&&(e.h=r,e.w=o)}).text(""),k=e,e}function c(n){return e.withoutTransition?n:t.transition(n)}function u(d){d.each(function(){function d(t,n){function i(t,e){o=void 0;for(var s=1;s<e.length;s++)if(" "===e.charAt(s)&&(o=s),r=e.substr(0,s+1),a=W.w*r.length,n<a)return i(t.concat(e.substr(0,o?o:s)),e.slice(o?o+1:s));return t.concat(e)}var r,o,a,l=s(t),c=[];return"[object Array]"===Object.prototype.toString.call(l)?l:((!n||n<=0)&&(n=Y?95:e.isCategory?Math.ceil(P(N[1])-P(N[0]))-12:110),i(c,l+""))}function f(t,e){var n=W.h;return 0===e&&(n="left"===m||"right"===m?-((U[t.index]-1)*(W.h/2)-3):".71em"),n}function _(t){var e=g(t)+(p?0:b);return j[0]<e&&e<j[1]?v:0}function w(t){return t?t>0?"start":"end":"middle"}function S(t){return t?"rotate("+t+")":""}function C(t){return t?8*Math.sin(Math.PI*(t/180)):0}function T(t){return t?11.5-2.5*(t/15)*(t>0?1:-1):X}var k,A,M,L=u.g=t.select(this),E=this.__chart__||g,P=this.__chart__=a(),N=x?x:o(P),O=L.selectAll(".tick").data(N,P),R=O.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),D=O.exit().remove(),I=c(O).style("opacity",1),j=g.rangeExtent?g.rangeExtent():r(g.range()),V=L.selectAll(".domain").data([0]),H=(V.enter().append("path").attr("class","domain"),c(V));R.append("line"),R.append("text");var F=R.select("line"),z=I.select("line"),q=R.select("text"),G=I.select("text");e.isCategory?(b=Math.ceil((P(1)-P(0))/2),A=p?0:b,M=p?b:0):b=A=0;var B,$,W=l(L.select(".tick")),U=[],X=Math.max(v,0)+y,Y="left"===m||"right"===m;B=O.select("text"),$=B.selectAll("tspan").data(function(t,n){var i=e.tickMultiline?d(t,e.tickWidth):[].concat(s(t));return U[n]=i.length,i.map(function(t){return{index:n,splitted:t}})}),$.enter().append("tspan"),$.exit().remove(),$.text(function(t){return t.splitted});var Q=e.tickTextRotate;switch(m){case"bottom":k=n,F.attr("y2",v),q.attr("y",X),z.attr("x1",A).attr("x2",A).attr("y2",_),G.attr("x",0).attr("y",T(Q)).style("text-anchor",w(Q)).attr("transform",S(Q)),$.attr("x",0).attr("dy",f).attr("dx",C(Q)),H.attr("d","M"+j[0]+","+h+"V0H"+j[1]+"V"+h);break;case"top":k=n,F.attr("y2",-v),q.attr("y",-X),z.attr("x2",0).attr("y2",-v),G.attr("x",0).attr("y",-X),B.style("text-anchor","middle"),$.attr("x",0).attr("dy","0em"),H.attr("d","M"+j[0]+","+-h+"V0H"+j[1]+"V"+-h);break;case"left":k=i,F.attr("x2",-v),q.attr("x",-X),z.attr("x2",-v).attr("y1",M).attr("y2",M),G.attr("x",-X).attr("y",b),B.style("text-anchor","end"),$.attr("x",-X).attr("dy",f),H.attr("d","M"+-h+","+j[0]+"H0V"+j[1]+"H"+-h);break;case"right":k=i,F.attr("x2",v),q.attr("x",X),z.attr("x2",v).attr("y2",0),G.attr("x",X).attr("y",0),B.style("text-anchor","start"),$.attr("x",X).attr("dy",f),H.attr("d","M"+h+","+j[0]+"H0V"+j[1]+"H"+h)}if(P.rangeBand){var Z=P,K=Z.rangeBand()/2;E=P=function(t){return Z(t)+K}}else E.rangeBand?E=P:D.call(k,P);R.call(k,E),I.call(k,P)})}var h,d,f,p,g=t.scale.linear(),m="bottom",v=6,y=3,x=null,b=0,_=!0;return e=e||{},h=e.withOuterTick?6:0,u.scale=function(t){return arguments.length?(g=t,u):g},u.orient=function(t){return arguments.length?(m=t in{top:1,right:1,bottom:1,left:1}?t+"":"bottom",u):m},u.tickFormat=function(t){return arguments.length?(d=t,u):d},u.tickCentered=function(t){return arguments.length?(p=t,u):p},u.tickOffset=function(){return b},u.tickInterval=function(){var t,n;return e.isCategory?t=2*b:(n=u.g.select("path.domain").node().getTotalLength()-2*h,t=n/u.g.selectAll("line").size()),t===1/0?0:t},u.ticks=function(){return arguments.length?(f=arguments,u):f},u.tickCulling=function(t){return arguments.length?(_=t,u):_},u.tickValues=function(t){if("function"==typeof t)x=function(){return t(g.domain())};else{if(!arguments.length)return x;x=t}return u},u}var s,l,c,u={version:"0.4.11"};u.generate=function(t){return new i(t)},u.chart={fn:i.prototype,internal:{fn:r.prototype,axis:{fn:o.prototype}}},s=u.chart.fn,l=u.chart.internal.fn,c=u.chart.internal.axis.fn,l.beforeInit=function(){},l.afterInit=function(){},l.init=function(){var t=this,e=t.config;if(t.initParams(),e.data_url)t.convertUrlToData(e.data_url,e.data_mimeType,e.data_headers,e.data_keys,t.initWithData);else if(e.data_json)t.initWithData(t.convertJsonToData(e.data_json,e.data_keys));else if(e.data_rows)t.initWithData(t.convertRowsToData(e.data_rows));else{if(!e.data_columns)throw Error("url or json or rows or columns is required.");t.initWithData(t.convertColumnsToData(e.data_columns))}},l.initParams=function(){var t=this,e=t.d3,n=t.config;t.clipId="c3-"+ +new Date+"-clip",t.clipIdForXAxis=t.clipId+"-xaxis",t.clipIdForYAxis=t.clipId+"-yaxis",t.clipIdForGrid=t.clipId+"-grid",t.clipIdForSubchart=t.clipId+"-subchart",t.clipPath=t.getClipPath(t.clipId),t.clipPathForXAxis=t.getClipPath(t.clipIdForXAxis),t.clipPathForYAxis=t.getClipPath(t.clipIdForYAxis),t.clipPathForGrid=t.getClipPath(t.clipIdForGrid),t.clipPathForSubchart=t.getClipPath(t.clipIdForSubchart),t.dragStart=null,t.dragging=!1,t.flowing=!1,t.cancelClick=!1,t.mouseover=!1,t.transiting=!1,t.color=t.generateColor(),t.levelColor=t.generateLevelColor(),t.dataTimeFormat=n.data_xLocaltime?e.time.format:e.time.format.utc,t.axisTimeFormat=n.axis_x_localtime?e.time.format:e.time.format.utc,t.defaultAxisTimeFormat=t.axisTimeFormat.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%-m/%-d",function(t){return t.getDay()&&1!==t.getDate()}],["%-m/%-d",function(t){return 1!==t.getDate()}],["%-m/%-d",function(t){return t.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),t.hiddenTargetIds=[],t.hiddenLegendIds=[],t.focusedTargetIds=[],t.defocusedTargetIds=[],t.xOrient=n.axis_rotated?"left":"bottom",t.yOrient=n.axis_rotated?n.axis_y_inner?"top":"bottom":n.axis_y_inner?"right":"left",t.y2Orient=n.axis_rotated?n.axis_y2_inner?"bottom":"top":n.axis_y2_inner?"left":"right",t.subXOrient=n.axis_rotated?"left":"bottom",t.isLegendRight="right"===n.legend_position,t.isLegendInset="inset"===n.legend_position,t.isLegendTop="top-left"===n.legend_inset_anchor||"top-right"===n.legend_inset_anchor,t.isLegendLeft="top-left"===n.legend_inset_anchor||"bottom-left"===n.legend_inset_anchor,t.legendStep=0,t.legendItemWidth=0,t.legendItemHeight=0,t.currentMaxTickWidths={x:0,y:0,y2:0},t.rotated_padding_left=30,t.rotated_padding_right=n.axis_rotated&&!n.axis_x_show?0:30,t.rotated_padding_top=5,t.withoutFadeIn={},t.intervalForObserveInserted=void 0,t.axes.subx=e.selectAll([])},l.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},l.initWithData=function(t){var e,n,i=this,r=i.d3,a=i.config,s=!0;i.axis=new o(i),i.initPie&&i.initPie(),i.initBrush&&i.initBrush(),i.initZoom&&i.initZoom(),a.bindto?"function"==typeof a.bindto.node?i.selectChart=a.bindto:i.selectChart=r.select(a.bindto):i.selectChart=r.selectAll([]),i.selectChart.empty()&&(i.selectChart=r.select(document.createElement("div")).style("opacity",0),i.observeInserted(i.selectChart),s=!1),i.selectChart.html("").classed("c3",!0),i.data.xs={},i.data.targets=i.convertDataToTargets(t),a.data_filter&&(i.data.targets=i.data.targets.filter(a.data_filter)),a.data_hide&&i.addHiddenTargetIds(a.data_hide===!0?i.mapToIds(i.data.targets):a.data_hide),a.legend_hide&&i.addHiddenLegendIds(a.legend_hide===!0?i.mapToIds(i.data.targets):a.legend_hide),i.hasType("gauge")&&(a.legend_show=!1),i.updateSizes(),i.updateScales(),i.x.domain(r.extent(i.getXDomain(i.data.targets))),i.y.domain(i.getYDomain(i.data.targets,"y")),i.y2.domain(i.getYDomain(i.data.targets,"y2")),i.subX.domain(i.x.domain()),i.subY.domain(i.y.domain()),i.subY2.domain(i.y2.domain()),i.orgXDomain=i.x.domain(),i.brush&&i.brush.scale(i.subX),a.zoom_enabled&&i.zoom.scale(i.x),i.svg=i.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return a.onmouseover.call(i)}).on("mouseleave",function(){return a.onmouseout.call(i)}),i.config.svg_classname&&i.svg.attr("class",i.config.svg_classname),e=i.svg.append("defs"),i.clipChart=i.appendClip(e,i.clipId),i.clipXAxis=i.appendClip(e,i.clipIdForXAxis),i.clipYAxis=i.appendClip(e,i.clipIdForYAxis),i.clipGrid=i.appendClip(e,i.clipIdForGrid),i.clipSubchart=i.appendClip(e,i.clipIdForSubchart),i.updateSvgSize(),n=i.main=i.svg.append("g").attr("transform",i.getTranslate("main")),i.initSubchart&&i.initSubchart(),i.initTooltip&&i.initTooltip(),i.initLegend&&i.initLegend(),i.initTitle&&i.initTitle(),n.append("text").attr("class",h.text+" "+h.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),i.initRegion(),i.initGrid(),n.append("g").attr("clip-path",i.clipPath).attr("class",h.chart),a.grid_lines_front&&i.initGridLines(),i.initEventRect(),i.initChartElements(),n.insert("rect",a.zoom_privileged?null:"g."+h.regions).attr("class",h.zoomRect).attr("width",i.width).attr("height",i.height).style("opacity",0).on("dblclick.zoom",null),a.axis_x_extent&&i.brush.extent(i.getDefaultExtent()),i.axis.init(),i.updateTargets(i.data.targets),s&&(i.updateDimension(),i.config.oninit.call(i),i.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),i.bindResize(),i.api.element=i.selectChart.node()},l.smoothLines=function(t,e){var n=this;"grid"===e&&t.each(function(){var t=n.d3.select(this),e=t.attr("x1"),i=t.attr("x2"),r=t.attr("y1"),o=t.attr("y2");t.attr({x1:Math.ceil(e),x2:Math.ceil(i),y1:Math.ceil(r),y2:Math.ceil(o)})})},l.updateSizes=function(){var t=this,e=t.config,n=t.legend?t.getLegendHeight():0,i=t.legend?t.getLegendWidth():0,r=t.isLegendRight||t.isLegendInset?0:n,o=t.hasArcType(),a=e.axis_rotated||o?0:t.getHorizontalAxisHeight("x"),s=e.subchart_show&&!o?e.subchart_size_height+a:0;t.currentWidth=t.getCurrentWidth(),t.currentHeight=t.getCurrentHeight(),t.margin=e.axis_rotated?{top:t.getHorizontalAxisHeight("y2")+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:t.getHorizontalAxisHeight("y")+r+t.getCurrentPaddingBottom(),left:s+(o?0:t.getCurrentPaddingLeft())}:{top:4+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:a+s+r+t.getCurrentPaddingBottom(),left:o?0:t.getCurrentPaddingLeft()},t.margin2=e.axis_rotated?{top:t.margin.top,right:NaN,bottom:20+r,left:t.rotated_padding_left}:{top:t.currentHeight-s-r,right:NaN,bottom:a+r,left:t.margin.left},t.margin3={top:0,right:NaN,bottom:0,left:0},t.updateSizeForLegend&&t.updateSizeForLegend(n,i),t.width=t.currentWidth-t.margin.left-t.margin.right,t.height=t.currentHeight-t.margin.top-t.margin.bottom,t.width<0&&(t.width=0),t.height<0&&(t.height=0),t.width2=e.axis_rotated?t.margin.left-t.rotated_padding_left-t.rotated_padding_right:t.width,t.height2=e.axis_rotated?t.height:t.currentHeight-t.margin2.top-t.margin2.bottom,t.width2<0&&(t.width2=0),t.height2<0&&(t.height2=0),t.arcWidth=t.width-(t.isLegendRight?i+10:0),t.arcHeight=t.height-(t.isLegendRight?0:10),t.hasType("gauge")&&!e.gauge_fullCircle&&(t.arcHeight+=t.height-t.getGaugeLabelHeight()),t.updateRadius&&t.updateRadius(),t.isLegendRight&&o&&(t.margin3.left=t.arcWidth/2+1.1*t.radiusExpanded)},l.updateTargets=function(t){var e=this;e.updateTargetsForText(t),e.updateTargetsForBar(t),e.updateTargetsForLine(t),e.hasArcType()&&e.updateTargetsForArc&&e.updateTargetsForArc(t),e.updateTargetsForSubchart&&e.updateTargetsForSubchart(t),e.showTargets()},l.showTargets=function(){var t=this;t.svg.selectAll("."+h.target).filter(function(e){return t.isTargetToShow(e.id)}).transition().duration(t.config.transition_duration).style("opacity",1)},l.redraw=function(t,e){var n,i,r,o,a,s,l,c,u,d,f,p,g,m,v,y,x,b,_,S,C,T,k,A,M,L,E,P,N,O=this,R=O.main,D=O.d3,I=O.config,j=O.getShapeIndices(O.isAreaType),V=O.getShapeIndices(O.isBarType),H=O.getShapeIndices(O.isLineType),F=O.hasArcType(),z=O.filterTargetsToShow(O.data.targets),q=O.xv.bind(O);if(t=t||{},n=w(t,"withY",!0),i=w(t,"withSubchart",!0),r=w(t,"withTransition",!0),s=w(t,"withTransform",!1),l=w(t,"withUpdateXDomain",!1),c=w(t,"withUpdateOrgXDomain",!1),u=w(t,"withTrimXDomain",!0),g=w(t,"withUpdateXAxis",l),d=w(t,"withLegend",!1),f=w(t,"withEventRect",!0),p=w(t,"withDimension",!0),o=w(t,"withTransitionForExit",r),a=w(t,"withTransitionForAxis",r),_=r?I.transition_duration:0,S=o?_:0,C=a?_:0,e=e||O.axis.generateTransitions(C),d&&I.legend_show?O.updateLegend(O.mapToIds(O.data.targets),t,e):p&&O.updateDimension(!0),O.isCategorized()&&0===z.length&&O.x.domain([0,O.axes.x.selectAll(".tick").size()]),z.length?(O.updateXDomain(z,l,c,u),I.axis_x_tick_values||(A=O.axis.updateXAxisTickValues(z))):(O.xAxis.tickValues([]),O.subXAxis.tickValues([])),I.zoom_rescale&&!t.flow&&(E=O.x.orgDomain()),O.y.domain(O.getYDomain(z,"y",E)),O.y2.domain(O.getYDomain(z,"y2",E)),!I.axis_y_tick_values&&I.axis_y_tick_count&&O.yAxis.tickValues(O.axis.generateTickValues(O.y.domain(),I.axis_y_tick_count)),!I.axis_y2_tick_values&&I.axis_y2_tick_count&&O.y2Axis.tickValues(O.axis.generateTickValues(O.y2.domain(),I.axis_y2_tick_count)),O.axis.redraw(e,F),O.axis.updateLabels(r),(l||g)&&z.length)if(I.axis_x_tick_culling&&A){for(M=1;M<A.length;M++)if(A.length/M<I.axis_x_tick_culling_max){L=M;break}O.svg.selectAll("."+h.axisX+" .tick text").each(function(t){var e=A.indexOf(t);e>=0&&D.select(this).style("display",e%L?"none":"block")})}else O.svg.selectAll("."+h.axisX+" .tick text").style("display","block");m=O.generateDrawArea?O.generateDrawArea(j,!1):void 0,v=O.generateDrawBar?O.generateDrawBar(V):void 0,y=O.generateDrawLine?O.generateDrawLine(H,!1):void 0,x=O.generateXYForText(j,V,H,!0),b=O.generateXYForText(j,V,H,!1),n&&(O.subY.domain(O.getYDomain(z,"y")),O.subY2.domain(O.getYDomain(z,"y2"))),O.updateXgridFocus(),R.select("text."+h.text+"."+h.empty).attr("x",O.width/2).attr("y",O.height/2).text(I.data_empty_label_text).transition().style("opacity",z.length?0:1),O.updateGrid(_),O.updateRegion(_),O.updateBar(S),O.updateLine(S),O.updateArea(S),O.updateCircle(),O.hasDataLabel()&&O.updateText(S),O.redrawTitle&&O.redrawTitle(),O.redrawArc&&O.redrawArc(_,S,s),O.redrawSubchart&&O.redrawSubchart(i,e,_,S,j,V,H),R.selectAll("."+h.selectedCircles).filter(O.isBarType.bind(O)).selectAll("circle").remove(),I.interaction_enabled&&!t.flow&&f&&(O.redrawEventRect(),O.updateZoom&&O.updateZoom()),O.updateCircleY(),P=(O.config.axis_rotated?O.circleY:O.circleX).bind(O),N=(O.config.axis_rotated?O.circleX:O.circleY).bind(O),t.flow&&(k=O.generateFlow({targets:z,flow:t.flow,duration:t.flow.duration,drawBar:v,drawLine:y,drawArea:m,cx:P,cy:N,xv:q,xForText:x,yForText:b})),(_||k)&&O.isTabVisible()?D.transition().duration(_).each(function(){var e=[];[O.redrawBar(v,!0),O.redrawLine(y,!0),O.redrawArea(m,!0),O.redrawCircle(P,N,!0),O.redrawText(x,b,t.flow,!0),O.redrawRegion(!0),O.redrawGrid(!0)].forEach(function(t){t.forEach(function(t){e.push(t)})}),T=O.generateWait(),e.forEach(function(t){T.add(t)})}).call(T,function(){k&&k(),I.onrendered&&I.onrendered.call(O)}):(O.redrawBar(v),O.redrawLine(y),O.redrawArea(m),O.redrawCircle(P,N),O.redrawText(x,b,t.flow),O.redrawRegion(),O.redrawGrid(),I.onrendered&&I.onrendered.call(O)),O.mapToIds(O.data.targets).forEach(function(t){O.withoutFadeIn[t]=!0})},l.updateAndRedraw=function(t){var e,n=this,i=n.config;t=t||{},t.withTransition=w(t,"withTransition",!0),t.withTransform=w(t,"withTransform",!1),t.withLegend=w(t,"withLegend",!1),t.withUpdateXDomain=!0,t.withUpdateOrgXDomain=!0,t.withTransitionForExit=!1,t.withTransitionForTransform=w(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},l.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},l.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},l.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},l.isCustomX=function(){var t=this,e=t.config;return!t.isTimeSeries()&&(e.data_x||_(e.data_xs))},l.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},l.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=y(i.margin.left),n=y(i.margin.top)):"context"===t?(e=y(i.margin2.left),n=y(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,
-n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2),"translate("+e+","+n+")"},l.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},l.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},l.opacityForCircle=function(t){var e=this.config.point_show?1:0;return d(t.value)?this.isScatterType(t)?.5:e:0},l.opacityForText=function(){return this.hasDataLabel()?1:0},l.xx=function(t){return t?this.x(t.x):null},l.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},l.yv=function(t){var e=this,n=t.axis&&"y2"===t.axis?e.y2:e.y;return Math.ceil(n(t.value))},l.subxx=function(t){return t?this.subX(t.x):null},l.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+h.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+h.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+h.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+h.chartArcs).attr("transform",o.getTranslate("arc"))},l.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},l.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .background");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.svg.select("."+h.zoomRect).attr("width",t.width).attr("height",t.height),t.selectChart.style("max-height",t.currentHeight+"px")},l.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},l.observeInserted=function(e){var n,i=this;return"undefined"==typeof MutationObserver?void t.console.error("MutationObserver not defined."):(n=new MutationObserver(function(r){r.forEach(function(r){"childList"===r.type&&r.previousSibling&&(n.disconnect(),i.intervalForObserveInserted=t.setInterval(function(){e.node().parentNode&&(t.clearInterval(i.intervalForObserveInserted),i.updateDimension(),i.brush&&i.brush.update(),i.config.oninit.call(i),i.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),e.transition().style("opacity",1))},10))})}),void n.observe(e.node(),{attributes:!0,childList:!0,characterData:!0}))},l.bindResize=function(){var e=this,n=e.config;if(e.resizeFunction=e.generateResize(),e.resizeFunction.add(function(){n.onresize.call(e)}),n.resize_auto&&e.resizeFunction.add(function(){void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),e.resizeTimeout=t.setTimeout(function(){delete e.resizeTimeout,e.api.flush()},100)}),e.resizeFunction.add(function(){n.onresized.call(e)}),t.attachEvent)t.attachEvent("onresize",e.resizeFunction);else if(t.addEventListener)t.addEventListener("resize",e.resizeFunction,!1);else{var i=t.onresize;i?i.add&&i.remove||(i=e.generateResize(),i.add(t.onresize)):i=e.generateResize(),i.add(e.resizeFunction),t.onresize=i}},l.generateResize=function(){function t(){e.forEach(function(t){t()})}var e=[];return t.add=function(t){e.push(t)},t.remove=function(t){for(var n=0;n<e.length;n++)if(e[n]===t){e.splice(n,1);break}},t},l.endall=function(t,e){var n=0;t.each(function(){++n}).each("end",function(){--n||e.apply(this,arguments)})},l.generateWait=function(){var t=[],e=function(e,n){var i=setInterval(function(){var e=0;t.forEach(function(t){if(t.empty())return void(e+=1);try{t.transition()}catch(t){e+=1}}),e===t.length&&(clearInterval(i),n&&n())},10)};return e.add=function(e){t.push(e)},e},l.parseDate=function(e){var n,i=this;return e instanceof Date?n=e:"string"==typeof e?n=i.dataTimeFormat(i.config.data_xFormat).parse(e):"number"!=typeof e||isNaN(e)||(n=new Date(+e)),n&&!isNaN(+n)||t.console.error("Failed to parse x '"+e+"' to Date object"),n},l.isTabVisible=function(){var t;return"undefined"!=typeof document.hidden?t="hidden":"undefined"!=typeof document.mozHidden?t="mozHidden":"undefined"!=typeof document.msHidden?t="msHidden":"undefined"!=typeof document.webkitHidden&&(t="webkitHidden"),!document[t]},l.getDefaultConfig=function(){var t={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(t){return t},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(t,e,n,i){return this.getTooltipContent?this.getTooltipContent(t,e,n,i):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(e){t[e]=this.additionalConfig[e]},this),t},l.additionalConfig={},l.loadConfig=function(t){function e(){var t=i.shift();return t&&n&&"object"==typeof n&&t in n?(n=n[t],e()):t?void 0:n}var n,i,r,o=this.config;Object.keys(o).forEach(function(a){n=t,i=a.split("_"),r=e(),m(r)&&(o[a]=r)})},l.getScale=function(t,e,n){return(n?this.d3.time.scale():this.d3.scale.linear()).range([t,e])},l.getX=function(t,e,n,i){var r,o=this,a=o.getScale(t,e,o.isTimeSeries()),s=n?a.domain(n):a;o.isCategorized()?(i=i||function(){return 0},a=function(t,e){var n=s(t)+i(t);return e?n:Math.ceil(n)}):a=function(t,e){var n=s(t);return e?n:Math.ceil(n)};for(r in s)a[r]=s[r];return a.orgDomain=function(){return s.domain()},o.isCategorized()&&(a.domain=function(t){return arguments.length?(s.domain(t),a):(t=this.orgDomain(),[t[0],t[1]+1])}),a},l.getY=function(t,e,n){var i=this.getScale(t,e,this.isTimeSeriesY());return n&&i.domain(n),i},l.getYScale=function(t){return"y2"===this.axis.getId(t)?this.y2:this.y},l.getSubYScale=function(t){return"y2"===this.axis.getId(t)?this.subY2:this.subY},l.updateScales=function(){var t=this,e=t.config,n=!t.x;t.xMin=e.axis_rotated?1:0,t.xMax=e.axis_rotated?t.height:t.width,t.yMin=e.axis_rotated?0:t.height,t.yMax=e.axis_rotated?t.width:1,t.subXMin=t.xMin,t.subXMax=t.xMax,t.subYMin=e.axis_rotated?0:t.height2,t.subYMax=e.axis_rotated?t.width2:1,t.x=t.getX(t.xMin,t.xMax,n?void 0:t.x.orgDomain(),function(){return t.xAxis.tickOffset()}),t.y=t.getY(t.yMin,t.yMax,n?e.axis_y_default:t.y.domain()),t.y2=t.getY(t.yMin,t.yMax,n?e.axis_y2_default:t.y2.domain()),t.subX=t.getX(t.xMin,t.xMax,t.orgXDomain,function(e){return e%1?0:t.subXAxis.tickOffset()}),t.subY=t.getY(t.subYMin,t.subYMax,n?e.axis_y_default:t.subY.domain()),t.subY2=t.getY(t.subYMin,t.subYMax,n?e.axis_y2_default:t.subY2.domain()),t.xAxisTickFormat=t.axis.getXAxisTickFormat(),t.xAxisTickValues=t.axis.getXAxisTickValues(),t.yAxisTickValues=t.axis.getYAxisTickValues(),t.y2AxisTickValues=t.axis.getY2AxisTickValues(),t.xAxis=t.axis.getXAxis(t.x,t.xOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.subXAxis=t.axis.getXAxis(t.subX,t.subXOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.yAxis=t.axis.getYAxis(t.y,t.yOrient,e.axis_y_tick_format,t.yAxisTickValues,e.axis_y_tick_outer),t.y2Axis=t.axis.getYAxis(t.y2,t.y2Orient,e.axis_y2_tick_format,t.y2AxisTickValues,e.axis_y2_tick_outer),n||(t.brush&&t.brush.scale(t.subX),e.zoom_enabled&&t.zoom.scale(t.x)),t.updateArc&&t.updateArc()},l.getYDomainMin=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasNegativeValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t<0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t>0||(u[i][e]+=+t)});return s.d3.min(Object.keys(u).map(function(t){return s.d3.min(u[t])}))},l.getYDomainMax=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasPositiveValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t>0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t<0||(u[i][e]+=+t)});return s.d3.max(Object.keys(u).map(function(t){return s.d3.max(u[t])}))},l.getYDomain=function(t,e,n){var i,r,o,a,s,l,c,u,h,f,p,g=this,m=g.config,v=t.filter(function(t){return g.axis.getId(t.id)===e}),y=n?g.filterByXDomain(v,n):v,b="y2"===e?m.axis_y2_min:m.axis_y_min,w="y2"===e?m.axis_y2_max:m.axis_y_max,S=g.getYDomainMin(y),C=g.getYDomainMax(y),T="y2"===e?m.axis_y2_center:m.axis_y_center,k=g.hasType("bar",y)&&m.bar_zerobased||g.hasType("area",y)&&m.area_zerobased,A="y2"===e?m.axis_y2_inverted:m.axis_y_inverted,M=g.hasDataLabel()&&m.axis_rotated,L=g.hasDataLabel()&&!m.axis_rotated;return S=d(b)?b:d(w)?S<w?S:w-10:S,C=d(w)?w:d(b)?b<C?C:b+10:C,0===y.length?"y2"===e?g.y2.domain():g.y.domain():(isNaN(S)&&(S=0),isNaN(C)&&(C=S),S===C&&(S<0?C=0:S=0),f=S>=0&&C>=0,p=S<=0&&C<=0,(d(b)&&f||d(w)&&p)&&(k=!1),k&&(f&&(S=0),p&&(C=0)),r=Math.abs(C-S),o=a=s=.1*r,"undefined"!=typeof T&&(l=Math.max(Math.abs(S),Math.abs(C)),C=T+l,S=T-l),M?(c=g.getDataLabelLength(S,C,"width"),u=x(g.y.range()),h=[c[0]/u,c[1]/u],a+=r*(h[1]/(1-h[0]-h[1])),s+=r*(h[0]/(1-h[0]-h[1]))):L&&(c=g.getDataLabelLength(S,C,"height"),a+=g.axis.convertPixelsToAxisPadding(c[1],r),s+=g.axis.convertPixelsToAxisPadding(c[0],r)),"y"===e&&_(m.axis_y_padding)&&(a=g.axis.getPadding(m.axis_y_padding,"top",a,r),s=g.axis.getPadding(m.axis_y_padding,"bottom",s,r)),"y2"===e&&_(m.axis_y2_padding)&&(a=g.axis.getPadding(m.axis_y2_padding,"top",a,r),s=g.axis.getPadding(m.axis_y2_padding,"bottom",s,r)),k&&(f&&(s=S),p&&(a=-C)),i=[S-s,C+a],A?i.reverse():i)},l.getXDomainMin=function(t){var e=this,n=e.config;return m(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},l.getXDomainMax=function(t){var e=this,n=e.config;return m(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},l.getXDomainPadding=function(t){var e,n,i,r,o=this,a=o.config,s=t[1]-t[0];return o.isCategorized()?n=0:o.hasType("bar")?(e=o.getMaxDataCount(),n=e>1?s/(e-1)/2:.5):n=.01*s,"object"==typeof a.axis_x_padding&&_(a.axis_x_padding)?(i=d(a.axis_x_padding.left)?a.axis_x_padding.left:n,r=d(a.axis_x_padding.right)?a.axis_x_padding.right:n):i=r="number"==typeof a.axis_x_padding?a.axis_x_padding:n,{left:i,right:r}},l.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],o=e.getXDomainPadding(n),a=0,s=0;return i-r!==0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(a=e.isTimeSeries()?new Date(i.getTime()-o.left):i-o.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+o.right):r+o.right),[a,s]},l.updateXDomain=function(t,e,n,i,r){var o=this,a=o.config;return n&&(o.x.domain(r?r:o.d3.extent(o.getXDomain(t))),o.orgXDomain=o.x.domain(),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent(),o.subX.domain(o.x.domain()),o.brush&&o.brush.scale(o.subX)),e&&(o.x.domain(r?r:!o.brush||o.brush.empty()?o.orgXDomain:o.brush.extent()),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent()),i&&o.x.domain(o.trimXDomain(o.x.orgDomain())),o.x.domain()},l.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},l.isX=function(t){var e=this,n=e.config;return n.data_x&&t===n.data_x||_(n.data_xs)&&S(n.data_xs,t)},l.isNotX=function(t){return!this.isX(t)},l.getXKey=function(t){var e=this,n=e.config;return n.data_x?n.data_x:_(n.data_xs)?n.data_xs[t]:null},l.getXValuesOfXKey=function(t,e){var n,i=this,r=e&&_(e)?i.mapToIds(e):[];return r.forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},l.getIndexByX=function(t){var e=this,n=e.filterByX(e.data.targets,t);return n.length?n[0].index:null},l.getXValue=function(t,e){var n=this;return t in n.data.xs&&n.data.xs[t]&&d(n.data.xs[t][e])?n.data.xs[t][e]:e},l.getOtherTargetXs=function(){var t=this,e=Object.keys(t.data.xs);return e.length?t.data.xs[e[0]]:null},l.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&t<e.length?e[t]:null},l.addXs=function(t){var e=this;Object.keys(t).forEach(function(n){e.config.data_xs[n]=t[n]})},l.hasMultipleX=function(t){return this.d3.set(Object.keys(t).map(function(e){return t[e]})).size()>1},l.isMultipleX=function(){return _(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},l.addName=function(t){var e,n=this;return t&&(e=n.config.data_names[t.id],t.name=void 0!==e?e:t.id),t},l.getValueOnIndex=function(t,e){var n=t.filter(function(t){return t.index===e});return n.length?n[0]:null},l.updateTargetX=function(t,e){var n=this;t.forEach(function(t){t.values.forEach(function(i,r){i.x=n.generateTargetX(e[r],t.id,r)}),n.data.xs[t.id]=e})},l.updateTargetXs=function(t,e){var n=this;t.forEach(function(t){e[t.id]&&n.updateTargetX([t],e[t.id])})},l.generateTargetX=function(t,e,n){var i,r=this;return i=r.isTimeSeries()?t?r.parseDate(t):r.parseDate(r.getXValue(e,n)):r.isCustomX()&&!r.isCategorized()?d(t)?+t:r.getXValue(e,n):n},l.cloneTarget=function(t){return{id:t.id,id_org:t.id_org,values:t.values.map(function(t){return{x:t.x,value:t.value,id:t.id}})}},l.updateXs=function(){var t=this;t.data.targets.length&&(t.xs=[],t.data.targets[0].values.forEach(function(e){t.xs[e.index]=e.x}))},l.getPrevX=function(t){var e=this.xs[t-1];return"undefined"!=typeof e?e:null},l.getNextX=function(t){var e=this.xs[t+1];return"undefined"!=typeof e?e:null},l.getMaxDataCount=function(){var t=this;return t.d3.max(t.data.targets,function(t){return t.values.length})},l.getMaxDataCountTarget=function(t){var e,n=t.length,i=0;return n>1?t.forEach(function(t){t.values.length>i&&(e=t,i=t.values.length)}):e=n?t[0]:null,e},l.getEdgeX=function(t){var e=this;return t.length?[e.d3.min(t,function(t){return t.values[0].x}),e.d3.max(t,function(t){return t.values[t.values.length-1].x})]:[0,0]},l.mapToIds=function(t){return t.map(function(t){return t.id})},l.mapToTargetIds=function(t){var e=this;return t?[].concat(t):e.mapToIds(e.data.targets)},l.hasTarget=function(t,e){var n,i=this.mapToIds(t);for(n=0;n<i.length;n++)if(i[n]===e)return!0;return!1},l.isTargetToShow=function(t){return this.hiddenTargetIds.indexOf(t)<0},l.isLegendToShow=function(t){return this.hiddenLegendIds.indexOf(t)<0},l.filterTargetsToShow=function(t){var e=this;return t.filter(function(t){return e.isTargetToShow(t.id)})},l.mapTargetsToUniqueXs=function(t){var e=this,n=e.d3.set(e.d3.merge(t.map(function(t){return t.values.map(function(t){return+t.x})}))).values();return n=e.isTimeSeries()?n.map(function(t){return new Date(+t)}):n.map(function(t){return+t}),n.sort(function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN})},l.addHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.concat(t)},l.removeHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(e){return t.indexOf(e)<0})},l.addHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.concat(t)},l.removeHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(e){return t.indexOf(e)<0})},l.getValuesAsIdKeyed=function(t){var e={};return t.forEach(function(t){e[t.id]=[],t.values.forEach(function(n){e[t.id].push(n.value)})}),e},l.checkValueInTargets=function(t,e){var n,i,r,o=Object.keys(t);for(n=0;n<o.length;n++)for(r=t[o[n]].values,i=0;i<r.length;i++)if(e(r[i].value))return!0;return!1},l.hasNegativeValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t<0})},l.hasPositiveValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t>0})},l.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},l.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},l.orderTargets=function(t){var e=this,n=e.config,i=e.isOrderAsc(),r=e.isOrderDesc();return i||r?t.sort(function(t,e){var n=function(t,e){return t+Math.abs(e.value)},r=t.values.reduce(n,0),o=e.values.reduce(n,0);return i?o-r:r-o}):f(n.data_order)&&t.sort(n.data_order),t},l.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e===0})},l.filterRemoveNull=function(t){return t.filter(function(t){return d(t.value)})},l.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},l.hasDataLabel=function(){var t=this.config;return!("boolean"!=typeof t.data_labels||!t.data_labels)||!("object"!=typeof t.data_labels||!_(t.data_labels))},l.getDataLabelLength=function(t,e,n){var i=this,r=[0,0],o=1.3;return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=this.getBoundingClientRect()[n]*o}).remove(),r},l.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},l.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},l.findSameXOfValues=function(t,e){var n,i=t[e].x,r=[];for(n=e-1;n>=0&&i===t[n].x;n--)r.push(t[n]);for(n=e;n<t.length&&i===t[n].x;n++)r.push(t[n]);return r},l.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},l.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+h.bars+i.getTargetSelectorSuffix(t.id)+" ."+h.bar+"-"+t.index).node();!n&&i.isWithinBar(e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var o=i.dist(t,e);o<r&&(r=o,n=t)}),n},l.dist=function(t,e){var n=this,i=n.config,r=i.axis_rotated?1:0,o=i.axis_rotated?0:1,a=n.circleY(t,t.index),s=n.x(t.x);return Math.sqrt(Math.pow(s-e[r],2)+Math.pow(a-e[o],2))},l.convertValuesToStep=function(t){var e,n=[].concat(t);if(!this.isCategorized())return t;for(e=t.length+1;0<e;e--)n[e]=n[e-1];return n[0]={x:n[0].x-1,value:n[0].value,id:n[0].id},n[t.length+1]={x:n[t.length].x+1,value:n[t.length].value,id:n[t.length].id},n},l.updateDataAttributes=function(t,e){var n=this,i=n.config,r=i["data_"+t];return"undefined"==typeof e?r:(Object.keys(e).forEach(function(t){r[t]=e[t]}),n.redraw({withLegend:!0}),r)},l.convertUrlToData=function(t,e,n,i,r){var o=this,a=e?e:"csv",s=o.d3.xhr(t);n&&Object.keys(n).forEach(function(t){s.header(t,n[t])}),s.get(function(t,e){var n;if(!e)throw new Error(t.responseURL+" "+t.status+" ("+t.statusText+")");n="json"===a?o.convertJsonToData(JSON.parse(e.response),i):"tsv"===a?o.convertTsvToData(e.response):o.convertCsvToData(e.response),r.call(o,n)})},l.convertXsvToData=function(t,e){var n,i=e.parseRows(t);return 1===i.length?(n=[{}],i[0].forEach(function(t){n[0][t]=null})):n=e.parse(t),n},l.convertCsvToData=function(t){return this.convertXsvToData(t,this.d3.csv)},l.convertTsvToData=function(t){return this.convertXsvToData(t,this.d3.tsv)},l.convertJsonToData=function(t,e){var n,i,r=this,o=[];return e?(e.x?(n=e.value.concat(e.x),r.config.data_x=e.x):n=e.value,o.push(n),t.forEach(function(t){var e=[];n.forEach(function(n){var i=r.findValueInJson(t,n);g(i)&&(i=null),e.push(i)}),o.push(e)}),i=r.convertRowsToData(o)):(Object.keys(t).forEach(function(e){o.push([e].concat(t[e]))}),i=r.convertColumnsToData(o)),i},l.findValueInJson=function(t,e){e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var n=e.split("."),i=0;i<n.length;++i){var r=n[i];if(!(r in t))return;t=t[r]}return t},l.convertRowsToData=function(t){var e,n,i=t[0],r={},o=[];for(e=1;e<t.length;e++){for(r={},n=0;n<t[e].length;n++){if(g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[i[n]]=t[e][n]}o.push(r)}return o},l.convertColumnsToData=function(t){var e,n,i,r=[];for(e=0;e<t.length;e++)for(i=t[e][0],n=1;n<t[e].length;n++){if(g(r[n-1])&&(r[n-1]={}),g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[n-1][i]=t[e][n]}return r},l.convertDataToTargets=function(t,e){var n,i=this,r=i.config,o=i.d3.keys(t[0]).filter(i.isNotX,i),a=i.d3.keys(t[0]).filter(i.isX,i);return o.forEach(function(n){var o=i.getXKey(n);i.isCustomX()||i.isTimeSeries()?a.indexOf(o)>=0?i.data.xs[n]=(e&&i.data.xs[n]?i.data.xs[n]:[]).concat(t.map(function(t){return t[o]}).filter(d).map(function(t,e){return i.generateTargetX(t,n,e)})):r.data_x?i.data.xs[n]=i.getOtherTargetXs():_(r.data_xs)&&(i.data.xs[n]=i.getXValuesOfXKey(o,i.data.targets)):i.data.xs[n]=t.map(function(t,e){return e})}),o.forEach(function(t){if(!i.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),n=o.map(function(e,n){var o=r.data_idConverter(e);return{id:o,id_org:e,values:t.map(function(t,a){var s,l=i.getXKey(e),c=t[l],u=null===t[e]||isNaN(t[e])?null:+t[e];return i.isCustomX()&&i.isCategorized()&&0===n&&!g(c)?(0===n&&0===a&&(r.axis_x_categories=[]),s=r.axis_x_categories.indexOf(c),s===-1&&(s=r.axis_x_categories.length,r.axis_x_categories.push(c))):s=i.generateTargetX(c,e,a),(g(t[e])||i.data.xs[e].length<=a)&&(s=void 0),{x:s,value:u,id:o}}).filter(function(t){return m(t.x)})}}),n.forEach(function(t){var e;r.data_xSort&&(t.values=t.values.sort(function(t,e){var n=t.x||0===t.x?t.x:1/0,i=e.x||0===e.x?e.x:1/0;return n-i})),e=0,t.values.forEach(function(t){t.index=e++}),i.data.xs[t.id].sort(function(t,e){return t-e})}),i.hasNegativeValue=i.hasNegativeValueInTargets(n),i.hasPositiveValue=i.hasPositiveValueInTargets(n),r.data_type&&i.setTargetType(i.mapToIds(n).filter(function(t){return!(t in r.data_types)}),r.data_type),n.forEach(function(t){i.addCache(t.id_org,t)}),n},l.load=function(t,e){var n=this;t&&(e.filter&&(t=t.filter(e.filter)),(e.type||e.types)&&t.forEach(function(t){var i=e.types&&e.types[t.id]?e.types[t.id]:e.type;n.setTargetType(t.id,i)}),n.data.targets.forEach(function(e){for(var n=0;n<t.length;n++)if(e.id===t[n].id){e.values=t[n].values,t.splice(n,1);break}}),n.data.targets=n.data.targets.concat(t)),n.updateTargets(n.data.targets),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),e.done&&e.done()},l.loadFromArgs=function(t){var e=this;t.data?e.load(e.convertDataToTargets(t.data),t):t.url?e.convertUrlToData(t.url,t.mimeType,t.headers,t.keys,function(n){e.load(e.convertDataToTargets(n),t)}):t.json?e.load(e.convertDataToTargets(e.convertJsonToData(t.json,t.keys)),t):t.rows?e.load(e.convertDataToTargets(e.convertRowsToData(t.rows)),t):t.columns?e.load(e.convertDataToTargets(e.convertColumnsToData(t.columns)),t):e.load(null,t)},l.unload=function(t,e){var n=this;return e||(e=function(){}),t=t.filter(function(t){return n.hasTarget(n.data.targets,t)}),t&&0!==t.length?(n.svg.selectAll(t.map(function(t){return n.selectorTarget(t)})).transition().style("opacity",0).remove().call(n.endall,e),void t.forEach(function(t){n.withoutFadeIn[t]=!1,n.legend&&n.legend.selectAll("."+h.legendItem+n.getTargetSelectorSuffix(t)).remove(),n.data.targets=n.data.targets.filter(function(e){return e.id!==t})})):void e()},l.categoryName=function(t){var e=this.config;return t<e.axis_x_categories.length?e.axis_x_categories[t]:t},l.initEventRect=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.eventRects).style("fill-opacity",0)},l.redrawEventRect=function(){var t,e,n=this,i=n.config,r=n.isMultipleX(),o=n.main.select("."+h.eventRects).style("cursor",i.zoom_enabled?i.axis_rotated?"ns-resize":"ew-resize":null).classed(h.eventRectsMultiple,r).classed(h.eventRectsSingle,!r);o.selectAll("."+h.eventRect).remove(),n.eventRect=o.selectAll("."+h.eventRect),r?(t=n.eventRect.data([0]),n.generateEventRectsForMultipleXs(t.enter()),n.updateEventRect(t)):(e=n.getMaxDataCountTarget(n.data.targets),o.datum(e?e.values:[]),n.eventRect=o.selectAll("."+h.eventRect),t=n.eventRect.data(function(t){return t}),n.generateEventRectsForSingleX(t.enter()),n.updateEventRect(t),t.exit().remove())},l.updateEventRect=function(t){var e,n,i,r,o,a,s=this,l=s.config;t=t||s.eventRect.data(function(t){return t}),s.isMultipleX()?(e=0,n=0,i=s.width,r=s.height):(!s.isCustomX()&&!s.isTimeSeries()||s.isCategorized()?(o=s.getEventRectWidth(),a=function(t){return s.x(t.x)-o/2}):(s.updateXs(),o=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index);return null===e&&null===n?l.axis_rotated?s.height:s.width:(null===e&&(e=s.x.domain()[0]),null===n&&(n=s.x.domain()[1]),Math.max(0,(s.x(n)-s.x(e))/2))},a=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index),i=s.data.xs[t.id][t.index];return null===e&&null===n?0:(null===e&&(e=s.x.domain()[0]),(s.x(i)+s.x(e))/2)}),e=l.axis_rotated?0:a,n=l.axis_rotated?a:0,i=l.axis_rotated?s.width:o,r=l.axis_rotated?o:s.height),t.attr("class",s.classEvent.bind(s)).attr("x",e).attr("y",n).attr("width",i).attr("height",r)},l.generateEventRectsForSingleX=function(t){var e=this,n=e.d3,i=e.config;t.append("rect").attr("class",e.classEvent.bind(e)).style("cursor",i.data_selection_enabled&&i.data_selection_grouped?"pointer":null).on("mouseover",function(t){var n=t.index;e.dragging||e.flowing||e.hasArcType()||(i.point_focus_expand_enabled&&e.expandCircles(n,null,!0),e.expandBars(n,null,!0),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseover.call(e.api,t)}))}).on("mouseout",function(t){var n=t.index;e.config&&(e.hasArcType()||(e.hideXGridFocus(),e.hideTooltip(),e.unexpandCircles(),e.unexpandBars(),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseout.call(e.api,t)})))}).on("mousemove",function(t){var r,o=t.index,a=e.svg.select("."+h.eventRect+"-"+o);e.dragging||e.flowing||e.hasArcType()||(e.isStepType(t)&&"step-after"===e.config.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,o))&&(o-=1),r=e.filterTargetsToShow(e.data.targets).map(function(t){return e.addName(e.getValueOnIndex(t.values,o))}),i.tooltip_grouped&&(e.showTooltip(r,this),e.showXGridFocus(r)),(!i.tooltip_grouped||i.data_selection_enabled&&!i.data_selection_grouped)&&e.main.selectAll("."+h.shape+"-"+o).each(function(){n.select(this).classed(h.EXPANDED,!0),i.data_selection_enabled&&a.style("cursor",i.data_selection_grouped?"pointer":null),i.tooltip_grouped||(e.hideXGridFocus(),e.hideTooltip(),i.data_selection_grouped||(e.unexpandCircles(o),e.unexpandBars(o)))}).filter(function(t){return e.isWithinShape(this,t)}).each(function(t){i.data_selection_enabled&&(i.data_selection_grouped||i.data_selection_isselectable(t))&&a.style("cursor","pointer"),i.tooltip_grouped||(e.showTooltip([t],this),e.showXGridFocus([t]),i.point_focus_expand_enabled&&e.expandCircles(o,t.id,!0),e.expandBars(o,t.id,!0))}))}).on("click",function(t){var r=t.index;if(!e.hasArcType()&&e.toggleShape){if(e.cancelClick)return void(e.cancelClick=!1);e.isStepType(t)&&"step-after"===i.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,r))&&(r-=1),e.main.selectAll("."+h.shape+"-"+r).each(function(t){(i.data_selection_grouped||e.isWithinShape(this,t))&&(e.toggleShape(this,t,r),
-e.config.data_onclick.call(e.api,t,this))})}}).call(i.data_selection_draggable&&e.drag?n.behavior.drag().origin(Object).on("drag",function(){e.drag(n.mouse(this))}).on("dragstart",function(){e.dragstart(n.mouse(this))}).on("dragend",function(){e.dragend()}):function(){})},l.generateEventRectsForMultipleXs=function(t){function e(){n.svg.select("."+h.eventRect).style("cursor",null),n.hideXGridFocus(),n.hideTooltip(),n.unexpandCircles(),n.unexpandBars()}var n=this,i=n.d3,r=n.config;t.append("rect").attr("x",0).attr("y",0).attr("width",n.width).attr("height",n.height).attr("class",h.eventRect).on("mouseout",function(){n.config&&(n.hasArcType()||e())}).on("mousemove",function(){var t,o,a,s,l=n.filterTargetsToShow(n.data.targets);if(!n.dragging&&!n.hasArcType(l)){if(t=i.mouse(this),o=n.findClosestFromTargets(l,t),!n.mouseover||o&&o.id===n.mouseover.id||(r.data_onmouseout.call(n.api,n.mouseover),n.mouseover=void 0),!o)return void e();a=n.isScatterType(o)||!r.tooltip_grouped?[o]:n.filterByX(l,o.x),s=a.map(function(t){return n.addName(t)}),n.showTooltip(s,this),r.point_focus_expand_enabled&&n.expandCircles(o.index,o.id,!0),n.expandBars(o.index,o.id,!0),n.showXGridFocus(s),(n.isBarType(o.id)||n.dist(o,t)<r.point_sensitivity)&&(n.svg.select("."+h.eventRect).style("cursor","pointer"),n.mouseover||(r.data_onmouseover.call(n.api,o),n.mouseover=o))}}).on("click",function(){var t,e,o=n.filterTargetsToShow(n.data.targets);n.hasArcType(o)||(t=i.mouse(this),e=n.findClosestFromTargets(o,t),e&&(n.isBarType(e.id)||n.dist(e,t)<r.point_sensitivity)&&n.main.selectAll("."+h.shapes+n.getTargetSelectorSuffix(e.id)).selectAll("."+h.shape+"-"+e.index).each(function(){(r.data_selection_grouped||n.isWithinShape(this,e))&&(n.toggleShape(this,e,e.index),n.config.data_onclick.call(n.api,e,this))}))}).call(r.data_selection_draggable&&n.drag?i.behavior.drag().origin(Object).on("drag",function(){n.drag(i.mouse(this))}).on("dragstart",function(){n.dragstart(i.mouse(this))}).on("dragend",function(){n.dragend()}):function(){})},l.dispatchEvent=function(e,n,i){var r=this,o="."+h.eventRect+(r.isMultipleX()?"":"-"+n),a=r.main.select(o).node(),s=a.getBoundingClientRect(),l=s.left+(i?i[0]:0),c=s.top+(i?i[1]:0),u=document.createEvent("MouseEvents");u.initMouseEvent(e,!0,!0,t,0,l,c,l,c,!1,!1,!1,!1,0,null),a.dispatchEvent(u)},l.getCurrentWidth=function(){var t=this,e=t.config;return e.size_width?e.size_width:t.getParentWidth()},l.getCurrentHeight=function(){var t=this,e=t.config,n=e.size_height?e.size_height:t.getParentHeight();return n>0?n:320/(t.hasType("gauge")&&!e.gauge_fullCircle?2:1)},l.getCurrentPaddingTop=function(){var t=this,e=t.config,n=d(e.padding_top)?e.padding_top:0;return t.title&&t.title.node()&&(n+=t.getTitlePadding()),n},l.getCurrentPaddingBottom=function(){var t=this.config;return d(t.padding_bottom)?t.padding_bottom:0},l.getCurrentPaddingLeft=function(t){var e=this,n=e.config;return d(n.padding_left)?n.padding_left:n.axis_rotated?n.axis_x_show?Math.max(v(e.getAxisWidthByAxisId("x",t)),40):1:!n.axis_y_show||n.axis_y_inner?e.axis.getYAxisLabelPosition().isOuter?30:1:v(e.getAxisWidthByAxisId("y",t))},l.getCurrentPaddingRight=function(){var t=this,e=t.config,n=10,i=t.isLegendRight?t.getLegendWidth()+20:0;return d(e.padding_right)?e.padding_right+1:e.axis_rotated?n+i:!e.axis_y2_show||e.axis_y2_inner?2+i+(t.axis.getY2AxisLabelPosition().isOuter?20:0):v(t.getAxisWidthByAxisId("y2"))+i},l.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},l.getParentWidth=function(){return this.getParentRectValue("width")},l.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},l.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?h.axisX:h.axisY,o=e.main.select("."+r).node(),a=o&&i?o.getBoundingClientRect():{right:0},s=e.selectChart.node().getBoundingClientRect(),l=e.hasArcType(),c=a.right-s.left-(l?0:e.getCurrentPaddingLeft(t));return c>0?c:0},l.getAxisWidthByAxisId=function(t,e){var n=this,i=n.axis.getLabelPositionById(t);return n.axis.getMaxTickWidth(t,e)+(i.isInner?20:40)},l.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_x_tick_rotate)/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_y_tick_rotate)/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},l.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},l.getShapeIndices=function(t){var e,n,i=this,r=i.config,o={},a=0;return i.filterTargetsToShow(i.data.targets.filter(t,i)).forEach(function(t){for(e=0;e<r.data_groups.length;e++)if(!(r.data_groups[e].indexOf(t.id)<0))for(n=0;n<r.data_groups[e].length;n++)if(r.data_groups[e][n]in o){o[t.id]=o[r.data_groups[e][n]];break}g(o[t.id])&&(o[t.id]=a++)}),o.__max__=a-1,o},l.getShapeX=function(t,e,n,i){var r=this,o=i?r.subX:r.x;return function(i){var r=i.id in n?n[i.id]:0;return i.x||0===i.x?o(i.x)-t*(e/2-r):0}},l.getShapeY=function(t){var e=this;return function(n){var i=t?e.getSubYScale(n.id):e.getYScale(n.id);return i(n.value)}},l.getShapeOffset=function(t,e,n){var i=this,r=i.orderTargets(i.filterTargetsToShow(i.data.targets.filter(t,i))),o=r.map(function(t){return t.id});return function(t,a){var s=n?i.getSubYScale(t.id):i.getYScale(t.id),l=s(0),c=l;return r.forEach(function(n){var r=i.isStepType(t)?i.convertValuesToStep(n.values):n.values;n.id!==t.id&&e[n.id]===e[t.id]&&o.indexOf(n.id)<o.indexOf(t.id)&&("undefined"!=typeof r[a]&&+r[a].x===+t.x||(a=-1,r.forEach(function(e,n){e.x===t.x&&(a=n)})),a in r&&r[a].value*t.value>=0&&(c+=s(r[a].value)-l))}),c}},l.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(h.bar)||i.isWithinBar(t)):n=!1,n},l.getInterpolate=function(t){var e=this,n=e.isInterpolationType(e.config.spline_interpolation_type)?e.config.spline_interpolation_type:"cardinal";return e.isSplineType(t)?n:e.isStepType(t)?e.config.line_step_type:"linear"},l.initLine=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartLines)},l.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),a=i.classLines.bind(i),s=i.classAreas.bind(i),l=i.classCircles.bind(i),c=i.classFocus.bind(i);e=i.main.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",function(t){return o(t)+c(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a),n.append("g").attr("class",s),n.append("g").attr("class",function(t){return i.generateClass(h.selectedCircles,t.id)}),n.append("g").attr("class",l).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+h.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+h.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},l.updateLine=function(t){var e=this;e.mainLine=e.main.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.mainLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.mainLine.style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),e.mainLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLine=function(t,e){return[(e?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},l.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.svg.line(),o=n.generateGetLinePoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(l).y(s):r.x(s).y(l),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var o,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,l=e?n.x:n.subX,c=a.call(n,t.id),u=0,h=0;return n.isLineType(t)?i.data_regions[t.id]?o=n.lineWithRegions(s,l,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),o=r.interpolate(n.getInterpolate(t))(s)):(s[0]&&(u=l(s[0].x),h=c(s[0].value)),o=i.axis_rotated?"M "+h+" "+u:"M "+u+" "+h),o?o:"M 0 0"}},l.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)]]}},l.lineWithRegions=function(t,e,n,i){function r(t,e){var n;for(n=0;n<e.length;n++)if(e[n].start<t&&t<=e[n].end)return!0;return!1}function o(t){return"M"+t[0][0]+" "+t[0][1]+" "+t[1][0]+" "+t[1][1]}var a,s,l,c,u,h,d,f,p,v,y,x,b=this,_=b.config,w=-1,S="M",C=b.isCategorized()?.5:0,T=[];if(m(i))for(a=0;a<i.length;a++)T[a]={},g(i[a].start)?T[a].start=t[0].x:T[a].start=b.isTimeSeries()?b.parseDate(i[a].start):i[a].start,g(i[a].end)?T[a].end=t[t.length-1].x:T[a].end=b.isTimeSeries()?b.parseDate(i[a].end):i[a].end;for(y=_.axis_rotated?function(t){return n(t.value)}:function(t){return e(t.x)},x=_.axis_rotated?function(t){return e(t.x)}:function(t){return n(t.value)},l=b.isTimeSeries()?function(t,i,r,a){var s,l=t.x.getTime(),c=i.x-t.x,h=new Date(l+c*r),d=new Date(l+c*(r+a));return s=_.axis_rotated?[[n(u(r)),e(h)],[n(u(r+a)),e(d)]]:[[e(h),n(u(r))],[e(d),n(u(r+a))]],o(s)}:function(t,i,r,a){var s;return s=_.axis_rotated?[[n(u(r),!0),e(c(r))],[n(u(r+a),!0),e(c(r+a))]]:[[e(c(r),!0),n(u(r))],[e(c(r+a),!0),n(u(r+a))]],o(s)},a=0;a<t.length;a++){if(g(T)||!r(t[a].x,T))S+=" "+y(t[a])+" "+x(t[a]);else for(c=b.getScale(t[a-1].x+C,t[a].x+C,b.isTimeSeries()),u=b.getScale(t[a-1].value,t[a].value),h=e(t[a].x)-e(t[a-1].x),d=n(t[a].value)-n(t[a-1].value),f=Math.sqrt(Math.pow(h,2)+Math.pow(d,2)),p=2/f,v=2*p,s=p;s<=1;s+=v)S+=l(t[a-1],t[a],s,p);w=t[a].x}return S},l.updateArea=function(t){var e=this,n=e.d3;e.mainArea=e.main.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.mainArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.mainArea.style("opacity",e.orgAreaOpacity),e.mainArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawArea=function(t,e){return[(e?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},l.generateDrawArea=function(t,e){var n=this,i=n.config,r=n.d3.svg.area(),o=n.generateGetAreaPoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(n.getAreaBaseValue(t.id))},c=function(t,e){return i.data_groups.length>0?o(t,e)[1][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(l).x1(c).y(s):r.x(s).y0(i.area_above?0:l).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,o=i.line_connectNull?n.filterRemoveNull(t.values):t.values,a=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(o=n.convertValuesToStep(o)),e=r.interpolate(n.getInterpolate(t))(o)):(o[0]&&(a=n.x(o[0].x),s=n.getYScale(t.id)(o[0].value)),e=i.axis_rotated?"M "+s+" "+a:"M "+a+" "+s),e?e:"M 0 0"}},l.getAreaBaseValue=function(){return 0},l.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,c],[u,h-(r-c)],[u,h-(r-c)],[u,c]]}},l.updateCircle=function(){var t=this;t.mainCircle=t.main.selectAll("."+h.circles).selectAll("."+h.circle).data(t.lineOrScatterData.bind(t)),t.mainCircle.enter().append("circle").attr("class",t.classCircle.bind(t)).attr("r",t.pointR.bind(t)).style("fill",t.color),t.mainCircle.style("opacity",t.initialOpacityForCircle.bind(t)),t.mainCircle.exit().remove()},l.redrawCircle=function(t,e,n){var i=this.main.selectAll("."+h.selectedCircle);return[(n?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",t).attr("cy",e),(n?i.transition(Math.random().toString()):i).attr("cx",t).attr("cy",e)]},l.circleX=function(t){return t.x||0===t.x?this.x(t.x):null},l.updateCircleY=function(){var t,e,n=this;n.config.data_groups.length>0?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},l.getCircles=function(t,e){var n=this;return(e?n.main.selectAll("."+h.circles+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.circle+(d(t)?"-"+t:""))},l.expandCircles=function(t,e,n){var i=this,r=i.pointExpandedR.bind(i);n&&i.unexpandCircles(),i.getCircles(t,e).classed(h.EXPANDED,!0).attr("r",r)},l.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(h.EXPANDED)}).classed(h.EXPANDED,!1).attr("r",n)},l.pointR=function(t){var e=this,n=e.config;return e.isStepType(t)?0:f(n.point_r)?n.point_r(t):n.point_r},l.pointExpandedR=function(t){var e=this,n=e.config;return n.point_focus_expand_enabled?n.point_focus_expand_r?n.point_focus_expand_r:1.75*e.pointR(t):e.pointR(t)},l.pointSelectR=function(t){var e=this,n=e.config;return f(n.point_select_r)?n.point_select_r(t):n.point_select_r?n.point_select_r:4*e.pointR(t)},l.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),o=+r.attr("cx"),a=+r.attr("cy");return Math.sqrt(Math.pow(o-i[0],2)+Math.pow(a-i[1],2))<e},l.isWithinStep=function(t,e){return Math.abs(e-this.d3.mouse(t)[1])<30},l.initBar=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartBars)},l.updateTargetsForBar=function(t){var e,n,i=this,r=i.config,o=i.classChartBar.bind(i),a=i.classBars.bind(i),s=i.classFocus.bind(i);e=i.main.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",function(t){return o(t)+s(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null})},l.updateBar=function(t){var e=this,n=e.barData.bind(e),i=e.classBar.bind(e),r=e.initialOpacity.bind(e),o=function(t){return e.color(t.id)};e.mainBar=e.main.selectAll("."+h.bars).selectAll("."+h.bar).data(n),e.mainBar.enter().append("path").attr("class",i).style("stroke",o).style("fill",o),e.mainBar.style("opacity",r),e.mainBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBar=function(t,e){return[(e?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",t).style("fill",this.color).style("opacity",1)]},l.getBarW=function(t,e){var n=this,i=n.config,r="number"==typeof i.bar_width?i.bar_width:e?t.tickInterval()*i.bar_width_ratio/e:0;return i.bar_width_max&&r>i.bar_width_max?i.bar_width_max:r},l.getBars=function(t,e){var n=this;return(e?n.main.selectAll("."+h.bars+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.bar+(d(t)?"-"+t:""))},l.expandBars=function(t,e,n){var i=this;n&&i.unexpandBars(),i.getBars(t,e).classed(h.EXPANDED,!0)},l.unexpandBars=function(t){var e=this;e.getBars(t).classed(h.EXPANDED,!1)},l.generateDrawBar=function(t,e){var n=this,i=n.config,r=n.generateGetBarPoints(t,e);return function(t,e){var n=r(t,e),o=i.axis_rotated?1:0,a=i.axis_rotated?0:1,s="M "+n[0][o]+","+n[0][a]+" L"+n[1][o]+","+n[1][a]+" L"+n[2][o]+","+n[2][a]+" L"+n[3][o]+","+n[3][a]+" z";return s}},l.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,o=n.getBarW(i,r),a=n.getShapeX(o,r,t,!!e),s=n.getShapeY(!!e),l=n.getShapeOffset(n.isBarType,t,!!e),c=e?n.getSubYScale:n.getYScale;return function(t,e){var i=c.call(n,t.id)(0),r=l(t,e)||i,u=a(t),h=s(t);return n.config.axis_rotated&&(0<t.value&&h<i||t.value<0&&i<h)&&(h=i),[[u,r],[u,h-(i-r)],[u+o,h-(i-r)],[u+o,r]]}},l.isWithinBar=function(t){var e=this.d3.mouse(t),n=t.getBoundingClientRect(),i=t.pathSegList.getItem(0),r=t.pathSegList.getItem(1),o=Math.min(i.x,r.x),a=Math.min(i.y,r.y),s=n.width,l=n.height,c=2,u=o-c,h=o+s+c,d=a+l+c,f=a-c;return u<e[0]&&e[0]<h&&f<e[1]&&e[1]<d},l.initText=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartTexts),t.mainText=t.d3.selectAll([])},l.updateTargetsForText=function(t){var e,n,i=this,r=i.classChartText.bind(i),o=i.classTexts.bind(i),a=i.classFocus.bind(i);e=i.main.select("."+h.chartTexts).selectAll("."+h.chartText).data(t).attr("class",function(t){return r(t)+a(t)}),n=e.enter().append("g").attr("class",r).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",o)},l.updateText=function(t){var e=this,n=e.config,i=e.barOrLineData.bind(e),r=e.classText.bind(e);e.mainText=e.main.selectAll("."+h.texts).selectAll("."+h.text).data(i),e.mainText.enter().append("text").attr("class",r).attr("text-anchor",function(t){return n.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(t){return e.color(t)}).style("fill-opacity",0),e.mainText.text(function(t,n,i){return e.dataLabelFormat(t.id)(t.value,t.id,n,i)}),e.mainText.exit().transition().duration(t).style("fill-opacity",0).remove()},l.redrawText=function(t,e,n,i){return[(i?this.mainText.transition():this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},l.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),o=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a=this.d3.select(n).style("font");return o.selectAll(".dummy").data([t]).enter().append("text").classed(e?e:"",!0).style("font",a).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},l.generateXYForText=function(t,e,n,i){var r=this,o=r.generateGetAreaPoints(t,!1),a=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),l=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?o:r.isBarType(t)?a:s;return l.call(r,n(t,e),t,this)}},l.getXForText=function(t,e,n){var i,r,o=this,a=n.getBoundingClientRect();return o.config.axis_rotated?(r=o.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=o.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>o.width?i=o.width-a.width:i<0&&(i=4)),i},l.getYForText=function(t,e,n){var i,r=this,o=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*o.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=o.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(i<o.height?i=o.height:i>this.height&&(i=this.height-4)),i},l.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},l.hasType=function(t,e){var n=this,i=n.config.data_types,r=!1;return e=e||n.data.targets,e&&e.length?e.forEach(function(e){var n=i[e.id];(n&&n.indexOf(t)>=0||!n&&"line"===t)&&(r=!0)}):Object.keys(i).length?Object.keys(i).forEach(function(e){i[e]===t&&(r=!0)}):r=n.config.data_type===t,r},l.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},l.isLineType=function(t){var e=this.config,n=p(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},l.isStepType=function(t){var e=p(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},l.isSplineType=function(t){var e=p(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},l.isAreaType=function(t){var e=p(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},l.isBarType=function(t){var e=p(t)?t:t.id;return"bar"===this.config.data_types[e]},l.isScatterType=function(t){var e=p(t)?t:t.id;return"scatter"===this.config.data_types[e]},l.isPieType=function(t){var e=p(t)?t:t.id;return"pie"===this.config.data_types[e]},l.isGaugeType=function(t){var e=p(t)?t:t.id;return"gauge"===this.config.data_types[e]},l.isDonutType=function(t){var e=p(t)?t:t.id;return"donut"===this.config.data_types[e]},l.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},l.lineData=function(t){return this.isLineType(t)?[t]:[]},l.arcData=function(t){return this.isArcType(t.data)?[t]:[]},l.barData=function(t){return this.isBarType(t)?t.values:[]},l.lineOrScatterData=function(t){return this.isLineType(t)||this.isScatterType(t)?t.values:[]},l.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},l.isInterpolationType=function(t){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(t)>=0},l.initGrid=function(){var t=this,e=t.config,n=t.d3;t.grid=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid),e.grid_x_show&&t.grid.append("g").attr("class",h.xgrids),e.grid_y_show&&t.grid.append("g").attr("class",h.ygrids),e.grid_focus_show&&t.grid.append("g").attr("class",h.xgridFocus).append("line").attr("class",h.xgridFocus),t.xgrid=n.selectAll([]),e.grid_lines_front||t.initGridLines()},l.initGridLines=function(){var t=this,e=t.d3;t.gridLines=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid+" "+h.gridLines),t.gridLines.append("g").attr("class",h.xgridLines),t.gridLines.append("g").attr("class",h.ygridLines),t.xgridLines=e.selectAll([])},l.updateXGrid=function(t){var e=this,n=e.config,i=e.d3,r=e.generateGridData(n.grid_x_type,e.x),o=e.isCategorized()?e.xAxis.tickOffset():0;e.xgridAttr=n.axis_rotated?{x1:0,x2:e.width,y1:function(t){return e.x(t)-o},y2:function(t){return e.x(t)-o}}:{x1:function(t){return e.x(t)+o},x2:function(t){return e.x(t)+o},y1:0,y2:e.height},e.xgrid=e.main.select("."+h.xgrids).selectAll("."+h.xgrid).data(r),e.xgrid.enter().append("line").attr("class",h.xgrid),t||e.xgrid.attr(e.xgridAttr).style("opacity",function(){return+i.select(this).attr(n.axis_rotated?"y1":"x1")===(n.axis_rotated?e.height:0)?0:1}),e.xgrid.exit().remove()},l.updateYGrid=function(){var t=this,e=t.config,n=t.yAxis.tickValues()||t.y.ticks(e.grid_y_ticks);t.ygrid=t.main.select("."+h.ygrids).selectAll("."+h.ygrid).data(n),t.ygrid.enter().append("line").attr("class",h.ygrid),t.ygrid.attr("x1",e.axis_rotated?t.y:0).attr("x2",e.axis_rotated?t.y:t.width).attr("y1",e.axis_rotated?0:t.y).attr("y2",e.axis_rotated?t.height:t.y),t.ygrid.exit().remove(),t.smoothLines(t.ygrid,"grid")},l.gridTextAnchor=function(t){return t.position?t.position:"end"},l.gridTextDx=function(t){return"start"===t.position?4:"middle"===t.position?0:-4},l.xGridTextX=function(t){return"start"===t.position?-this.height:"middle"===t.position?-this.height/2:0},l.yGridTextX=function(t){return"start"===t.position?0:"middle"===t.position?this.width/2:this.width},l.updateGrid=function(t){var e,n,i,r=this,o=r.main,a=r.config;r.grid.style("visibility",r.hasArcType()?"hidden":"visible"),o.select("line."+h.xgridFocus).style("visibility","hidden"),a.grid_x_show&&r.updateXGrid(),r.xgridLines=o.select("."+h.xgridLines).selectAll("."+h.xgridLine).data(a.grid_x_lines),e=r.xgridLines.enter().append("g").attr("class",function(t){return h.xgridLine+(t.class?" "+t.class:"")}),e.append("line").style("opacity",0),e.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"":"rotate(-90)").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),r.xgridLines.exit().transition().duration(t).style("opacity",0).remove(),a.grid_y_show&&r.updateYGrid(),r.ygridLines=o.select("."+h.ygridLines).selectAll("."+h.ygridLine).data(a.grid_y_lines),n=r.ygridLines.enter().append("g").attr("class",function(t){return h.ygridLine+(t.class?" "+t.class:"")}),n.append("line").style("opacity",0),n.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"rotate(-90)":"").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),i=r.yv.bind(r),r.ygridLines.select("line").transition().duration(t).attr("x1",a.axis_rotated?i:0).attr("x2",a.axis_rotated?i:r.width).attr("y1",a.axis_rotated?0:i).attr("y2",a.axis_rotated?r.height:i).style("opacity",1),r.ygridLines.select("text").transition().duration(t).attr("x",a.axis_rotated?r.xGridTextX.bind(r):r.yGridTextX.bind(r)).attr("y",i).text(function(t){return t.text}).style("opacity",1),r.ygridLines.exit().transition().duration(t).style("opacity",0).remove()},l.redrawGrid=function(t){var e=this,n=e.config,i=e.xv.bind(e),r=e.xgridLines.select("line"),o=e.xgridLines.select("text");return[(t?r.transition():r).attr("x1",n.axis_rotated?0:i).attr("x2",n.axis_rotated?e.width:i).attr("y1",n.axis_rotated?i:0).attr("y2",n.axis_rotated?i:e.height).style("opacity",1),(t?o.transition():o).attr("x",n.axis_rotated?e.yGridTextX.bind(e):e.xGridTextX.bind(e)).attr("y",i).text(function(t){return t.text}).style("opacity",1)]},l.showXGridFocus=function(t){var e=this,n=e.config,i=t.filter(function(t){return t&&d(t.value)}),r=e.main.selectAll("line."+h.xgridFocus),o=e.xx.bind(e);n.tooltip_show&&(e.hasType("scatter")||e.hasArcType()||(r.style("visibility","visible").data([i[0]]).attr(n.axis_rotated?"y1":"x1",o).attr(n.axis_rotated?"y2":"x2",o),e.smoothLines(r,"grid")))},l.hideXGridFocus=function(){this.main.select("line."+h.xgridFocus).style("visibility","hidden")},l.updateXgridFocus=function(){var t=this,e=t.config;t.main.select("line."+h.xgridFocus).attr("x1",e.axis_rotated?0:-10).attr("x2",e.axis_rotated?t.width:-10).attr("y1",e.axis_rotated?-10:0).attr("y2",e.axis_rotated?-10:t.height)},l.generateGridData=function(t,e){var n,i,r,o,a=this,s=[],l=a.main.select("."+h.axisX).selectAll(".tick").size();if("year"===t)for(n=a.getXDomain(),i=n[0].getFullYear(),r=n[1].getFullYear(),o=i;o<=r;o++)s.push(new Date(o+"-01-01 00:00:00"));else s=e.ticks(10),s.length>l&&(s=s.filter(function(t){return(""+t).indexOf(".")<0}));return s},l.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},l.removeGridLines=function(t,e){var n=this,i=n.config,r=n.getGridFilterToRemove(t),o=function(t){return!r(t)},a=e?h.xgridLines:h.ygridLines,s=e?h.xgridLine:h.ygridLine;n.main.select("."+a).selectAll("."+s).filter(r).transition().duration(i.transition_duration).style("opacity",0).remove(),e?i.grid_x_lines=i.grid_x_lines.filter(o):i.grid_y_lines=i.grid_y_lines.filter(o)},l.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",h.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&p(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t<e.data.targets[0].values.length&&e.data.targets[0].values[t].x-n.tooltip_init_x!==0;t++);n.tooltip_init_x=t}e.tooltip.html(n.tooltip_contents.call(e,e.data.targets.map(function(t){return e.addName(t.values[n.tooltip_init_x])}),e.axis.getXAxisTickFormat(),e.getYFormat(e.hasArcType()),e.color)),e.tooltip.style("top",n.tooltip_init_position.top).style("left",n.tooltip_init_position.left).style("display","block")}},l.getTooltipContent=function(t,e,n,i){var r,o,a,s,l,c,u=this,h=u.config,d=h.tooltip_format_title||e,f=h.tooltip_format_name||function(t){return t},p=h.tooltip_format_value||n,g=u.isOrderAsc();if(0===h.data_groups.length)t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return g?n-i:i-n});else{var m=u.orderTargets(u.data.targets).map(function(t){return t.id});t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return n>0&&i>0&&(n=t?m.indexOf(t.id):null,i=e?m.indexOf(e.id):null),g?n-i:i-n})}for(o=0;o<t.length;o++)if(t[o]&&(t[o].value||0===t[o].value)&&(r||(a=C(d?d(t[o].x):t[o].x),r="<table class='"+u.CLASS.tooltip+"'>"+(a||0===a?"<tr><th colspan='2'>"+a+"</th></tr>":"")),s=C(p(t[o].value,t[o].ratio,t[o].id,t[o].index,t)),void 0!==s)){if(null===t[o].name)continue;l=C(f(t[o].name,t[o].ratio,t[o].id,t[o].index)),c=u.levelColor?u.levelColor(t[o].value):i(t[o].id),r+="<tr class='"+u.CLASS.tooltipName+"-"+u.getTargetSelectorSuffix(t[o].id)+"'>",r+="<td class='name'><span style='background-color:"+c+"'></span>"+l+"</td>",r+="<td class='value'>"+s+"</td>",r+="</tr>"}return r+"</table>"},l.tooltipPosition=function(t,e,n,i){var r,o,a,s,l,c=this,u=c.config,h=c.d3,d=c.hasArcType(),f=h.mouse(i);return d?(o=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+f[0],s=c.height/2+f[1]+20):(r=c.getSvgLeft(!0),u.axis_rotated?(o=r+f[0]+100,a=o+e,l=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20,a=o+e,l=r+c.currentWidth-c.getCurrentPaddingRight(),s=f[1]+15),a>l&&(o-=a-l+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:o}},l.showTooltip=function(t,e){var n,i,r,o=this,a=o.config,s=o.hasArcType(),c=t.filter(function(t){return t&&d(t.value)}),u=a.tooltip_position||l.tooltipPosition;0!==c.length&&a.tooltip_show&&(o.tooltip.html(a.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(s),o.color)).style("display","block"),n=o.tooltip.property("offsetWidth"),i=o.tooltip.property("offsetHeight"),r=u.call(this,c,n,i,e),o.tooltip.style("top",r.top+"px").style("left",r.left+"px"))},l.hideTooltip=function(){this.tooltip.style("display","none")},l.initLegend=function(){var t=this;return t.legendItemTextBox={},t.legendHasRendered=!1,t.legend=t.svg.append("g").attr("transform",t.getTranslate("legend")),t.config.legend_show?void t.updateLegendWithDefaults():(t.legend.style("visibility","hidden"),void(t.hiddenLegendIds=t.mapToIds(t.data.targets)))},l.updateLegendWithDefaults=function(){var t=this;t.updateLegend(t.mapToIds(t.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},l.updateSizeForLegend=function(t,e){var n=this,i=n.config,r={top:n.isLegendTop?n.getCurrentPaddingTop()+i.legend_inset_y+5.5:n.currentHeight-t-n.getCurrentPaddingBottom()-i.legend_inset_y,left:n.isLegendLeft?n.getCurrentPaddingLeft()+i.legend_inset_x+.5:n.currentWidth-e-n.getCurrentPaddingRight()-i.legend_inset_x+.5};n.margin3={top:n.isLegendRight?0:n.isLegendInset?r.top:n.currentHeight-t,right:NaN,bottom:0,left:n.isLegendRight?n.currentWidth-e:n.isLegendInset?r.left:0}},l.transformLegend=function(t){var e=this;(t?e.legend.transition():e.legend).attr("transform",e.getTranslate("legend"))},l.updateLegendStep=function(t){this.legendStep=t},l.updateLegendItemWidth=function(t){this.legendItemWidth=t},l.updateLegendItemHeight=function(t){this.legendItemHeight=t},l.getLegendWidth=function(){var t=this;return t.config.legend_show?t.isLegendRight||t.isLegendInset?t.legendItemWidth*(t.legendStep+1):t.currentWidth:0},l.getLegendHeight=function(){var t=this,e=0;return t.config.legend_show&&(e=t.isLegendRight?t.currentHeight:Math.max(20,t.legendItemHeight)*(t.legendStep+1)),
-e},l.opacityForLegend=function(t){return t.classed(h.legendItemHidden)?null:1},l.opacityForUnfocusedLegend=function(t){return t.classed(h.legendItemHidden)?null:.3},l.toggleFocusLegend=function(t,e){var n=this;t=n.mapToTargetIds(t),n.legend.selectAll("."+h.legendItem).filter(function(e){return t.indexOf(e)>=0}).classed(h.legendItemFocused,e).transition().duration(100).style("opacity",function(){var t=e?n.opacityForLegend:n.opacityForUnfocusedLegend;return t.call(n,n.d3.select(this))})},l.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+h.legendItem).classed(h.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},l.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},l.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&b(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},l.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},l.updateLegend=function(t,e,n){function i(t,e){return C.legendItemTextBox[e]||(C.legendItemTextBox[e]=C.getTextRect(t.textContent,h.legendItem,t)),C.legendItemTextBox[e]}function r(e,n,r){function o(t,e){e||(a=(p-N-f)/2,a<E&&(a=(p-f)/2,N=0,V++)),j[t]=V,I[V]=C.isLegendInset?10:a,O[t]=N,N+=f}var a,s,l=0===r,c=r===t.length-1,u=i(e,n),h=u.width+P+(!c||C.isLegendRight||C.isLegendInset?A:0)+T.legend_padding,d=u.height+k,f=C.isLegendRight||C.isLegendInset?d:h,p=C.isLegendRight||C.isLegendInset?C.getLegendHeight():C.getLegendWidth();return l&&(N=0,V=0,M=0,L=0),T.legend_show&&!C.isLegendToShow(n)?void(R[n]=D[n]=j[n]=O[n]=0):(R[n]=h,D[n]=d,(!M||h>=M)&&(M=h),(!L||d>=L)&&(L=d),s=C.isLegendRight||C.isLegendInset?L:M,void(T.legend_equally?(Object.keys(R).forEach(function(t){R[t]=M}),Object.keys(D).forEach(function(t){D[t]=L}),a=(p-s*t.length)/2,a<E?(N=0,V=0,t.forEach(function(t){o(t)})):o(n,!0)):o(n)))}var o,a,s,l,c,u,d,f,p,g,v,y,x,b,_,S,C=this,T=C.config,k=4,A=10,M=0,L=0,E=10,P=T.legend_item_tile_width+5,N=0,O={},R={},D={},I=[0],j={},V=0;t=t.filter(function(t){return!m(T.data_names[t])||null!==T.data_names[t]}),e=e||{},v=w(e,"withTransition",!0),y=w(e,"withTransitionForTransform",!0),C.isLegendInset&&(V=T.legend_inset_step?T.legend_inset_step:t.length,C.updateLegendStep(V)),C.isLegendRight?(o=function(t){return M*j[t]},l=function(t){return I[j[t]]+O[t]}):C.isLegendInset?(o=function(t){return M*j[t]+10},l=function(t){return I[j[t]]+O[t]}):(o=function(t){return I[j[t]]+O[t]},l=function(t){return L*j[t]}),a=function(t,e){return o(t,e)+4+T.legend_item_tile_width},c=function(t,e){return l(t,e)+9},s=function(t,e){return o(t,e)},u=function(t,e){return l(t,e)-5},d=function(t,e){return o(t,e)-2},f=function(t,e){return o(t,e)-2+T.legend_item_tile_width},p=function(t,e){return l(t,e)+4},g=C.legend.selectAll("."+h.legendItem).data(t).enter().append("g").attr("class",function(t){return C.generateClass(h.legendItem,t)}).style("visibility",function(t){return C.isLegendToShow(t)?"visible":"hidden"}).style("cursor","pointer").on("click",function(t){T.legend_item_onclick?T.legend_item_onclick.call(C,t):C.d3.event.altKey?(C.api.hide(),C.api.show(t)):(C.api.toggle(t),C.isTargetToShow(t)?C.api.focus(t):C.api.revert())}).on("mouseover",function(t){T.legend_item_onmouseover?T.legend_item_onmouseover.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!0),!C.transiting&&C.isTargetToShow(t)&&C.api.focus(t))}).on("mouseout",function(t){T.legend_item_onmouseout?T.legend_item_onmouseout.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!1),C.api.revert())}),g.append("text").text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}).style("pointer-events","none").attr("x",C.isLegendRight||C.isLegendInset?a:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:c),g.append("rect").attr("class",h.legendItemEvent).style("fill-opacity",0).attr("x",C.isLegendRight||C.isLegendInset?s:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:u),g.append("line").attr("class",h.legendItemTile).style("stroke",C.color).style("pointer-events","none").attr("x1",C.isLegendRight||C.isLegendInset?d:-200).attr("y1",C.isLegendRight||C.isLegendInset?-200:p).attr("x2",C.isLegendRight||C.isLegendInset?f:-200).attr("y2",C.isLegendRight||C.isLegendInset?-200:p).attr("stroke-width",T.legend_item_tile_height),S=C.legend.select("."+h.legendBackground+" rect"),C.isLegendInset&&M>0&&0===S.size()&&(S=C.legend.insert("g","."+h.legendItem).attr("class",h.legendBackground).append("rect")),x=C.legend.selectAll("text").data(t).text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}),(v?x.transition():x).attr("x",a).attr("y",c),b=C.legend.selectAll("rect."+h.legendItemEvent).data(t),(v?b.transition():b).attr("width",function(t){return R[t]}).attr("height",function(t){return D[t]}).attr("x",s).attr("y",u),_=C.legend.selectAll("line."+h.legendItemTile).data(t),(v?_.transition():_).style("stroke",C.color).attr("x1",d).attr("y1",p).attr("x2",f).attr("y2",p),S&&(v?S.transition():S).attr("height",C.getLegendHeight()-12).attr("width",M*(V+1)+10),C.legend.selectAll("."+h.legendItem).classed(h.legendItemHidden,function(t){return!C.isTargetToShow(t)}),C.updateLegendItemWidth(M),C.updateLegendItemHeight(L),C.updateLegendStep(V),C.updateSizes(),C.updateScales(),C.updateSvgSize(),C.transformAll(y,n),C.legendHasRendered=!0},l.initTitle=function(){var t=this;t.title=t.svg.append("text").text(t.config.title_text).attr("class",t.CLASS.title)},l.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},l.xForTitle=function(){var t,e=this,n=e.config,i=n.title_position||"left";return t=i.indexOf("right")>=0?e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width-n.title_padding.right:i.indexOf("center")>=0?(e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width)/2:n.title_padding.left},l.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},l.getTitlePadding=function(){var t=this;return t.yForTitle()+t.config.title_padding.bottom},n(e,o),o.prototype.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",h.axis+" "+h.axisX).attr("clip-path",t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",h.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",h.axis+" "+h.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",h.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",h.axis+" "+h.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",h.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},o.prototype.getXAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={isCategory:l.isCategorized(),withOuterTick:r,tickMultiline:c.axis_x_tick_multiline,tickWidth:c.axis_x_tick_width,tickTextRotate:s?0:c.axis_x_tick_rotate,withoutTransition:o},h=a(l.d3,u).scale(t).orient(e);return l.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return l.parseDate(t)})),h.tickFormat(n).tickValues(i),l.isCategorized()&&(h.tickCentered(c.axis_x_tick_centered),b(c.axis_x_tick_culling)&&(c.axis_x_tick_culling=!1)),h},o.prototype.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},o.prototype.getYAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={withOuterTick:r,withoutTransition:o,tickTextRotate:s?0:c.axis_y_tick_rotate},h=a(l.d3,u).scale(t).orient(e).tickFormat(n);return l.isTimeSeriesY()?h.ticks(l.d3.time[c.axis_y_tick_time_value],c.axis_y_tick_time_interval):h.tickValues(i),h},o.prototype.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},o.prototype.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t<0?t.toFixed(0):t};return e.axis_x_tick_format&&(f(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),f(n)?function(e){return n.call(t,e)}:n},o.prototype.getTickValues=function(t,e){return t?t:e?e.tickValues():void 0},o.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},o.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},o.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},o.prototype.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},o.prototype.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return p(e)?e:e?e.text:null},o.prototype.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);p(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},o.prototype.getLabelPosition=function(t,e){var n=this.getLabelOptionByAxisId(t),i=n&&"object"==typeof n&&n.position?n.position:e;return{isInner:i.indexOf("inner")>=0,isOuter:i.indexOf("outer")>=0,isLeft:i.indexOf("left")>=0,isCenter:i.indexOf("center")>=0,isRight:i.indexOf("right")>=0,isTop:i.indexOf("top")>=0,isMiddle:i.indexOf("middle")>=0,isBottom:i.indexOf("bottom")>=0}},o.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},o.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},o.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},o.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},o.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},o.prototype.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0},o.prototype.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},o.prototype.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},o.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-this.getMaxTickWidth("x"):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},o.prototype.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},o.prototype.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},o.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.getMaxTickWidth=function(t,e){var n,i,r,o,a,s=this.owner,l=s.config,c=0;return e&&s.currentMaxTickWidths[t]?s.currentMaxTickWidths[t]:(s.svg&&(n=s.filterTargetsToShow(s.data.targets),"y"===t?(i=s.y.copy().domain(s.getYDomain(n,"y")),r=this.getYAxis(i,s.yOrient,l.axis_y_tick_format,s.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=s.y2.copy().domain(s.getYDomain(n,"y2")),r=this.getYAxis(i,s.y2Orient,l.axis_y2_tick_format,s.y2AxisTickValues,!1,!0,!0)):(i=s.x.copy().domain(s.getXDomain(n)),r=this.getXAxis(i,s.xOrient,s.xAxisTickFormat,s.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),o=s.d3.select("body").append("div").classed("c3",!0),a=o.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a.append("g").call(r).each(function(){s.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();c<t.width&&(c=t.width)}),o.remove()})),s.currentMaxTickWidths[t]=c<=0?s.currentMaxTickWidths[t]:c,s.currentMaxTickWidths[t])},o.prototype.updateLabels=function(t){var e=this.owner,n=e.main.select("."+h.axisX+" ."+h.axisXLabel),i=e.main.select("."+h.axisY+" ."+h.axisYLabel),r=e.main.select("."+h.axisY2+" ."+h.axisY2Label);(t?n.transition():n).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(t?i.transition():i).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(t?r.transition():r).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},o.prototype.getPadding=function(t,e,n,i){var r="number"==typeof t?t:t[e];return d(r)?"ratio"===t.unit?t[e]*i:this.convertPixelsToAxisPadding(r,i):n},o.prototype.convertPixelsToAxisPadding=function(t,e){var n=this.owner,i=n.config.axis_rotated?n.width:n.height;return e*(t/i)},o.prototype.generateTickValues=function(t,e,n){var i,r,o,a,s,l,c,u=t;if(e)if(i=f(e)?e():e,1===i)u=[t[0]];else if(2===i)u=[t[0],t[t.length-1]];else if(i>2){for(a=i-2,r=t[0],o=t[t.length-1],s=(o-r)/(a+1),u=[r],l=0;l<a;l++)c=+r+s*(l+1),u.push(n?new Date(c):c);u.push(o)}return n||(u=u.sort(function(t,e){return t-e})),u},o.prototype.generateTransitions=function(t){var e=this.owner,n=e.axes;return{axisX:t?n.x.transition().duration(t):n.x,axisY:t?n.y.transition().duration(t):n.y,axisY2:t?n.y2.transition().duration(t):n.y2,axisSubX:t?n.subx.transition().duration(t):n.subx}},o.prototype.redraw=function(t,e){var n=this.owner;n.axes.x.style("opacity",e?0:1),n.axes.y.style("opacity",e?0:1),n.axes.y2.style("opacity",e?0:1),n.axes.subx.style("opacity",e?0:1),t.axisX.call(n.xAxis),t.axisY.call(n.yAxis),t.axisY2.call(n.y2Axis),t.axisSubX.call(n.subXAxis)},l.getClipPath=function(e){var n=t.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(n?"":document.URL.split("#")[0])+"#"+e+")"},l.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},l.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},l.getAxisClipY=function(t){return t?-20:-this.margin.top},l.getXAxisClipX=function(){var t=this;return t.getAxisClipX(!t.config.axis_rotated)},l.getXAxisClipY=function(){var t=this;return t.getAxisClipY(!t.config.axis_rotated)},l.getYAxisClipX=function(){var t=this;return t.config.axis_y_inner?-1:t.getAxisClipX(t.config.axis_rotated)},l.getYAxisClipY=function(){var t=this;return t.getAxisClipY(t.config.axis_rotated)},l.getAxisClipWidth=function(t){var e=this,n=Math.max(30,e.margin.left),i=Math.max(30,e.margin.right);return t?e.width+2+n+i:e.margin.left+20},l.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},l.getXAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(!t.config.axis_rotated)},l.getXAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(!t.config.axis_rotated)},l.getYAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(t.config.axis_rotated)+(t.config.axis_y_inner?20:0)},l.getYAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(t.config.axis_rotated)},l.initPie=function(){var t=this,e=t.d3,n=t.config;t.pie=e.layout.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)}),n.data_order||t.pie.sort(null)},l.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2,t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0},l.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},l.updateAngle=function(t){var e,n,i,r,o=this,a=o.config,s=!1,l=0;return a?(o.pie(o.filterTargetsToShow(o.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,t=e,t.index=l),l++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),o.isGaugeType(t.data)&&(e=a.gauge_min,n=a.gauge_max,i=Math.PI*(a.gauge_fullCircle?2:1)/(n-e),r=t.value<e?0:t.value<n?t.value-e:n-e,t.startAngle=a.gauge_startingAngle,t.endAngle=t.startAngle+i*r),s?t:null):null},l.getSvgArc=function(){var t=this,e=t.d3.svg.arc().outerRadius(t.radius).innerRadius(t.innerRadius),n=function(n,i){var r;return i?e(n):(r=t.updateAngle(n),r?e(r):"M 0 0")};return n.centroid=e.centroid,n},l.getSvgArcExpanded=function(t){var e=this,n=e.d3.svg.arc().outerRadius(e.radiusExpanded*(t?t:1)).innerRadius(e.innerRadius);return function(t){var i=e.updateAngle(t);return i?n(i):"M 0 0"}},l.getArc=function(t,e,n){return n||this.isArcType(t.data)?this.svgArc(t,e):"M 0 0"},l.transformForArcLabel=function(t){var e,n,i,r,o,a=this,s=a.config,l=a.updateAngle(t),c="";return l&&!a.hasType("gauge")&&(e=this.svgArc.centroid(l),n=isNaN(e[0])?0:e[0],i=isNaN(e[1])?0:e[1],r=Math.sqrt(n*n+i*i),o=a.hasType("donut")&&s.donut_label_ratio?f(s.donut_label_ratio)?s.donut_label_ratio(t,a.radius,r):s.donut_label_ratio:a.hasType("pie")&&s.pie_label_ratio?f(s.pie_label_ratio)?s.pie_label_ratio(t,a.radius,r):s.pie_label_ratio:a.radius&&r?(36/a.radius>.375?1.175-36/a.radius:.8)*a.radius/r:0,c="translate("+n*o+","+i*o+")"),c},l.getArcRatio=function(t){var e=this,n=e.config,i=Math.PI*(e.hasType("gauge")&&!n.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/i:null},l.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},l.textForArcLabel=function(t){var e,n,i,r,o,a=this;return a.shouldShowArcLabel()?(e=a.updateAngle(t),n=e?e.value:null,i=a.getArcRatio(e),r=t.data.id,a.hasType("gauge")||a.meetsArcLabelThreshold(i)?(o=a.getArcLabelFormat(),o?o(n,i,r):a.defaultArcValueFormat(n,i)):""):""},l.expandArc=function(e){var n,i=this;return i.transiting?void(n=t.setInterval(function(){i.transiting||(t.clearInterval(n),i.legend.selectAll(".c3-legend-item-focused").size()>0&&i.expandArc(e))},10)):(e=i.mapToTargetIds(e),void i.svg.selectAll(i.selectorTargets(e,"."+h.chartArc)).each(function(t){i.shouldExpand(t.data.id)&&i.d3.select(this).selectAll("path").transition().duration(i.expandDuration(t.data.id)).attr("d",i.svgArcExpanded).transition().duration(2*i.expandDuration(t.data.id)).attr("d",i.svgArcExpandedSub).each(function(t){i.isDonutType(t.data)})}))},l.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+h.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+h.arc).style("opacity",1))},l.expandDuration=function(t){var e=this,n=e.config;return e.isDonutType(t)?n.donut_expand_duration:e.isGaugeType(t)?n.gauge_expand_duration:e.isPieType(t)?n.pie_expand_duration:50},l.shouldExpand=function(t){var e=this,n=e.config;return e.isDonutType(t)&&n.donut_expand||e.isGaugeType(t)&&n.gauge_expand||e.isPieType(t)&&n.pie_expand},l.shouldShowArcLabel=function(){var t=this,e=t.config,n=!0;return t.hasType("donut")?n=e.donut_label_show:t.hasType("pie")&&(n=e.pie_label_show),n},l.meetsArcLabelThreshold=function(t){var e=this,n=e.config,i=e.hasType("donut")?n.donut_label_threshold:n.pie_label_threshold;return t>=i},l.getArcLabelFormat=function(){var t=this,e=t.config,n=e.pie_label_format;return t.hasType("gauge")?n=e.gauge_label_format:t.hasType("donut")&&(n=e.donut_label_format),n},l.getArcTitle=function(){var t=this;return t.hasType("donut")?t.config.donut_title:""},l.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),a=i.classArcs.bind(i),s=i.classFocus.bind(i);e=r.select("."+h.chartArcs).selectAll("."+h.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+s(t.data)}),n=e.enter().append("g").attr("class",o),n.append("g").attr("class",a),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},l.initArc=function(){var t=this;t.arcs=t.main.select("."+h.chart).append("g").attr("class",h.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",h.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},l.redrawArc=function(t,e,n){var i,r=this,o=r.d3,a=r.config,s=r.main;i=s.selectAll("."+h.arcs).selectAll("."+h.arc).data(r.arcData.bind(r)),i.enter().append("path").attr("class",r.classArc.bind(r)).style("fill",function(t){return r.color(t.data)}).style("cursor",function(t){return a.interaction_enabled&&a.data_selection_isselectable(t)?"pointer":null}).style("opacity",0).each(function(t){r.isGaugeType(t.data)&&(t.startAngle=t.endAngle=a.gauge_startingAngle),this._current=t}),i.attr("transform",function(t){return!r.isGaugeType(t.data)&&n?"scale(0)":""}).style("opacity",function(t){return t===this._current?0:1}).on("mouseover",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.expandArc(e.data.id),r.api.focus(e.data.id),r.toggleFocusLegend(e.data.id,!0),r.config.data_onmouseover(n,this)))}:null).on("mousemove",a.interaction_enabled?function(t){var e,n,i=r.updateAngle(t);i&&(e=r.convertToArcData(i),n=[e],r.showTooltip(n,this))}:null).on("mouseout",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.unexpandArc(e.data.id),r.api.revert(),r.revertLegend(),r.hideTooltip(),r.config.data_onmouseout(n,this)))}:null).on("click",a.interaction_enabled?function(t,e){var n,i=r.updateAngle(t);i&&(n=r.convertToArcData(i),r.toggleShape&&r.toggleShape(this,n,e),r.config.data_onclick.call(r.api,n,this))}:null).each(function(){r.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=r.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=o.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,r.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return r.levelColor?r.levelColor(t.data.values[0].value):r.color(t.data.id)}).style("opacity",1).call(r.endall,function(){r.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),s.selectAll("."+h.chartArc).select("text").style("opacity",0).attr("class",function(t){return r.isGaugeType(t.data)?h.gaugeValue:""}).text(r.textForArcLabel.bind(r)).attr("transform",r.transformForArcLabel.bind(r)).style("font-size",function(t){return r.isGaugeType(t.data)?Math.round(r.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return r.isTargetToShow(t.data.id)&&r.isArcType(t.data)?1:0}),s.select("."+h.chartArcsTitle).style("opacity",r.hasType("donut")||r.hasType("gauge")?1:0),r.hasType("gauge")&&(r.arcs.select("."+h.chartArcsBackground).attr("d",function(){var t={data:[{value:a.gauge_max}],startAngle:a.gauge_startingAngle,endAngle:-1*a.gauge_startingAngle};return r.getArc(t,!0,!0)}),r.arcs.select("."+h.chartArcsGaugeUnit).attr("dy",".75em").text(a.gauge_label_show?a.gauge_units:""),r.arcs.select("."+h.chartArcsGaugeMin).attr("dx",-1*(r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_min:""),r.arcs.select("."+h.chartArcsGaugeMax).attr("dx",r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_max:""))},l.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("path").attr("class",h.chartArcsBackground),t.append("text").attr("class",h.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},l.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},l.initRegion=function(){var t=this;t.region=t.main.append("g").attr("clip-path",t.clipPath).attr("class",h.regions)},l.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible"),e.mainRegion=e.main.select("."+h.regions).selectAll("."+h.region).data(n.regions),e.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),e.mainRegion.attr("class",e.classRegion.bind(e)),e.mainRegion.exit().transition().duration(t).style("opacity",0).remove()},l.redrawRegion=function(t){var e=this,n=e.mainRegion.selectAll("rect").each(function(){var t=e.d3.select(this.parentNode).datum();e.d3.select(this).datum(t)}),i=e.regionX.bind(e),r=e.regionY.bind(e),o=e.regionWidth.bind(e),a=e.regionHeight.bind(e);return[(t?n.transition():n).attr("x",i).attr("y",r).attr("width",o).attr("height",a).style("fill-opacity",function(t){return d(t.opacity)?t.opacity:.1})]},l.regionX=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"start"in t?r(t.start):0:i.axis_rotated?0:"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionY=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?0:"end"in t?r(t.end):0:i.axis_rotated&&"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?o(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width,e<r?0:e-r},l.regionHeight=function(t){var e,n=this,i=n.config,r=this.regionY(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?n.height:"start"in t?o(t.start):n.height:i.axis_rotated&&"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.height,e<r?0:e-r},l.isRegionOnX=function(t){return!t.axis||"x"===t.axis},l.drag=function(t){var e,n,i,r,o,a,s,l,c=this,u=c.config,d=c.main,f=c.d3;c.hasArcType()||u.data_selection_enabled&&(u.zoom_enabled&&!c.zoom.altDomain||u.data_selection_multiple&&(e=c.dragStart[0],n=c.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),a=Math.max(e,i),s=u.data_selection_grouped?c.margin.top:Math.min(n,r),l=u.data_selection_grouped?c.height:Math.max(n,r),d.select("."+h.dragarea).attr("x",o).attr("y",s).attr("width",a-o).attr("height",l-s),d.selectAll("."+h.shapes).selectAll("."+h.shape).filter(function(t){return u.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,u,d,p,g=f.select(this),m=g.classed(h.SELECTED),v=g.classed(h.INCLUDED),y=!1;if(g.classed(h.circle))n=1*g.attr("cx"),i=1*g.attr("cy"),d=c.togglePoint,y=o<n&&n<a&&s<i&&i<l;else{if(!g.classed(h.bar))return;p=T(this),n=p.x,i=p.y,r=p.width,u=p.height,d=c.togglePath,y=!(a<n||n+r<o||l<i||i+u<s)}y^v&&(g.classed(h.INCLUDED,!v),g.classed(h.SELECTED,!m),d.call(c,!m,g,t,e))})))},l.dragstart=function(t){var e=this,n=e.config;e.hasArcType()||n.data_selection_enabled&&(e.dragStart=t,e.main.select("."+h.chart).append("rect").attr("class",h.dragarea).style("opacity",.1),e.dragging=!0)},l.dragend=function(){var t=this,e=t.config;t.hasArcType()||e.data_selection_enabled&&(t.main.select("."+h.dragarea).transition().duration(100).style("opacity",0).remove(),t.main.selectAll("."+h.shape).classed(h.INCLUDED,!1),t.dragging=!1)},l.selectPoint=function(t,e,n){var i=this,r=i.config,o=(r.axis_rotated?i.circleY:i.circleX).bind(i),a=(r.axis_rotated?i.circleX:i.circleY).bind(i),s=i.pointSelectR.bind(i);r.data_onselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).data([e]).enter().append("circle").attr("class",function(){return i.generateClass(h.selectedCircle,n)}).attr("cx",o).attr("cy",a).attr("stroke",function(){return i.color(e)}).attr("r",function(t){return 1.4*i.pointSelectR(t)}).transition().duration(100).attr("r",s)},l.unselectPoint=function(t,e,n){var i=this;i.config.data_onunselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).transition().duration(100).attr("r",0).remove()},l.togglePoint=function(t,e,n,i){t?this.selectPoint(e,n,i):this.unselectPoint(e,n,i)},l.selectPath=function(t,e){var n=this;n.config.data_onselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.d3.rgb(n.color(e)).brighter(.75)})},l.unselectPath=function(t,e){var n=this;n.config.data_onunselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.color(e)})},l.togglePath=function(t,e,n,i){t?this.selectPath(e,n,i):this.unselectPath(e,n,i)},l.getToggle=function(t,e){var n,i=this;return"circle"===t.nodeName?n=i.isStepType(e)?function(){}:i.togglePoint:"path"===t.nodeName&&(n=i.togglePath),n},l.toggleShape=function(t,e,n){var i=this,r=i.d3,o=i.config,a=r.select(t),s=a.classed(h.SELECTED),l=i.getToggle(t,e).bind(i);o.data_selection_enabled&&o.data_selection_isselectable(e)&&(o.data_selection_multiple||i.main.selectAll("."+h.shapes+(o.data_selection_grouped?i.getTargetSelectorSuffix(e.id):"")).selectAll("."+h.shape).each(function(t,e){
-var n=r.select(this);n.classed(h.SELECTED)&&l(!1,n.classed(h.SELECTED,!1),t,e)}),a.classed(h.SELECTED,!s),l(!s,a,e,n))},l.initBrush=function(){var t=this,e=t.d3;t.brush=e.svg.brush().on("brush",function(){t.redrawForBrush()}),t.brush.update=function(){return t.context&&t.context.select("."+h.brush).call(this),this},t.brush.scale=function(e){return t.config.axis_rotated?this.y(e):this.x(e)}},l.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",h.chart),n.select("."+h.chart).append("g").attr("class",h.chartBars),n.select("."+h.chart).append("g").attr("class",h.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",h.brush).call(t.brush),t.axes.subx=n.append("g").attr("class",h.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis).style("visibility",e.subchart_axis_x_show?i:"hidden")},l.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,a=o.context,s=o.config,l=o.classChartBar.bind(o),c=o.classBars.bind(o),u=o.classChartLine.bind(o),d=o.classLines.bind(o),f=o.classAreas.bind(o);s.subchart_show&&(r=a.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",l),i=r.enter().append("g").style("opacity",0).attr("class",l),i.append("g").attr("class",c),n=a.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",u),e=n.enter().append("g").style("opacity",0).attr("class",u),e.append("g").attr("class",d),e.append("g").attr("class",f),a.selectAll("."+h.brush+" rect").attr(s.axis_rotated?"width":"height",s.axis_rotated?o.width2:o.height2))},l.updateBarForSubchart=function(t){var e=this;e.contextBar=e.context.selectAll("."+h.bars).selectAll("."+h.bar).data(e.barData.bind(e)),e.contextBar.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color),e.contextBar.style("opacity",e.initialOpacity.bind(e)),e.contextBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},l.updateLineForSubchart=function(t){var e=this;e.contextLine=e.context.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.contextLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.contextLine.style("opacity",e.initialOpacity.bind(e)),e.contextLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},l.updateAreaForSubchart=function(t){var e=this,n=e.d3;e.contextArea=e.context.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.contextArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.contextArea.style("opacity",0),e.contextArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},l.redrawSubchart=function(t,e,n,i,r,o,a){var s,l,c,u=this,h=u.d3,d=u.config;u.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(h.event&&"zoom"===h.event.type&&u.brush.extent(u.x.orgDomain()).update(),t&&(u.brush.empty()||u.brush.extent(u.x.orgDomain()).update(),s=u.generateDrawArea(r,!0),l=u.generateDrawBar(o,!0),c=u.generateDrawLine(a,!0),u.updateBarForSubchart(n),u.updateLineForSubchart(n),u.updateAreaForSubchart(n),u.redrawBarForSubchart(l,n,n),u.redrawLineForSubchart(c,n,n),u.redrawAreaForSubchart(s,n,n)))},l.redrawForBrush=function(){var t=this,e=t.x;t.redraw({withTransition:!1,withY:t.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),t.config.subchart_onbrush.call(t.api,e.orgDomain())},l.transformContext=function(t,e){var n,i=this;e&&e.axisSubX?n=e.axisSubX:(n=i.context.select("."+h.axisX),t&&(n=n.transition())),i.context.attr("transform",i.getTranslate("context")),n.attr("transform",i.getTranslate("subx"))},l.getDefaultExtent=function(){var t=this,e=t.config,n=f(e.axis_x_extent)?e.axis_x_extent(t.getXDomain(t.data.targets)):e.axis_x_extent;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},l.initZoom=function(){var t,e=this,n=e.d3,i=e.config;e.zoom=n.behavior.zoom().on("zoomstart",function(){t=n.event.sourceEvent,e.zoom.altDomain=n.event.sourceEvent.altKey?e.x.orgDomain():null,i.zoom_onzoomstart.call(e.api,n.event.sourceEvent)}).on("zoom",function(){e.redrawForZoom.call(e)}).on("zoomend",function(){var r=n.event.sourceEvent;r&&t.clientX===r.clientX&&t.clientY===r.clientY||(e.redrawEventRect(),e.updateZoom(),i.zoom_onzoomend.call(e.api,e.x.orgDomain()))}),e.zoom.scale=function(t){return i.axis_rotated?this.y(t):this.x(t)},e.zoom.orgScaleExtent=function(){var t=i.zoom_extent?i.zoom_extent:[1,10];return[t[0],Math.max(e.getMaxDataCount()/t[1],t[1])]},e.zoom.updateScaleExtent=function(){var t=x(e.x.orgDomain())/x(e.getZoomDomain()),n=this.orgScaleExtent();return this.scaleExtent([n[0]*t,n[1]*t]),this}},l.getZoomDomain=function(){var t=this,e=t.config,n=t.d3,i=n.min([t.orgXDomain[0],e.zoom_x_min]),r=n.max([t.orgXDomain[1],e.zoom_x_max]);return[i,r]},l.updateZoom=function(){var t=this,e=t.config.zoom_enabled?t.zoom:function(){};t.main.select("."+h.zoomRect).call(e).on("dblclick.zoom",null),t.main.selectAll("."+h.eventRect).call(e).on("dblclick.zoom",null)},l.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;if(n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length){if("mousemove"===e.event.sourceEvent.type&&i.altDomain)return r.domain(i.altDomain),void i.scale(r).updateScaleExtent();t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0),n.zoom_onzoom.call(t.api,r.orgDomain())}},l.generateColor=function(){var t=this,e=t.config,n=t.d3,i=e.data_colors,r=_(e.color_pattern)?e.color_pattern:n.scale.category10().range(),o=e.data_color,a=[];return function(t){var e,n=t.id||t.data&&t.data.id||t;return i[n]instanceof Function?e=i[n](t):i[n]?e=i[n]:(a.indexOf(n)<0&&a.push(n),e=r[a.indexOf(n)%r.length],i[n]=e),o instanceof Function?o(e,t):e}},l.generateLevelColor=function(){var t=this,e=t.config,n=e.color_pattern,i=e.color_threshold,r="value"===i.unit,o=i.values&&i.values.length?i.values:[],a=i.max||100;return _(e.color_threshold)?function(t){var e,i,s=n[n.length-1];for(e=0;e<o.length;e++)if(i=r?t:100*t/a,i<o[e]){s=n[e];break}return s}:null},l.getYFormat=function(t){var e=this,n=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.yFormat,i=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.y2Format;return function(t,r,o){var a="y2"===e.axis.getId(o)?i:n;return a.call(e,t,r)}},l.yFormat=function(t){var e=this,n=e.config,i=n.axis_y_tick_format?n.axis_y_tick_format:e.defaultValueFormat;return i(t)},l.y2Format=function(t){var e=this,n=e.config,i=n.axis_y2_tick_format?n.axis_y2_tick_format:e.defaultValueFormat;return i(t)},l.defaultValueFormat=function(t){return d(t)?+t:""},l.defaultArcValueFormat=function(t,e){return(100*e).toFixed(1)+"%"},l.dataLabelFormat=function(t){var e,n=this,i=n.config.data_labels,r=function(t){return d(t)?+t:""};return e="function"==typeof i.format?i.format:"object"==typeof i.format?i.format[t]?i.format[t]===!0?r:i.format[t]:function(){return""}:r},l.hasCaches=function(t){for(var e=0;e<t.length;e++)if(!(t[e]in this.cache))return!1;return!0},l.addCache=function(t,e){this.cache[t]=this.cloneTarget(e)},l.getCaches=function(t){var e,n=[];for(e=0;e<t.length;e++)t[e]in this.cache&&n.push(this.cloneTarget(this.cache[t[e]]));return n};var h=l.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};l.generateClass=function(t,e){return" "+t+" "+t+this.getTargetSelectorSuffix(e)},l.classText=function(t){return this.generateClass(h.text,t.index)},l.classTexts=function(t){return this.generateClass(h.texts,t.id)},l.classShape=function(t){return this.generateClass(h.shape,t.index)},l.classShapes=function(t){return this.generateClass(h.shapes,t.id)},l.classLine=function(t){return this.classShape(t)+this.generateClass(h.line,t.id)},l.classLines=function(t){return this.classShapes(t)+this.generateClass(h.lines,t.id)},l.classCircle=function(t){return this.classShape(t)+this.generateClass(h.circle,t.index)},l.classCircles=function(t){return this.classShapes(t)+this.generateClass(h.circles,t.id)},l.classBar=function(t){return this.classShape(t)+this.generateClass(h.bar,t.index)},l.classBars=function(t){return this.classShapes(t)+this.generateClass(h.bars,t.id)},l.classArc=function(t){return this.classShape(t.data)+this.generateClass(h.arc,t.data.id)},l.classArcs=function(t){return this.classShapes(t.data)+this.generateClass(h.arcs,t.data.id)},l.classArea=function(t){return this.classShape(t)+this.generateClass(h.area,t.id)},l.classAreas=function(t){return this.classShapes(t)+this.generateClass(h.areas,t.id)},l.classRegion=function(t,e){return this.generateClass(h.region,e)+" "+("class"in t?t.class:"")},l.classEvent=function(t){return this.generateClass(h.eventRect,t.index)},l.classTarget=function(t){var e=this,n=e.config.data_classes[t],i="";return n&&(i=" "+h.target+"-"+n),e.generateClass(h.target,t)+i},l.classFocus=function(t){return this.classFocused(t)+this.classDefocused(t)},l.classFocused=function(t){return" "+(this.focusedTargetIds.indexOf(t.id)>=0?h.focused:"")},l.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?h.defocused:"")},l.classChartText=function(t){return h.chartText+this.classTarget(t.id)},l.classChartLine=function(t){return h.chartLine+this.classTarget(t.id)},l.classChartBar=function(t){return h.chartBar+this.classTarget(t.id)},l.classChartArc=function(t){return h.chartArc+this.classTarget(t.data.id)},l.getTargetSelectorSuffix=function(t){return t||0===t?("-"+t).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},l.selectorTarget=function(t,e){return(e||"")+"."+h.target+this.getTargetSelectorSuffix(t)},l.selectorTargets=function(t,e){var n=this;return t=t||[],t.length?t.map(function(t){return n.selectorTarget(t,e)}):null},l.selectorLegend=function(t){return"."+h.legendItem+this.getTargetSelectorSuffix(t)},l.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null};var d=l.isValue=function(t){return t||0===t},f=l.isFunction=function(t){return"function"==typeof t},p=l.isString=function(t){return"string"==typeof t},g=l.isUndefined=function(t){return"undefined"==typeof t},m=l.isDefined=function(t){return"undefined"!=typeof t},v=l.ceil10=function(t){return 10*Math.ceil(t/10)},y=l.asHalfPixel=function(t){return Math.ceil(t)+.5},x=l.diffDomain=function(t){return t[1]-t[0]},b=l.isEmpty=function(t){return"undefined"==typeof t||null===t||p(t)&&0===t.length||"object"==typeof t&&0===Object.keys(t).length},_=l.notEmpty=function(t){return!l.isEmpty(t)},w=l.getOption=function(t,e,n){return m(t[e])?t[e]:n},S=l.hasValue=function(t,e){var n=!1;return Object.keys(t).forEach(function(i){t[i]===e&&(n=!0)}),n},C=l.sanitise=function(t){return"string"==typeof t?t.replace(/</g,"&lt;").replace(/>/g,"&gt;"):t},T=l.getPathBox=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)],i=n[0].x,r=Math.min(n[0].y,n[1].y);return{x:i,y:r,width:e.width,height:e.height}};s.focus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),this.revert(),this.defocus(),e.classed(h.focused,!0).classed(h.defocused,!1),n.hasArcType()&&n.expandArc(t),n.toggleFocusLegend(t,!0),n.focusedTargetIds=t,n.defocusedTargetIds=n.defocusedTargetIds.filter(function(e){return t.indexOf(e)<0})},s.defocus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),e.classed(h.focused,!1).classed(h.defocused,!0),n.hasArcType()&&n.unexpandArc(t),n.toggleFocusLegend(t,!1),n.focusedTargetIds=n.focusedTargetIds.filter(function(e){return t.indexOf(e)<0}),n.defocusedTargetIds=t},s.revert=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t)),e.classed(h.focused,!1).classed(h.defocused,!1),n.hasArcType()&&n.unexpandArc(t),n.config.legend_show&&(n.showLegend(t.filter(n.isLegendToShow.bind(n))),n.legend.selectAll(n.selectorLegends(t)).filter(function(){return n.d3.select(this).classed(h.legendItemFocused)}).classed(h.legendItemFocused,!1)),n.focusedTargetIds=[],n.defocusedTargetIds=[]},s.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0)}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},s.zoom=function(t){var e=this.internal;return t&&(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.brush.extent(t),e.redraw({withUpdateXDomain:!0,withY:e.config.zoom_rescale}),e.config.zoom_onzoom.call(this,e.x.orgDomain())),e.brush.extent()},s.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},s.unzoom=function(){var t=this.internal;t.brush.clear().update(),t.redraw({withUpdateXDomain:!0})},s.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_max=i.max([e.orgXDomain[1],t])):n.zoom_x_max},s.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_min=i.min([e.orgXDomain[0],t])):n.zoom_x_min},s.zoom.range=function(t){return arguments.length?(m(t.max)&&this.domain.max(t.max),void(m(t.min)&&this.domain.min(t.min))):{max:this.domain.max(),min:this.domain.min()}},s.load=function(t){var e=this.internal,n=e.config;return t.xs&&e.addXs(t.xs),"names"in t&&s.data.names.bind(this)(t.names),"classes"in t&&Object.keys(t.classes).forEach(function(e){n.data_classes[e]=t.classes[e]}),"categories"in t&&e.isCategorized()&&(n.axis_x_categories=t.categories),"axes"in t&&Object.keys(t.axes).forEach(function(e){n.data_axes[e]=t.axes[e]}),"colors"in t&&Object.keys(t.colors).forEach(function(e){n.data_colors[e]=t.colors[e]}),"cacheIds"in t&&e.hasCaches(t.cacheIds)?void e.load(e.getCaches(t.cacheIds),t.done):void("unload"in t?e.unload(e.mapToTargetIds("boolean"==typeof t.unload&&t.unload?null:t.unload),function(){e.loadFromArgs(t)}):e.loadFromArgs(t))},s.unload=function(t){var e=this.internal;t=t||{},t instanceof Array?t={ids:t}:"string"==typeof t&&(t={ids:[t]}),e.unload(e.mapToTargetIds(t.ids),function(){e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),t.done&&t.done()})},s.flow=function(t){var e,n,i,r,o,a,s,l,c=this.internal,u=[],h=c.getMaxDataCount(),f=0,p=0;if(t.json)n=c.convertJsonToData(t.json,t.keys);else if(t.rows)n=c.convertRowsToData(t.rows);else{if(!t.columns)return;n=c.convertColumnsToData(t.columns)}e=c.convertDataToTargets(n,!0),c.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n<e.length;n++)if(t.id===e[n].id){for(r=!0,t.values[t.values.length-1]&&(p=t.values[t.values.length-1].index+1),f=e[n].values.length,i=0;i<f;i++)e[n].values[i].index=p+i,c.isTimeSeries()||(e[n].values[i].x=p+i);t.values=t.values.concat(e[n].values),e.splice(n,1);break}r||u.push(t.id)}),c.data.targets.forEach(function(t){var e,n;for(e=0;e<u.length;e++)if(t.id===u[e])for(p=t.values[t.values.length-1].index+1,n=0;n<f;n++)t.values.push({id:t.id,index:p+n,x:c.isTimeSeries()?c.getOtherTargetX(p+n):p+n,value:null})}),c.data.targets.length&&e.forEach(function(t){var e,n=[];for(e=c.data.targets[0].values[0].index;e<p;e++)n.push({id:t.id,index:e,x:c.isTimeSeries()?c.getOtherTargetX(e):e,value:null});t.values.forEach(function(t){t.index+=p,c.isTimeSeries()||(t.x+=p)}),t.values=n.concat(t.values)}),c.data.targets=c.data.targets.concat(e),i=c.getMaxDataCount(),o=c.data.targets[0],a=o.values[0],m(t.to)?(f=0,l=c.isTimeSeries()?c.parseDate(t.to):t.to,o.values.forEach(function(t){t.x<l&&f++})):m(t.length)&&(f=t.length),h?1===h&&c.isTimeSeries()&&(s=(o.values[o.values.length-1].x-a.x)/2,r=[new Date(+a.x-s),new Date(+a.x+s)],c.updateXDomain(null,!0,!0,!1,r)):(s=c.isTimeSeries()?o.values.length>1?o.values[o.values.length-1].x-a.x:a.x-c.getXDomain(c.data.targets)[0]:1,r=[a.x-s,a.x],c.updateXDomain(null,!0,!0,!1,r)),c.updateTargets(c.data.targets),c.redraw({flow:{index:a.index,length:f,duration:d(t.duration)?t.duration:c.config.transition_duration,done:t.done,orgDataCount:h},withLegend:!0,withTransition:h>1,withTrimXDomain:!1,withUpdateXAxis:!0})},l.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,a,s=t.targets,l=t.flow,c=t.drawBar,u=t.drawLine,d=t.drawArea,f=t.cx,p=t.cy,g=t.xv,m=t.xForText,v=t.yForText,y=t.duration,b=1,_=l.index,w=l.length,S=e.getValueOnIndex(e.data.targets[0].values,_),C=e.getValueOnIndex(e.data.targets[0].values,_+w),T=e.x.domain(),k=l.duration||y,A=l.done||function(){},M=e.generateWait(),L=e.xgrid||i.selectAll([]),E=e.xgridLines||i.selectAll([]),P=e.mainRegion||i.selectAll([]),N=e.mainText||i.selectAll([]),O=e.mainBar||i.selectAll([]),R=e.mainLine||i.selectAll([]),D=e.mainArea||i.selectAll([]),I=e.mainCircle||i.selectAll([]);e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,w)}),a=e.updateXDomain(s,!0,!0),e.updateXGrid&&e.updateXGrid(!0),l.orgDataCount?r=1===l.orgDataCount||(S&&S.x)===(C&&C.x)?e.x(T[0])-e.x(a[0]):e.isTimeSeries()?e.x(T[0])-e.x(a[0]):e.x(S.x)-e.x(C.x):1!==e.data.targets[0].values.length?r=e.x(T[0])-e.x(a[0]):e.isTimeSeries()?(S=e.getValueOnIndex(e.data.targets[0].values,0),C=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(S.x)-e.x(C.x)):r=x(a)/2,b=x(T)/x(a),o="translate("+r+",0) scale("+b+",1)",e.hideXGridFocus(),i.transition().ease("linear").duration(k).each(function(){M.add(e.axes.x.transition().call(e.xAxis)),M.add(O.transition().attr("transform",o)),M.add(R.transition().attr("transform",o)),M.add(D.transition().attr("transform",o)),M.add(I.transition().attr("transform",o)),M.add(N.transition().attr("transform",o)),M.add(P.filter(e.isRegionOnX).transition().attr("transform",o)),M.add(L.transition().attr("transform",o)),M.add(E.transition().attr("transform",o))}).call(M,function(){var t,i=[],r=[],o=[];if(w){for(t=0;t<w;t++)i.push("."+h.shape+"-"+(_+t)),r.push("."+h.text+"-"+(_+t)),o.push("."+h.eventRect+"-"+(_+t));e.svg.selectAll("."+h.shapes).selectAll(i).remove(),e.svg.selectAll("."+h.texts).selectAll(r).remove(),e.svg.selectAll("."+h.eventRects).selectAll(o).remove(),e.svg.select("."+h.xgrid).remove()}L.attr("transform",null).attr(e.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",n.axis_rotated?0:g).attr("x2",n.axis_rotated?e.width:g),E.select("text").attr("x",n.axis_rotated?e.width:0).attr("y",g),O.attr("transform",null).attr("d",c),R.attr("transform",null).attr("d",u),D.attr("transform",null).attr("d",d),I.attr("transform",null).attr("cx",f).attr("cy",p),N.attr("transform",null).attr("x",m).attr("y",v).style("fill-opacity",e.opacityForText.bind(e)),P.attr("transform",null),P.select("rect").filter(e.isRegionOnX).attr("x",e.regionX.bind(e)).attr("width",e.regionWidth.bind(e)),n.interaction_enabled&&e.redrawEventRect(),A(),e.flowing=!1})}},s.selected=function(t){var e=this.internal,n=e.d3;return n.merge(e.main.selectAll("."+h.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+h.shape).filter(function(){return n.select(this).classed(h.SELECTED)}).map(function(t){return t.map(function(t){var e=t.__data__;return e.data?e.data:e})}))},s.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(a,s){var l=r.select(this),c=a.data?a.data.id:a.id,u=i.getToggle(this,a).bind(i),d=o.data_selection_grouped||!t||t.indexOf(c)>=0,f=!e||e.indexOf(s)>=0,p=l.classed(h.SELECTED);l.classed(h.line)||l.classed(h.area)||(d&&f?o.data_selection_isselectable(a)&&!p&&u(!0,l.classed(h.SELECTED,!0),a,s):m(n)&&n&&p&&u(!1,l.classed(h.SELECTED,!1),a,s))})},s.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(o,a){var s=i.select(this),l=o.data?o.data.id:o.id,c=n.getToggle(this,o).bind(n),u=r.data_selection_grouped||!t||t.indexOf(l)>=0,d=!e||e.indexOf(a)>=0,f=s.classed(h.SELECTED);s.classed(h.line)||s.classed(h.area)||u&&d&&r.data_selection_isselectable(o)&&f&&c(!1,s.classed(h.SELECTED,!1),o,a)})},s.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},l.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),o=n||{withTransitionForAxis:r};o.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(o)},s.groups=function(t){var e=this.internal,n=e.config;return g(t)?n.data_groups:(n.data_groups=t,e.redraw(),n.data_groups)},s.xgrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_x_lines=t,e.redrawWithoutRescale(),n.grid_x_lines):n.grid_x_lines},s.xgrids.add=function(t){var e=this.internal;return this.xgrids(e.config.grid_x_lines.concat(t?t:[]))},s.xgrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!0)},s.ygrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_y_lines=t,e.redrawWithoutRescale(),n.grid_y_lines):n.grid_y_lines},s.ygrids.add=function(t){var e=this.internal;return this.ygrids(e.config.grid_y_lines.concat(t?t:[]))},s.ygrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!1)},s.regions=function(t){var e=this.internal,n=e.config;return t?(n.regions=t,e.redrawWithoutRescale(),n.regions):n.regions},s.regions.add=function(t){var e=this.internal,n=e.config;return t?(n.regions=n.regions.concat(t),e.redrawWithoutRescale(),n.regions):n.regions},s.regions.remove=function(t){var e,n,i,r=this.internal,o=r.config;return t=t||{},e=r.getOption(t,"duration",o.transition_duration),n=r.getOption(t,"classes",[h.region]),i=r.main.select("."+h.regions).selectAll(n.map(function(t){return"."+t})),(e?i.transition().duration(e):i).style("opacity",0).remove(),o.regions=o.regions.filter(function(t){var e=!1;return!t.class||(t.class.split(" ").forEach(function(t){n.indexOf(t)>=0&&(e=!0)}),!e)}),o.regions},s.data=function(t){var e=this.internal.data.targets;return"undefined"==typeof t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},s.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},s.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},s.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},s.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},s.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},s.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},s.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},s.color=function(t){var e=this.internal;return e.color(t)},s.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.axis=function(){},s.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},s.axis.max=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_max=t.x),d(t.y)&&(n.axis_y_max=t.y),d(t.y2)&&(n.axis_y2_max=t.y2)):n.axis_y_max=n.axis_y2_max=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_max,y:n.axis_y_max,y2:n.axis_y2_max}},s.axis.min=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_min=t.x),d(t.y)&&(n.axis_y_min=t.y),d(t.y2)&&(n.axis_y2_min=t.y2)):n.axis_y_min=n.axis_y2_min=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_min,y:n.axis_y_min,y2:n.axis_y2_min}},s.axis.range=function(t){return arguments.length?(m(t.max)&&this.axis.max(t.max),void(m(t.min)&&this.axis.min(t.min))):{max:this.axis.max(),min:this.axis.min()}},s.legend=function(){},s.legend.show=function(t){var e=this.internal;e.showLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.legend.hide=function(t){var e=this.internal;e.hideLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},s.flush=function(){var t=this.internal;t.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},s.destroy=function(){var e=this.internal;if(t.clearInterval(e.intervalForObserveInserted),void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),t.detachEvent)t.detachEvent("onresize",e.resizeFunction);else if(t.removeEventListener)t.removeEventListener("resize",e.resizeFunction);else{var n=t.onresize;n&&n.add&&n.remove&&n.remove(e.resizeFunction)}return e.selectChart.classed("c3",!1).html(""),Object.keys(e).forEach(function(t){e[t]=null}),null},s.tooltip=function(){},s.tooltip.show=function(t){var e,n,i=this.internal;t.mouse&&(n=t.mouse),t.data?i.isMultipleX()?(n=[i.x(t.data.x),i.getYScale(t.data.id)(t.data.value)],e=null):e=d(t.data.index)?t.data.index:i.getIndexByX(t.data.x):"undefined"!=typeof t.x?e=i.getIndexByX(t.x):"undefined"!=typeof t.index&&(e=t.index),i.dispatchEvent("mouseover",e,n),i.dispatchEvent("mousemove",e,n),i.config.tooltip_onshow.call(i,t.data)},s.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var k;l.isSafari=function(){var e=t.navigator.userAgent;return e.indexOf("Safari")>=0&&e.indexOf("Chrome")<0},l.isChrome=function(){var e=t.navigator.userAgent;return e.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,i=function(){},r=function(){return n.apply(this instanceof i?this:t,e.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,r.prototype=new i,r}),function(){"SVGPathSeg"in t||(t.SVGPathSeg=function(t,e,n){this.pathSegType=t,this.pathSegTypeAsLetter=e,this._owningPathSegList=n},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},t.SVGPathSegClosePath=function(t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",t)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},t.SVGPathSegMovetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",t),this._x=e,this._y=n},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegMovetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",t),this._x=e,this._y=n},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),
-SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",t),this._x=e,this._y=n},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",t),this._x=e,this._y=n},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcAbs=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcRel=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",t),this._x=e},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",t),this._x=e},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",t),this._y=e},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",t),this._y=e},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(t,e){return new SVGPathSegMovetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(t,e){return new SVGPathSegMovetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(t,e){return new SVGPathSegLinetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(t,e){return new SVGPathSegLinetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicAbs(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicRel(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(t,e,n,i,r,o,a){return new SVGPathSegArcAbs(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegArcRel=function(t,e,n,i,r,o,a){return new SVGPathSegArcRel(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(t){return new SVGPathSegLinetoHorizontalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(t){return new SVGPathSegLinetoHorizontalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(t){return new SVGPathSegLinetoVerticalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(t){return new SVGPathSegLinetoVerticalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,t,e)}),"SVGPathSegList"in t||(t.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},i.prototype._skipOptionalSpacesOrDelimiter=function(){return!(this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex))&&(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},i.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},i.prototype.peekSegmentType=function(){var t=this._string[this._currentIndex];return this._pathSegTypeFromChar(t)},i.prototype._pathSegTypeFromChar=function(t){switch(t){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},i.prototype._nextCommandHelper=function(t,e){return("+"==t||"-"==t||"."==t||t>="0"&&t<="9")&&e!=SVGPathSeg.PATHSEG_CLOSEPATH?e==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:e==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:e:SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==SVGPathSeg.PATHSEG_MOVETO_ABS||t==SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,o=1,a=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,r=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var l=this._currentIndex-1,c=1;l>=s;)e+=c*(this._string.charAt(l--)-"0"),c*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)i+=(this._string.charAt(this._currentIndex++)-"0")*(n*=.1)}if(this._currentIndex!=a&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,o=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var u=e+i;if(u*=r,t&&(u*=Math.pow(10,o*t)),a!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),u}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(n=this._nextCommandHelper(t,this._previousCommand),n==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(e);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()
-};return new SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,o=new i(t);if(!o.initialCommandIsMoveTo())return[];for(;o.hasMoreData();){var a=o.parseSegment();if(!a)return[];r.appendSegment(a)}return r.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return u}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=u:t.c3=u}(window),!function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return r(n?n:t)},u,u.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){var i=t("./svg-pan-zoom.js");!function(t,n){"function"==typeof define&&define.amd?define("svg-pan-zoom",[],function(){return i}):"undefined"!=typeof e&&e.exports&&(e.exports=i,t.svgPanZoom=i)}(window,document)},{"./svg-pan-zoom.js":4}],2:[function(t,e,n){var i=t("./svg-utilities");e.exports={enable:function(t){var e=t.svg.querySelector("defs");e||(e=document.createElementNS(i.svgNS,"defs"),t.svg.appendChild(e));var n=e.querySelector("style#svg-pan-zoom-controls-styles");if(!n){var r=document.createElementNS(i.svgNS,"style");r.setAttribute("id","svg-pan-zoom-controls-styles"),r.setAttribute("type","text/css"),r.textContent=".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }",e.appendChild(r)}var o=document.createElementNS(i.svgNS,"g");o.setAttribute("id","svg-pan-zoom-controls"),o.setAttribute("transform","translate("+(t.width-70)+" "+(t.height-76)+") scale(0.75)"),o.setAttribute("class","svg-pan-zoom-control"),o.appendChild(this._createZoomIn(t)),o.appendChild(this._createZoomReset(t)),o.appendChild(this._createZoomOut(t)),t.svg.appendChild(o),t.controlIcons=o},_createZoomIn:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-in"),e.setAttribute("transform","translate(30.5 5) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},_createZoomReset:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-reset-pan-zoom"),e.setAttribute("transform","translate(5 35) scale(0.4)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().reset()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","2"),n.setAttribute("y","2"),n.setAttribute("width","182"),n.setAttribute("height","58"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");r.setAttribute("d","M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r);var o=document.createElementNS(i.svgNS,"path");return o.setAttribute("d","M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"),o.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(o),e},_createZoomOut:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-out"),e.setAttribute("transform","translate(30.5 70) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{"./svg-utilities":5}],3:[function(t,e,n){var i=t("./svg-utilities"),r=t("./utilities"),o=function(t,e){this.init(t,e)};o.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=r.proxy(this.updateCTM,this),this.requestAnimationFrame=r.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},o.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute("viewBox");if(t){var e=t.split(/[\s\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute("viewBox")}else this.simpleViewBoxCache()},o.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},o.prototype.getViewBox=function(){return r.extend({},this.viewBox)},o.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),i=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=i}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},o.prototype.getOriginalState=function(){return r.extend({},this.originalState)},o.prototype.getState=function(){return r.extend({},this.activeState)},o.prototype.getZoom=function(){return this.activeState.zoom},o.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},o.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},o.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},o.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},o.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var i=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),o=!1,a=!1;i===!1?(t.e=this.getPan().x,t.f=this.getPan().y,o=a=!0):r.isObject(i)&&(i.x===!1?(t.e=this.getPan().x,o=!0):r.isNumber(i.x)&&(t.e=i.x),i.y===!1?(t.f=this.getPan().y,a=!0):r.isNumber(i.y)&&(t.f=i.y)),o&&a||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},o.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},o.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},o.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},o.prototype.pendingUpdate=!1,o.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},o.prototype.updateCTM=function(){var t=this.getCTM();i.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new o(t,e)}},{"./svg-utilities":5,"./utilities":7}],4:[function(t,e,n){var i=t("./uniwheel"),r=t("./control-icons"),o=t("./utilities"),a=t("./svg-utilities"),s=t("./shadow-viewport"),l=function(t,e){this.init(t,e)},c={viewportSelector:".svg-pan-zoom_viewport",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:"auto",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector("defs"),a.setupSvgAttributes(this.svg),this.options=o.extend(o.extend({},c),e),this.state="none";var i=a.getBoundingClientRectNormalized(t);this.width=i.width,this.height=i.height,this.viewport=s(a.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&r.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var i=t.handleMouseDown(n,e);return e=n,i},touchstart:function(n){var i=t.handleMouseDown(n,e);return e=n,i},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var i=n.length-1;i>=0;i--)this.eventListeners.hasOwnProperty(n[i])&&delete this.eventListeners[n[i]]}for(var r in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(r,this.eventListeners[r],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},i.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(i.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,i=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/i;var r=this.svg.getScreenCTM().inverse(),o=a.getEventPoint(t,this.svg).matrixTransform(r),s=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(s,o)}},l.prototype.zoomAtPoint=function(t,e,n){var i=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*i.zoom,Math.min(this.options.maxZoom*i.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*i.zoom?t=this.options.minZoom*i.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*i.zoom&&(t=this.options.maxZoom*i.zoom/this.getZoom());var r=this.viewport.getCTM(),o=e.matrixTransform(r.inverse()),a=this.svg.createSVGMatrix().translate(o.x,o.y).scale(t).translate(-o.x,-o.y),s=r.multiply(a);s.a!==r.a&&this.viewport.setCTM(s)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,a.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==o.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=a.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var i=a.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,i)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),o.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&o.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=a.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),u=u.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:o.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,r.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,r.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:o.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var u=[],h=function(t,e){var n=o.getSvg(t);if(null===n)return null;for(var i=u.length-1;i>=0;i--)if(u[i].svg===n)return u[i].instance.getPublicInstance();return u.push({svg:n,instance:new l(n,e)}),u[u.length-1].instance.getPublicInstance()};e.exports=h},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,n){var i=t("./utilities"),r="unknown";document.documentMode&&(r="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var n=null;if(n=i.isElement(e)?e:t.querySelector(e),!n){var r=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===r.length&&"g"===r[0].nodeName&&null===r[0].getAttribute("transform")&&(n=r[0])}if(!n){var o="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",o);var a=t.childNodes||t.children;if(a&&a.length>0)for(var s=a.length;s>0;s--)"defs"!==a[a.length-s].nodeName&&n.appendChild(a[a.length-s]);t.appendChild(n)}var l=[];return n.getAttribute("class")&&(l=n.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),n.setAttribute("class",l.join(" "))),n},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:i.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,n=0;e>n;n++){var i=t[n];i.parentNode.insertBefore(i,i)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var i=this,o="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",o),"transform"in t.style?t.style.transform=o:"-ms-transform"in t.style?t.style["-ms-transform"]=o:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=o),"ie"===r&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){i.refreshDefsGlobal()},i.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return i.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var i=t.createSVGPoint();return i.x=e,i.y=n,i}}},{"./utilities":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var i=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==c?(n.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-.025*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return h.push({element:t,fn:i,capture:n}),i}function e(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h[n].fn;return function(){}}function n(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h.splice(n,1)}function i(e,n,i,r){var o;o="wheel"===c?i:t(e,i,r),e[s](u+n,o,r||!1)}function r(t,i,r,o){var a;a="wheel"===c?r:e(t,o),t[l](u+i,a,o||!1),n(t,o)}function o(t,e,n){i(t,c,e,n),"DOMMouseScroll"==c&&i(t,"MozMousePixelScroll",e,n)}function a(t,e,n){r(t,c,e,n),"DOMMouseScroll"==c&&r(t,"MozMousePixelScroll",e,n)}var s,l,c,u="",h=[];return window.addEventListener?(s="addEventListener",l="removeEventListener"):(s="attachEvent",l="detachEvent",u="on"),c="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",{on:o,off:a}}()},{}],7:[function(t,e,n){function i(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&"object"==typeof t&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName},isObject:function(t){return"[object Object]"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!("string"==typeof t||t instanceof String))throw new Error("Provided selector is not an HTML object nor String");if(e=document.querySelector(t),!e)throw new Error("Provided selector did not find any elements. Selector: "+t)}if("svg"===e.tagName.toLowerCase())n=e;else if("object"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if("embed"!==e.tagName.toLowerCase())throw"img"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.'):new Error("Cannot get SVG.");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\[object\s/,"").replace(/\]$/,"")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,i=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>i}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var i,r,o,a=this,s=null,l=0;n||(n={});var c=function(){l=n.leading===!1?0:a.now(),s=null,o=t.apply(i,r),s||(i=r=null)};return function(){var u=a.now();l||n.leading!==!1||(l=u);var h=e-(u-l);return i=this,r=arguments,0>=h||h>e?(clearTimeout(s),s=null,l=u,o=t.apply(i,r),s||(i=r=null)):s||n.trailing===!1||(s=setTimeout(c,h)),o}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||i(33):i(e)}}},{}]},{},[1]),define("jswish",["jquery","config","preferences","history","modal","chat","splitter","bootstrap","pane","tabbed","notebook","navbar","search","editor","query","runner","term","laconic","login","chatroom","d3","c3","svg-pan-zoom"],function(t,e,n,i,r){n.setDefault("semantic-highlighting",!0),n.setDefault("emacs-keybinding",!1),
-function(t){function n(t,e){return e.glyph=t,e}function o(t,e){return e.typeIcon=t,e}function a(e,n){t(".swish-event-receiver").trigger(e,n)}function s(){t(".swish-logo").append(t.el.b(t.el.span({style:"color:darkblue"},"SWI"),t.el.span({style:"color:maroon"},"SH"))).css("margin-left","30px").css("font-size","24px").addClass("navbar-brand")}function l(){0==t("#modal").length&&(t("body").append(t.el.div({id:"modal"})),t("#modal").swishModal())}function c(){t(".tile").tile(),t(window).resize(function(){t(".tile").tile("resize")}),t(".tabbed").tabbed()}function u(){t(window).resize(function(){t(".reactive-size").trigger("reactive-resize")})}var h="swish",d={menu:{File:{"Save ...":n("cloud-upload",function(){a("save","as")}),"Info & history ...":n("info-sign",function(){a("fileInfo")}),Reload:n("refresh",function(){a("reload")}),"Open recent":{type:"submenu",glyph:"paperclip",action:function(e){i.openRecent(e,t(this).data("document"))},update:i.updateRecentUL},Share:"--","Follow ...":e.http.locations.follow_file_options?n("eye-open",function(){a("follow-file")}):void 0,"Start TogetherJS ...":o("togetherjs",function(){t("body").swish("collaborate")}),Export:"--",Download:n("floppy-save",function(){a("download")}),"Print ...":n("print",function(){a("print")})},Edit:{"Clear messages":function(){a("clearMessages")},Changes:"--","View changes":function(){a("diff")},Edit:"--","Find (Ctrl-F)":function(){a("edit-command","find")},"Find and replace (Shift-Ctrl-F)":function(){a("edit-command","replace")},"Jump to line (Alt-G)":function(){a("edit-command","jumpToLine")},Options:"--","Semantic highlighting":{preference:"semantic-highlighting",type:"checkbox"},"Emacs Keybinding":{preference:"emacs-keybinding",type:"checkbox",value:"false"}},Examples:function(e,n){t("body").swish("populateExamples",e,n)},Help:function(e,n){t("body").swish("populateHelp",e,n)}}},f={_init:function(n){return s(),l(),c(),u(),t("#search").search(),n=n||{},this.addClass("swish"),this.each(function(){var i=t(this),r={};t("#navbar").navbar(d.menu),t("#login").login();var o=t(".prolog-editor").prologEditor({save:!0});r.runner=t(".prolog-runners").prologRunners(),r.query=t(".prolog-query").queryEditor({source:function(){return i.swish("prologSource")},sourceID:function(){return o.prologEditor("getSourceID")},examples:i.swish("examples"),runner:r.runner,editor:o[0]}),t(".notebook").notebook(),!n.show_beware||swish.option&&0==swish.option.show_beware||a("help",{file:"beware.html",notagain:"beware"}),i.data(h,r),window.location.href.indexOf("&togetherjs=")>0&&i.swish("collaborate"),t("#chat").chat(""),t("#broadcast-bell").chatbell({empty_title:"Click to open chat"}),t("#chat-menu").on("click","a",function(n){var i=t(n.target).closest("a");switch(i.data("action")){case"chat-shared":t("body").swish("playFile",{file:e.swish.hangout,chat:"large"});case"chat-about-file":a("chat-about-file")}}),setInterval(function(){t(".each-minute").trigger("minute")},6e4)})},trigger:function(t,e){return a(t,e),this},playFile:function(n){var i=this;"string"==typeof n&&(n={file:n});var o=this.find(".storage").storage("match",n);if(o&&o.storage("expose","Already open"))return this;var a=e.http.locations.web_storage+n.file;return t.ajax({url:a,type:"GET",data:{format:"json"},success:function(t){function e(e){for(var i=0;i<e.length;i++){var r=e[i];n[r]&&(t[r]=n[r])}}t.url=a,t.st_type="gitty",e(["line","regex","showAllMatches","newTab","noHistory","prompt","chat"]),i.swish("setSource",t)},error:function(t){r.ajaxError(t)}}),this},playURL:function(e){var n=this,i=this.find(".storage").storage("match",e);return i&&i.storage("expose","Already open")?this:void t.ajax({url:e.url,type:"GET",data:{format:"json"},success:function(t){function i(t){for(var n=0;n<t.length;n++){var i=t[n];e[i]&&(r[i]=e[i])}}var r;if("string"==typeof t)r={data:t},r.st_type="external";else{if("object"!=typeof t||"string"!=typeof t.data)return void alert("Invalid data");r=t,r.st_type="filesys"}r.url=e.url,i(["line","regex","showAllMatches","newTab","noHistory","prompt"]),n.swish("setSource",r)},error:function(t){r.ajaxError(t)}})},setSource:function(t){var e=this.swish("isFullscreen");return e&&e.storage("setSource",t)||(e&&this.swish("exitFullscreen"),this.find(".tabbed").tabbed("tabFromSource",t)),this},openExampleFunction:function(t){var e=this;return"divider"==t.type?"--":"store"==t.type?function(){f.playFile.call(e,t.file)}:function(){f.playURL.call(e,{url:t.href})}},populateExamples:function(n,i){var r=this;return r.off("examples-changed").on("examples-changed",function(){t("#navbar").navbar("clearDropdown",i),r.swish("populateExamples",n,i)}),t.ajax(e.http.locations.swish_examples,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{var l=s.file||s.href;o=s.title,a=r.swish("openExampleFunction",s),l&&(a.typeIcon=l.split(".").pop())}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},populateHelp:function(n,i){function r(t){return function(){a("help",{file:t.file})}}return t.ajax(e.http.locations.swish_help_index,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{s.file;o=s.title,a=r(s)}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},prologSource:function(){var e,n=[];return(e=t(".prolog-editor").prologEditor("getSource","source"))&&n.push(e),(e=t(".background.prolog.source").text())&&n.push(e),n.join("\n\n")},breakpoints:function(t){return this.find(".prolog-editor").prologEditor("getBreakpoints",t)||[]},tabData:function(t){return t=t||{},t.active?this.find(".tab-pane.active .storage").storage("getData",t):this.find(".storage").storage("getData",t)},examples:function(e){var n=t(".examples.prolog").text();return n?t().prologEditor("getExamples",n,!1):1!=e?function(){return t(".prolog-editor").prologEditor("getExamples")}:void 0},fullscreen:function(e,n){var i=this.find(".container.tile-top");if(!i.hasClass("fullscreen")){var r=this.data("fullscreen");r||(r={},this.data("fullscreen",r)),i.addClass("fullscreen"),n=n||e,n.addClass("fullscreen hamburger"),r.fullscreen_origin=e.parent()[0],r.fullscreen_main=n[0],t(i.children()[0]).hide(),i.append(e),n.trigger("fullscreen",!0)}return this},exitFullscreen:function(){var e=this.find(".container.tile-top");if(e.hasClass("fullscreen")){var n=this.data("fullscreen"),i=t(e.children()[1]),r=n.fullscreen_main;return e.removeClass("fullscreen"),t(n.fullscreen_main).removeClass("fullscreen hamburger"),t(n.fullscreen_origin).append(i),n.fullscreen_origin=null,n.fullscreen_main=null,t(e.children()[0]).show(),t(r).trigger("fullscreen",!1),!0}return!1},isFullscreen:function(){var t=this.find(".container.tile-top");if(t.hasClass("fullscreen")){var e=t.find(".storage");if(0!=e.length)return e}},collaborate:function(){var e=this;return t(this).attr("data-end-togetherjs-html","End collaboration"),require(["https://togetherjs.com/togetherjs-min.js"],function(){TogetherJS(e)}),this}};t.fn.swish=function(e){return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):f._init.apply(this,arguments)}}(jQuery)}),require.config({urlArgs:"ts="+(new Date).getTime(),waitSeconds:60,paths:{jquery:"../bower_components/jquery/dist/jquery.min","jquery-ui":"../bower_components/jquery-ui/jquery-ui.min",laconic:"../bower_components/laconic/laconic",bootstrap:"../bower_components/bootstrap/dist/js/bootstrap.min",bloodhound:"../bower_components/typeahead.js/dist/bloodhound",typeahead:"../bower_components/typeahead.js/dist/typeahead.jquery",splitter:"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0",tagmanager:"../bower_components/tagmanager/tagmanager",sha1:"../bower_components/js-sha1/src/sha1",c3:"../bower_components/c3/c3",d3:"../bower_components/d3/d3","svg-pan-zoom":"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min",sparkline:"../bower_components/sparkline/dist/jquery.sparkline","cm/mode/prolog":"codemirror/mode/prolog","cm/addon/hover/prolog-hover":"codemirror/addon/hover/prolog-hover","cm/addon/hover/text-hover":"codemirror/addon/hover/text-hover","cm/addon/hint/templates-hint":"codemirror/addon/hint/templates-hint","cm/addon/hint/show-context-info":"codemirror/addon/hint/show-context-info",cm:"../bower_components/codemirror"},shim:{bootstrap:{deps:["jquery"]},typeahead:{deps:["jquery"],init:function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)}},bloodhound:{deps:["jquery"]},splitter:{deps:["jquery"]},laconic:{deps:["jquery"]},tagmanager:{deps:["jquery"]}}}),require(["jquery","config","jswish"],function(t,e,n){require([e.http.locations.pengines+"/pengines.js"],function(){t(function(){t("body").swish(e.swish||{})})})}),define("swish",function(){});
+if(function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function n(t,e,n){var i,r=(e=e||at).createElement("script");if(r.text=t,n)for(i in bt)n[i]&&(r[i]=n[i]);e.head.appendChild(r).parentNode.removeChild(r)}function i(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?dt[ft.call(t)]||"object":typeof t}function r(t){var e=!!t&&"length"in t&&t.length,n=i(t);return!yt(t)&&!xt(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function o(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function a(t,e,n){return yt(e)?wt.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?wt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?wt.grep(t,function(t){return ht.call(e,t)>-1!==n}):wt.filter(e,t,n)}function s(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function l(t){var e={};return wt.each(t.match(Nt)||[],function(t,n){e[n]=!0}),e}function c(t){return t}function u(t){throw t}function h(t,e,n,i){var r;try{t&&yt(r=t.promise)?r.call(t).done(e).fail(n):t&&yt(r=t.then)?r.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}function d(){at.removeEventListener("DOMContentLoaded",d),t.removeEventListener("load",d),wt.ready()}function f(t,e){return e.toUpperCase()}function p(t){return t.replace(It,"ms-").replace(Ht,f)}function g(){this.expando=wt.expando+g.uid++}function m(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:zt.test(t)?JSON.parse(t):t)}function v(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(qt,"-$&").toLowerCase(),"string"==typeof(n=t.getAttribute(i))){try{n=m(n)}catch(t){}Ft.set(t,e,n)}else n=void 0;return n}function y(t,e,n,i){var r,o,a=20,s=i?function(){return i.cur()}:function(){return wt.css(t,e,"")},l=s(),c=n&&n[3]||(wt.cssNumber[e]?"":"px"),u=(wt.cssNumber[e]||"px"!==c&&+l)&&Bt.exec(wt.css(t,e));if(u&&u[3]!==c){for(l/=2,c=c||u[3],u=+l||1;a--;)wt.style(t,e,u+c),(1-o)*(1-(o=s()/l||.5))<=0&&(a=0),u/=o;u*=2,wt.style(t,e,u+c),n=n||[]}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function x(t){var e,n=t.ownerDocument,i=t.nodeName,r=Xt[i];return r||(e=n.body.appendChild(n.createElement(i)),r=wt.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),Xt[i]=r,r)}function b(t,e){for(var n,i,r=[],o=0,a=t.length;o<a;o++)(i=t[o]).style&&(n=i.style.display,e?("none"===n&&(r[o]=Vt.get(i,"display")||null,r[o]||(i.style.display="")),""===i.style.display&&Wt(i)&&(r[o]=x(i))):"none"!==n&&(r[o]="none",Vt.set(i,"display",n)));for(o=0;o<a;o++)null!=r[o]&&(t[o].style.display=r[o]);return t}function w(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&o(t,e)?wt.merge([t],n):n}function _(t,e){for(var n=0,i=t.length;n<i;n++)Vt.set(t[n],"globalEval",!e||Vt.get(e[n],"globalEval"))}function S(t,e,n,r,o){for(var a,s,l,c,u,h,d=e.createDocumentFragment(),f=[],p=0,g=t.length;p<g;p++)if((a=t[p])||0===a)if("object"===i(a))wt.merge(f,a.nodeType?[a]:a);else if(Jt.test(a)){for(s=s||d.appendChild(e.createElement("div")),l=(Qt.exec(a)||["",""])[1].toLowerCase(),c=Kt[l]||Kt._default,s.innerHTML=c[1]+wt.htmlPrefilter(a)+c[2],h=c[0];h--;)s=s.lastChild;wt.merge(f,s.childNodes),(s=d.firstChild).textContent=""}else f.push(e.createTextNode(a));for(d.textContent="",p=0;a=f[p++];)if(r&&wt.inArray(a,r)>-1)o&&o.push(a);else if(u=wt.contains(a.ownerDocument,a),s=w(d.appendChild(a),"script"),u&&_(s),n)for(h=0;a=s[h++];)Zt.test(a.type||"")&&n.push(a);return d}function C(){return!0}function T(){return!1}function k(){try{return at.activeElement}catch(t){}}function A(t,e,n,i,r,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(i=i||n,n=void 0);for(s in e)A(t,s,n,i,e[s],o);return t}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=T;else if(!r)return t;return 1===o&&(a=r,(r=function(t){return wt().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=wt.guid++)),t.each(function(){wt.event.add(this,e,r,i,n)})}function M(t,e){return o(t,"table")&&o(11!==e.nodeType?e:e.firstChild,"tr")?wt(t).children("tbody")[0]||t:t}function E(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function L(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function P(t,e){var n,i,r,o,a,s,l,c;if(1===e.nodeType){if(Vt.hasData(t)&&(o=Vt.access(t),a=Vt.set(e,o),c=o.events)){delete a.handle,a.events={};for(r in c)for(n=0,i=c[r].length;n<i;n++)wt.event.add(e,r,c[r][n])}Ft.hasData(t)&&(s=Ft.access(t),l=wt.extend({},s),Ft.set(e,l))}}function N(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Yt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function O(t,e,i,r){e=ct.apply([],e);var o,a,s,l,c,u,h=0,d=t.length,f=d-1,p=e[0],g=yt(p);if(g||d>1&&"string"==typeof p&&!vt.checkClone&&ae.test(p))return t.each(function(n){var o=t.eq(n);g&&(e[0]=p.call(this,n,o.html())),O(o,e,i,r)});if(d&&(o=S(e,t[0].ownerDocument,!1,t,r),a=o.firstChild,1===o.childNodes.length&&(o=a),a||r)){for(l=(s=wt.map(w(o,"script"),E)).length;h<d;h++)c=o,h!==f&&(c=wt.clone(c,!0,!0),l&&wt.merge(s,w(c,"script"))),i.call(t[h],c,h);if(l)for(u=s[s.length-1].ownerDocument,wt.map(s,L),h=0;h<l;h++)c=s[h],Zt.test(c.type||"")&&!Vt.access(c,"globalEval")&&wt.contains(u,c)&&(c.src&&"module"!==(c.type||"").toLowerCase()?wt._evalUrl&&wt._evalUrl(c.src):n(c.textContent.replace(se,""),u,c))}return t}function R(t,e,n){for(var i,r=e?wt.filter(e,t):t,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||wt.cleanData(w(i)),i.parentNode&&(n&&wt.contains(i.ownerDocument,i)&&_(w(i,"script")),i.parentNode.removeChild(i));return t}function D(t,e,n){var i,r,o,a,s=t.style;return(n=n||ce(t))&&(""!==(a=n.getPropertyValue(e)||n[e])||wt.contains(t.ownerDocument,t)||(a=wt.style(t,e)),!vt.pixelBoxStyles()&&le.test(a)&&ue.test(e)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o)),void 0!==a?a+"":a}function I(t,e){return{get:function(){if(!t())return(this.get=e).apply(this,arguments);delete this.get}}}function H(t){if(t in me)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=ge.length;n--;)if((t=ge[n]+e)in me)return t}function j(t){var e=wt.cssProps[t];return e||(e=wt.cssProps[t]=H(t)||t),e}function V(t,e,n){var i=Bt.exec(e);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):e}function F(t,e,n,i,r,o){var a="width"===e?1:0,s=0,l=0;if(n===(i?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=wt.css(t,n+$t[a],!0,r)),i?("content"===n&&(l-=wt.css(t,"padding"+$t[a],!0,r)),"margin"!==n&&(l-=wt.css(t,"border"+$t[a]+"Width",!0,r))):(l+=wt.css(t,"padding"+$t[a],!0,r),"padding"!==n?l+=wt.css(t,"border"+$t[a]+"Width",!0,r):s+=wt.css(t,"border"+$t[a]+"Width",!0,r));return!i&&o>=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-l-s-.5))),l}function z(t,e,n){var i=ce(t),r=D(t,e,i),o="border-box"===wt.css(t,"boxSizing",!1,i),a=o;if(le.test(r)){if(!n)return r;r="auto"}return a=a&&(vt.boxSizingReliable()||r===t.style[e]),("auto"===r||!parseFloat(r)&&"inline"===wt.css(t,"display",!1,i))&&(r=t["offset"+e[0].toUpperCase()+e.slice(1)],a=!0),(r=parseFloat(r)||0)+F(t,e,n||(o?"border":"content"),a,i,r)+"px"}function q(t,e,n,i,r){return new q.prototype.init(t,e,n,i,r)}function G(){ye&&(!1===at.hidden&&t.requestAnimationFrame?t.requestAnimationFrame(G):t.setTimeout(G,wt.fx.interval),wt.fx.tick())}function B(){return t.setTimeout(function(){ve=void 0}),ve=Date.now()}function $(t,e){var n,i=0,r={height:t};for(e=e?1:0;i<4;i+=2-e)r["margin"+(n=$t[i])]=r["padding"+n]=t;return e&&(r.opacity=r.width=t),r}function W(t,e,n){for(var i,r=(Y.tweeners[e]||[]).concat(Y.tweeners["*"]),o=0,a=r.length;o<a;o++)if(i=r[o].call(n,e,t))return i}function U(t,e,n){var i,r,o,a,s,l,c,u,h="width"in e||"height"in e,d=this,f={},p=t.style,g=t.nodeType&&Wt(t),m=Vt.get(t,"fxshow");n.queue||(null==(a=wt._queueHooks(t,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,wt.queue(t,"fx").length||a.empty.fire()})}));for(i in e)if(r=e[i],xe.test(r)){if(delete e[i],o=o||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;g=!0}f[i]=m&&m[i]||wt.style(t,i)}if((l=!wt.isEmptyObject(e))||!wt.isEmptyObject(f)){h&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],null==(c=m&&m.display)&&(c=Vt.get(t,"display")),"none"===(u=wt.css(t,"display"))&&(c?u=c:(b([t],!0),c=t.style.display||c,u=wt.css(t,"display"),b([t]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===wt.css(t,"float")&&(l||(d.done(function(){p.display=c}),null==c&&(u=p.display,c="none"===u?"":u)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1;for(i in f)l||(m?"hidden"in m&&(g=m.hidden):m=Vt.access(t,"fxshow",{display:c}),o&&(m.hidden=!g),g&&b([t],!0),d.done(function(){g||b([t]),Vt.remove(t,"fxshow");for(i in f)wt.style(t,i,f[i])})),l=W(g?m[i]:0,i,d),i in m||(m[i]=l.start,g&&(l.end=l.start,l.start=0))}}function X(t,e){var n,i,r,o,a;for(n in t)if(i=p(n),r=e[i],o=t[n],Array.isArray(o)&&(r=o[1],o=t[n]=o[0]),n!==i&&(t[i]=o,delete t[n]),(a=wt.cssHooks[i])&&"expand"in a){o=a.expand(o),delete t[i];for(n in o)n in t||(t[n]=o[n],e[n]=r)}else e[i]=r}function Y(t,e,n){var i,r,o=0,a=Y.prefilters.length,s=wt.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var e=ve||B(),n=Math.max(0,c.startTime+c.duration-e),i=1-(n/c.duration||0),o=0,a=c.tweens.length;o<a;o++)c.tweens[o].run(i);return s.notifyWith(t,[c,i,n]),i<1&&a?n:(a||s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:wt.extend({},e),opts:wt.extend(!0,{specialEasing:{},easing:wt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ve||B(),duration:n.duration,tweens:[],createTween:function(e,n){var i=wt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(i),i},stop:function(e){var n=0,i=e?c.tweens.length:0;if(r)return this;for(r=!0;n<i;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),u=c.props;for(X(u,c.opts.specialEasing);o<a;o++)if(i=Y.prefilters[o].call(c,t,u,c.opts))return yt(i.stop)&&(wt._queueHooks(c.elem,c.opts.queue).stop=i.stop.bind(i)),i;return wt.map(u,W,c),yt(c.opts.start)&&c.opts.start.call(t,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),wt.fx.timer(wt.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c}function Q(t){return(t.match(Nt)||[]).join(" ")}function Z(t){return t.getAttribute&&t.getAttribute("class")||""}function K(t){return Array.isArray(t)?t:"string"==typeof t?t.match(Nt)||[]:[]}function J(t,e,n,r){var o;if(Array.isArray(e))wt.each(e,function(e,i){n||Pe.test(t)?r(t,i):J(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)});else if(n||"object"!==i(e))r(t,e);else for(o in e)J(t+"["+o+"]",e[o],n,r)}function tt(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,r=0,o=e.toLowerCase().match(Nt)||[];if(yt(n))for(;i=o[r++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function et(t,e,n,i){function r(s){var l;return o[s]=!0,wt.each(t[s]||[],function(t,s){var c=s(e,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(e.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=t===Ge;return r(e.dataTypes[0])||!o["*"]&&r("*")}function nt(t,e){var n,i,r=wt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((r[n]?t:i||(i={}))[n]=e[n]);return i&&wt.extend(!0,t,i),t}function it(t,e,n){for(var i,r,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(r in s)if(s[r]&&s[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||t.converters[r+" "+l[0]]){o=r;break}a||(a=r)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function rt(t,e,n,i){var r,o,a,s,l,c={},u=t.dataTypes.slice();if(u[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=u.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=c[l+" "+o]||c["* "+o]))for(r in c)if((s=r.split(" "))[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){!0===a?a=c[r]:!0!==c[r]&&(o=s[0],u.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}var ot=[],at=t.document,st=Object.getPrototypeOf,lt=ot.slice,ct=ot.concat,ut=ot.push,ht=ot.indexOf,dt={},ft=dt.toString,pt=dt.hasOwnProperty,gt=pt.toString,mt=gt.call(Object),vt={},yt=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType},xt=function(t){return null!=t&&t===t.window},bt={type:!0,src:!0,noModule:!0},wt=function(t,e){return new wt.fn.init(t,e)},_t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;wt.fn=wt.prototype={jquery:"3.3.1",constructor:wt,length:0,toArray:function(){return lt.call(this)},get:function(t){return null==t?lt.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=wt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return wt.each(this,t)},map:function(t){return this.pushStack(wt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(lt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ut,sort:ot.sort,splice:ot.splice},wt.extend=wt.fn.extend=function(){var t,e,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||yt(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(t=arguments[s]))for(e in t)n=a[e],a!==(i=t[e])&&(c&&i&&(wt.isPlainObject(i)||(r=Array.isArray(i)))?(r?(r=!1,o=n&&Array.isArray(n)?n:[]):o=n&&wt.isPlainObject(n)?n:{},a[e]=wt.extend(c,o,i)):void 0!==i&&(a[e]=i));return a},wt.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ft.call(t)||(e=st(t))&&("function"!=typeof(n=pt.call(e,"constructor")&&e.constructor)||gt.call(n)!==mt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},globalEval:function(t){n(t)},each:function(t,e){var n,i=0;if(r(t))for(n=t.length;i<n&&!1!==e.call(t[i],i,t[i]);i++);else for(i in t)if(!1===e.call(t[i],i,t[i]))break;return t},trim:function(t){return null==t?"":(t+"").replace(_t,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(r(Object(t))?wt.merge(n,"string"==typeof t?[t]:t):ut.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:ht.call(e,t,n)},merge:function(t,e){for(var n=+e.length,i=0,r=t.length;i<n;i++)t[r++]=e[i];return t.length=r,t},grep:function(t,e,n){for(var i=[],r=0,o=t.length,a=!n;r<o;r++)!e(t[r],r)!==a&&i.push(t[r]);return i},map:function(t,e,n){var i,o,a=0,s=[];if(r(t))for(i=t.length;a<i;a++)null!=(o=e(t[a],a,n))&&s.push(o);else for(a in t)null!=(o=e(t[a],a,n))&&s.push(o);return ct.apply([],s)},guid:1,support:vt}),"function"==typeof Symbol&&(wt.fn[Symbol.iterator]=ot[Symbol.iterator]),wt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){dt["[object "+e+"]"]=e.toLowerCase()});var St=function(t){function e(t,e,n,i){var r,o,a,s,l,u,d,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!i&&((e?e.ownerDocument||e:V)!==P&&L(e),e=e||P,O)){if(11!==p&&(l=gt.exec(t)))if(r=l[1]){if(9===p){if(!(a=e.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&H(e,a)&&a.id===r)return n.push(a),n}else{if(l[2])return Q.apply(n,e.getElementsByTagName(t)),n;if((r=l[3])&&b.getElementsByClassName&&e.getElementsByClassName)return Q.apply(n,e.getElementsByClassName(r)),n}if(b.qsa&&!B[t+" "]&&(!R||!R.test(t))){if(1!==p)f=e,d=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(xt,bt):e.setAttribute("id",s=j),o=(u=C(t)).length;o--;)u[o]="#"+s+" "+h(u[o]);d=u.join(","),f=mt.test(t)&&c(e.parentNode)||e}if(d)try{return Q.apply(n,f.querySelectorAll(d)),n}catch(t){}finally{s===j&&e.removeAttribute("id")}}}return k(t.replace(ot,"$1"),e,n,i)}function n(){function t(n,i){return e.push(n+" ")>w.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[j]=!0,t}function r(t){var e=P.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),i=n.length;i--;)w.attrHandle[n[i]]=e}function a(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&_t(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function l(t){return i(function(e){return e=+e,i(function(n,i){for(var r,o=t([],n.length,e),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function c(t){return t&&void 0!==t.getElementsByTagName&&t}function u(){}function h(t){for(var e=0,n=t.length,i="";e<n;e++)i+=t[e].value;return i}function d(t,e,n){var i=e.dir,r=e.next,o=r||i,a=n&&"parentNode"===o,s=z++;return e.first?function(e,n,r){for(;e=e[i];)if(1===e.nodeType||a)return t(e,n,r);return!1}:function(e,n,l){var c,u,h,d=[F,s];if(l){for(;e=e[i];)if((1===e.nodeType||a)&&t(e,n,l))return!0}else for(;e=e[i];)if(1===e.nodeType||a)if(h=e[j]||(e[j]={}),u=h[e.uniqueID]||(h[e.uniqueID]={}),r&&r===e.nodeName.toLowerCase())e=e[i]||e;else{if((c=u[o])&&c[0]===F&&c[1]===s)return d[2]=c[2];if(u[o]=d,d[2]=t(e,n,l))return!0}return!1}}function f(t){return t.length>1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function p(t,n,i){for(var r=0,o=n.length;r<o;r++)e(t,n[r],i);return i}function g(t,e,n,i,r){for(var o,a=[],s=0,l=t.length,c=null!=e;s<l;s++)(o=t[s])&&(n&&!n(o,i,r)||(a.push(o),c&&e.push(s)));return a}function m(t,e,n,r,o,a){return r&&!r[j]&&(r=m(r)),o&&!o[j]&&(o=m(o,a)),i(function(i,a,s,l){var c,u,h,d=[],f=[],m=a.length,v=i||p(e||"*",s.nodeType?[s]:s,[]),y=!t||!i&&e?v:g(v,d,t,s,l),x=n?o||(i?t:m||r)?[]:a:y;if(n&&n(y,x,s,l),r)for(c=g(x,f),r(c,[],s,l),u=c.length;u--;)(h=c[u])&&(x[f[u]]=!(y[f[u]]=h));if(i){if(o||t){if(o){for(c=[],u=x.length;u--;)(h=x[u])&&c.push(y[u]=h);o(null,x=[],c,l)}for(u=x.length;u--;)(h=x[u])&&(c=o?K(i,h):d[u])>-1&&(i[c]=!(a[c]=h))}}else x=g(x===a?x.splice(m,x.length):x),o?o(null,a,x,l):Q.apply(a,x)})}function v(t){for(var e,n,i,r=t.length,o=w.relative[t[0].type],a=o||w.relative[" "],s=o?1:0,l=d(function(t){return t===e},a,!0),c=d(function(t){return K(e,t)>-1},a,!0),u=[function(t,n,i){var r=!o&&(i||n!==A)||((e=n).nodeType?l(t,n,i):c(t,n,i));return e=null,r}];s<r;s++)if(n=w.relative[t[s].type])u=[d(f(u),n)];else{if((n=w.filter[t[s].type].apply(null,t[s].matches))[j]){for(i=++s;i<r&&!w.relative[t[i].type];i++);return m(s>1&&f(u),s>1&&h(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(ot,"$1"),n,s<i&&v(t.slice(s,i)),i<r&&v(t=t.slice(i)),i<r&&h(t))}u.push(n)}return f(u)}function y(t,n){var r=n.length>0,o=t.length>0,a=function(i,a,s,l,c){var u,h,d,f=0,p="0",m=i&&[],v=[],y=A,x=i||o&&w.find.TAG("*",c),b=F+=null==y?1:Math.random()||.1,_=x.length;for(c&&(A=a===P||a||c);p!==_&&null!=(u=x[p]);p++){if(o&&u){for(h=0,a||u.ownerDocument===P||(L(u),s=!O);d=t[h++];)if(d(u,a||P,s)){l.push(u);break}c&&(F=b)}r&&((u=!d&&u)&&f--,i&&m.push(u))}if(f+=p,r&&p!==f){for(h=0;d=n[h++];)d(m,v,a,s);if(i){if(f>0)for(;p--;)m[p]||v[p]||(v[p]=X.call(l));v=g(v)}Q.apply(l,v),c&&!i&&v.length>0&&f+n.length>1&&e.uniqueSort(l)}return c&&(F=b,A=y),m};return r?i(a):a}var x,b,w,_,S,C,T,k,A,M,E,L,P,N,O,R,D,I,H,j="sizzle"+1*new Date,V=t.document,F=0,z=0,q=n(),G=n(),B=n(),$=function(t,e){return t===e&&(E=!0),0},W={}.hasOwnProperty,U=[],X=U.pop,Y=U.push,Q=U.push,Z=U.slice,K=function(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",tt="[\\x20\\t\\r\\n\\f]",et="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",nt="\\["+tt+"*("+et+")(?:"+tt+"*([*^$|!~]?=)"+tt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+et+"))|)"+tt+"*\\]",it=":("+et+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+nt+")*)|.*)\\)|)",rt=new RegExp(tt+"+","g"),ot=new RegExp("^"+tt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+tt+"+$","g"),at=new RegExp("^"+tt+"*,"+tt+"*"),st=new RegExp("^"+tt+"*([>+~]|"+tt+")"+tt+"*"),lt=new RegExp("="+tt+"*([^\\]'\"]*?)"+tt+"*\\]","g"),ct=new RegExp(it),ut=new RegExp("^"+et+"$"),ht={ID:new RegExp("^#("+et+")"),CLASS:new RegExp("^\\.("+et+")"),TAG:new RegExp("^("+et+"|[*])"),ATTR:new RegExp("^"+nt),PSEUDO:new RegExp("^"+it),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},dt=/^(?:input|select|textarea|button)$/i,ft=/^h\d$/i,pt=/^[^{]+\{\s*\[native \w/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/[+~]/,vt=new RegExp("\\\\([\\da-f]{1,6}"+tt+"?|("+tt+")|.)","ig"),yt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},xt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,bt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},wt=function(){L()},_t=d(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{Q.apply(U=Z.call(V.childNodes),V.childNodes),U[V.childNodes.length].nodeType}catch(t){Q={apply:U.length?function(t,e){Y.apply(t,Z.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}b=e.support={},S=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},L=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:V;return i!==P&&9===i.nodeType&&i.documentElement?(P=i,N=P.documentElement,O=!S(P),V!==P&&(n=P.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",wt,!1):n.attachEvent&&n.attachEvent("onunload",wt)),b.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),b.getElementsByTagName=r(function(t){return t.appendChild(P.createComment("")),!t.getElementsByTagName("*").length}),b.getElementsByClassName=pt.test(P.getElementsByClassName),b.getById=r(function(t){return N.appendChild(t).id=j,!P.getElementsByName||!P.getElementsByName(j).length}),b.getById?(w.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){return t.getAttribute("id")===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&O){var n=e.getElementById(t);return n?[n]:[]}}):(w.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&O){var n,i,r,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(r=e.getElementsByName(t),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),w.find.TAG=b.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):b.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},w.find.CLASS=b.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&O)return e.getElementsByClassName(t)},D=[],R=[],(b.qsa=pt.test(P.querySelectorAll))&&(r(function(t){N.appendChild(t).innerHTML="<a id='"+j+"'></a><select id='"+j+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+tt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||R.push("\\["+tt+"*(?:value|"+J+")"),t.querySelectorAll("[id~="+j+"-]").length||R.push("~="),t.querySelectorAll(":checked").length||R.push(":checked"),t.querySelectorAll("a#"+j+"+*").length||R.push(".#.+[+~]")}),r(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=P.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&R.push("name"+tt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),N.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),R.push(",.*:")})),(b.matchesSelector=pt.test(I=N.matches||N.webkitMatchesSelector||N.mozMatchesSelector||N.oMatchesSelector||N.msMatchesSelector))&&r(function(t){b.disconnectedMatch=I.call(t,"*"),I.call(t,"[s!='']:x"),D.push("!=",it)}),R=R.length&&new RegExp(R.join("|")),D=D.length&&new RegExp(D.join("|")),e=pt.test(N.compareDocumentPosition),H=e||pt.test(N.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},$=e?function(t,e){if(t===e)return E=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!b.sortDetached&&e.compareDocumentPosition(t)===n?t===P||t.ownerDocument===V&&H(V,t)?-1:e===P||e.ownerDocument===V&&H(V,e)?1:M?K(M,t)-K(M,e):0:4&n?-1:1)}:function(t,e){if(t===e)return E=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,s=[t],l=[e];if(!r||!o)return t===P?-1:e===P?1:r?-1:o?1:M?K(M,t)-K(M,e):0;if(r===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===V?-1:l[i]===V?1:0},P):P},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==P&&L(t),n=n.replace(lt,"='$1']"),b.matchesSelector&&O&&!B[n+" "]&&(!D||!D.test(n))&&(!R||!R.test(n)))try{var i=I.call(t,n);if(i||b.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){}return e(n,P,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==P&&L(t),H(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==P&&L(t);var n=w.attrHandle[e.toLowerCase()],i=n&&W.call(w.attrHandle,e.toLowerCase())?n(t,e,!O):void 0;return void 0!==i?i:b.attributes||!O?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.escape=function(t){return(t+"").replace(xt,bt)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(E=!b.detectDuplicates,M=!b.sortStable&&t.slice(0),t.sort($),E){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return M=null,t},_=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=_(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=_(e);return n},(w=e.selectors={cacheLength:50,createPseudo:i,match:ht,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(vt,yt),t[3]=(t[3]||t[4]||t[5]||"").replace(vt,yt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ht.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ct.test(n)&&(e=C(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(vt,yt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=q[t+" "];return e||(e=new RegExp("(^|"+tt+")"+t+"("+tt+"|$)"))&&q(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var o=e.attr(r,t);return null==o?"!="===n:!n||(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(rt," ")+" ").indexOf(i)>-1:"|="===n&&(o===i||o.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,r){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,l){var c,u,h,d,f,p,g=o!==a?"nextSibling":"previousSibling",m=e.parentNode,v=s&&e.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=g="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?m.firstChild:m.lastChild],a&&y){for(x=(f=(c=(u=(h=(d=m)[j]||(d[j]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]||[])[0]===F&&c[1])&&c[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(x=f=0)||p.pop();)if(1===d.nodeType&&++x&&d===e){u[t]=[F,f,x];break}}else if(y&&(x=f=(c=(u=(h=(d=e)[j]||(d[j]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]||[])[0]===F&&c[1]),!1===x)for(;(d=++f&&d&&d[g]||(x=f=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&((u=(h=d[j]||(d[j]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]=[F,x]),d!==e)););return(x-=r)===i||x%i==0&&x/i>=0}}},PSEUDO:function(t,n){var r,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[j]?o(n):o.length>1?(r=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=o(t,n),a=r.length;a--;)t[i=K(t,r[a])]=!(e[i]=r[a])}):function(t){return o(t,0,r)}):o}},pseudos:{not:i(function(t){var e=[],n=[],r=T(t.replace(ot,"$1"));return r[j]?i(function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(vt,yt),function(e){return(e.textContent||e.innerText||_(e)).indexOf(t)>-1}}),lang:i(function(t){return ut.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(vt,yt).toLowerCase(),function(e){var n;do{if(n=O?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===N},focus:function(t){return t===P.activeElement&&(!P.hasFocus||P.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){
+for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!w.pseudos.empty(t)},header:function(t){return ft.test(t.nodeName)},input:function(t){return dt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,n){return[n<0?n+e:n]}),even:l(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:l(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:l(function(t,e,n){for(var i=n<0?n+e:n;--i>=0;)t.push(i);return t}),gt:l(function(t,e,n){for(var i=n<0?n+e:n;++i<e;)t.push(i);return t})}}).pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=function(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=function(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}(x);return u.prototype=w.filters=w.pseudos,w.setFilters=new u,C=e.tokenize=function(t,n){var i,r,o,a,s,l,c,u=G[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=w.preFilter;s;){i&&!(r=at.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=st.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(ot," ")}),s=s.slice(i.length));for(a in w.filter)!(r=ht[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?e.error(t):G(t,l).slice(0)},T=e.compile=function(t,e){var n,i=[],r=[],o=B[t+" "];if(!o){for(e||(e=C(t)),n=e.length;n--;)(o=v(e[n]))[j]?i.push(o):r.push(o);(o=B(t,y(r,i))).selector=t}return o},k=e.select=function(t,e,n,i){var r,o,a,s,l,u="function"==typeof t&&t,d=!i&&C(t=u.selector||t);if(n=n||[],1===d.length){if((o=d[0]=d[0].slice(0)).length>2&&"ID"===(a=o[0]).type&&9===e.nodeType&&O&&w.relative[o[1].type]){if(!(e=(w.find.ID(a.matches[0].replace(vt,yt),e)||[])[0]))return n;u&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ht.needsContext.test(t)?0:o.length;r--&&(a=o[r],!w.relative[s=a.type]);)if((l=w.find[s])&&(i=l(a.matches[0].replace(vt,yt),mt.test(o[0].type)&&c(e.parentNode)||e))){if(o.splice(r,1),!(t=i.length&&h(o)))return Q.apply(n,i),n;break}}return(u||T(t,d))(i,e,!O,n,!e||mt.test(t)&&c(e.parentNode)||e),n},b.sortStable=j.split("").sort($).join("")===j,b.detectDuplicates=!!E,L(),b.sortDetached=r(function(t){return 1&t.compareDocumentPosition(P.createElement("fieldset"))}),r(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),b.attributes&&r(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(J,function(t,e,n){var i;if(!n)return!0===t[e]?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);wt.find=St,wt.expr=St.selectors,wt.expr[":"]=wt.expr.pseudos,wt.uniqueSort=wt.unique=St.uniqueSort,wt.text=St.getText,wt.isXMLDoc=St.isXML,wt.contains=St.contains,wt.escapeSelector=St.escape;var Ct=function(t,e,n){for(var i=[],r=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&wt(t).is(n))break;i.push(t)}return i},Tt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},kt=wt.expr.match.needsContext,At=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;wt.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?wt.find.matchesSelector(i,t)?[i]:[]:wt.find.matches(t,wt.grep(e,function(t){return 1===t.nodeType}))},wt.fn.extend({find:function(t){var e,n,i=this.length,r=this;if("string"!=typeof t)return this.pushStack(wt(t).filter(function(){for(e=0;e<i;e++)if(wt.contains(r[e],this))return!0}));for(n=this.pushStack([]),e=0;e<i;e++)wt.find(t,r[e],n);return i>1?wt.uniqueSort(n):n},filter:function(t){return this.pushStack(a(this,t||[],!1))},not:function(t){return this.pushStack(a(this,t||[],!0))},is:function(t){return!!a(this,"string"==typeof t&&kt.test(t)?wt(t):t||[],!1).length}});var Mt,Et=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(wt.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||Mt,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:Et.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof wt?e[0]:e,wt.merge(this,wt.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:at,!0)),At.test(i[1])&&wt.isPlainObject(e))for(i in e)yt(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(r=at.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):yt(t)?void 0!==n.ready?n.ready(t):t(wt):wt.makeArray(t,this)}).prototype=wt.fn,Mt=wt(at);var Lt=/^(?:parents|prev(?:Until|All))/,Pt={children:!0,contents:!0,next:!0,prev:!0};wt.fn.extend({has:function(t){var e=wt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(wt.contains(this,e[t]))return!0})},closest:function(t,e){var n,i=0,r=this.length,o=[],a="string"!=typeof t&&wt(t);if(!kt.test(t))for(;i<r;i++)for(n=this[i];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&wt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?wt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?ht.call(wt(t),this[0]):ht.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(wt.uniqueSort(wt.merge(this.get(),wt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),wt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return Ct(t,"parentNode")},parentsUntil:function(t,e,n){return Ct(t,"parentNode",n)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return Ct(t,"nextSibling")},prevAll:function(t){return Ct(t,"previousSibling")},nextUntil:function(t,e,n){return Ct(t,"nextSibling",n)},prevUntil:function(t,e,n){return Ct(t,"previousSibling",n)},siblings:function(t){return Tt((t.parentNode||{}).firstChild,t)},children:function(t){return Tt(t.firstChild)},contents:function(t){return o(t,"iframe")?t.contentDocument:(o(t,"template")&&(t=t.content||t),wt.merge([],t.childNodes))}},function(t,e){wt.fn[t]=function(n,i){var r=wt.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=wt.filter(i,r)),this.length>1&&(Pt[t]||wt.uniqueSort(r),Lt.test(t)&&r.reverse()),this.pushStack(r)}});var Nt=/[^\x20\t\r\n\f]+/g;wt.Callbacks=function(t){t="string"==typeof t?l(t):wt.extend({},t);var e,n,r,o,a=[],s=[],c=-1,u=function(){for(o=o||t.once,r=e=!0;s.length;c=-1)for(n=s.shift();++c<a.length;)!1===a[c].apply(n[0],n[1])&&t.stopOnFalse&&(c=a.length,n=!1);t.memory||(n=!1),e=!1,o&&(a=n?[]:"")},h={add:function(){return a&&(n&&!e&&(c=a.length-1,s.push(n)),function e(n){wt.each(n,function(n,r){yt(r)?t.unique&&h.has(r)||a.push(r):r&&r.length&&"string"!==i(r)&&e(r)})}(arguments),n&&!e&&u()),this},remove:function(){return wt.each(arguments,function(t,e){for(var n;(n=wt.inArray(e,a,n))>-1;)a.splice(n,1),n<=c&&c--}),this},has:function(t){return t?wt.inArray(t,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return o=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return o=s=[],n||e||(a=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||u()),this},fire:function(){return h.fireWith(this,arguments),this},fired:function(){return!!r}};return h},wt.extend({Deferred:function(e){var n=[["notify","progress",wt.Callbacks("memory"),wt.Callbacks("memory"),2],["resolve","done",wt.Callbacks("once memory"),wt.Callbacks("once memory"),0,"resolved"],["reject","fail",wt.Callbacks("once memory"),wt.Callbacks("once memory"),1,"rejected"]],i="pending",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return wt.Deferred(function(e){wt.each(n,function(n,i){var r=yt(t[i[4]])&&t[i[4]];o[i[1]](function(){var t=r&&r.apply(this,arguments);t&&yt(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[i[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,i,r){function o(e,n,i,r){return function(){var s=this,l=arguments,h=function(){var t,h;if(!(e<a)){if((t=i.apply(s,l))===n.promise())throw new TypeError("Thenable self-resolution");h=t&&("object"==typeof t||"function"==typeof t)&&t.then,yt(h)?r?h.call(t,o(a,n,c,r),o(a,n,u,r)):(a++,h.call(t,o(a,n,c,r),o(a,n,u,r),o(a,n,c,n.notifyWith))):(i!==c&&(s=void 0,l=[t]),(r||n.resolveWith)(s,l))}},d=r?h:function(){try{h()}catch(t){wt.Deferred.exceptionHook&&wt.Deferred.exceptionHook(t,d.stackTrace),e+1>=a&&(i!==u&&(s=void 0,l=[t]),n.rejectWith(s,l))}};e?d():(wt.Deferred.getStackHook&&(d.stackTrace=wt.Deferred.getStackHook()),t.setTimeout(d))}}var a=0;return wt.Deferred(function(t){n[0][3].add(o(0,t,yt(r)?r:c,t.notifyWith)),n[1][3].add(o(0,t,yt(e)?e:c)),n[2][3].add(o(0,t,yt(i)?i:u))}).promise()},promise:function(t){return null!=t?wt.extend(t,r):r}},o={};return wt.each(n,function(t,e){var a=e[2],s=e[5];r[e[1]]=a.add,s&&a.add(function(){i=s},n[3-t][2].disable,n[3-t][3].disable,n[0][2].lock,n[0][3].lock),a.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=a.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,n=e,i=Array(n),r=lt.call(arguments),o=wt.Deferred(),a=function(t){return function(n){i[t]=this,r[t]=arguments.length>1?lt.call(arguments):n,--e||o.resolveWith(i,r)}};if(e<=1&&(h(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||yt(r[n]&&r[n].then)))return o.then();for(;n--;)h(r[n],a(n),o.reject);return o.promise()}});var Ot=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;wt.Deferred.exceptionHook=function(e,n){t.console&&t.console.warn&&e&&Ot.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,n)},wt.readyException=function(e){t.setTimeout(function(){throw e})};var Rt=wt.Deferred();wt.fn.ready=function(t){return Rt.then(t).catch(function(t){wt.readyException(t)}),this},wt.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--wt.readyWait:wt.isReady)||(wt.isReady=!0,!0!==t&&--wt.readyWait>0||Rt.resolveWith(at,[wt]))}}),wt.ready.then=Rt.then,"complete"===at.readyState||"loading"!==at.readyState&&!at.documentElement.doScroll?t.setTimeout(wt.ready):(at.addEventListener("DOMContentLoaded",d),t.addEventListener("load",d));var Dt=function(t,e,n,r,o,a,s){var l=0,c=t.length,u=null==n;if("object"===i(n)){o=!0;for(l in n)Dt(t,e,l,n[l],!0,a,s)}else if(void 0!==r&&(o=!0,yt(r)||(s=!0),u&&(s?(e.call(t,r),e=null):(u=e,e=function(t,e,n){return u.call(wt(t),n)})),e))for(;l<c;l++)e(t[l],n,s?r:r.call(t[l],l,e(t[l],n)));return o?t:u?e.call(t):c?e(t[0],n):a},It=/^-ms-/,Ht=/-([a-z])/g,jt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};g.uid=1,g.prototype={cache:function(t){var e=t[this.expando];return e||(e={},jt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var i,r=this.cache(t);if("string"==typeof e)r[p(e)]=n;else for(i in e)r[p(i)]=e[i];return r},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][p(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,i=t[this.expando];if(void 0!==i){if(void 0!==e){n=(e=Array.isArray(e)?e.map(p):(e=p(e))in i?[e]:e.match(Nt)||[]).length;for(;n--;)delete i[e[n]]}(void 0===e||wt.isEmptyObject(i))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!wt.isEmptyObject(e)}};var Vt=new g,Ft=new g,zt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,qt=/[A-Z]/g;wt.extend({hasData:function(t){return Ft.hasData(t)||Vt.hasData(t)},data:function(t,e,n){return Ft.access(t,e,n)},removeData:function(t,e){Ft.remove(t,e)},_data:function(t,e,n){return Vt.access(t,e,n)},_removeData:function(t,e){Vt.remove(t,e)}}),wt.fn.extend({data:function(t,e){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(r=Ft.get(o),1===o.nodeType&&!Vt.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(i=a[n].name).indexOf("data-")&&(i=p(i.slice(5)),v(o,i,r[i]));Vt.set(o,"hasDataAttrs",!0)}return r}return"object"==typeof t?this.each(function(){Ft.set(this,t)}):Dt(this,function(e){var n;if(o&&void 0===e){if(void 0!==(n=Ft.get(o,t)))return n;if(void 0!==(n=v(o,t)))return n}else this.each(function(){Ft.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){Ft.remove(this,t)})}}),wt.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=Vt.get(t,e),n&&(!i||Array.isArray(n)?i=Vt.access(t,e,wt.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=wt.queue(t,e),i=n.length,r=n.shift(),o=wt._queueHooks(t,e),a=function(){wt.dequeue(t,e)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===e&&n.unshift("inprogress"),delete o.stop,r.call(t,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Vt.get(t,n)||Vt.access(t,n,{empty:wt.Callbacks("once memory").add(function(){Vt.remove(t,[e+"queue",n])})})}}),wt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?wt.queue(this[0],t):void 0===e?this:this.each(function(){var n=wt.queue(this,t,e);wt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&wt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){wt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,i=1,r=wt.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)(n=Vt.get(o[a],t+"queueHooks"))&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(e)}});var Gt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Bt=new RegExp("^(?:([+-])=|)("+Gt+")([a-z%]*)$","i"),$t=["Top","Right","Bottom","Left"],Wt=function(t,e){return"none"===(t=e||t).style.display||""===t.style.display&&wt.contains(t.ownerDocument,t)&&"none"===wt.css(t,"display")},Ut=function(t,e,n,i){var r,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];r=n.apply(t,i||[]);for(o in e)t.style[o]=a[o];return r},Xt={};wt.fn.extend({show:function(){return b(this,!0)},hide:function(){return b(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Wt(this)?wt(this).show():wt(this).hide()})}});var Yt=/^(?:checkbox|radio)$/i,Qt=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Zt=/^$|^module$|\/(?:java|ecma)script/i,Kt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Kt.optgroup=Kt.option,Kt.tbody=Kt.tfoot=Kt.colgroup=Kt.caption=Kt.thead,Kt.th=Kt.td;var Jt=/<|&#?\w+;/;!function(){var t=at.createDocumentFragment().appendChild(at.createElement("div")),e=at.createElement("input");e.setAttribute("type","radio"),e.setAttribute("checked","checked"),e.setAttribute("name","t"),t.appendChild(e),vt.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",vt.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var te=at.documentElement,ee=/^key/,ne=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ie=/^([^.]*)(?:\.(.+)|)/;wt.event={global:{},add:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=Vt.get(t);if(m)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&wt.find.matchesSelector(te,r),n.guid||(n.guid=wt.guid++),(l=m.events)||(l=m.events={}),(a=m.handle)||(a=m.handle=function(e){return void 0!==wt&&wt.event.triggered!==e.type?wt.event.dispatch.apply(t,arguments):void 0}),c=(e=(e||"").match(Nt)||[""]).length;c--;)f=g=(s=ie.exec(e[c])||[])[1],p=(s[2]||"").split(".").sort(),f&&(h=wt.event.special[f]||{},f=(r?h.delegateType:h.bindType)||f,h=wt.event.special[f]||{},u=wt.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&wt.expr.match.needsContext.test(r),namespace:p.join(".")},o),(d=l[f])||((d=l[f]=[]).delegateCount=0,h.setup&&!1!==h.setup.call(t,i,p,a)||t.addEventListener&&t.addEventListener(f,a)),h.add&&(h.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,u):d.push(u),wt.event.global[f]=!0)},remove:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=Vt.hasData(t)&&Vt.get(t);if(m&&(l=m.events)){for(c=(e=(e||"").match(Nt)||[""]).length;c--;)if(s=ie.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f){for(h=wt.event.special[f]||{},d=l[f=(i?h.delegateType:h.bindType)||f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)u=d[o],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,h.remove&&h.remove.call(t,u));a&&!d.length&&(h.teardown&&!1!==h.teardown.call(t,p,m.handle)||wt.removeEvent(t,f,m.handle),delete l[f])}else for(f in l)wt.event.remove(t,f+e[c],n,i,!0);wt.isEmptyObject(l)&&Vt.remove(t,"handle events")}},dispatch:function(t){var e,n,i,r,o,a,s=wt.event.fix(t),l=new Array(arguments.length),c=(Vt.get(this,"events")||{})[s.type]||[],u=wt.event.special[s.type]||{};for(l[0]=s,e=1;e<arguments.length;e++)l[e]=arguments[e];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(a=wt.event.handlers.call(this,s,c),e=0;(r=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(i=((wt.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,l))&&!1===(s.result=i)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,i,r,o,a,s=[],l=e.delegateCount,c=t.target;if(l&&c.nodeType&&!("click"===t.type&&t.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||!0!==c.disabled)){for(o=[],a={},n=0;n<l;n++)void 0===a[r=(i=e[n]).selector+" "]&&(a[r]=i.needsContext?wt(r,this).index(c)>-1:wt.find(r,this,null,[c]).length),a[r]&&o.push(i);o.length&&s.push({elem:c,handlers:o})}return c=this,l<e.length&&s.push({elem:c,handlers:e.slice(l)}),s},addProp:function(t,e){Object.defineProperty(wt.Event.prototype,t,{enumerable:!0,configurable:!0,get:yt(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[wt.expando]?t:new wt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==k()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===k()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&o(this,"input"))return this.click(),!1},_default:function(t){return o(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},wt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},wt.Event=function(t,e){if(!(this instanceof wt.Event))return new wt.Event(t,e);t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&!1===t.returnValue?C:T,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&wt.extend(this,e),this.timeStamp=t&&t.timeStamp||Date.now(),this[wt.expando]=!0},wt.Event.prototype={constructor:wt.Event,isDefaultPrevented:T,isPropagationStopped:T,isImmediatePropagationStopped:T,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=C,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=C,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=C,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},wt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&ee.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&ne.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},wt.event.addProp),wt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){wt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,i=this,r=t.relatedTarget,o=t.handleObj;return r&&(r===i||wt.contains(i,r))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),wt.fn.extend({on:function(t,e,n,i){return A(this,t,e,n,i)},one:function(t,e,n,i){return A(this,t,e,n,i,1)},off:function(t,e,n){var i,r;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,wt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof t){for(r in t)this.off(r,e,t[r]);return this}return!1!==e&&"function"!=typeof e||(n=e,e=void 0),!1===n&&(n=T),this.each(function(){wt.event.remove(this,t,n,e)})}});var re=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,oe=/<script|<style|<link/i,ae=/checked\s*(?:[^=]|=\s*.checked.)/i,se=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;wt.extend({htmlPrefilter:function(t){return t.replace(re,"<$1></$2>")},clone:function(t,e,n){var i,r,o,a,s=t.cloneNode(!0),l=wt.contains(t.ownerDocument,t);if(!(vt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||wt.isXMLDoc(t)))for(a=w(s),i=0,r=(o=w(t)).length;i<r;i++)N(o[i],a[i]);if(e)if(n)for(o=o||w(t),a=a||w(s),i=0,r=o.length;i<r;i++)P(o[i],a[i]);else P(t,s);return(a=w(s,"script")).length>0&&_(a,!l&&w(t,"script")),s},cleanData:function(t){for(var e,n,i,r=wt.event.special,o=0;void 0!==(n=t[o]);o++)if(jt(n)){if(e=n[Vt.expando]){if(e.events)for(i in e.events)r[i]?wt.event.remove(n,i):wt.removeEvent(n,i,e.handle);n[Vt.expando]=void 0}n[Ft.expando]&&(n[Ft.expando]=void 0)}}}),wt.fn.extend({detach:function(t){return R(this,t,!0)},remove:function(t){return R(this,t)},text:function(t){return Dt(this,function(t){return void 0===t?wt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return O(this,arguments,function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||M(this,t).appendChild(t)})},prepend:function(){return O(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=M(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return O(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return O(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(wt.cleanData(w(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return wt.clone(this,t,e)})},html:function(t){return Dt(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!oe.test(t)&&!Kt[(Qt.exec(t)||["",""])[1].toLowerCase()]){t=wt.htmlPrefilter(t);try{for(;n<i;n++)1===(e=this[n]||{}).nodeType&&(wt.cleanData(w(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return O(this,arguments,function(e){var n=this.parentNode;wt.inArray(this,t)<0&&(wt.cleanData(w(this)),n&&n.replaceChild(e,this))},t)}}),wt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){wt.fn[t]=function(t){for(var n,i=[],r=wt(t),o=r.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),wt(r[a])[e](n),ut.apply(i,n.get());return this.pushStack(i)}});var le=new RegExp("^("+Gt+")(?!px)[a-z%]+$","i"),ce=function(e){var n=e.ownerDocument.defaultView;return n&&n.opener||(n=t),n.getComputedStyle(e)},ue=new RegExp($t.join("|"),"i");!function(){function e(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",te.appendChild(l).appendChild(c);var e=t.getComputedStyle(c);i="1%"!==e.top,s=12===n(e.marginLeft),c.style.right="60%",a=36===n(e.right),r=36===n(e.width),c.style.position="absolute",o=36===c.offsetWidth||"absolute",te.removeChild(l),c=null}}function n(t){return Math.round(parseFloat(t))}var i,r,o,a,s,l=at.createElement("div"),c=at.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",vt.clearCloneStyle="content-box"===c.style.backgroundClip,wt.extend(vt,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),a},pixelPosition:function(){return e(),i},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),o}}))}();var he=/^(none|table(?!-c[ea]).+)/,de=/^--/,fe={position:"absolute",visibility:"hidden",display:"block"},pe={letterSpacing:"0",fontWeight:"400"},ge=["Webkit","Moz","ms"],me=at.createElement("div").style;wt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=D(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var r,o,a,s=p(e),l=de.test(e),c=t.style;if(l||(e=j(s)),a=wt.cssHooks[e]||wt.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(t,!1,i))?r:c[e];"string"==(o=typeof n)&&(r=Bt.exec(n))&&r[1]&&(n=y(t,e,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(wt.cssNumber[s]?"":"px")),vt.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,i))||(l?c.setProperty(e,n):c[e]=n))}},css:function(t,e,n,i){var r,o,a,s=p(e);return de.test(e)||(e=j(s)),(a=wt.cssHooks[e]||wt.cssHooks[s])&&"get"in a&&(r=a.get(t,!0,n)),void 0===r&&(r=D(t,e,i)),"normal"===r&&e in pe&&(r=pe[e]),""===n||n?(o=parseFloat(r),!0===n||isFinite(o)?o||0:r):r}}),wt.each(["height","width"],function(t,e){wt.cssHooks[e]={get:function(t,n,i){if(n)return!he.test(wt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?z(t,e,i):Ut(t,fe,function(){return z(t,e,i)})},set:function(t,n,i){var r,o=ce(t),a="border-box"===wt.css(t,"boxSizing",!1,o),s=i&&F(t,e,i,a,o);return a&&vt.scrollboxSize()===o.position&&(s-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-F(t,e,"border",!1,o)-.5)),s&&(r=Bt.exec(n))&&"px"!==(r[3]||"px")&&(t.style[e]=n,n=wt.css(t,e)),V(t,n,s)}}}),wt.cssHooks.marginLeft=I(vt.reliableMarginLeft,function(t,e){if(e)return(parseFloat(D(t,"marginLeft"))||t.getBoundingClientRect().left-Ut(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),wt.each({margin:"",padding:"",border:"Width"},function(t,e){wt.cssHooks[t+e]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];i<4;i++)r[t+$t[i]+e]=o[i]||o[i-2]||o[0];return r}},"margin"!==t&&(wt.cssHooks[t+e].set=V)}),wt.fn.extend({css:function(t,e){return Dt(this,function(t,e,n){var i,r,o={},a=0;if(Array.isArray(e)){for(i=ce(t),r=e.length;a<r;a++)o[e[a]]=wt.css(t,e[a],!1,i);return o}return void 0!==n?wt.style(t,e,n):wt.css(t,e)},t,e,arguments.length>1)}}),wt.Tween=q,q.prototype={constructor:q,init:function(t,e,n,i,r,o){this.elem=t,this.prop=n,this.easing=r||wt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=o||(wt.cssNumber[n]?"":"px")},cur:function(){var t=q.propHooks[this.prop];return t&&t.get?t.get(this):q.propHooks._default.get(this)},run:function(t){var e,n=q.propHooks[this.prop];return this.options.duration?this.pos=e=wt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=wt.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){wt.fx.step[t.prop]?wt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[wt.cssProps[t.prop]]&&!wt.cssHooks[t.prop]?t.elem[t.prop]=t.now:wt.style(t.elem,t.prop,t.now+t.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},wt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},wt.fx=q.prototype.init,wt.fx.step={};var ve,ye,xe=/^(?:toggle|show|hide)$/,be=/queueHooks$/;wt.Animation=wt.extend(Y,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return y(n.elem,t,Bt.exec(e),n),n}]},tweener:function(t,e){yt(t)?(e=t,t=["*"]):t=t.match(Nt);for(var n,i=0,r=t.length;i<r;i++)n=t[i],Y.tweeners[n]=Y.tweeners[n]||[],Y.tweeners[n].unshift(e)},prefilters:[U],prefilter:function(t,e){e?Y.prefilters.unshift(t):Y.prefilters.push(t)}}),wt.speed=function(t,e,n){var i=t&&"object"==typeof t?wt.extend({},t):{complete:n||!n&&e||yt(t)&&t,duration:t,easing:n&&e||e&&!yt(e)&&e};return wt.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in wt.fx.speeds?i.duration=wt.fx.speeds[i.duration]:i.duration=wt.fx.speeds._default),null!=i.queue&&!0!==i.queue||(i.queue="fx"),i.old=i.complete,i.complete=function(){yt(i.old)&&i.old.call(this),i.queue&&wt.dequeue(this,i.queue)},i},wt.fn.extend({fadeTo:function(t,e,n,i){return this.filter(Wt).css("opacity",0).show().end().animate({opacity:e},t,n,i)},animate:function(t,e,n,i){var r=wt.isEmptyObject(t),o=wt.speed(e,n,i),a=function(){var e=Y(this,wt.extend({},t),o);(r||Vt.get(this,"finish"))&&e.stop(!0)};return a.finish=a,r||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var i=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&!1!==t&&this.queue(t||"fx",[]),this.each(function(){var e=!0,r=null!=t&&t+"queueHooks",o=wt.timers,a=Vt.get(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&be.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=t&&o[r].queue!==t||(o[r].anim.stop(n),e=!1,o.splice(r,1));!e&&n||wt.dequeue(this,t)})},finish:function(t){return!1!==t&&(t=t||"fx"),this.each(function(){
+var e,n=Vt.get(this),i=n[t+"queue"],r=n[t+"queueHooks"],o=wt.timers,a=i?i.length:0;for(n.finish=!0,wt.queue(this,t,[]),r&&r.stop&&r.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)i[e]&&i[e].finish&&i[e].finish.call(this);delete n.finish})}}),wt.each(["toggle","show","hide"],function(t,e){var n=wt.fn[e];wt.fn[e]=function(t,i,r){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate($(e,!0),t,i,r)}}),wt.each({slideDown:$("show"),slideUp:$("hide"),slideToggle:$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){wt.fn[t]=function(t,n,i){return this.animate(e,t,n,i)}}),wt.timers=[],wt.fx.tick=function(){var t,e=0,n=wt.timers;for(ve=Date.now();e<n.length;e++)(t=n[e])()||n[e]!==t||n.splice(e--,1);n.length||wt.fx.stop(),ve=void 0},wt.fx.timer=function(t){wt.timers.push(t),wt.fx.start()},wt.fx.interval=13,wt.fx.start=function(){ye||(ye=!0,G())},wt.fx.stop=function(){ye=null},wt.fx.speeds={slow:600,fast:200,_default:400},wt.fn.delay=function(e,n){return e=wt.fx?wt.fx.speeds[e]||e:e,n=n||"fx",this.queue(n,function(n,i){var r=t.setTimeout(n,e);i.stop=function(){t.clearTimeout(r)}})},function(){var t=at.createElement("input"),e=at.createElement("select").appendChild(at.createElement("option"));t.type="checkbox",vt.checkOn=""!==t.value,vt.optSelected=e.selected,(t=at.createElement("input")).value="t",t.type="radio",vt.radioValue="t"===t.value}();var we,_e=wt.expr.attrHandle;wt.fn.extend({attr:function(t,e){return Dt(this,wt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){wt.removeAttr(this,t)})}}),wt.extend({attr:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?wt.prop(t,e,n):(1===o&&wt.isXMLDoc(t)||(r=wt.attrHooks[e.toLowerCase()]||(wt.expr.match.bool.test(e)?we:void 0)),void 0!==n?null===n?void wt.removeAttr(t,e):r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:(t.setAttribute(e,n+""),n):r&&"get"in r&&null!==(i=r.get(t,e))?i:null==(i=wt.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!vt.radioValue&&"radio"===e&&o(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,r=e&&e.match(Nt);if(r&&1===t.nodeType)for(;n=r[i++];)t.removeAttribute(n)}}),we={set:function(t,e,n){return!1===e?wt.removeAttr(t,n):t.setAttribute(n,n),n}},wt.each(wt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=_e[e]||wt.find.attr;_e[e]=function(t,e,i){var r,o,a=e.toLowerCase();return i||(o=_e[a],_e[a]=r,r=null!=n(t,e,i)?a:null,_e[a]=o),r}});var Se=/^(?:input|select|textarea|button)$/i,Ce=/^(?:a|area)$/i;wt.fn.extend({prop:function(t,e){return Dt(this,wt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[wt.propFix[t]||t]})}}),wt.extend({prop:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&wt.isXMLDoc(t)||(e=wt.propFix[e]||e,r=wt.propHooks[e]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:t[e]=n:r&&"get"in r&&null!==(i=r.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=wt.find.attr(t,"tabindex");return e?parseInt(e,10):Se.test(t.nodeName)||Ce.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),vt.optSelected||(wt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),wt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){wt.propFix[this.toLowerCase()]=this}),wt.fn.extend({addClass:function(t){var e,n,i,r,o,a,s,l=0;if(yt(t))return this.each(function(e){wt(this).addClass(t.call(this,e,Z(this)))});if((e=K(t)).length)for(;n=this[l++];)if(r=Z(n),i=1===n.nodeType&&" "+Q(r)+" "){for(a=0;o=e[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");r!==(s=Q(i))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,i,r,o,a,s,l=0;if(yt(t))return this.each(function(e){wt(this).removeClass(t.call(this,e,Z(this)))});if(!arguments.length)return this.attr("class","");if((e=K(t)).length)for(;n=this[l++];)if(r=Z(n),i=1===n.nodeType&&" "+Q(r)+" "){for(a=0;o=e[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");r!==(s=Q(i))&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t,i="string"===n||Array.isArray(t);return"boolean"==typeof e&&i?e?this.addClass(t):this.removeClass(t):yt(t)?this.each(function(n){wt(this).toggleClass(t.call(this,n,Z(this),e),e)}):this.each(function(){var e,r,o,a;if(i)for(r=0,o=wt(this),a=K(t);e=a[r++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else void 0!==t&&"boolean"!==n||((e=Z(this))&&Vt.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Vt.get(this,"__className__")||""))})},hasClass:function(t){var e,n,i=0;for(e=" "+t+" ";n=this[i++];)if(1===n.nodeType&&(" "+Q(Z(n))+" ").indexOf(e)>-1)return!0;return!1}});var Te=/\r/g;wt.fn.extend({val:function(t){var e,n,i,r=this[0];return arguments.length?(i=yt(t),this.each(function(n){var r;1===this.nodeType&&(null==(r=i?t.call(this,n,wt(this).val()):t)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=wt.map(r,function(t){return null==t?"":t+""})),(e=wt.valHooks[this.type]||wt.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,r,"value")||(this.value=r))})):r?(e=wt.valHooks[r.type]||wt.valHooks[r.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(r,"value"))?n:"string"==typeof(n=r.value)?n.replace(Te,""):null==n?"":n:void 0}}),wt.extend({valHooks:{option:{get:function(t){var e=wt.find.attr(t,"value");return null!=e?e:Q(wt.text(t))}},select:{get:function(t){var e,n,i,r=t.options,a=t.selectedIndex,s="select-one"===t.type,l=s?null:[],c=s?a+1:r.length;for(i=a<0?c:s?a:0;i<c;i++)if(((n=r[i]).selected||i===a)&&!n.disabled&&(!n.parentNode.disabled||!o(n.parentNode,"optgroup"))){if(e=wt(n).val(),s)return e;l.push(e)}return l},set:function(t,e){for(var n,i,r=t.options,o=wt.makeArray(e),a=r.length;a--;)((i=r[a]).selected=wt.inArray(wt.valHooks.option.get(i),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),wt.each(["radio","checkbox"],function(){wt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=wt.inArray(wt(t).val(),e)>-1}},vt.checkOn||(wt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}),vt.focusin="onfocusin"in t;var ke=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};wt.extend(wt.event,{trigger:function(e,n,i,r){var o,a,s,l,c,u,h,d,f=[i||at],p=pt.call(e,"type")?e.type:e,g=pt.call(e,"namespace")?e.namespace.split("."):[];if(a=d=s=i=i||at,3!==i.nodeType&&8!==i.nodeType&&!ke.test(p+wt.event.triggered)&&(p.indexOf(".")>-1&&(p=(g=p.split(".")).shift(),g.sort()),c=p.indexOf(":")<0&&"on"+p,e=e[wt.expando]?e:new wt.Event(p,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),n=null==n?[e]:wt.makeArray(n,[e]),h=wt.event.special[p]||{},r||!h.trigger||!1!==h.trigger.apply(i,n))){if(!r&&!h.noBubble&&!xt(i)){for(l=h.delegateType||p,ke.test(l+p)||(a=a.parentNode);a;a=a.parentNode)f.push(a),s=a;s===(i.ownerDocument||at)&&f.push(s.defaultView||s.parentWindow||t)}for(o=0;(a=f[o++])&&!e.isPropagationStopped();)d=a,e.type=o>1?l:h.bindType||p,(u=(Vt.get(a,"events")||{})[e.type]&&Vt.get(a,"handle"))&&u.apply(a,n),(u=c&&a[c])&&u.apply&&jt(a)&&(e.result=u.apply(a,n),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||h._default&&!1!==h._default.apply(f.pop(),n)||!jt(i)||c&&yt(i[p])&&!xt(i)&&((s=i[c])&&(i[c]=null),wt.event.triggered=p,e.isPropagationStopped()&&d.addEventListener(p,Ae),i[p](),e.isPropagationStopped()&&d.removeEventListener(p,Ae),wt.event.triggered=void 0,s&&(i[c]=s)),e.result}},simulate:function(t,e,n){var i=wt.extend(new wt.Event,n,{type:t,isSimulated:!0});wt.event.trigger(i,null,e)}}),wt.fn.extend({trigger:function(t,e){return this.each(function(){wt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return wt.event.trigger(t,e,n,!0)}}),vt.focusin||wt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){wt.event.simulate(e,t.target,wt.event.fix(t))};wt.event.special[e]={setup:function(){var i=this.ownerDocument||this,r=Vt.access(i,e);r||i.addEventListener(t,n,!0),Vt.access(i,e,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=Vt.access(i,e)-1;r?Vt.access(i,e,r):(i.removeEventListener(t,n,!0),Vt.remove(i,e))}}});var Me=t.location,Ee=Date.now(),Le=/\?/;wt.parseXML=function(e){var n;if(!e||"string"!=typeof e)return null;try{n=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||wt.error("Invalid XML: "+e),n};var Pe=/\[\]$/,Ne=/\r?\n/g,Oe=/^(?:submit|button|image|reset|file)$/i,Re=/^(?:input|select|textarea|keygen)/i;wt.param=function(t,e){var n,i=[],r=function(t,e){var n=yt(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!wt.isPlainObject(t))wt.each(t,function(){r(this.name,this.value)});else for(n in t)J(n,t[n],e,r);return i.join("&")},wt.fn.extend({serialize:function(){return wt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=wt.prop(this,"elements");return t?wt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!wt(this).is(":disabled")&&Re.test(this.nodeName)&&!Oe.test(t)&&(this.checked||!Yt.test(t))}).map(function(t,e){var n=wt(this).val();return null==n?null:Array.isArray(n)?wt.map(n,function(t){return{name:e.name,value:t.replace(Ne,"\r\n")}}):{name:e.name,value:n.replace(Ne,"\r\n")}}).get()}});var De=/%20/g,Ie=/#.*$/,He=/([?&])_=[^&]*/,je=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ve=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fe=/^(?:GET|HEAD)$/,ze=/^\/\//,qe={},Ge={},Be="*/".concat("*"),$e=at.createElement("a");$e.href=Me.href,wt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Me.href,type:"GET",isLocal:Ve.test(Me.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Be,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":wt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?nt(nt(t,wt.ajaxSettings),e):nt(wt.ajaxSettings,t)},ajaxPrefilter:tt(qe),ajaxTransport:tt(Ge),ajax:function(e,n){function i(e,n,i,s){var c,d,f,b,w,_=n;u||(u=!0,l&&t.clearTimeout(l),r=void 0,a=s||"",S.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(b=it(p,S,i)),b=rt(p,b,S,c),c?(p.ifModified&&((w=S.getResponseHeader("Last-Modified"))&&(wt.lastModified[o]=w),(w=S.getResponseHeader("etag"))&&(wt.etag[o]=w)),204===e||"HEAD"===p.type?_="nocontent":304===e?_="notmodified":(_=b.state,d=b.data,c=!(f=b.error))):(f=_,!e&&_||(_="error",e<0&&(e=0))),S.status=e,S.statusText=(n||_)+"",c?v.resolveWith(g,[d,_,S]):v.rejectWith(g,[S,_,f]),S.statusCode(x),x=void 0,h&&m.trigger(c?"ajaxSuccess":"ajaxError",[S,p,c?d:f]),y.fireWith(g,[S,_]),h&&(m.trigger("ajaxComplete",[S,p]),--wt.active||wt.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=void 0),n=n||{};var r,o,a,s,l,c,u,h,d,f,p=wt.ajaxSetup({},n),g=p.context||p,m=p.context&&(g.nodeType||g.jquery)?wt(g):wt.event,v=wt.Deferred(),y=wt.Callbacks("once memory"),x=p.statusCode||{},b={},w={},_="canceled",S={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=je.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return u?a:null},setRequestHeader:function(t,e){return null==u&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)S.always(t[S.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||_;return r&&r.abort(e),i(0,e),this}};if(v.promise(S),p.url=((e||p.url||Me.href)+"").replace(ze,Me.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(Nt)||[""],null==p.crossDomain){c=at.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=$e.protocol+"//"+$e.host!=c.protocol+"//"+c.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=wt.param(p.data,p.traditional)),et(qe,p,n,S),u)return S;(h=wt.event&&p.global)&&0==wt.active++&&wt.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Fe.test(p.type),o=p.url.replace(Ie,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(De,"+")):(f=p.url.slice(o.length),p.data&&(p.processData||"string"==typeof p.data)&&(o+=(Le.test(o)?"&":"?")+p.data,delete p.data),!1===p.cache&&(o=o.replace(He,"$1"),f=(Le.test(o)?"&":"?")+"_="+Ee+++f),p.url=o+f),p.ifModified&&(wt.lastModified[o]&&S.setRequestHeader("If-Modified-Since",wt.lastModified[o]),wt.etag[o]&&S.setRequestHeader("If-None-Match",wt.etag[o])),(p.data&&p.hasContent&&!1!==p.contentType||n.contentType)&&S.setRequestHeader("Content-Type",p.contentType),S.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Be+"; q=0.01":""):p.accepts["*"]);for(d in p.headers)S.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(!1===p.beforeSend.call(g,S,p)||u))return S.abort();if(_="abort",y.add(p.complete),S.done(p.success),S.fail(p.error),r=et(Ge,p,n,S)){if(S.readyState=1,h&&m.trigger("ajaxSend",[S,p]),u)return S;p.async&&p.timeout>0&&(l=t.setTimeout(function(){S.abort("timeout")},p.timeout));try{u=!1,r.send(b,i)}catch(t){if(u)throw t;i(-1,t)}}else i(-1,"No Transport");return S},getJSON:function(t,e,n){return wt.get(t,e,n,"json")},getScript:function(t,e){return wt.get(t,void 0,e,"script")}}),wt.each(["get","post"],function(t,e){wt[e]=function(t,n,i,r){return yt(n)&&(r=r||i,i=n,n=void 0),wt.ajax(wt.extend({url:t,type:e,dataType:r,data:n,success:i},wt.isPlainObject(t)&&t))}}),wt._evalUrl=function(t){return wt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},wt.fn.extend({wrapAll:function(t){var e;return this[0]&&(yt(t)&&(t=t.call(this[0])),e=wt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return yt(t)?this.each(function(e){wt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=wt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=yt(t);return this.each(function(n){wt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){wt(this).replaceWith(this.childNodes)}),this}}),wt.expr.pseudos.hidden=function(t){return!wt.expr.pseudos.visible(t)},wt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},wt.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Ue=wt.ajaxSettings.xhr();vt.cors=!!Ue&&"withCredentials"in Ue,vt.ajax=Ue=!!Ue,wt.ajaxTransport(function(e){var n,i;if(vt.cors||Ue&&!e.crossDomain)return{send:function(r,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);n=function(t){return function(){n&&(n=i=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(We[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),i=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=i:s.onreadystatechange=function(){4===s.readyState&&t.setTimeout(function(){n&&i()})},n=n("abort");try{s.send(e.hasContent&&e.data||null)}catch(t){if(n)throw t}},abort:function(){n&&n()}}}),wt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),wt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return wt.globalEval(t),t}}}),wt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),wt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(i,r){e=wt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&r("error"===t.type?404:200,t.type)}),at.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Xe=[],Ye=/(=)\?(?=&|$)|\?\?/;wt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Xe.pop()||wt.expando+"_"+Ee++;return this[t]=!0,t}}),wt.ajaxPrefilter("json jsonp",function(e,n,i){var r,o,a,s=!1!==e.jsonp&&(Ye.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ye.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=yt(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Ye,"$1"+r):!1!==e.jsonp&&(e.url+=(Le.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||wt.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=t[r],t[r]=function(){a=arguments},i.always(function(){void 0===o?wt(t).removeProp(r):t[r]=o,e[r]&&(e.jsonpCallback=n.jsonpCallback,Xe.push(r)),a&&yt(o)&&o(a[0]),a=o=void 0}),"script"}),vt.createHTMLDocument=function(){var t=at.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),wt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var i,r,o;return e||(vt.createHTMLDocument?((i=(e=at.implementation.createHTMLDocument("")).createElement("base")).href=at.location.href,e.head.appendChild(i)):e=at),r=At.exec(t),o=!n&&[],r?[e.createElement(r[1])]:(r=S([t],e,o),o&&o.length&&wt(o).remove(),wt.merge([],r.childNodes))},wt.fn.load=function(t,e,n){var i,r,o,a=this,s=t.indexOf(" ");return s>-1&&(i=Q(t.slice(s)),t=t.slice(0,s)),yt(e)?(n=e,e=void 0):e&&"object"==typeof e&&(r="POST"),a.length>0&&wt.ajax({url:t,type:r||"GET",dataType:"html",data:e}).done(function(t){o=arguments,a.html(i?wt("<div>").append(wt.parseHTML(t)).find(i):t)}).always(n&&function(t,e){a.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},wt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){wt.fn[e]=function(t){return this.on(e,t)}}),wt.expr.pseudos.animated=function(t){return wt.grep(wt.timers,function(e){return t===e.elem}).length},wt.offset={setOffset:function(t,e,n){var i,r,o,a,s,l,c=wt.css(t,"position"),u=wt(t),h={};"static"===c&&(t.style.position="relative"),s=u.offset(),o=wt.css(t,"top"),l=wt.css(t,"left"),("absolute"===c||"fixed"===c)&&(o+l).indexOf("auto")>-1?(a=(i=u.position()).top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),yt(e)&&(e=e.call(t,n,wt.extend({},s))),null!=e.top&&(h.top=e.top-s.top+a),null!=e.left&&(h.left=e.left-s.left+r),"using"in e?e.using.call(t,h):u.css(h)}},wt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){wt.offset.setOffset(this,t,e)});var e,n,i=this[0];return i?i.getClientRects().length?(e=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n,i=this[0],r={top:0,left:0};if("fixed"===wt.css(i,"position"))e=i.getBoundingClientRect();else{for(e=this.offset(),n=i.ownerDocument,t=i.offsetParent||n.documentElement;t&&(t===n.body||t===n.documentElement)&&"static"===wt.css(t,"position");)t=t.parentNode;t&&t!==i&&1===t.nodeType&&((r=wt(t).offset()).top+=wt.css(t,"borderTopWidth",!0),r.left+=wt.css(t,"borderLeftWidth",!0))}return{top:e.top-r.top-wt.css(i,"marginTop",!0),left:e.left-r.left-wt.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===wt.css(t,"position");)t=t.offsetParent;return t||te})}}),wt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;wt.fn[t]=function(i){return Dt(this,function(t,i,r){var o;if(xt(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===r)return o?o[e]:t[i];o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):t[i]=r},t,i,arguments.length)}}),wt.each(["top","left"],function(t,e){wt.cssHooks[e]=I(vt.pixelPosition,function(t,n){if(n)return n=D(t,e),le.test(n)?wt(t).position()[e]+"px":n})}),wt.each({Height:"height",Width:"width"},function(t,e){wt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){wt.fn[i]=function(r,o){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===o?"margin":"border");return Dt(this,function(e,n,r){var o;return xt(e)?0===i.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===r?wt.css(e,n,s):wt.style(e,n,r,s)},e,a?r:void 0,a)}})}),wt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){wt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),wt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),wt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),wt.proxy=function(t,e){var n,i,r;if("string"==typeof e&&(n=t[e],e=t,t=n),yt(t))return i=lt.call(arguments,2),r=function(){return t.apply(e||this,i.concat(lt.call(arguments)))},r.guid=t.guid=t.guid||wt.guid++,r},wt.holdReady=function(t){t?wt.readyWait++:wt.ready(!0)},wt.isArray=Array.isArray,wt.parseJSON=JSON.parse,wt.nodeName=o,wt.isFunction=yt,wt.isWindow=xt,wt.camelCase=p,wt.type=i,wt.now=Date.now,wt.isNumeric=function(t){var e=wt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return wt});var Qe=t.jQuery,Ze=t.$;return wt.noConflict=function(e){return t.$===wt&&(t.$=Ze),e&&t.jQuery===wt&&(t.jQuery=Qe),wt},e||(t.jQuery=t.$=wt),wt}),define("config",["jquery"],function(t){function e(t){"undefined"!=typeof Storage&&window.swish.config_hash&&localStorage.setItem(i,JSON.stringify({hash:window.swish.config_hash,config:t}))}var n,i="SWISHCONFIG";return n||(n=function(){if("undefined"!=typeof Storage&&window.swish.config_hash){var t;if((t=localStorage.getItem(i))&&(value=JSON.parse(t),value.hash==window.swish.config_hash))return value.config}}())||t.ajax("swish_config.json",{dataType:"json",async:!1,success:function(t){n=t,e(n)},error:function(){alert("Failed to fetch configuration from server")}}),n}),define("preferences",["jquery"],function(t){function e(){var t=localStorage.getItem("notagain")||"[]";try{data=JSON.parse(t),"object"!=typeof data&&(data=[])}catch(t){data=[]}return data}var n="undefined"!=typeof Storage,i={},r={},o={persistent:function(){return n},setNotAgain:function(t){if(n){var i=e();i.indexOf(t)<0&&(i.push(t),localStorage.setItem("notagain",JSON.stringify(i)))}},notagain:function(t){if(n){return e().indexOf(t)>=0}return!1},broadcast:function(e,n){var i;if(void 0==r.name)i=".swish-event-receiver";else{if(null==r.name)return;i=r.name}t(i).trigger("preference",{name:e,value:n})},setVal:function(t,e){n&&localStorage.setItem(t,JSON.stringify(e)),this.broadcast(t,e)},setDefault:function(t,e){i[t]=e},setInform:function(t,e){r[t]=e},getVal:function(t){if(n){var e;if(e=localStorage.getItem(t))return value=JSON.parse(e),value}return i[t]},setDocVal:function(t,e,n){var i=o.getVal(t)||{};i[e]=n,o.setVal(t,i)},getDocVal:function(t,e,n){var i=o.getVal(t)||{};return void 0===i[e]?n:i[e]}};return o}),define("links",["jquery","config","modal"],function(t,e,n){var i={PlDoc:function(e,n){if(e){var i=function(t){var e,n={};if((e=t.indexOf(":"))>0&&(n.module=t.substring(0,e),t=t.slice(e+1)),(e=t.indexOf("/"))>0&&(n.name=t.substring(0,e),"/"==t.charAt(e+1)?n.arity=parseInt(t.slice(e+2))+2:n.arity=parseInt(t.slice(e+1)),!isNaN(n.arity)))return n}(decodeURIComponent(e));if(i)return t(n.target).closest("#ajaxModal").modal("hide"),t(".swish-event-receiver").trigger("pldoc",i),n.preventDefault(),!0}return!1},runQueryLink:function(e,i){function r(t){for(var e=0;e<l.length;e++)if(l[e].toLowerCase()==t.toLowerCase())return l[e];h.push(t)}var o=e.closest(".notebook"),a=e.data("query"),s=o.find('.nb-cell[name="'+a+'"]');if(s){var l=t().prologEditor("variables",s.nbCell("text"),!0),c="",u={},h=[];t.each(e.data(),function(t,e){var n;"query"!==t&&(n=r(t))&&(""!=c&&(c+=", "),c+=n+" = ("+e+")")}),h.length>0&&n.feedback({owner:o,type:"warning",duration:3e3,html:"The variables <b>"+h.join(", ")+"</b> do not appear in query <b>"+a+"</b>"}),""!=c&&(u.bindings=c),s.nbCell("run",u)}},followLink:function(n){function r(){a=!0,n.preventDefault(),t(n.target).closest("#ajaxModal").modal("hide")}var o=t(n.target).closest("a"),a=!1;if(o.attr("href")){var s,l=e.http.locations.swish+"p/",c=e.http.locations.swish+"example/",u=o.attr("href");if(u.startsWith(l)&&!u.match(/#/))r(),file=u.slice(l.length),t(n.target).closest(".swish").swish("playFile",file);else if(o.hasClass("store"))r(),s.alert("File does not appear to come from gitty store?");else if(o.hasClass("file")||u.startsWith(c)&&!u.match(/#/))r(),t(n.target).closest(".swish").swish("playURL",{url:u});else if(o.hasClass("builtin")&&u.match(/predicate=/))a=i.PlDoc(u.split("predicate=").pop(),n);else if(u.match(/object=/))a=i.PlDoc(u.split("object=").pop(),n);else if(1==(s=t(n.target).closest("#ajaxModal")).length&&u.match(/#/)){var h,d=u.split("#").pop();1==(h=s.find("#"+d)).length&&(a=!0,n.preventDefault(),s.animate({scrollTop:h.position().top},2e3))}a||(n.preventDefault(),window.open(u,"_blank"))}else o.data("query")&&i.runQueryLink(o,n)}};return i}),function(t){function e(){for(var t=document.createElement(arguments[0]),e=1;e<arguments.length;e++){var i=arguments[e];if(null!==i&&void 0!==i)if(1===i.nodeType)t.appendChild(i);else if(""===i||i&&i.charCodeAt&&i.substr||0===i||i&&i.toExponential&&i.toFixed)t.appendChild(document.createTextNode(i));else if(1===e&&"object"==typeof i){for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];if(null!==o&&void 0!==o){r=r.toLowerCase(),r=n[r]||r;var a="o"===r.charAt(0)&&"n"===r.charAt(1);a?(void 0===i.href&&"onclick"===r&&t.setAttribute("href","#"),t[r]=o):"style"===r&&t.style.setAttribute?t.style.setAttribute("cssText",o):"className"===r||"htmlFor"===r?t[r]=o:t.setAttribute(r,o)}}}else if("[object Array]"===Object.prototype.toString.call(i))for(var s=0;s<i.length;s++){var l=i[s];1===l.nodeType&&t.appendChild(l)}}return t.appendTo=function(t){return 1===t.nodeType&&1===this.nodeType&&t.appendChild(this),this},t}var n={acceptcharset:"acceptCharset",accesskey:"accessKey",allowtransparency:"allowTransparency",bgcolor:"bgColor",cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",classname:"className",colspan:"colSpan",csstext:"style",defaultchecked:"defaultChecked",defaultselected:"defaultSelected",defaultvalue:"defaultValue",for:"htmlFor",frameborder:"frameBorder",hspace:"hSpace",htmlfor:"htmlFor",longdesc:"longDesc",maxlength:"maxLength",marginwidth:"marginWidth",marginheight:"marginHeight",noresize:"noResize",noshade:"noShade",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",vspace:"vSpace"};e.registerElement=function(t,n){e[t]||(e[t]=function(){var i=e("div",{class:t});return n.apply(i,Array.prototype.slice.call(arguments)),i})};for(var i=["acronym","applet","basefont","big","center","dir","font","frame","frameset","noframes","strike","tt","u","xmp"],r=["a","abbr","address","area","article","aside","audio","b","base","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","legend","li","link","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","var","video","wbr"].concat(i),o=0;o<r.length;o++)e[r[o]]=function(t){return function(){return e.apply(this,[t].concat(Array.prototype.slice.call(arguments)))}}(r[o]);if("undefined"!=typeof module&&module.exports)module.exports=e;else{var a=t.$||{};a.el=e,t.$=a}}(this),define("laconic",["jquery"],function(){}),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var r=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(r,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var n=t(this),r=n.data("bs.alert");r||n.data("bs.alert",r=new i(this)),"string"==typeof e&&r[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var r=t(this),o=r.attr("data-target");o||(o=r.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===o?[]:o);e&&e.preventDefault(),a.length||(a=r.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var r=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=r,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.button"),o="object"==typeof e&&e
+;r||i.data("bs.button",r=new n(this,o)),"toggle"==e?r.toggle():e&&r.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,r=i.is("input")?"val":"html",o=i.data();e+="Text",null==o.resetText&&i.data("resetText",i[r]()),setTimeout(t.proxy(function(){i[r](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.carousel"),o=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e),a="string"==typeof e?e:o.slide;r||i.data("bs.carousel",r=new n(this,o)),"number"==typeof e?r.to(e):a?r[a]():o.interval&&r.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e);if(("prev"==t&&0===n||"next"==t&&n==this.$items.length-1)&&!this.options.wrap)return e;var i="prev"==t?-1:1,r=(n+i)%this.$items.length;return this.$items.eq(r)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,i){var r=this.$element.find(".item.active"),o=i||this.getItemForDirection(e,r),a=this.interval,s="next"==e?"left":"right",l=this;if(o.hasClass("active"))return this.sliding=!1;var c=o[0],u=t.Event("slide.bs.carousel",{relatedTarget:c,direction:s});if(this.$element.trigger(u),!u.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=t(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=t.Event("slid.bs.carousel",{relatedTarget:c,direction:s});return t.support.transition&&this.$element.hasClass("slide")?(o.addClass(e),o[0].offsetWidth,r.addClass(s),o.addClass(s),r.one("bsTransitionEnd",function(){o.removeClass([e,s].join(" ")).addClass("active"),r.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(d)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(r.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var r=function(n){var i,r=t(this),o=t(r.attr("data-target")||(i=r.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var a=t.extend({},o.data(),r.data()),s=r.attr("data-slide-to");s&&(a.interval=!1),e.call(o,a),s&&o.data("bs.carousel").to(s),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",r).on("click.bs.carousel.data-api","[data-slide-to]",r),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),r=n.data("bs.collapse"),o=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!r&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),r||n.data("bs.collapse",r=new i(this,o)),"string"==typeof e&&r[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,r=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(r&&r.length&&(e=r.data("bs.collapse"))&&e.transitioning)){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){r&&r.length&&(n.call(r,"hide"),e||r.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[a](this.$element[0][l])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var r=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(i.TRANSITION_DURATION):r.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var r=t(i);this.addAriaAndCollapsedClass(e(r),r)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var r=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=r,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var r=t(this);r.attr("data-target")||i.preventDefault();var o=e(r),a=o.data("bs.collapse"),s=a?"toggle":r.data();n.call(o,s)})}(jQuery),function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(r).remove(),t(o).each(function(){var i=t(this),r=e(i),o={relatedTarget:this};r.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(r[0],n.target)||(r.trigger(n=t.Event("hide.bs.dropdown",o)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),r.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))}))}function i(e){return this.each(function(){var n=t(this),i=n.data("bs.dropdown");i||n.data("bs.dropdown",i=new a(this)),"string"==typeof e&&i[e].call(n)})}var r=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(i){var r=t(this);if(!r.is(".disabled, :disabled")){var o=e(r),a=o.hasClass("open");if(n(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",n);var s={relatedTarget:this};if(o.trigger(i=t.Event("show.bs.dropdown",s)),i.isDefaultPrevented())return;r.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",s))}return!1}},a.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var r=e(i),a=r.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&r.find(o).trigger("focus"),i.trigger("click");var s=r.find(".dropdown-menu li:not(.disabled):visible a");if(s.length){var l=s.index(n.target);38==n.which&&l>0&&l--,40==n.which&&l<s.length-1&&l++,~l||(l=0),s.eq(l).trigger("focus")}}}};var s=t.fn.dropdown;t.fn.dropdown=i,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=s,this},t(document).on("click.bs.dropdown.data-api",n).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",o,a.prototype.toggle).on("keydown.bs.dropdown.data-api",o,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),function(t){"use strict";function e(e,i){return this.each(function(){var r=t(this),o=r.data("bs.modal"),a=t.extend({},n.DEFAULTS,r.data(),"object"==typeof e&&e);o||r.data("bs.modal",o=new n(this,a)),"string"==typeof e?o[e](i):a.show&&o.show(i)})}var n=function(e,n){this.options=n,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},n.prototype.show=function(e){var i=this,r=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(r),this.isShown||r.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){i.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(i.$element)&&(i.ignoreBackdropClick=!0)})}),this.backdrop(function(){var r=t.support.transition&&i.$element.hasClass("fade");i.$element.parent().length||i.$element.appendTo(i.$body),i.$element.show().scrollTop(0),i.adjustDialog(),r&&i.$element[0].offsetWidth,i.$element.addClass("in"),i.enforceFocus();var o=t.Event("shown.bs.modal",{relatedTarget:e});r?i.$dialog.one("bsTransitionEnd",function(){i.$element.trigger("focus").trigger(o)}).emulateTransitionEnd(n.TRANSITION_DURATION):i.$element.trigger("focus").trigger(o)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var i=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=t.support.transition&&r;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+r).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;o?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){i.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var i=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=n,t.fn.modal.noConflict=function(){return t.fn.modal=i,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var i=t(this),r=i.attr("href"),o=t(i.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),a=o.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(r)&&r},o.data(),i.data());i.is("a")&&n.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){i.is(":visible")&&i.trigger("focus")})}),e.call(o,a,this)})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tooltip"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.tooltip",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(e,n,i){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var r=this.options.trigger.split(" "),o=r.length;o--;){var a=r[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},n.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,function(t,i){n[t]!=i&&(e[t]=i)}),e},n.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState?void(n.hoverState="in"):(clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void(n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},n.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue())return clearTimeout(n.timeout),n.hoverState="out",n.options.delay&&n.options.delay.hide?void(n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)):n.hide()},n.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var i=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!i)return;var r=this,o=this.tip(),a=this.getUID(this.type);this.setContent(),o.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(s);c&&(s=s.replace(l,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(c){var f=s,p=this.getPosition(this.$viewport);s="bottom"==s&&u.bottom+d>p.bottom?"top":"top"==s&&u.top-d<p.top?"bottom":"right"==s&&u.right+h>p.width?"left":"left"==s&&u.left-h<p.left?"right":s,o.removeClass(f).addClass(s)}var g=this.getCalculatedOffset(s,u,h,d);this.applyPlacement(g,s);var m=function(){var t=r.hoverState;r.$element.trigger("shown.bs."+r.type),r.hoverState=null,"out"==t&&r.leave(r)};t.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",m).emulateTransitionEnd(n.TRANSITION_DURATION):m()}},n.prototype.applyPlacement=function(e,n){var i=this.tip(),r=i[0].offsetWidth,o=i[0].offsetHeight,a=parseInt(i.css("margin-top"),10),s=parseInt(i.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(s)&&(s=0),e.top+=a,e.left+=s,t.offset.setOffset(i[0],t.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),i.addClass("in");var l=i[0].offsetWidth,c=i[0].offsetHeight;"top"==n&&c!=o&&(e.top=e.top+o-c);var u=this.getViewportAdjustedDelta(n,e,l,c);u.left?e.left+=u.left:e.top+=u.top;var h=/top|bottom/.test(n),d=h?2*u.left-r+l:2*u.top-o+c,f=h?"offsetWidth":"offsetHeight";i.offset(e),this.replaceArrow(d,i[0][f],h)},n.prototype.replaceArrow=function(t,e,n){this.arrow().css(n?"left":"top",50*(1-t/e)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},n.prototype.hide=function(e){function i(){"in"!=r.hoverState&&o.detach(),r.$element&&r.$element.removeAttr("aria-describedby").trigger("hidden.bs."+r.type),e&&e()}var r=this,o=t(this.$tip),a=t.Event("hide.bs."+this.type);if(this.$element.trigger(a),!a.isDefaultPrevented())return o.removeClass("in"),t.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",i).emulateTransitionEnd(n.TRANSITION_DURATION):i(),this.hoverState=null,this},n.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],i="BODY"==n.tagName,r=n.getBoundingClientRect();null==r.width&&(r=t.extend({},r,{width:r.right-r.left,height:r.bottom-r.top}));var o=window.SVGElement&&n instanceof window.SVGElement,a=i?{top:0,left:0}:o?null:e.offset(),s={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},l=i?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},r,s,l,a)},n.prototype.getCalculatedOffset=function(t,e,n,i){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-n/2}:"top"==t?{top:e.top-i,left:e.left+e.width/2-n/2}:"left"==t?{top:e.top+e.height/2-i/2,left:e.left-n}:{top:e.top+e.height/2-i/2,left:e.left+e.width}},n.prototype.getViewportAdjustedDelta=function(t,e,n,i){var r={top:0,left:0};if(!this.$viewport)return r;var o=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var s=e.top-o-a.scroll,l=e.top+o-a.scroll+i;s<a.top?r.top=a.top-s:l>a.top+a.height&&(r.top=a.top+a.height-l)}else{var c=e.left-o,u=e.left+o+n;c<a.left?r.left=a.left-c:u>a.right&&(r.left=a.left+a.width-u)}return r},n.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},n.prototype.getUID=function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},n.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(e){var n=this;e&&((n=t(e.currentTarget).data("bs."+this.type))||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var i=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=n,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=i,this}}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.popover"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.popover",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.7",n.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var i=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=n,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(jQuery),function(t){"use strict";function e(n,i){this.$body=t(document.body),this.$scrollElement=t(t(n).is(document.body)?window:n),this.options=t.extend({},e.DEFAULTS,i),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var i=t(this),r=i.data("bs.scrollspy"),o="object"==typeof n&&n;r||i.data("bs.scrollspy",r=new e(this,o)),"string"==typeof n&&r[n]()})}e.VERSION="3.3.7",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),r=e.data("target")||e.attr("href"),o=/^#./.test(r)&&t(r);return o&&o.length&&o.is(":visible")&&[[o[n]().top+i,r]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),i=this.options.offset+n-this.$scrollElement.height(),r=this.offsets,o=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=i)return a!=(t=o[o.length-1])&&this.activate(t);if(a&&e<r[0])return this.activeTarget=null,this.clear();for(t=r.length;t--;)a!=o[t]&&e>=r[t]&&(void 0===r[t+1]||e<r[t+1])&&this.activate(o[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',i=t(n).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var i=t.fn.scrollspy;t.fn.scrollspy=n,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=i,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);n.call(e,e.data())})})}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tab");r||i.data("bs.tab",r=new n(this)),"string"==typeof e&&r[e]()})}var n=function(e){this.element=t(e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.prototype.show=function(){var e=this.element,n=e.closest("ul:not(.dropdown-menu)"),i=e.data("target");if(i||(i=e.attr("href"),i=i&&i.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var r=n.find(".active:last a"),o=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:r[0]});if(r.trigger(o),e.trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){var s=t(i);this.activate(e.closest("li"),n),this.activate(s,s.parent(),function(){r.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:r[0]})})}}},n.prototype.activate=function(e,i,r){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),r&&r()}var a=i.find("> .active"),s=r&&t.support.transition&&(a.length&&a.hasClass("fade")||!!i.find("> .fade").length)
+;a.length&&s?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var i=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var r=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',r).on("click.bs.tab.data-api",'[data-toggle="pill"]',r)}(jQuery),function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.affix"),o="object"==typeof e&&e;r||i.data("bs.affix",r=new n(this,o)),"string"==typeof e&&r[e]()})}var n=function(e,i){this.options=t.extend({},n.DEFAULTS,i),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.7",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(t,e,n,i){var r=this.$target.scrollTop(),o=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return r<n&&"top";if("bottom"==this.affixed)return null!=n?!(r+this.unpin<=o.top)&&"bottom":!(r+a<=t-i)&&"bottom";var s=null==this.affixed,l=s?r:o.top,c=s?a:e;return null!=n&&r<=n?"top":null!=i&&l+c>=t-i&&"bottom"},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},n.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),i=this.options.offset,r=i.top,o=i.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof i&&(o=r=i),"function"==typeof r&&(r=i.top(this.$element)),"function"==typeof o&&(o=i.bottom(this.$element));var s=this.getState(a,e,r,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var l="affix"+(s?"-"+s:""),c=t.Event(l+".bs.affix");if(this.$element.trigger(c),c.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-e-o})}};var i=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=n,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var n=t(this),i=n.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),e.call(n,i)})})}(jQuery),define("bootstrap",["jquery"],function(){}),define("modal",["jquery","config","preferences","links","form","laconic","bootstrap"],function(t,e,n,i,r){!function(t){function o(e){e.hasClass("modal")||(e=e.closest(".modal")),e.find("[data-notagain]").each(function(){if(t(this).prop("checked"))return n.setNotAgain(t(this).attr("data-notagain")),!1})}function a(){var e=t.el.button({type:"button",class:"close","data-dismiss":"modal"});return t(e).html("&times;").on("click",function(e){e.preventDefault(),o(t(e.target))}),e}function s(e){return e.notagain&&n.persistent()?t.el.label(t.el.input({type:"checkbox","data-notagain":e.notagain,name:"dismiss"})," Don't show again!"):""}function l(){t(this).find(".tm-input").each(function(){var e=t(this),n=e.data("prefilled"),i={};n&&(i.prefilled=n),e.tagsManager(i)})}var c={_init:function(e){return this.each(function(){var e=t(this);e.addClass("swish-event-receiver"),e.on("help",function(t,n){e.swishModal("showHelp",n)}),e.on("pldoc",function(t,n){e.swishModal("showPlDoc",n)}),e.on("form",function(t,n){e.swishModal("showForm",n)}),e.on("dialog",function(t,n){e.swishModal("show",n)}),e.on("error",function(t,n){e.swishModal("show",n)}),e.on("alert",function(t,n){e.swishModal("show",{title:"<span class='glyphicon glyphicon-warning-sign'></span>",body:n})}),e.on("ajaxError",function(t,n){e.swishModal("showAjaxError",n)}),e.on("feedback",function(t,n){e.swishModal("feedback",n)}),e.on("show",function(t,n){e.swishModal("show",n)}),e.on("server_form",function(t,n){e.swishModal("server_form",n)})})},showHelp:function(i){var r=this;i.notagain&&n.notagain(i.notagain)||t.ajax({url:e.http.locations.help+"/"+i.file,dataType:"html",success:function(e){var n=t("<div>");n.html(e),r.swishModal("show",t.extend({title:n.find("title").text(),body:n},i))}})},showForm:function(n){var i=this;t.ajax({url:e.http.locations.form+"/"+n.file,dataType:"html",success:function(e){var r=t("<div>");r.html(e),i.swishModal("show",t.extend({title:r.find("legend").text(),body:r},n))}})},showPlDoc:function(t){function n(t){var n="("+t.name+")/"+t.arity;return t.module&&(n=t.module+":"+n),e.http.locations.pldoc_doc_for+"?header=false&object="+encodeURIComponent(n)}function i(t,e){return t.parents("div.modal-dialog").addClass("swish-embedded-manual"),"<iframe class='swish-embedded-manual' onload='javascript:resizeIframe(this);' src='"+e+"'></iframe>"}var r={title:"SWI-Prolog manual",body:function(){return i(this,n(t))}};return this.swishModal("show",r)},show:function(e){var r=t.el.div({class:"modal-body"}),c=t.el.h2(),u=t.el.div({class:"modal-content"},t.el.div({class:"modal-header"},s(e),a(),c),r),h=t.el.div({class:"modal fade",id:"ajaxModal",tabindex:-1,role:"dialog"},t.el.div({class:"modal-dialog"},u));if(e.notagain&&n.persistent()&&t(u).append(t.el.div({class:"modal-footer"},s(e))),r=t(r),"function"==typeof e.body){var d=e.body.call(r);d&&r.append(d)}else r.html(e.body);return t(c).html(e.title),t(h).modal({show:!0}).on("click","a",i.followLink).on("shown.bs.modal",l).on("hidden.bs.modal",function(){e.onclose&&e.onclose(),o(t(this)),t(this).remove()}),this},server_form:function(e){var n=t(this);return void 0===r&&(r=require("form")),this.swishModal("show",{title:e.title,body:function(){elem=t(this),t.ajax({url:e.url,data:e.data,success:function(t){elem.append(t)},error:function(t){n.swishModal("showAjaxError",t)}}),elem.on("click","button[data-action]",function(i){var o=t(i.target).closest("form"),a=r.serializeAsObject(o,!0),s=t(i.target).closest("button");return 0==s.data("form_data")?t.ajax({url:s.data("action"),success:function(t){return s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1},error:function(t){n.swishModal("showAjaxError",t)}}):t.ajax({url:s.data("action"),data:JSON.stringify(a),dataType:"json",contentType:"application/json",type:"POST",success:function(t){if("success"==t.status)return s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1;"error"==t.status?r.formError(o,t.error):alert("Updated failed: "+JSON.serializeAsObject(t))},error:function(t){n.swishModal("showAjaxError",t)}}),i.preventDefault(),!1})}})},showAjaxError:function(e){var n=t.el.div();t(n).html(e.responseText);var i=t(n).find("h1"),r=i.text()||"Server error";i.remove();var o={title:r,body:n};this.swishModal("show",o)},feedback:function(e){var n=t.el.div({class:"feedback "+e.type||""});return t(n).html(e.html),t(e.owner||"body").append(n),setTimeout(function(){t(n).hide(400,function(){t(n).remove()})},e.duration||1500),this}};window.resizeIframe=function(t){t.style.height=0,t.style.height=t.contentWindow.document.body.scrollHeight+20+"px"},t.fn.swishModal=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.swishModal"):c._init.apply(this,arguments)}}(jQuery);var o=1;return{ajaxError:function(e){t(".swish-event-receiver").trigger("ajaxError",e)},feedback:function(e){t(".swish-event-receiver").trigger("feedback",e)},alert:function(e){t(".swish-event-receiver").trigger("alert",e)},help:function(e){t(".swish-event-receiver").trigger("help",e)},show:function(e){t(".swish-event-receiver").trigger("show",e)},server_form:function(e){t(".swish-event-receiver").trigger("server_form",e)},notify:function(e,n){var i="ntf-"+(n.wsid||o++),r=t.el.div({class:"notification notify-arrow",id:i}),a=e.offset();if(t("body").append(r),n.html?t(r).html(n.html):n.dom&&t(r).append(n.dom),t(r).css({left:a.left+e.width()-t(r).outerWidth()+15,top:a.top+e.height()+12}).on("click",function(){t(r).remove()}).show(n.fadeIn||400),0!==n.time){var s=n.time;s||(s=e.hasClass("myself")?1e3:5e3),setTimeout(function(){t(r).hide(n.fadeOut||400,function(){t("#"+i).remove(),n.onremove&&n.onremove(n),e.chat("unnotify",n.wsid)})},s)}}}}),function(t){"use strict";var e={prefilled:null,CapitalizeFirstLetter:!1,preventSubmitOnEnter:!0,isClearInputOnEsc:!0,externalTagId:!1,prefillIdFieldName:"Id",prefillValueFieldName:"Value",AjaxPush:null,AjaxPushAllTags:null,AjaxPushParameters:null,delimiters:[9,13,44],backspace:[8],maxTags:0,hiddenTagListName:null,hiddenTagListId:null,replace:!0,output:null,deleteTagsOnBackspace:!0,tagsContainer:null,tagCloseIcon:"x",tagClass:"",validator:null,onlyTagList:!1,tagList:null,fillInputOnTagRemove:!1},n={pushTag:function(e,n,r){var o,a,s,l,c,u,h,d,f,p,g,m=t(this),v=m.data("opts"),y=m.data("tlis"),x=m.data("tlid");if((e=i.trimTag(e,v.delimiterChars))&&!(e.length<=0)){if(v.onlyTagList&&void 0!==v.tagList&&v.tagList){var b=v.tagList;t.each(b,function(t,e){b[t]=e.toLowerCase()});if(-1===t.inArray(e.toLowerCase(),b))return}if(v.CapitalizeFirstLetter&&e.length>1&&(e=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),v.validator&&!v.validator(e))return void m.trigger("tm:invalid",e);if(!(v.maxTags>0&&y.length>=v.maxTags)){if(o=!1,a=jQuery.map(y,function(t){return t.toLowerCase()}),c=t.inArray(e.toLowerCase(),a),-1!==c&&(o=!0),o)if(m.trigger("tm:duplicated",e),v.blinkClass)for(var w=0;w<6;++w)t("#"+m.data("tm_rndid")+"_"+x[c]).queue(function(e){t(this).toggleClass(v.blinkClass),e()}).delay(100);else t("#"+m.data("tm_rndid")+"_"+x[c]).stop().animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100);else!0===v.externalTagId?(void 0===r&&t.error("externalTagId is not passed for tag -"+e),l=r):(s=Math.max.apply(null,x),s=s===-1/0?0:s,l=++s),n||m.trigger("tm:pushing",[e,l]),y.push(e),x.push(l),n||null!==v.AjaxPush&&null==v.AjaxPushAllTags&&-1===t.inArray(e,v.prefilled)&&t.post(v.AjaxPush,t.extend({tag:e},v.AjaxPushParameters)),u=m.data("tm_rndid")+"_"+l,h=m.data("tm_rndid")+"_Remover_"+l,d=t("<span/>").text(e).html(),f='<span class="'+i.tagClasses.call(m)+'" id="'+u+'">',f+="<span>"+d+"</span>",f+='<a href="#" class="tm-tag-remove" id="'+h+'" TagIdToRemove="'+l+'">',f+=v.tagCloseIcon+"</a></span> ",p=t(f),null!==v.tagsContainer?t(v.tagsContainer).append(p):x.length>1?(g=m.siblings("#"+m.data("tm_rndid")+"_"+x[x.length-2]),g.after(p)):m.before(p),p.find("#"+h).on("click",m,function(e){e.preventDefault();var n=parseInt(t(this).attr("TagIdToRemove"));i.spliceTag.call(m,n,e.data)}),i.refreshHiddenTagList.call(m),n||m.trigger("tm:pushed",[e,l]),i.showOrHide.call(m);m.val("")}}},popTag:function(){var e,n,r=t(this),o=r.data("tlis"),a=r.data("tlid");a.length>0&&(e=a.pop(),n=o[o.length-1],r.trigger("tm:popping",[n,e]),o.pop(),t("#"+r.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(r),r.trigger("tm:popped",[n,e]))},empty:function(){for(var e,n=t(this),r=n.data("tlis"),o=n.data("tlid");o.length>0;)e=o.pop(),r.pop(),t("#"+n.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(n);n.trigger("tm:emptied",null),i.showOrHide.call(n)},tags:function(){return this.data("tlis")}},i={showOrHide:function(){var t=this,e=t.data("opts"),n=t.data("tlis");e.maxTags>0&&n.length<e.maxTags&&(t.show(),t.trigger("tm:show")),e.maxTags>0&&n.length>=e.maxTags&&(t.hide(),t.trigger("tm:hide"))},tagClasses:function(){var e,n=t(this),i=n.data("opts"),r=i.tagBaseClass,o=i.inputBaseClass;return e=r,n.attr("class")&&t.each(n.attr("class").split(" "),function(t,n){-1!==n.indexOf(o+"-")&&(e+=" "+r+n.substring(o.length))}),e+=i.tagClass?" "+i.tagClass:""},trimTag:function(e,n){var i;for(e=t.trim(e),i=0;i<e.length&&-1===t.inArray(e.charCodeAt(i),n);i++);return e.substring(0,i)},refreshHiddenTagList:function(){var e=t(this),n=e.data("tlis"),i=e.data("lhiddenTagList");i&&t(i).val(n.join(e.data("opts").baseDelimiter)).change(),e.trigger("tm:refresh",n.join(e.data("opts").baseDelimiter))},killEvent:function(t){t.cancelBubble=!0,t.returnValue=!1,t.stopPropagation(),t.preventDefault()},keyInArray:function(e,n){return-1!==t.inArray(e.which,n)},applyDelimiter:function(e){var i=t(this);n.pushTag.call(i,t(this).val()),e.preventDefault()},prefill:function(e){var i=t(this),r=i.data("opts");t.each(e,function(t,e){!0===r.externalTagId?n.pushTag.call(i,e[r.prefillValueFieldName],!0,e[r.prefillIdFieldName]):n.pushTag.call(i,e,!0)})},pushAllTags:function(e,n){var i=t(this),r=i.data("opts"),o=i.data("tlis");r.AjaxPushAllTags&&("tm:pushed"===e.type&&-1!==t.inArray(n,r.prefilled)||t.post(r.AjaxPush,t.extend({tags:o.join(r.baseDelimiter)},r.AjaxPushParameters)))},spliceTag:function(e){var n,r=this,o=r.data("tlis"),a=r.data("tlid"),s=t.inArray(e,a);-1!==s&&(n=o[s],r.trigger("tm:splicing",[n,e]),t("#"+r.data("tm_rndid")+"_"+e).remove(),o.splice(s,1),a.splice(s,1),i.refreshHiddenTagList.call(r),r.trigger("tm:spliced",[n,e])),i.showOrHide.call(r)},init:function(r){var o,a,s=t.extend({},e,r);return s.hiddenTagListName=null===s.hiddenTagListName?"hidden-"+this.attr("name"):s.hiddenTagListName,o=s.delimeters||s.delimiters,a=[9,13,17,18,19,37,38,39,40],s.delimiterChars=[],s.delimiterKeys=[],t.each(o,function(e,n){-1!==t.inArray(n,a)?s.delimiterKeys.push(n):s.delimiterChars.push(n)}),s.baseDelimiter=String.fromCharCode(s.delimiterChars[0]||44),s.tagBaseClass="tm-tag",s.inputBaseClass="tm-input",t.isFunction(s.validator)||(s.validator=null),this.each(function(){var e=t(this),r="",o="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(e.data("tagManager"))return!1;e.data("tagManager",!0);for(var l=0;l<5;l++)o+=a.charAt(Math.floor(Math.random()*a.length));if(e.data("tm_rndid",o),e.data("opts",s).data("tlis",[]).data("tlid",[]),null===s.output?(r=t("<input/>",{type:"hidden",name:s.hiddenTagListName}),e.after(r),e.data("lhiddenTagList",r)):e.data("lhiddenTagList",t(s.output)),s.AjaxPushAllTags&&(e.on("tm:spliced",i.pushAllTags),e.on("tm:popped",i.pushAllTags),e.on("tm:pushed",i.pushAllTags)),e.on("focus keypress",function(e){t(this).popover&&t(this).popover("hide")}),s.isClearInputOnEsc&&e.on("keyup",function(e){27===e.which&&(t(this).val(""),i.killEvent(e))}),e.on("keypress",function(t){i.keyInArray(t,s.delimiterChars)&&i.applyDelimiter.call(e,t)}),e.on("keydown",function(t){13===t.which&&s.preventSubmitOnEnter&&i.killEvent(t),i.keyInArray(t,s.delimiterKeys)&&i.applyDelimiter.call(e,t)}),s.deleteTagsOnBackspace&&e.on("keydown",function(r){i.keyInArray(r,s.backspace)&&t(this).val().length<=0&&(n.popTag.call(e),i.killEvent(r))}),s.fillInputOnTagRemove&&e.on("tm:popped",function(e,n){t(this).val(n)}),e.change(function(t){/webkit/.test(navigator.userAgent.toLowerCase())||e.focus(),i.killEvent(t)}),null!==s.prefilled)"object"==typeof s.prefilled?i.prefill.call(e,s.prefilled):"string"==typeof s.prefilled?i.prefill.call(e,s.prefilled.split(s.baseDelimiter)):"function"==typeof s.prefilled&&i.prefill.call(e,s.prefilled());else if(null!==s.output){if(t(s.output)&&t(s.output).val()){t(s.output)}i.prefill.call(e,t(s.output).val().split(s.baseDelimiter))}}),this}};t.fn.tagsManager=function(e){var r=t(this);return 0 in this?n[e]?n[e].apply(r,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(t.error("Method "+e+" does not exist."),!1):i.init.apply(this,arguments):this}}(jQuery),define("tagmanager",["jquery"],function(){}),define("form",["jquery","config","modal","laconic","tagmanager"],function(t,e,n){function i(t){return void 0===t&&(t=u),"col-xs-"+(12-t)}function r(e,n,i){return i=i||u,t.el.label({class:"control-label col-xs-"+i,for:e},n)}function o(e,n){var i={name:e,type:"checkbox"};return n=n||{},n.checked&&(i.checked="checked"),n.title&&(i.title=n.title),t.el.input(i)}function a(e,n){var i={name:e,type:"text",class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),n.title&&(i.title=n.title),n.value&&(i.value=n.value),n.disabled&&(i.disabled=n.disabled),n.readonly&&(i.readonly=n.readonly),n.type&&(i.type=n.type),t.el.input(i)}function s(e,n,i){var r={name:e,type:"text",class:"tm-input tag-list"};n&&(r.placeholder=n);var o=t.el.input(r);return i&&t(o).data("prefilled",i),o}function l(e,n){var i={name:e,class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),t.el.textarea(i,n.value||"")}function c(e,n,i){var r=t(t.el.select({class:"form-control",name:e}));i=i||{};for(var o=0;o<n.length;o++)!function(e){if("string"==typeof e)e==i.value?r.append(t.el.option({selected:"selected"},e)):r.append(t.el.option(e));else{var n={value:e.value};e.value==i.value&&(n.selected="selected"),r.append(t.el.option(n,e.label))}}(n[o]);return r[0]}var u=3,h={serializeAsObject:function(e,n){var i=e.serializeArray(),r=[],o={};e.find("div.checkboxes.array").each(function(){var e=t(this),n=[];e.find("input:checked").each(function(){var e=t(this).attr("name");n.push(e)}),e.find("input").each(function(){var e=t(this).attr("name");r.push(e)}),o[e.attr("name")]=n});for(var a=0;a<i.length;a++){var s,l=i[a].name,c=i[a].value,u=e.find('[name="'+l+'"]'),h=u.prop("type");(s=u.data("json-value"))?o[l]=s:""==c&&1!=n||("hidden"==h&&0==l.indexOf("hidden-")?(l=l.slice("hidden-".length),void 0==o[l]?o[l]=c.split(","):o[l]=c.split(",").concat(o[l])):"text"==h&&u.hasClass("tag-list")?""!=c&&(void 0!==o[l]?o[l].push(c):o[l]=[c]):"number"==h?o[l]=parseInt(c):"checkbox"==h?-1==r.indexOf(l)&&(o[l]="on"==c):o[l]=c)}return e.find("[type=checkbox]").each(function(){var e=t(this),n=e.prop("name");1!=e.prop("disabled")&&void 0===o[n]&&-1==r.indexOf(n)&&(o[n]=!1)}),o},formError:function(t,e){if(t.find(".has-error").removeClass("has-error"),t.find(".help-block.with-errors").remove(),e)if("form_error"==e.code||"input_error"==e.code){errors=e.data.split("\n");for(var i=0;i<errors.length;i++){var r=errors[i].split(/:\s*(.*)?/);h.fieldError(t,r[0],r[1])}}else n.alert(e.data)},fieldError:function(e,n,i){var r=e.find("input[name="+n+"]");if(r.length>0){var o=r.closest(".form-group");r.parent().hasClass("input-group")&&(r=r.parent()),o.addClass("has-error"),r.after(t.el.p({class:"help-block with-errors"},i))}else alert("Missing value for "+n)},showDialog:function(e){t(".swish-event-receiver").trigger("dialog",e)},formBroadcast:function(e,n){t(".swish-event-receiver").trigger(e,n)},dyn_clear:function(e,n){e.find('.has-clear input[type="text"]').on("input propertychange",function(){var e=t(this),n=Boolean(e.val());e.siblings(".form-control-clear").toggleClass("hidden",!n)}).trigger("propertychange"),e.find(".form-control-clear").click(function(){var e=t(this).siblings('input[type="text"]');e.val("").trigger("propertychange").focus(),n&&n.call(e)})},fields:{fileName:function(n,s,l,c){var u,h,d,f="(leave empty for generated random name)",p=e.swish.community_examples&&void 0!=l;u=p?"Public | Example | name":"Public | name";var g=t.el.div({class:"form-group"},r("name",u),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked, other users can find this program"},o("public",{checked:s})),p?t.el.span({class:"input-group-addon",title:"If checked, add to examples menu"},o("example",{checked:l})):void 0,d=a("name",{placeholder:"Name "+f,title:"Public name of your program",value:n,disabled:c}),n?h=t.el.span({class:"input-group-btn"},t.el.button({class:"btn btn-success",type:"button"},"Fork")):void 0)));return h&&t(h).on("click",function(){var e=t(d).closest("form").find(".btn.btn-primary");t(d).attr("placeholder","Fork as "+f),t(d).val(""),e.text(e.text().replace("Update","Fork"))}),g},title:function(e){return t.el.div({class:"form-group"},r("title","Title"),t.el.div({class:i()},a("title",{placeholder:"Descriptive title",value:e})))},author:function(e,n){var o={placeholder:"Your name",value:e};return e&&n&&(o.readonly=!0,o.title="Verified author name"),t.el.div({class:"form-group"},r("author","Author"),t.el.div({class:i()},a("author",o)))},link:function(e){var n={readonly:!0,title:"Permalink",value:e};return t.el.div({class:"form-group"},r("link","Link"),t.el.div({class:i()},a("link",n)))},date:function(e,n,o){return o=o||r,t.el.div({class:"form-group"},r(o,n),t.el.div({class:i()},a(o,{disabled:!0,value:new Date(1e3*e).toLocaleString()})))},description:function(e){return t.el.div({class:"form-group"},r("description","Description"),t.el.div({class:i()},l("description",{value:e})))},commit_message:function(e){return t.el.div({class:"form-group"},r("commit_message","Changes"),t.el.div({class:i()},l("commit_message",{value:e,placeholder:"Describe your changes here"})))},description:function(e){return t.el.div({class:"form-group"},r("description","Description"),t.el.div({class:i()},l("description",{value:e,placeholder:"Description"})))},tags:function(e){return t.el.div({class:"form-group"},r("tags","Tags"),t.el.div({class:i()},s("tags","Tags help finding this code",e)))},modify:function(t,e){function n(n,r){i.push({name:n,label:r,value:-1!=t.indexOf(n),readonly:!e})}var i=[],r={name:"modify",label:"Can save new version",type:"array"};return n("any","Anyone"),n("login","Logged in users"),n("owner","Only me"),r.title=e?"Specify who can save an updated version of this file":"Only logged in users and owners can set permissions",h.fields.checkboxes(i,r)},follow:function(t){return h.fields.checkboxes([{name:"follow",label:"Follow this document",value:!!t,readonly:!t}],{name:"options",label:"",title:"Notify about activity (updates, chat)\nRequires being logged in with valid email"})},projection:function(e){return t.el.div({class:"form-group"},r("projection","Projection"),t.el.div({class:i()},a("projection",{placeholder:"Columns",value:e})))},csvFormat:function(e,n){return e=e||["prolog"],n=n||e[0],1==e.length?t.el.input({type:"hidden",name:"format",value:e[0]}):t.el.div({class:"form-group"},r("format","Format"),t.el.div({class:i()},c("format",e,{value:n})))},limit:function(e,n){return t.el.div({class:"form-group"},r("name","Distinct | limit"),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked only return distinct results"},o("distinct",{checked:n})),a("limit",{placeholder:"Maximum result count (blank for unlimited)",title:"Limit results",value:e}))))},checkboxes:function(e,n){var i;n=t.extend({name:"options",label:"Options",col:u},n||{});var o={class:"checkboxes col-xs-"+(12-n.col),name:n.name};n.title&&(o.title=n.title),n.type&&(o.class+=" "+n.type);for(var a=t.el.div({class:"form-group"},r(n.name,n.label,n.col),i=t.el.div(o)),s=0;s<e.length;s++){var l=e[s],c={type:"checkbox",name:l.name,autocomplete:"false"};l.value&&(c.checked="checked"),l.readonly&&(c.disabled="disabled"),t(i).append(t.el.label({class:"checkbox-inline"},t.el.input(c),l.label))}return a},chunk:function(e){return t.el.div({class:"form-group"},r("count","Initial solutions",3),t.el.div({class:"col-xs-9"},t.el.div({class:"input-group"},a("chunk",{title:"Initial number of solutions",type:"number",value:e}))))},name:function(e,n){return n=n||3,t.el.div({class:"form-group"},r("name","Name",n),t.el.div({class:"col-xs-"+(12-n)},a("name",{placeholder:"Name",value:e})))},filename:function(e,n){return n=n||3,t.el.div({class:"form-group"},r("filename","File name",n),t.el.div({class:"col-xs-"+(12-n)},a("filename",{placeholder:"File name",value:e})))},hidden:function(e,n){if(void 0!==n)return t.el.input({type:"hidden",name:e,value:n})},buttons:function(e){e=e||{};var n=e.label||"Save program",i=e.offset||u,r=t.el.button({name:"save",class:"btn btn-primary"},n);return t(r).on("click",function(n){var i=t(n.target).parents("form")[0],r=h.serializeAsObject(t(i));return e.action(n,r),t(n.target).parents(".modal").modal("hide"),n.preventDefault(),!1}),t.el.div({class:"form-group"},t.el.div({class:"col-xs-offset-"+i+" col-xs-"+(12-i)},r,t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel")))},radio:function(e,n,i){var r=t.el.div({class:"btn-group","data-toggle":"buttons"});i=i||"radio";for(var o=0;o<n.length;o++){var a="btn btn-default btn-xs";n[o].active&&(a+=" active");var s={type:i,name:e,autocomplete:"off",value:n[o].value},l={class:a};n[o].title&&(l.title=n[o].title),t(r).append(t.el.label(l,t.el.input(s),n[o].label))}return r}},widgets:{glyphIcon:function(e){return t.el.span({class:"glyphicon glyphicon-"+e})},typeIcon:function(e){return t.el.span({class:"dropdown-icon type-icon "+e})},glyphIconButton:function(e,n){var i={class:"btn",type:"button"};return n.action&&(i["data-action"]=n.action),n.title&&(i.title=n.title),n.class&&(i.class+=" "+n.class),t.el.button(i,h.widgets.glyphIcon(e))},dropdownButton:function(e,n){n||(n={});var i=n.divClass,r=n.ulClass,o=t.el.div({class:"btn-group dropdown"+(i?" "+i:"")},t.el.button({class:"dropdown-toggle","data-toggle":"dropdown"},e),t.el.ul({class:"dropdown-menu"+(r?" "+r:"")}));return n.actions&&h.widgets.populateMenu(t(o),n.client,n.actions),o},populateMenu:function(e,n,i){function r(e,i){var r=t(i).data("action");r&&r.call(n,i)}var o=e.find(".dropdown-menu"),a=o.data("menu")||{};for(var s in i)i.hasOwnProperty(s)&&function(e,n){if(void 0!==n)if(0==e.indexOf("--"))o.append(t.el.li({class:"divider"}));else{var i=t.el.a(e);t(i).data("action",n),o.append(t.el.li(i))}}(s,i[s]);return a.bound||(a.bound=!0,o.on("click","a",function(t){r(t,this)})),o.data("menu",a),e}}};return h}),define("utils",["jquery"],function(t){var e={htmlEncode:function(t){return t?document.createElement("a").appendChild(document.createTextNode(t)).parentNode.innerHTML:""},generateUUID:function(){var t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)})},flash:function(t){t.addClass("flash"),setTimeout(function(){t.removeClass("flash")},1500)},ago:function(t){var e=(new Date).getTime()/1e3-t;return e<20?"just now":e<60?"less then a minute ago":(e=Math.round(e/60))<120?e+" minutes ago":(e=Math.round(e/60))<48?e+" hours ago":(e=Math.round(e/24))<360?e+" days ago":(e=Math.round(e/365))+" years ago"},basename:function(t){return t?t.split("/").pop():null}};return"function"!=typeof String.prototype.startsWith&&(String.prototype.startsWith=function(t){return 0===this.lastIndexOf(t,0)}),e}),define("history",["jquery","preferences","form","utils"],function(t,e,n,i){var r={push:function(t){if(window.location.pathname!=t.url){var e={location:t.url,reason:t.reason};window.history.pushState(e,"",t.url),document.title="SWISH -- "+(t.url?i.basename(t.url):"SWI-Prolog for SHaring")}},pop:function(t){},recentMaxLength:10,addRecent:function(t){for(var n=e.getVal("recentDocuments")||[],i=0;i<n.length;i++)if(function(t,e){return t.type==e.type&&t.id==e.id}(t,n[i])){n.splice(i,1);break}for(;n.length+1>r.recentMaxLength;)n.pop();n.splice(0,0,t),e.setVal("recentDocuments",n)},openRecent:function(t,e){return r.openRecent[e.st_type](t,e)},updateRecentUL:function(){var i=t(this),r=e.getVal("recentDocuments")||[];i.html("");for(var o=0;o<r.length;o++){var a=r[o];if(a.id){var s=t.el.a(n.widgets.typeIcon(a.id.split(".").pop()),a.label||a.id);t(s).data("document",a),i.append(t.el.li(s))}}}};return r.openRecent.gitty=function(e,n){t(e.target).parents(".swish").swish("playFile",n.id)},window.onpopstate=r.pop,r}),define("chat",["jquery","config","preferences","form","modal","utils"],function(t,e,n,i,r,o){!function(t){function a(e,r){r=r||{};var o,a,l=r.name;l||"self"!=r.role||(l="Me"),l||(l=e);var c=t.el.li({class:"dropdown user",id:e,title:l},a=t.el.a({class:"dropdown-toggle avatar","data-toggle":"dropdown"},s(r)),o=t.el.ul({class:"dropdown-menu pull-right",title:""}));if("self"==r.role){t(a).append(t.el.b({class:"caret"}));var u=t.el.input({type:"text",placeholder:"Nick name",value:r.name||"",title:"Nick name"});o.append(t.el.li(u)),t(u).keypress(function(e){if(13==e.which){var i=t(u).val().trim();""!=i&&(t("#chat").trigger("send",{type:"set-nick-name",name:i}),n.setVal("nick-name",i)),t(u).closest(".dropdown.open").removeClass("open")}}),i.widgets.populateMenu(t(c),t("#chat"),{}),o.append(t.el.li({class:"divider"}))}return c}function s(e){return e.avatar?t.el.img({class:"avatar",src:e.avatar}):t.el.span({class:"avatar glyphicon glyphicon-user"})}function l(){return(new Date).getTime()}var c=1e3,u=null,h={_init:function(n){return this.each(function(){var n=t(this),i={};n.data("chat",i),n.on("click",function(e){var i=t(e.target).closest("li.user");1==i.length&&n.chat("unnotify",i.attr("id"))}),n.on("send",function(t,e){n.chat("send",e)}),t(window).bind("beforeunload",function(){n.chat("disconnect")}),e.swish.chat&&n.chat("connect")})},connect:function(){function t(t,i){var r=n.getVal(i);r&&("anon-avatar"==i&&(r=e.http.locations.avatar+r.split("/").pop()),o+=a+t+"="+encodeURIComponent(r),a="&")}var i=this,r=this.data("chat"),o=window.location.host+e.http.locations.swish_chat,a="?",s=window.location.protocol.replace("http","ws");if(r.connection&&1==r.connection.readyState)return this;t("avatar","anon-avatar"),t("nickname","nick-name"),r.reconnect&&(o+=a+"reconnect="+encodeURIComponent(r.reconnect),a="&");try{r.connection=new WebSocket(s+"//"+o,["v1.chat.swish.swi-prolog.org"])}catch(t){return void i.chat("userCount",void 0)}r.connection.onerror=function(t){i.chat("userCount",void 0)},r.connection.onclose=function(t){null==u?(c*=2)>3e5&&(c=3e5):l()-u>3e5?c=1e3:(c*=2)>3e5&&(c=3e5),setTimeout(function(){i.chat("connect")},c)},r.connection.onmessage=function(t){var e=JSON.parse(t.data);e.origin=t.origin,e.type?i.chat(e.type,e):console.log(t)},r.connection.onopen=function(){}},empty_queue:function(){for(var t=this.data("chat");t.queue&&t.queue.length>0&&1==t.connection.readyState;){var e=t.queue.shift();t.connection.send(e)}},disconnect:function(){var t=this.data("chat");return t.connection&&(this.chat("send",{type:"unload"}),t.connection.onclose=function(){},t.connection.close(),t.connection=void 0),this},send:function(t){var e=this.data("chat");if(e&&e.connection){var n=JSON.stringify(t);1!=e.connection.readyState?(e.queue?e.queue.push(n):e.queue=[n],this.chat("connect")):e.connection.send(n)}return this},subscribe:function(t,e){var n={type:"subscribe",channel:t};e&&(n.sub_channel=e),this.chat("send",n)},unsubscribe:function(t,e){var n={type:"unsubscribe",channel:t};sub_channel&&(n.sub_channel=sub_channel),this.chat("send",n)},welcome:function(e){var i=this.data("chat");i.wsid&&i.wsid!=e.wsid&&this.html(""),i.wsid=e.wsid,i.reconnect=e.reconnect,e.avatar&&"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar),e.role="self";var r=this.chat("addUser",e);t(r).addClass("myself"),this.chat("userCount",e.visitors),u=l(),e.check_login?t("#login").login("update","check"):t(".sourcelist").trigger("login"),t(".storage").storage("chat_status"),this.chat("empty_queue")},userCount:function(e){var n=t("#user-count");void 0==e?n.parent().hide():(n.parent().show(),n.text(e))},gazers:function(t){if(t.gazers)for(var e=0;e<t.gazers.length;e++){var n=t.gazers[e];this.chat("addUser",n),n.file&&this.chat("addUserFile",n.wsid,n.file)}},profile:function(e){var i=this.data("chat"),r=t("#"+e.wsid);r.children("a").html("").append(s(e)),e.avatar&&(t("*[data-userid="+e.wsid+"] img.avatar").attr("src",e.avatar),"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar)),e.name&&(r.prop("title",e.name),"set-nick-name"==e.reason&&(e.html="Named <i>"+o.htmlEncode(e.name)+"</i>",
+this.chat("notifyUser",e))),i.wsid==e.wsid&&t(".sourcelist").trigger("login")},rejoined:function(e){var n=t("#"+e.wsid);this.chat("lost",n,!1),e.visitors&&this.chat("userCount",e.visitors)},joined:function(t){t.visitors&&this.chat("userCount",t.visitors)},session_closed:function(){t("#login").login("update","session-closed")},notify:function(t){this.chat("notifyUser",t)},"chat-message":function(n){var i=t("div.chatroom").chatroom("rooms",n.docid);t(".storage").storage("chat_message",n),n.docid=="gitty:"+e.swish.hangout&&t("#broadcast-bell").chatbell("chat-message",n),i.length>0?(i.chatroom("add",n),n.displayed=!0):t("#"+n.user.id).length>0&&(msg=t.extend({},n),msg.wsid=n.user.id,msg.html="Wants to chat",this.chat("notifyUser",msg))},forbidden:function(t){r.alert(t.message||"Action is forbidden")},read_until:function(t,e){n.setDocVal(t,"chatBar",e)},broadcast_room:function(){return this.closest(".swish").find(".storage").storage("match",{file:e.swish.hangout})},notifyUser:function(t){var n=this;(function(t){return("opened"==t.event||"closed"==t.event)&&t.event_argv&&t.event_argv[0]==e.swish.hangout})(t)&&!this.chat("broadcast_room")&&(t.create_user=!1);var i=this.chat("addUser",t);i&&i.length>0&&(t.onremove=function(){n.chat("unnotify",t.wsid)},r.notify(i,t),this.chat("updateFiles",t))},unnotify:function(e){return t("#"+e).hasClass("removed")&&this.chat("removeUser",e),this},updateFiles:function(e){function n(){return e.event_argv[0]}var i=t(this).data("chat");if("opened"==e.event)this.chat("addUserFile",e.wsid,n());else if("closed"==e.event){var r=e.wsid==i.wsid?void 0:e.wsid;this.chat("removeUserFile",r,n(),!0)}},addUser:function(e){var n=t("#"+e.wsid);if(0==n.length){if(0==e.create_user)return null;n=t(a(e.wsid,e)),this.prepend(n)}else this.chat("lost",n,!1);return n},removeUser:function(e){"string"==typeof e&&(e={wsid:e}),void 0!==e.visitors&&this.chat("userCount",e.visitors);var n=t("#"+e.wsid);return 0==n.length?this:("close"!=e.reason?t("#ntf-"+e.wsid).length>0?n.addClass("removed"):n.hide(400,function(){this.remove()}):this.chat("lost",n,!0),this)},lost:function(e,n){n?e.addClass("lost"):e.removeClass("lost"),e.each(function(){var i=t(this);if(n)i.data("lost-timer",setTimeout(function(){e.hasClass("lost")&&e.remove()},6e4));else{var r=i.data("lost-timer");r&&(clearTimeout(r),i.data("lost-timer",void 0))}})},user_info:function(e){var n=t(this),i={};if((!e||e.indexOf("id")>=0)&&(i.id=n.attr("id")),!e||e.indexOf("name")>=0){var r=n.prop("title");r&&"Me"!==r&&(i.name=r)}return(!e||e.indexOf("avatar")>=0)&&(i.avatar=n.find("img.avatar").attr("src")),i},users:function(e){var n=[],i={users:n};return this.find("li.user[id]").each(function(){var r=t(this),o=r.hasClass("myself"),a=r.chat("user_info",o?void 0:e);o&&(i.self=t.extend({},a),a.is_self=!0),n.push(a)}),i},self:function(t){return this.find("li.user.myself[id]").chat("user_info",t)},addUserFile:function(e,n){var i,r=t("#"+e),o=r.find("ul.dropdown-menu");if(o.find("li.file").each(function(){if(t(this).data("file")==n)return i=this,!1}),void 0==i){var a=n.split(".").pop();o.append(t.el.li({class:"file","data-file":n,title:"Shared file"},t.el.a(t.el.span({class:"dropdown-icon type-icon "+a}),n)))}return this},removeUserFile:function(e,n,i){function r(e){var r=e.children("ul.dropdown-menu");r.find("li.file").each(function(){if(t(this).data("file")==n)return t(this).remove(),i&&!e.hasClass("myself")&&0==r.find("li.file").length&&o.chat("removeUser",e.attr("id")),!1})}var o=this;e?r(t("#"+e)):this.children().each(function(){r(t(this))})}};t.fn.chat=function(e){return h[e]?h[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.chat"):h._init.apply(this,arguments)}}(jQuery)}),function(t,e){var n=0,i=null,r=[],o=null;t.fn.split=function(e){function a(t){if("number"==typeof t)return t;if("string"==typeof t){var e=t.match(/^([0-9\.]+)(px|%)$/);if(e){if("px"==e[2])return+e[1];if("vertical"==u.orientation)return f*+e[1]/100;if("horizontal"==u.orientation)return p*+e[1]/100}}}var s=this.data("splitter");if(s)return s;var l,c,u=t.extend({limit:100,orientation:"horizontal",position:"50%",invisible:!1,onDragStart:t.noop,onDragEnd:t.noop,onDrag:t.noop},e||{});this.settings=u;var h,d=this.children();"vertical"==u.orientation?(l=d.first().addClass("left_panel"),c=l.next().addClass("right_panel"),h="vsplitter"):"horizontal"==u.orientation&&(l=d.first().addClass("top_panel"),c=l.next().addClass("bottom_panel"),h="hsplitter"),u.invisible&&(h+=" splitter-invisible");var f=this.width(),p=this.height(),g=n++;this.addClass("splitter_panel");var m,v=t("<div/>").addClass(h).bind("mouseenter touchstart",function(){i=g}).bind("mouseleave touchend",function(){i=null}).insertAfter(l),y=t.extend(this,{refresh:function(){var t=this.width(),e=this.height();f==t&&p==e||(f=this.width(),p=this.height(),y.position(m))},position:function(){return"vertical"==u.orientation?function(t,e){if(void 0===t)return m;m=a(t);var n=v.width(),i=n/2;if(u.invisible){var r=l.width(m).outerWidth();c.width(y.width()-r),v.css("left",r-i)}else{var r=l.width(m-i).outerWidth();c.width(y.width()-r-n),v.css("left",r)}return e||y.find(".splitter_panel").trigger("splitter.resize"),y}:"horizontal"==u.orientation?function(t,e){if(void 0===t)return m;m=a(t);var n=v.height(),i=n/2;if(u.invisible){var r=l.height(m).outerHeight();c.height(y.height()-r),v.css("top",r-i)}else{var r=l.height(m-i).outerHeight();c.height(y.height()-r-n),v.css("top",r)}return e||y.find(".splitter_panel").trigger("splitter.resize"),y}:t.noop}(),orientation:u.orientation,limit:u.limit,isActive:function(){return i===g},destroy:function(){y.removeClass("splitter_panel"),v.unbind("mouseenter"),v.unbind("mouseleave"),v.unbind("touchstart"),v.unbind("touchmove"),v.unbind("touchend"),v.unbind("touchleave"),v.unbind("touchcancel"),"vertical"==u.orientation?(l.removeClass("left_panel"),c.removeClass("right_panel")):"horizontal"==u.orientation&&(l.removeClass("top_panel"),c.removeClass("bottom_panel")),y.unbind("splitter.resize"),y.find(".splitter_panel").trigger("splitter.resize"),r[g]=null,v.remove();for(var e=!1,i=r.length;i--;)if(null!==r[i]){e=!0;break}e||(t(document.documentElement).unbind(".splitter"),t(window).unbind("resize.splitter"),y.data("splitter",null),r=[],n=0)}});y.bind("splitter.resize",function(t){var e=y.position();"vertical"==y.orientation&&e>y.width()?e=y.width()-y.limit-1:"horizontal"==y.orientation&&e>y.height()&&(e=y.height()-y.limit-1),e<y.limit&&(e=y.limit+1),y.position(e,!0)});var x;return"vertical"==u.orientation?x=x>f-u.limit?f-u.limit:a(u.position):"horizontal"==u.orientation&&(x=x>p-u.limit?p-u.limit:a(u.position)),x<u.limit&&(x=u.limit),y.position(x,!0),0==r.length&&(t(window).bind("resize.splitter",function(){t.each(r,function(t,e){e&&e.refresh()})}),t(document.documentElement).bind("mousedown.splitter touchstart.splitter",function(e){if(null!==i)return o=r[i],t('<div class="splitterMask"></div>').css("cursor",o.children().eq(1).css("cursor")).insertAfter(o),o.settings.onDragStart(e),!1}).bind("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter",function(e){o&&(t(".splitterMask").remove(),o.settings.onDragEnd(e),o=null)}).bind("mousemove.splitter touchmove.splitter",function(t){if(null!==o){var e=o.limit,n=o.offset();if("vertical"==o.orientation){var i=t.pageX;t.originalEvent&&t.originalEvent.changedTouches&&(i=t.originalEvent.changedTouches[0].pageX);var r=i-n.left;r<=o.limit?r=o.limit+1:r>=o.width()-e&&(r=o.width()-e-1),r>o.limit&&r<o.width()-e&&(o.position(r,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}else if("horizontal"==o.orientation){var a=t.pageY;t.originalEvent&&t.originalEvent.changedTouches&&(a=t.originalEvent.changedTouches[0].pageY);var s=a-n.top;s<=o.limit?s=o.limit+1:s>=o.height()-e&&(s=o.height()-e-1),s>o.limit&&s<o.height()-e&&(o.position(s,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}o.settings.onDrag(t)}})),r.push(y),y.data("splitter",y),y}}(jQuery),define("splitter",["jquery"],function(){}),define("pane",["jquery","splitter"],function(){!function(t){function e(e){var n=e.children();return{splitter:e.split(),first:t(n[0]).children()[0],second:t(n[2]).children()[0]}}function n(t){return"horizontal"==t?"vertical":"horizontal"}var i={_init:function(e){return this.each(function(){var e=t(this),n=e.hasClass("horizontal")?"vertical":"horizontal",i=e.attr("data-split"),r=e.children();i=i||"50%",r.each(function(){t(this).wrap('<div class="pane-wrapper"></div>')}),e.addClass("pane-container"),e.split({orientation:n,position:i,limit:10,onDragStart:function(){e.tile("resize_start")},onDrag:function(t){r.trigger("pane.resize")},onDragEnd:function(){e.tile("resize_save")}}),e.tile("resize_save"),e.on("fullscreen",function(t,n){e.tile("resize")})})},resize_start:function(){return this.each(function(){var n=t(this),i=e(n);n.find(".reactive-size").trigger("reactive-resize-start",i.splitter.orientation)})},resize_save:function(){return this.each(function(){var n,i,r=t(this),o=e(r);"horizontal"==o.splitter.orientation?(n=r.height(),i=t(o.first).height()):(n=r.width(),i=t(o.first).width());var a=Math.round(100*i/n)+"%";o.splitter.resizestart=a}),this.find(".reactive-size").trigger("reactive-resize"),this},resize:function(){return this.each(function(){var e=t(this),n=e.split();n.resizestart&&(n.position(n.resizestart),n.settings.onDrag(e))})},split:function(e,i,r,o){i=i||"below";var a=this,s="above"==i||"below"==i?"horizontal":"vertical",l=a.wrap('<div class="pane-container tile "'+n(s)+"></div>").parent();void 0==r?r=50:r<10?r=10:r>90&&(r=90),o&&"horizontal"==s&&(sumh=this.height(),left=sumh*r/100,left<o&&o<.9*sumh&&(r=100*o/sumh)),"above"==i||"left"==i?l.prepend(e):(r=100-r,l.append(e));var c=t(a).add(e);return c.wrap('<div class="pane-wrapper"></div>'),l.split({orientation:s,position:r+"%",limit:10,onDragStart:function(){l.tile("resize_start")},onDrag:function(){c.trigger("pane.resize")},onDragEnd:function(){l.tile("resize_save")}}),l.tile("resize_save"),c.trigger("pane.resize"),l},close:function(){var t=this,e=t.closest(".pane-container");e.split().destroy(),t.parent().remove(),e.children().first().children().first().unwrap().unwrap()}};t.fn.tile=function(e){return i[e]?i[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.tile"):i._init.apply(this,arguments)}}(jQuery)}),function(t,e){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(n){return t.Bloodhound=e(n)}):"object"==typeof exports?module.exports=e(require("jquery")):t.Bloodhound=e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return void 0===t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n="0.11.1",i=function(){"use strict";function t(t){return t=e.toStr(t),t?t.split(/\s+/):[]}function n(t){return t=e.toStr(t),t?t.split(/\W+/):[]}function i(t){return function(n){return n=e.isArray(n)?n:[].slice.call(arguments,0),function(i){var r=[];return e.each(n,function(n){r=r.concat(t(e.toStr(i[n])))}),r}}}return{nonword:n,whitespace:t,obj:{nonword:i(n),whitespace:i(t)}}}(),r=function(){"use strict";function n(n){this.maxSize=e.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=t.noop)}function i(){this.head=this.tail=null}function r(t,e){this.key=t,this.val=e,this.prev=this.next=null}return e.mixin(n.prototype,{set:function(t,e){var n,i=this.list.tail;this.size>=this.maxSize&&(this.list.remove(i),delete this.hash[i.key],this.size--),(n=this.hash[t])?(n.val=e,this.list.moveToFront(n)):(n=new r(t,e),this.list.add(n),this.hash[t]=n,this.size++)},get:function(t){var e=this.hash[t];if(e)return this.list.moveToFront(e),e.val},reset:function(){this.size=0,this.hash={},this.list=new i}}),e.mixin(i.prototype,{add:function(t){this.head&&(t.next=this.head,this.head.prev=t),this.head=t,this.tail=this.tail||t},remove:function(t){t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev},moveToFront:function(t){this.remove(t),this.add(t)}}),n}(),o=function(){"use strict";function n(t,n){this.prefix=["__",t,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+e.escapeRegExChars(this.prefix)),this.ls=n||s,!this.ls&&this._noop()}function i(){return(new Date).getTime()}function r(t){return JSON.stringify(e.isUndefined(t)?null:t)}function o(e){return t.parseJSON(e)}function a(t){var e,n,i=[],r=s.length;for(e=0;e<r;e++)(n=s.key(e)).match(t)&&i.push(n.replace(t,""));return i}var s;try{s=window.localStorage,s.setItem("~~~","!"),s.removeItem("~~~")}catch(t){s=null}return e.mixin(n.prototype,{_prefix:function(t){return this.prefix+t},_ttlKey:function(t){return this._prefix(t)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=e.noop},_safeSet:function(t,e){try{this.ls.setItem(t,e)}catch(t){"QuotaExceededError"===t.name&&(this.clear(),this._noop())}},get:function(t){return this.isExpired(t)&&this.remove(t),o(this.ls.getItem(this._prefix(t)))},set:function(t,n,o){return e.isNumber(o)?this._safeSet(this._ttlKey(t),r(i()+o)):this.ls.removeItem(this._ttlKey(t)),this._safeSet(this._prefix(t),r(n))},remove:function(t){return this.ls.removeItem(this._ttlKey(t)),this.ls.removeItem(this._prefix(t)),this},clear:function(){var t,e=a(this.keyMatcher);for(t=e.length;t--;)this.remove(e[t]);return this},isExpired:function(t){var n=o(this.ls.getItem(this._ttlKey(t)));return!!(e.isNumber(n)&&i()>n)}}),n}(),a=function(){"use strict";function n(t){t=t||{},this.cancelled=!1,this.lastReq=null,this._send=t.transport,this._get=t.limiter?t.limiter(this._get):this._get,this._cache=!1===t.cache?new r(0):s}var i=0,o={},a=6,s=new r(10);return n.setMaxPendingRequests=function(t){a=t},n.resetCache=function(){s.reset()},e.mixin(n.prototype,{_fingerprint:function(e){return e=e||{},e.url+e.type+t.param(e.data||{})},_get:function(t,e){function n(t){e(null,t),u._cache.set(l,t)}function r(){e(!0)}function s(){i--,delete o[l],u.onDeckRequestArgs&&(u._get.apply(u,u.onDeckRequestArgs),u.onDeckRequestArgs=null)}var l,c,u=this;l=this._fingerprint(t),this.cancelled||l!==this.lastReq||((c=o[l])?c.done(n).fail(r):i<a?(i++,o[l]=this._send(t).done(n).fail(r).always(s)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(n,i){var r,o;i=i||t.noop,n=e.isString(n)?{url:n}:n||{},o=this._fingerprint(n),this.cancelled=!1,this.lastReq=o,(r=this._cache.get(o))?i(null,r):this._get(n,i)},cancel:function(){this.cancelled=!0}}),n}(),s=window.SearchIndex=function(){"use strict";function n(n){n=n||{},n.datumTokenizer&&n.queryTokenizer||t.error("datumTokenizer and queryTokenizer are both required"),this.identify=n.identify||e.stringify,this.datumTokenizer=n.datumTokenizer,this.queryTokenizer=n.queryTokenizer,this.reset()}function i(t){return t=e.filter(t,function(t){return!!t}),t=e.map(t,function(t){return t.toLowerCase()})}function r(){var t={};return t[l]=[],t[s]={},t}function o(t){for(var e={},n=[],i=0,r=t.length;i<r;i++)e[t[i]]||(e[t[i]]=!0,n.push(t[i]));return n}function a(t,e){var n=0,i=0,r=[];t=t.sort(),e=e.sort();for(var o=t.length,a=e.length;n<o&&i<a;)t[n]<e[i]?n++:t[n]>e[i]?i++:(r.push(t[n]),n++,i++);return r}var s="c",l="i";return e.mixin(n.prototype,{bootstrap:function(t){this.datums=t.datums,this.trie=t.trie},add:function(t){var n=this;t=e.isArray(t)?t:[t],e.each(t,function(t){var o,a;n.datums[o=n.identify(t)]=t,a=i(n.datumTokenizer(t)),e.each(a,function(t){var e,i,a;for(e=n.trie,i=t.split("");a=i.shift();)e=e[s][a]||(e[s][a]=r()),e[l].push(o)})})},get:function(t){var n=this;return e.map(t,function(t){return n.datums[t]})},search:function(t){var n,r,c=this;return n=i(this.queryTokenizer(t)),e.each(n,function(t){var e,n,i,o;if(r&&0===r.length)return!1;for(e=c.trie,n=t.split("");e&&(i=n.shift());)e=e[s][i];if(!e||0!==n.length)return r=[],!1;o=e[l].slice(0),r=r?a(r,o):o}),r?e.map(o(r),function(t){return c.datums[t]}):[]},all:function(){var t=[];for(var e in this.datums)t.push(this.datums[e]);return t},reset:function(){this.datums={},this.trie=r()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),l=function(){"use strict";function t(t){this.url=t.url,this.ttl=t.ttl,this.cache=t.cache,this.prepare=t.prepare,this.transform=t.transform,this.transport=t.transport,this.thumbprint=t.thumbprint,this.storage=new o(t.cacheKey)}var n;return n={data:"data",protocol:"protocol",thumbprint:"thumbprint"},e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(t){this.cache&&(this.storage.set(n.data,t,this.ttl),this.storage.set(n.protocol,location.protocol,this.ttl),this.storage.set(n.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var t,e={};return this.cache?(e.data=this.storage.get(n.data),e.protocol=this.storage.get(n.protocol),e.thumbprint=this.storage.get(n.thumbprint),t=e.thumbprint!==this.thumbprint||e.protocol!==location.protocol,e.data&&!t?e.data:null):null},fromNetwork:function(t){function e(){t(!0)}function n(e){t(null,r.transform(e))}var i,r=this;t&&(i=this.prepare(this._settings()),this.transport(i).fail(e).done(n))},clear:function(){return this.storage.clear(),this}}),t}(),c=function(){"use strict";function t(t){this.url=t.url,this.prepare=t.prepare,this.transform=t.transform,this.transport=new a({cache:t.cache,limiter:t.limiter,transport:t.transport})}return e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(t,e){function n(t,n){e(t?[]:r.transform(n))}var i,r=this;if(e)return t=t||"",i=this.prepare(t,this._settings()),this.transport.get(i,n)},cancelLastRequest:function(){this.transport.cancel()}}),t}(),u=function(){"use strict";function i(i){var r;return i?(r={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:e.identity,transform:e.identity,transport:null},i=e.isString(i)?{url:i}:i,i=e.mixin(r,i),!i.url&&t.error("prefetch requires url to be set"),i.transform=i.filter||i.transform,i.cacheKey=i.cacheKey||i.url,i.thumbprint=n+i.thumbprint,i.transport=i.transport?s(i.transport):t.ajax,i):null}function r(n){var i;if(n)return i={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:e.identity,transport:null},n=e.isString(n)?{url:n}:n,n=e.mixin(i,n),!n.url&&t.error("remote requires url to be set"),n.transform=n.filter||n.transform,n.prepare=o(n),n.limiter=a(n),n.transport=n.transport?s(n.transport):t.ajax,delete n.replace,delete n.wildcard,delete n.rateLimitBy,delete n.rateLimitWait,n}function o(t){function e(t,e){return e.url=o(e.url,t),e}function n(t,e){return e.url=e.url.replace(a,encodeURIComponent(t)),e}function i(t,e){return e}var r,o,a;return r=t.prepare,o=t.replace,a=t.wildcard,r||(r=o?e:t.wildcard?n:i)}function a(t){var n,i,r;return n=t.limiter,i=t.rateLimitBy,r=t.rateLimitWait,n||(n=/^throttle$/i.test(i)?function(t){return function(n){return e.throttle(n,t)}}(r):function(t){return function(n){return e.debounce(n,t)}}(r)),n}function s(n){return function(i){function r(t){e.defer(function(){a.resolve(t)})}function o(t){e.defer(function(){a.reject(t)})}var a=t.Deferred();return n(i,r,o),a}}return function(n){var o,a;return o={initialize:!0,identify:e.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},n=e.mixin(o,n||{}),!n.datumTokenizer&&t.error("datumTokenizer is required"),!n.queryTokenizer&&t.error("queryTokenizer is required"),a=n.sorter,n.sorter=a?function(t){return t.sort(a)}:e.identity,n.local=e.isFunction(n.local)?n.local():n.local,n.prefetch=i(n.prefetch),n.remote=r(n.remote),n}}();return function(){"use strict";function n(t){t=u(t),this.sorter=t.sorter,this.identify=t.identify,this.sufficient=t.sufficient,this.local=t.local,this.remote=t.remote?new c(t.remote):null,this.prefetch=t.prefetch?new l(t.prefetch):null,this.index=new s({identify:this.identify,datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),!1!==t.initialize&&this.initialize()}var r;return r=window&&window.Bloodhound,n.noConflict=function(){return window&&(window.Bloodhound=r),n},n.tokenizers=i,e.mixin(n.prototype,{__ttAdapter:function(){function t(t,e,i){return n.search(t,e,i)}function e(t,e){return n.search(t,e)}var n=this;return this.remote?t:e},_loadPrefetch:function(){function e(t,e){if(t)return n.reject();r.add(e),r.prefetch.store(r.index.serialize()),n.resolve()}var n,i,r=this;return n=t.Deferred(),this.prefetch?(i=this.prefetch.fromCache())?(this.index.bootstrap(i),n.resolve()):this.prefetch.fromNetwork(e):n.resolve(),n.promise()},_initialize:function(){function t(){e.add(e.local)}var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(t),this.initPromise},initialize:function(t){return!this.initPromise||t?this._initialize():this.initPromise},add:function(t){return this.index.add(t),this},get:function(t){return t=e.isArray(t)?t:[].slice.call(arguments),this.index.get(t)},search:function(t,n,i){function r(t){var n=[];e.each(t,function(t){!e.some(o,function(e){return a.identify(t)===a.identify(e)})&&n.push(t)}),i&&i(n)}var o,a=this;return o=this.sorter(this.index.search(t)),n(this.remote?o.slice():o),this.remote&&o.length<this.sufficient?this.remote.get(t,r):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return a.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),n}()}),function(t,e){"function"==typeof define&&define.amd?define("typeahead.js",["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(0,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return void 0===t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n=function(){"use strict";function t(t){var a,s;return s=e.mixin({},o,t),a={css:r(),classes:s,html:n(s),selectors:i(s)},{css:a.css,html:a.html,classes:a.classes,selectors:a.selectors,mixin:function(t){e.mixin(t,a)}}}function n(t){return{wrapper:'<span class="'+t.wrapper+'"></span>',menu:'<div class="'+t.menu+'"></div>'}}function i(t){var n={};return e.each(t,function(t,e){n[e]="."+t}),n}function r(){var t={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return e.isMsie()&&e.mixin(t.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),t}var o={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return t}(),i=function(){"use strict";function n(e){e&&e.el||t.error("EventBus initialized without el"),this.$el=t(e.el)}var i,r;return i="typeahead:",r={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},e.mixin(n.prototype,{_trigger:function(e,n){var r;return r=t.Event(i+e),(n=n||[]).unshift(r),this.$el.trigger.apply(this.$el,n),r},before:function(t){var e,n;return e=[].slice.call(arguments,1),n=this._trigger("before"+t,e),n.isDefaultPrevented()},trigger:function(t){var e;this._trigger(t,[].slice.call(arguments,1)),(e=r[t])&&this._trigger(e,[].slice.call(arguments,1))}}),n}(),r=function(){"use strict";function t(t,e,n,i){var r;if(!n)return this;for(e=e.split(s),n=i?a(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function e(e,n,i){return t.call(this,"async",e,n,i)}function n(e,n,i){return t.call(this,"sync",e,n,i)}function i(t){var e;if(!this._callbacks)return this;for(t=t.split(s);e=t.shift();)delete this._callbacks[e];return this}function r(t){var e,n,i,r,a;if(!this._callbacks)return this;for(t=t.split(s),i=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)r=o(n.sync,this,[e].concat(i)),a=o(n.async,this,[e].concat(i)),r()&&l(a);return this}function o(t,e,n){function i(){for(var i,r=0,o=t.length;!i&&r<o;r+=1)i=!1===t[r].apply(e,n);return!i}return i}function a(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var s=/\s+/,l=function(){return window.setImmediate?function(t){setImmediate(function(){t()})}:function(t){setTimeout(function(){t()},0)}}();return{onSync:n,onAsync:e,off:i,trigger:r}}(),o=function(t){"use strict";function n(t,n,i){for(var r,o=[],a=0,s=t.length;a<s;a++)o.push(e.escapeRegExChars(t[a]));return r=i?"\\b("+o.join("|")+")\\b":"("+o.join("|")+")",n?new RegExp(r):new RegExp(r,"i")}var i={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(r){function o(e){var n,i,o;return(n=s.exec(e.data))&&(o=t.createElement(r.tagName),r.className&&(o.className=r.className),i=e.splitText(n.index),i.splitText(n[0].length),o.appendChild(i.cloneNode(!0)),e.parentNode.replaceChild(o,i)),!!n}function a(t,e){for(var n,i=0;i<t.childNodes.length;i++)n=t.childNodes[i],3===n.nodeType?i+=e(n)?1:0:a(n,e)}var s;r=e.mixin({},i,r),r.node&&r.pattern&&(r.pattern=e.isArray(r.pattern)?r.pattern:[r.pattern],s=n(r.pattern,r.caseSensitive,r.wordsOnly),a(r.node,o))}}(window.document),a=function(){"use strict";function n(n,r){n=n||{},n.input||t.error("input is missing"),r.mixin(this),this.$hint=t(n.hint),this.$input=t(n.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=i(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=e.noop)}function i(e){return t('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:e.css("font-family"),fontSize:e.css("font-size"),fontStyle:e.css("font-style"),fontVariant:e.css("font-variant"),fontWeight:e.css("font-weight"),wordSpacing:e.css("word-spacing"),letterSpacing:e.css("letter-spacing"),textIndent:e.css("text-indent"),textRendering:e.css("text-rendering"),textTransform:e.css("text-transform")}).insertAfter(e)}function o(t,e){return n.normalizeQuery(t)===n.normalizeQuery(e)}function a(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var s;return s={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},n.normalizeQuery=function(t){return e.toStr(t).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},e.mixin(n.prototype,r,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(t){var e=s[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(t,e){var n;switch(t){case"up":case"down":n=!a(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!a(e);break;default:n=!0}return n},_checkLanguageDirection:function(){var t=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==t&&(this.dir=t,this.$hint.attr("dir",t),this.trigger("langDirChanged",t))},_setQuery:function(t,e){var n,i;n=o(t,this.query),i=!!n&&this.query.length!==t.length,this.query=t,e||n?!e&&i&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var t,n,i,r,o=this;return t=e.bind(this._onBlur,this),n=e.bind(this._onFocus,this),i=e.bind(this._onKeydown,this),r=e.bind(this._onInput,this),this.$input.on("blur.tt",t).on("focus.tt",n).on("keydown.tt",i),!e.isMsie()||e.isMsie()>9?this.$input.on("input.tt",r):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(t){s[t.which||t.keyCode]||e.defer(e.bind(o._onInput,o,t))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(t,e){this.setInputValue(t),this._setQuery(t,e)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(t){
+this.$input.val(t),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n,i;t=this.getInputValue(),e=this.getHint(),n=t!==e&&0===e.indexOf(t),!(i=""!==t&&n&&!this.hasOverflow())&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,n,i;return t=this.$input.val().length,n=this.$input[0].selectionStart,e.isNumber(n)?n===t:!document.selection||(i=document.selection.createRange(),i.moveStart("character",-t),t===i.text.length)},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=t("<div>")}}),n}(),s=function(){"use strict";function n(n,r){n=n||{},n.templates=n.templates||{},n.templates.notFound=n.templates.notFound||n.templates.empty,n.source||t.error("missing source"),n.node||t.error("missing node"),n.name&&!s(n.name)&&t.error("invalid dataset name: "+n.name),r.mixin(this),this.highlight=!!n.highlight,this.name=n.name||c(),this.limit=n.limit||5,this.displayFn=i(n.display||n.displayKey),this.templates=a(n.templates,this.displayFn),this.source=n.source.__ttAdapter?n.source.__ttAdapter():n.source,this.async=e.isUndefined(n.async)?this.source.length>2:!!n.async,this._resetLastSuggestion(),this.$el=t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}function i(t){function n(e){return e[t]}return t=t||e.stringify,e.isFunction(t)?t:n}function a(n,i){function r(e){return t("<div>").text(i(e))}return{notFound:n.notFound&&e.templatify(n.notFound),pending:n.pending&&e.templatify(n.pending),header:n.header&&e.templatify(n.header),footer:n.footer&&e.templatify(n.footer),suggestion:n.suggestion||r}}function s(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var l,c;return l={val:"tt-selectable-display",obj:"tt-selectable-object"},c=e.getIdGenerator(),n.extractData=function(e){var n=t(e);return n.data(l.obj)?{val:n.data(l.val)||"",obj:n.data(l.obj)||null}:null},e.mixin(n.prototype,r,{_overwrite:function(t,e){e=e||[],e.length?this._renderSuggestions(t,e):this.async&&this.templates.pending?this._renderPending(t):!this.async&&this.templates.notFound?this._renderNotFound(t):this._empty(),this.trigger("rendered",this.name,e,!1)},_append:function(t,e){e=e||[],e.length&&this.$lastSuggestion.length?this._appendSuggestions(t,e):e.length?this._renderSuggestions(t,e):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(t),this.trigger("rendered",this.name,e,!0)},_renderSuggestions:function(t,e){var n;n=this._getSuggestionsFragment(t,e),this.$lastSuggestion=n.children().last(),this.$el.html(n).prepend(this._getHeader(t,e)).append(this._getFooter(t,e))},_appendSuggestions:function(t,e){var n,i;n=this._getSuggestionsFragment(t,e),i=n.children().last(),this.$lastSuggestion.after(n),this.$lastSuggestion=i},_renderPending:function(t){var e=this.templates.pending;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_renderNotFound:function(t){var e=this.templates.notFound;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(n,i){var r,a=this;return r=document.createDocumentFragment(),e.each(i,function(e){var i,o;o=a._injectQuery(n,e),i=t(a.templates.suggestion(o)).data(l.obj,e).data(l.val,a.displayFn(e)).addClass(a.classes.suggestion+" "+a.classes.selectable),r.appendChild(i[0])}),this.highlight&&o({className:this.classes.highlight,node:r,pattern:n}),t(r)},_getFooter:function(t,e){return this.templates.footer?this.templates.footer({query:t,suggestions:e,dataset:this.name}):null},_getHeader:function(t,e){return this.templates.header?this.templates.header({query:t,suggestions:e,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=t()},_injectQuery:function(t,n){return e.isObject(n)?e.mixin({_query:t},n):n},update:function(e){function n(t){a||(a=!0,t=(t||[]).slice(0,r.limit),s=t.length,r._overwrite(e,t),s<r.limit&&r.async&&r.trigger("asyncRequested",e))}function i(n){n=n||[],!o&&s<r.limit&&(r.cancel=t.noop,s+=n.length,r._append(e,n.slice(0,r.limit-s)),r.async&&r.trigger("asyncReceived",e))}var r=this,o=!1,a=!1,s=0;this.cancel(),this.cancel=function(){o=!0,r.cancel=t.noop,r.async&&r.trigger("asyncCanceled",e)},this.source(e,n,i),!a&&n([])},cancel:t.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=t("<div>")}}),n}(),l=function(){"use strict";function n(n,i){function r(e){var n=o.$node.find(e.node).first();return e.node=n.length?n:t("<div>").appendTo(o.$node),new s(e,i)}var o=this;n=n||{},n.node||t.error("node is required"),i.mixin(this),this.$node=t(n.node),this.query=null,this.datasets=e.map(n.datasets,r)}return e.mixin(n.prototype,r,{_onSelectableClick:function(e){this.trigger("selectableClicked",t(e.currentTarget))},_onRendered:function(t,e,n,i){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",e,n,i)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function t(t){return t.isEmpty()}return e.every(this.datasets,t)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var t=this.getActiveSelectable();t&&t.removeClass(this.classes.cursor)},_ensureVisible:function(t){var e,n,i,r;e=t.position().top,n=e+t.outerHeight(!0),i=this.$node.scrollTop(),r=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),e<0?this.$node.scrollTop(i+e):r<n&&this.$node.scrollTop(i+(n-r))},bind:function(){var t,n=this;return t=e.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,t),e.each(this.datasets,function(t){t.onSync("asyncRequested",n._propagate,n).onSync("asyncCanceled",n._propagate,n).onSync("asyncReceived",n._propagate,n).onSync("rendered",n._onRendered,n).onSync("cleared",n._onCleared,n)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(t){this.$node.attr("dir",t)},selectableRelativeToCursor:function(t){var e,n,i,r;return n=this.getActiveSelectable(),e=this._getSelectables(),i=n?e.index(n):-1,r=i+t,r=(r+1)%(e.length+1)-1,r=r<-1?e.length-1:r,-1===r?null:e.eq(r)},setCursor:function(t){this._removeCursor(),(t=t&&t.first())&&(t.addClass(this.classes.cursor),this._ensureVisible(t))},getSelectableData:function(t){return t&&t.length?s.extractData(t):null},getActiveSelectable:function(){var t=this._getSelectables().filter(this.selectors.cursor).first();return t.length?t:null},getTopSelectable:function(){var t=this._getSelectables().first();return t.length?t:null},update:function(t){function n(e){e.update(t)}var i=t!==this.query;return i&&(this.query=t,e.each(this.datasets,n)),i},empty:function(){function t(t){t.clear()}e.each(this.datasets,t),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function n(t){t.destroy()}this.$node.off(".tt"),this.$node=t("<div>"),e.each(this.datasets,n)}}),n}(),c=function(){"use strict";function t(){l.apply(this,[].slice.call(arguments,0))}var n=l.prototype;return e.mixin(t.prototype,l.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),n.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),n.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css("ltr"===t?this.css.ltr:this.css.rtl),n.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),t}(),u=function(){"use strict";function n(n,r){var o,a,s,l,c,u,h,d,f,p,g;n=n||{},n.input||t.error("missing input"),n.menu||t.error("missing menu"),n.eventBus||t.error("missing event bus"),r.mixin(this),this.eventBus=n.eventBus,this.minLength=e.isNumber(n.minLength)?n.minLength:1,this.input=n.input,this.menu=n.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),o=i(this,"activate","open","_onFocused"),a=i(this,"deactivate","_onBlurred"),s=i(this,"isActive","isOpen","_onEnterKeyed"),l=i(this,"isActive","isOpen","_onTabKeyed"),c=i(this,"isActive","_onEscKeyed"),u=i(this,"isActive","open","_onUpKeyed"),h=i(this,"isActive","open","_onDownKeyed"),d=i(this,"isActive","isOpen","_onLeftKeyed"),f=i(this,"isActive","isOpen","_onRightKeyed"),p=i(this,"_openIfActive","_onQueryChanged"),g=i(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",o,this).onSync("blurred",a,this).onSync("enterKeyed",s,this).onSync("tabKeyed",l,this).onSync("escKeyed",c,this).onSync("upKeyed",u,this).onSync("downKeyed",h,this).onSync("leftKeyed",d,this).onSync("rightKeyed",f,this).onSync("queryChanged",p,this).onSync("whitespaceChanged",g,this).onSync("langDirChanged",this._onLangDirChanged,this)}function i(t){var n=[].slice.call(arguments,1);return function(){var i=[].slice.call(arguments);e.each(n,function(e){return t[e].apply(t,i)})}}return e.mixin(n.prototype,{_hacks:function(){var n,i;n=this.input.$input||t("<div>"),i=this.menu.$node||t("<div>"),n.on("blur.tt",function(t){var r,o,a;r=document.activeElement,o=i.is(r),a=i.has(r).length>0,e.isMsie()&&(o||a)&&(t.preventDefault(),t.stopImmediatePropagation(),e.defer(function(){n.focus()}))}),i.on("mousedown.tt",function(t){t.preventDefault()})},_onSelectableClicked:function(t,e){this.select(e)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(t,e,n,i){this._updateHint(),this.eventBus.trigger("render",n,i,e)},_onAsyncRequested:function(t,e,n){this.eventBus.trigger("asyncrequest",n,e)},_onAsyncCanceled:function(t,e,n){this.eventBus.trigger("asynccancel",n,e)},_onAsyncReceived:function(t,e,n){this.eventBus.trigger("asyncreceive",n,e)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())&&this.select(n)&&e.preventDefault()},_onTabKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())?this.select(n)&&e.preventDefault():(n=this.menu.getTopSelectable())&&this.autocomplete(n)&&e.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(t,e){this._minLengthMet(e)?this.menu.update(e):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(t,e){this.dir!==e&&(this.dir=e,this.menu.setLanguageDirection(e))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(t){return t=e.isString(t)?t:this.input.getQuery()||"",t.length>=this.minLength},_updateHint:function(){var t,n,i,r,o,s,l;t=this.menu.getTopSelectable(),n=this.menu.getSelectableData(t),i=this.input.getInputValue(),!n||e.isBlankString(i)||this.input.hasOverflow()?this.input.clearHint():(r=a.normalizeQuery(i),o=e.escapeRegExChars(r),s=new RegExp("^(?:"+o+")(.+$)","i"),(l=s.exec(n.val))&&this.input.setHint(i+l[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before("active"))&&(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before("idle")&&(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(t){this.input.setQuery(e.toStr(t))},getVal:function(){return this.input.getQuery()},select:function(t){var e=this.menu.getSelectableData(t);return!(!e||this.eventBus.before("select",e.obj))&&(this.input.setQuery(e.val,!0),this.eventBus.trigger("select",e.obj),this.close(),!0)},autocomplete:function(t){var e,n;return e=this.input.getQuery(),n=this.menu.getSelectableData(t),!(!(n&&e!==n.val)||this.eventBus.before("autocomplete",n.obj))&&(this.input.setQuery(n.val),this.eventBus.trigger("autocomplete",n.obj),!0)},moveCursor:function(t){var e,n,i,r;return e=this.input.getQuery(),n=this.menu.selectableRelativeToCursor(t),i=this.menu.getSelectableData(n),r=i?i.obj:null,!(this._minLengthMet()&&this.menu.update(e))&&!this.eventBus.before("cursorchange",r)&&(this.menu.setCursor(n),i?this.input.setInputValue(i.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",r),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),n}();!function(){"use strict";function r(e,n){e.each(function(){var e,i=t(this);(e=i.data(g.typeahead))&&n(e,i)})}function o(t,e){return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(h(t)).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1})}function s(t,e){t.data(g.attrs,{dir:t.attr("dir"),autocomplete:t.attr("autocomplete"),spellcheck:t.attr("spellcheck"),style:t.attr("style")}),t.addClass(e.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!t.attr("dir")&&t.attr("dir","auto")}catch(t){}return t}function h(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}function d(t){var n,i;n=t.data(g.www),i=t.parent().filter(n.selectors.wrapper),e.each(t.data(g.attrs),function(n,i){e.isUndefined(n)?t.removeAttr(i):t.attr(i,n)}),t.removeData(g.typeahead).removeData(g.www).removeData(g.attr).removeClass(n.classes.input),i.length&&(t.detach().insertAfter(i),i.remove())}function f(n){var i,r;return i=e.isJQuery(n)||e.isElement(n),r=i?t(n).first():[],r.length?r:null}var p,g,m;p=t.fn.typeahead,g={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},m={initialize:function(r,h){function d(){var n,d,m,v,y,x,b,w,_,S,C;e.each(h,function(t){t.highlight=!!r.highlight}),n=t(this),d=t(p.html.wrapper),m=f(r.hint),v=f(r.menu),y=!1!==r.hint&&!m,x=!1!==r.menu&&!v,y&&(m=o(n,p)),x&&(v=t(p.html.menu).css(p.css.menu)),m&&m.val(""),n=s(n,p),(y||x)&&(d.css(p.css.wrapper),n.css(y?p.css.input:p.css.inputWithNoHint),n.wrap(d).parent().prepend(y?m:null).append(x?v:null)),C=x?c:l,b=new i({el:n}),w=new a({hint:m,input:n},p),_=new C({node:v,datasets:h},p),S=new u({input:w,menu:_,eventBus:b,minLength:r.minLength},p),n.data(g.www,p),n.data(g.typeahead,S)}var p;return h=e.isArray(h)?h:[].slice.call(arguments,1),r=r||{},p=n(r.classNames),this.each(d)},isEnabled:function(){var t;return r(this.first(),function(e){t=e.isEnabled()}),t},enable:function(){return r(this,function(t){t.enable()}),this},disable:function(){return r(this,function(t){t.disable()}),this},isActive:function(){var t;return r(this.first(),function(e){t=e.isActive()}),t},activate:function(){return r(this,function(t){t.activate()}),this},deactivate:function(){return r(this,function(t){t.deactivate()}),this},isOpen:function(){var t;return r(this.first(),function(e){t=e.isOpen()}),t},open:function(){return r(this,function(t){t.open()}),this},close:function(){return r(this,function(t){t.close()}),this},select:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.select(i)}),n},autocomplete:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.autocomplete(i)}),n},moveCursor:function(t){var e=!1;return r(this.first(),function(n){e=n.moveCursor(t)}),e},val:function(t){var e;return arguments.length?(r(this,function(e){e.setVal(t)}),this):(r(this.first(),function(t){e=t.getVal()}),e)},destroy:function(){return r(this,function(t,e){d(e),t.destroy()}),this}},t.fn.typeahead=function(t){return m[t]?m[t].apply(this,[].slice.call(arguments,1)):m.initialize.apply(this,arguments)},t.fn.typeahead.noConflict=function(){return t.fn.typeahead=p,this}}()}),define("typeahead",["jquery"],function(t){return function(){var e;return e=function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)},e.apply(t,arguments)}}(this)),define("search",["jquery","config","utils","bloodhound","typeahead"],function(t,e,n,i){!function(t){function r(e,n){var e=e.replace("%QUERY",encodeURIComponent(n)),i=t("label.active > input[name=smatch]").val();return i&&(e+="&match="+i),e}var o={_init:function(o){return o=o||{},this.each(function(){function a(t){return(t.tags||[]).push(t.name)}function s(t){var e='<div class="tt-match file type-icon '+function(t){return t.split(".").pop()}(t.name)+'"><span class="tt-label">'+n.htmlEncode(function(t){return t.split(".").slice(0,-1).join(".")}(t.name));if(t.tags){e+='<span class="tt-tags">';for(var i=0;i<t.tags.length;i++){var r=t.tags[i];e+='<span class="tt-tag">'+n.htmlEncode(r)+"</span>"}e+="</span>"}return t.title&&(e+='<div class="tt-title file">'+n.htmlEncode(t.title)+"</div>"),e+="</div>"}function l(t){var e="";if(t.file!=b||t.alias!=w){var i=t.file.split(".").pop();b=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+i+'"><span class="tt-path-file">'+n.htmlEncode(t.file)+"</span></div>"}return e+p(t)}function c(t){return i.tokenizers.whitespace(t.text)}function u(t){var e="";return t.file==b&&t.alias==w||(b=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+t.ext+'"><span class="tt-path-alias">'+n.htmlEncode(t.alias)+'</span>(<span class="tt-path-file">'+n.htmlEncode(t.file)+")</span></div>"),t.text&&(e+=p(t)),e}function h(t,n){for(var i=e.swish.templates,r=[],o=t.split(" "),a=[],s=0;s<o.length;s++)a.push({prefix:o[s],regex:new RegExp("_"+o[s])});for(var s=0;s<i.length;s++){var l=i[s];if(void 0!==l.arity){for(var c=0,u=!0;c<a.length&&u;c++)l.name.startsWith(a[c].prefix)||l.name.match(a[c].regex)||(u=!1);u&&r.push(l)}}n(r)}function d(t){var e='<div class="tt-match predicate';return t.type&&(e+=" "+t.type),t.mode&&(e+='" title="'+t.mode),e+='"><span class="tt-label">'+n.htmlEncode(t.name)+"/"+t.arity+"</span>",t.iso&&(e+='<span class="tt-tags">',t.iso&&(e+='<span class="tt-tag">ISO</span>'),e+="</span>"),t.summary&&(e+='<div class="tt-title file">'+n.htmlEncode(t.summary)+"</div>"),e+="</div>",e+="</div>"}function f(e,n){if(m=e,e.length<2)return[];var i=[],r=new RegExp("\\b"+e,"g");S=r,t(".prolog-editor").each(function(){for(var e=this,n=t(e).prologEditor("search",r,{max:7}),o=0;o<n.length;o++)n[o].editor=e,n[o].regex=S,i.push(n[o])}),n(i)}function p(t){var e,i=t.text;return(e=i.search(S))>20&&(i="..."+i.slice(e-17)),i.length>80&&(i=i.substring(0,80)),'<div class="tt-match source"><span class="tt-line"><span class="tt-lineno">'+t.line+'</span><span class="tt-text">'+n.htmlEncode(i)+"</span></span></div>"}function g(t){return'<div class="tt-match user">'+function(t){return t.avatar?'<img class="avatar" src="'+encodeURI(t.avatar)+'">':""}(t)+'<span class="tt-label">'+n.htmlEncode(t.name)+"</span></div>"}var m,v=t(this),y=new i({name:"files",remote:{url:e.http.locations.swish_typeahead+"?set=file&q=%QUERY",wildcard:"%QUERY"},datumTokenizer:a,queryTokenizer:i.tokenizers.whitespace});y.initialize();var x=new i({name:"store_content",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=store_content&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});x.initialize();var b=null,w=null,_=new i({name:"source",limit:15,cache:!1,query_cache_length:1,remote:{url:e.http.locations.swish_typeahead+"?set=sources&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});_.initialize();var S,C=new i({name:"users",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=user&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});C.initialize();var T={source:{name:"source",display:"text",source:f,templates:{suggestion:p}},sources:{name:"sources",display:"file",source:_.ttAdapter(),templates:{suggestion:u},limit:15},files:{name:"files",display:"name",source:y.ttAdapter(),templates:{suggestion:s}},store_content:{name:"store_content",display:"file",source:x.ttAdapter(),templates:{suggestion:l}},predicates:{name:"predicates",display:function(t){return t.name+"/"+t.arity},source:h,templates:{suggestion:d}},users:{name:"users",display:"name",source:C.ttAdapter(),templates:{suggestion:g}}},k=T.sources.source;T.sources.source=function(t,e){return b=null,w=null,S=new RegExp(RegExp.escape(t)),k(t,e)},v.typeahead({minLength:2,highlight:!0},function(t){for(var e=[],n=t.replace(/\s+/g," ").split(" "),i=0;i<n.length;i++)e.push(T[n[i]]);return e}(v.data("search-in"))).on("typeahead:selected typeahead:autocompleted",function(e,n){if(0==o.search)v.data("json-value",n);else if("store"==n.type)n.query&&(n.regex=new RegExp(RegExp.escape(n.query),"g"),n.showAllMatches=!0),t(e.target).closest(".swish").swish("playFile",n);else if(void 0!==n.arity)t(".swish-event-receiver").trigger("pldoc",n);else if(void 0!==n.editor&&void 0!==n.line)t(n.editor).prologEditor("gotoLine",n.line,{regex:n.regex,showAllMatches:!0});else if(void 0!==n.alias){var i=encodeURI("/"+n.alias+"/"+n.file+"."+n.ext),r={url:i,line:n.line};n.query&&(r.regex=new RegExp(RegExp.escape(n.query),"g"),r.showAllMatches=!0),t(e.target).closest(".swish").swish("playURL",r)}else v.data("json-value",n),console.log(v.data("json-value"))}),0!=o.search&&v.closest("form").submit(function(t){var e=v.data("json-value"),n=v.val();return e&&e.datum&&e.datum.label==n||(e=n),v.val(""),v.data("json-value",null),v.search("search",e),!1})})},search:function(t){alert("Full search not yet implemented\nPlease select from auto completion list")}};t.fn.search=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.search"):o._init.apply(this,arguments)}}(jQuery),RegExp.escape=function(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cm/lib/codemirror",e):t.CodeMirror=e()}(this,function(){"use strict";function t(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}function e(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function n(t,n){return e(t).appendChild(n)}function i(t,e,n,i){var r=document.createElement(t);if(n&&(r.className=n),i&&(r.style.cssText=i),"string"==typeof e)r.appendChild(document.createTextNode(e));else if(e)for(var o=0;o<e.length;++o)r.appendChild(e[o]);return r}function r(t,e,n,r){var o=i(t,e,n,r);return o.setAttribute("role","presentation"),o}function o(t,e){if(3==e.nodeType&&(e=e.parentNode),t.contains)return t.contains(e);do{if(11==e.nodeType&&(e=e.host),e==t)return!0}while(e=e.parentNode)}function a(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function s(e,n){var i=e.className;t(n).test(i)||(e.className+=(i?" ":"")+n)}function l(e,n){for(var i=e.split(" "),r=0;r<i.length;r++)i[r]&&!t(i[r]).test(n)&&(n+=" "+i[r]);return n}function c(t){var e=Array.prototype.slice.call(arguments,1);return function(){return t.apply(null,e)}}function u(t,e,n){e||(e={});for(var i in t)!t.hasOwnProperty(i)||!1===n&&e.hasOwnProperty(i)||(e[i]=t[i]);return e}function h(t,e,n,i,r){null==e&&-1==(e=t.search(/[^\s\u00a0]/))&&(e=t.length);for(var o=i||0,a=r||0;;){var s=t.indexOf("\t",o);if(s<0||s>=e)return a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}function d(t,e){for(var n=0;n<t.length;++n)if(t[n]==e)return n;return-1}function f(t,e,n){for(var i=0,r=0;;){var o=t.indexOf("\t",i);-1==o&&(o=t.length);var a=o-i;if(o==t.length||r+a>=e)return i+Math.min(a,e-r);if(r+=o-i,r+=n-r%n,i=o+1,r>=e)return i}}function p(t){for(;Ua.length<=t;)Ua.push(g(Ua)+" ");return Ua[t]}function g(t){return t[t.length-1]}function m(t,e){for(var n=[],i=0;i<t.length;i++)n[i]=e(t[i],i);return n}function v(t,e,n){for(var i=0,r=n(e);i<t.length&&n(t[i])<=r;)i++;t.splice(i,0,e)}function y(){}function x(t,e){var n;return Object.create?n=Object.create(t):(y.prototype=t,n=new y),e&&u(e,n),n}function b(t){return/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||Xa.test(t))}function w(t,e){return e?!!(e.source.indexOf("\\w")>-1&&b(t))||e.test(t):b(t)}function _(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}function S(t){return t.charCodeAt(0)>=768&&Ya.test(t)}function C(t,e,n){for(;(n<0?e>0:e<t.length)&&S(t.charAt(e));)e+=n;return e}function T(t,e,n){for(var i=e>n?-1:1;;){if(e==n)return e;var r=(e+n)/2,o=i<0?Math.ceil(r):Math.floor(r);if(o==e)return t(o)?e:n;t(o)?n=o:e=o+i}}function k(t,e,n){var o=this;this.input=n,o.scrollbarFiller=i("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=i("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=r("div",null,"CodeMirror-code"),o.selectionDiv=i("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=i("div",null,"CodeMirror-cursors"),o.measure=i("div",null,"CodeMirror-measure"),o.lineMeasure=i("div",null,"CodeMirror-measure"),o.lineSpace=r("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var a=r("div",[o.lineSpace],"CodeMirror-lines");o.mover=i("div",[a],null,"position: relative"),o.sizer=i("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=i("div",null,null,"position: absolute; height: "+qa+"px; width: 1px;"),o.gutters=i("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=i("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=i("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),ya&&xa<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),ba||pa&&Ea||(o.scroller.draggable=!0),t&&(t.appendChild?t.appendChild(o.wrapper):t(o.wrapper)),o.viewFrom=o.viewTo=e.first,o.reportedViewFrom=o.reportedViewTo=e.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,n.init(o)}function A(t,e){if((e-=t.first)<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var i=0;;++i){var r=n.children[i],o=r.chunkSize();if(e<o){n=r;break}e-=o}return n.lines[e]}function M(t,e,n){var i=[],r=e.line;return t.iter(e.line,n.line+1,function(t){var o=t.text;r==n.line&&(o=o.slice(0,n.ch)),r==e.line&&(o=o.slice(e.ch)),i.push(o),++r}),i}function E(t,e,n){var i=[];return t.iter(e,n,function(t){i.push(t.text)}),i}function L(t,e){var n=e-t.height;if(n)for(var i=t;i;i=i.parent)i.height+=n}function P(t){if(null==t.parent)return null;for(var e=t.parent,n=d(e.lines,t),i=e.parent;i;e=i,i=i.parent)for(var r=0;i.children[r]!=e;++r)n+=i.children[r].chunkSize();return n+e.first}function N(t,e){var n=t.first;t:do{for(var i=0;i<t.children.length;++i){var r=t.children[i],o=r.height;if(e<o){t=r;continue t}e-=o,n+=r.chunkSize()}return n}while(!t.lines);for(var a=0;a<t.lines.length;++a){var s=t.lines[a],l=s.height;if(e<l)break;e-=l}return n+a}function O(t,e){return e>=t.first&&e<t.first+t.size}function R(t,e){return String(t.lineNumberFormatter(e+t.firstLineNumber))}function D(t,e,n){if(void 0===n&&(n=null),!(this instanceof D))return new D(t,e,n);this.line=t,this.ch=e,this.sticky=n}function I(t,e){return t.line-e.line||t.ch-e.ch}function H(t,e){return t.sticky==e.sticky&&0==I(t,e)}function j(t){return D(t.line,t.ch)}function V(t,e){return I(t,e)<0?e:t}function F(t,e){return I(t,e)<0?t:e}function z(t,e){return Math.max(t.first,Math.min(e,t.first+t.size-1))}function q(t,e){if(e.line<t.first)return D(t.first,0);var n=t.first+t.size-1;return e.line>n?D(n,A(t,n).text.length):G(e,A(t,e.line).text.length)}function G(t,e){var n=t.ch;return null==n||n>e?D(t.line,e):n<0?D(t.line,0):t}function B(t,e){for(var n=[],i=0;i<e.length;i++)n[i]=q(t,e[i]);return n}function $(){Qa=!0}function W(){Za=!0}function U(t,e,n){this.marker=t,this.from=e,this.to=n}function X(t,e){if(t)for(var n=0;n<t.length;++n){var i=t[n];if(i.marker==e)return i}}function Y(t,e){for(var n,i=0;i<t.length;++i)t[i]!=e&&(n||(n=[])).push(t[i]);return n}function Q(t,e){t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t)}function Z(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);if(s||o.from==e&&"bookmark"==a.type&&(!n||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);(i||(i=[])).push(new U(a,o.from,l?null:o.to))}}return i}function K(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);if(s||o.from==e&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);(i||(i=[])).push(new U(a,l?null:o.from-e,null==o.to?null:o.to-e))}}return i}function J(t,e){if(e.full)return null;var n=O(t,e.from.line)&&A(t,e.from.line).markedSpans,i=O(t,e.to.line)&&A(t,e.to.line).markedSpans;if(!n&&!i)return null;var r=e.from.ch,o=e.to.ch,a=0==I(e.from,e.to),s=Z(n,r,a),l=K(i,o,a),c=1==e.text.length,u=g(e.text).length+(c?r:0);if(s)for(var h=0;h<s.length;++h){var d=s[h];if(null==d.to){var f=X(l,d.marker);f?c&&(d.to=null==f.to?null:f.to+u):d.to=r}}if(l)for(var p=0;p<l.length;++p){var m=l[p];if(null!=m.to&&(m.to+=u),null==m.from){var v=X(s,m.marker);v||(m.from=u,c&&(s||(s=[])).push(m))}else m.from+=u,c&&(s||(s=[])).push(m)}s&&(s=tt(s)),l&&l!=s&&(l=tt(l));var y=[s];if(!c){
+var x,b=e.text.length-2;if(b>0&&s)for(var w=0;w<s.length;++w)null==s[w].to&&(x||(x=[])).push(new U(s[w].marker,null,null));for(var _=0;_<b;++_)y.push(x);y.push(l)}return y}function tt(t){for(var e=0;e<t.length;++e){var n=t[e];null!=n.from&&n.from==n.to&&!1!==n.marker.clearWhenEmpty&&t.splice(e--,1)}return t.length?t:null}function et(t,e,n){var i=null;if(t.iter(e.line,n.line+1,function(t){if(t.markedSpans)for(var e=0;e<t.markedSpans.length;++e){var n=t.markedSpans[e].marker;!n.readOnly||i&&-1!=d(i,n)||(i||(i=[])).push(n)}}),!i)return null;for(var r=[{from:e,to:n}],o=0;o<i.length;++o)for(var a=i[o],s=a.find(0),l=0;l<r.length;++l){var c=r[l];if(!(I(c.to,s.from)<0||I(c.from,s.to)>0)){var u=[l,1],h=I(c.from,s.from),f=I(c.to,s.to);(h<0||!a.inclusiveLeft&&!h)&&u.push({from:c.from,to:s.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),r.splice.apply(r,u),l+=u.length-3}}return r}function nt(t){var e=t.markedSpans;if(e){for(var n=0;n<e.length;++n)e[n].marker.detachLine(t);t.markedSpans=null}}function it(t,e){if(e){for(var n=0;n<e.length;++n)e[n].marker.attachLine(t);t.markedSpans=e}}function rt(t){return t.inclusiveLeft?-1:0}function ot(t){return t.inclusiveRight?1:0}function at(t,e){var n=t.lines.length-e.lines.length;if(0!=n)return n;var i=t.find(),r=e.find(),o=I(i.from,r.from)||rt(t)-rt(e);if(o)return-o;var a=I(i.to,r.to)||ot(t)-ot(e);return a||e.id-t.id}function st(t,e){var n,i=Za&&t.markedSpans;if(i)for(var r=void 0,o=0;o<i.length;++o)r=i[o],r.marker.collapsed&&null==(e?r.from:r.to)&&(!n||at(n,r.marker)<0)&&(n=r.marker);return n}function lt(t){return st(t,!0)}function ct(t){return st(t,!1)}function ut(t,e,n,i,r){var o=A(t,e),a=Za&&o.markedSpans;if(a)for(var s=0;s<a.length;++s){var l=a[s];if(l.marker.collapsed){var c=l.marker.find(0),u=I(c.from,n)||rt(l.marker)-rt(r),h=I(c.to,i)||ot(l.marker)-ot(r);if(!(u>=0&&h<=0||u<=0&&h>=0)&&(u<=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.to,n)>=0:I(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.from,i)<=0:I(c.from,i)<0)))return!0}}}function ht(t){for(var e;e=lt(t);)t=e.find(-1,!0).line;return t}function dt(t){for(var e;e=ct(t);)t=e.find(1,!0).line;return t}function ft(t){for(var e,n;e=ct(t);)t=e.find(1,!0).line,(n||(n=[])).push(t);return n}function pt(t,e){var n=A(t,e),i=ht(n);return n==i?e:P(i)}function gt(t,e){if(e>t.lastLine())return e;var n,i=A(t,e);if(!mt(t,i))return e;for(;n=ct(i);)i=n.find(1,!0).line;return P(i)+1}function mt(t,e){var n=Za&&e.markedSpans;if(n)for(var i=void 0,r=0;r<n.length;++r)if(i=n[r],i.marker.collapsed){if(null==i.from)return!0;if(!i.marker.widgetNode&&0==i.from&&i.marker.inclusiveLeft&&vt(t,e,i))return!0}}function vt(t,e,n){if(null==n.to){var i=n.marker.find(1,!0);return vt(t,i.line,X(i.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==e.text.length)return!0;for(var r=void 0,o=0;o<e.markedSpans.length;++o)if(r=e.markedSpans[o],r.marker.collapsed&&!r.marker.widgetNode&&r.from==n.to&&(null==r.to||r.to!=n.from)&&(r.marker.inclusiveLeft||n.marker.inclusiveRight)&&vt(t,e,r))return!0}function yt(t){t=ht(t);for(var e=0,n=t.parent,i=0;i<n.lines.length;++i){var r=n.lines[i];if(r==t)break;e+=r.height}for(var o=n.parent;o;n=o,o=n.parent)for(var a=0;a<o.children.length;++a){var s=o.children[a];if(s==n)break;e+=s.height}return e}function xt(t){if(0==t.height)return 0;for(var e,n=t.text.length,i=t;e=lt(i);){var r=e.find(0,!0);i=r.from.line,n+=r.from.ch-r.to.ch}for(i=t;e=ct(i);){var o=e.find(0,!0);n-=i.text.length-o.from.ch,i=o.to.line,n+=i.text.length-o.to.ch}return n}function bt(t){var e=t.display,n=t.doc;e.maxLine=A(n,n.first),e.maxLineLength=xt(e.maxLine),e.maxLineChanged=!0,n.iter(function(t){var n=xt(t);n>e.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)})}function wt(t,e,n,i){if(!t)return i(e,n,"ltr",0);for(var r=!1,o=0;o<t.length;++o){var a=t[o];(a.from<n&&a.to>e||e==n&&a.to==e)&&(i(Math.max(a.from,e),Math.min(a.to,n),1==a.level?"rtl":"ltr",o),r=!0)}r||i(e,n,"ltr")}function _t(t,e,n){var i;Ka=null;for(var r=0;r<t.length;++r){var o=t[r];if(o.from<e&&o.to>e)return r;o.to==e&&(o.from!=o.to&&"before"==n?i=r:Ka=r),o.from==e&&(o.from!=o.to&&"before"!=n?i=r:Ka=r)}return null!=i?i:Ka}function St(t,e){var n=t.order;return null==n&&(n=t.order=Ja(t.text,e)),n}function Ct(t,e){return t._handlers&&t._handlers[e]||ts}function Tt(t,e,n){if(t.removeEventListener)t.removeEventListener(e,n,!1);else if(t.detachEvent)t.detachEvent("on"+e,n);else{var i=t._handlers,r=i&&i[e];if(r){var o=d(r,n);o>-1&&(i[e]=r.slice(0,o).concat(r.slice(o+1)))}}}function kt(t,e){var n=Ct(t,e);if(n.length)for(var i=Array.prototype.slice.call(arguments,2),r=0;r<n.length;++r)n[r].apply(null,i)}function At(t,e,n){return"string"==typeof e&&(e={type:e,preventDefault:function(){this.defaultPrevented=!0}}),kt(t,n||e.type,t,e),Ot(e)||e.codemirrorIgnore}function Mt(t){var e=t._handlers&&t._handlers.cursorActivity;if(e)for(var n=t.curOp.cursorActivityHandlers||(t.curOp.cursorActivityHandlers=[]),i=0;i<e.length;++i)-1==d(n,e[i])&&n.push(e[i])}function Et(t,e){return Ct(t,e).length>0}function Lt(t){t.prototype.on=function(t,e){es(this,t,e)},t.prototype.off=function(t,e){Tt(this,t,e)}}function Pt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function Nt(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function Ot(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function Rt(t){Pt(t),Nt(t)}function Dt(t){return t.target||t.srcElement}function It(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),La&&t.ctrlKey&&1==e&&(e=3),e}function Ht(t){if(null==Fa){var e=i("span","​");n(t,i("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(Fa=e.offsetWidth<=1&&e.offsetHeight>2&&!(ya&&xa<8))}var r=Fa?i("span","​"):i("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function jt(t){if(null!=za)return za;var i=n(t,document.createTextNode("AخA")),r=Ra(i,0,1).getBoundingClientRect(),o=Ra(i,1,2).getBoundingClientRect();return e(t),!(!r||r.left==r.right)&&(za=o.right-r.right<3)}function Vt(t){if(null!=as)return as;var e=n(t,i("span","x")),r=e.getBoundingClientRect(),o=Ra(e,0,1).getBoundingClientRect();return as=Math.abs(r.left-o.left)>1}function Ft(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),ss[t]=e}function zt(t,e){ls[t]=e}function qt(t){if("string"==typeof t&&ls.hasOwnProperty(t))t=ls[t];else if(t&&"string"==typeof t.name&&ls.hasOwnProperty(t.name)){var e=ls[t.name];"string"==typeof e&&(e={name:e}),t=x(e,t),t.name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return qt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return qt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function Gt(t,e){e=qt(e);var n=ss[e.name];if(!n)return Gt(t,"text/plain");var i=n(t,e);if(cs.hasOwnProperty(e.name)){var r=cs[e.name];for(var o in r)r.hasOwnProperty(o)&&(i.hasOwnProperty(o)&&(i["_"+o]=i[o]),i[o]=r[o])}if(i.name=e.name,e.helperType&&(i.helperType=e.helperType),e.modeProps)for(var a in e.modeProps)i[a]=e.modeProps[a];return i}function Bt(t,e){u(e,cs.hasOwnProperty(t)?cs[t]:cs[t]={})}function $t(t,e){if(!0===e)return e;if(t.copyState)return t.copyState(e);var n={};for(var i in e){var r=e[i];r instanceof Array&&(r=r.concat([])),n[i]=r}return n}function Wt(t,e){for(var n;t.innerMode&&(n=t.innerMode(e))&&n.mode!=t;)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Ut(t,e,n){return!t.startState||t.startState(e,n)}function Xt(t,e,n,i){var r=[t.state.modeGen],o={};ne(t,e.text,t.doc.mode,n,function(t,e){return r.push(t,e)},o,i);for(var a=n.state,s=0;s<t.state.overlays.length;++s)!function(i){n.baseTokens=r;var s=t.state.overlays[i],l=1,c=0;n.state=!0,ne(t,e.text,s.mode,n,function(t,e){for(var n=l;c<t;){var i=r[l];i>t&&r.splice(l,1,t,r[l+1],i),l+=2,c=Math.min(t,i)}if(e)if(s.opaque)r.splice(n,l-n,t,"overlay "+e),l=n+2;else for(;n<l;n+=2){var o=r[n+1];r[n+1]=(o?o+" ":"")+"overlay "+e}},o),n.state=a,n.baseTokens=null,n.baseTokenPos=1}(s);return{styles:r,classes:o.bgClass||o.textClass?o:null}}function Yt(t,e,n){if(!e.styles||e.styles[0]!=t.state.modeGen){var i=Qt(t,P(e)),r=e.text.length>t.options.maxHighlightLength&&$t(t.doc.mode,i.state),o=Xt(t,e,i);r&&(i.state=r),e.stateAfter=i.save(!r),e.styles=o.styles,o.classes?e.styleClasses=o.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.highlightFrontier&&(t.doc.modeFrontier=Math.max(t.doc.modeFrontier,++t.doc.highlightFrontier))}return e.styles}function Qt(t,e,n){var i=t.doc,r=t.display;if(!i.mode.startState)return new ds(i,!0,e);var o=ie(t,e,n),a=o>i.first&&A(i,o-1).stateAfter,s=a?ds.fromSaved(i,a,o):new ds(i,Ut(i.mode),o);return i.iter(o,e,function(n){Zt(t,n.text,s);var i=s.line;n.stateAfter=i==e-1||i%5==0||i>=r.viewFrom&&i<r.viewTo?s.save():null,s.nextLine()}),n&&(i.modeFrontier=s.line),s}function Zt(t,e,n,i){var r=t.doc.mode,o=new us(e,t.options.tabSize,n);for(o.start=o.pos=i||0,""==e&&Kt(r,n.state);!o.eol();)Jt(r,o,n.state),o.start=o.pos}function Kt(t,e){if(t.blankLine)return t.blankLine(e);if(t.innerMode){var n=Wt(t,e);return n.mode.blankLine?n.mode.blankLine(n.state):void 0}}function Jt(t,e,n,i){for(var r=0;r<10;r++){i&&(i[0]=Wt(t,n).mode);var o=t.token(e,n);if(e.pos>e.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}function te(t,e,n,i){var r,o=t.doc,a=o.mode;e=q(o,e);var s,l=A(o,e.line),c=Qt(t,e.line,n),u=new us(l.text,t.options.tabSize,c);for(i&&(s=[]);(i||u.pos<e.ch)&&!u.eol();)u.start=u.pos,r=Jt(a,u,c.state),i&&s.push(new fs(u,r,$t(o.mode,c.state)));return i?s:new fs(u,r,c.state)}function ee(t,e){if(t)for(;;){var n=t.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;t=t.slice(0,n.index)+t.slice(n.index+n[0].length);var i=n[1]?"bgClass":"textClass";null==e[i]?e[i]=n[2]:new RegExp("(?:^|s)"+n[2]+"(?:$|s)").test(e[i])||(e[i]+=" "+n[2])}return t}function ne(t,e,n,i,r,o,a){var s=n.flattenSpans;null==s&&(s=t.options.flattenSpans);var l,c=0,u=null,h=new us(e,t.options.tabSize,i),d=t.options.addModeClass&&[null];for(""==e&&ee(Kt(n,i.state),o);!h.eol();){if(h.pos>t.options.maxHighlightLength?(s=!1,a&&Zt(t,e,i,h.pos),h.pos=e.length,l=null):l=ee(Jt(n,h,i.state,d),o),d){var f=d[0].name;f&&(l="m-"+(l?f+" "+l:f))}if(!s||u!=l){for(;c<h.start;)c=Math.min(h.start,c+5e3),r(c,u);u=l}h.start=h.pos}for(;c<h.pos;){var p=Math.min(h.pos,c+5e3);r(p,u),c=p}}function ie(t,e,n){for(var i,r,o=t.doc,a=n?-1:e-(t.doc.mode.innerMode?1e3:100),s=e;s>a;--s){if(s<=o.first)return o.first;var l=A(o,s-1),c=l.stateAfter;if(c&&(!n||s+(c instanceof hs?c.lookAhead:0)<=o.modeFrontier))return s;var u=h(l.text,null,t.options.tabSize);(null==r||i>u)&&(r=s-1,i=u)}return r}function re(t,e){if(t.modeFrontier=Math.min(t.modeFrontier,e),!(t.highlightFrontier<e-10)){for(var n=t.first,i=e-1;i>n;i--){var r=A(t,i).stateAfter;if(r&&(!(r instanceof hs)||i+r.lookAhead<e)){n=i+1;break}}t.highlightFrontier=Math.min(t.highlightFrontier,n)}}function oe(t,e,n,i){t.text=e,t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null),null!=t.order&&(t.order=null),nt(t),it(t,n);var r=i?i(t):1;r!=t.height&&L(t,r)}function ae(t){t.parent=null,nt(t)}function se(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?vs:ms;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function le(t,e){var n=r("span",null,null,ba?"padding-right: .1px":null),i={pre:r("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:(ya||ba)&&t.getOption("lineWrapping")};e.measure={};for(var o=0;o<=(e.rest?e.rest.length:0);o++){var a=o?e.rest[o-1]:e.line,s=void 0;i.pos=0,i.addToken=ue,jt(t.display.measure)&&(s=St(a,t.doc.direction))&&(i.addToken=de(i.addToken,s)),i.map=[];pe(a,i,Yt(t,a,e!=t.display.externalMeasured&&P(a))),a.styleClasses&&(a.styleClasses.bgClass&&(i.bgClass=l(a.styleClasses.bgClass,i.bgClass||"")),a.styleClasses.textClass&&(i.textClass=l(a.styleClasses.textClass,i.textClass||""))),0==i.map.length&&i.map.push(0,0,i.content.appendChild(Ht(t.display.measure))),0==o?(e.measure.map=i.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(i.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(ba){var c=i.content.lastChild;(/\bcm-tab\b/.test(c.className)||c.querySelector&&c.querySelector(".cm-tab"))&&(i.content.className="cm-tab-wrap-hack")}return kt(t,"renderLine",t,e.line,i.pre),i.pre.className&&(i.textClass=l(i.pre.className,i.textClass||"")),i}function ce(t){var e=i("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function ue(t,e,n,r,o,a,s){if(e){var l,c=t.splitSpaces?he(e,t.trailingSpace):e,u=t.cm.state.specialChars,h=!1;if(u.test(e)){l=document.createDocumentFragment();for(var d=0;;){u.lastIndex=d;var f=u.exec(e),g=f?f.index-d:e.length-d;if(g){var m=document.createTextNode(c.slice(d,d+g));ya&&xa<9?l.appendChild(i("span",[m])):l.appendChild(m),t.map.push(t.pos,t.pos+g,m),t.col+=g,t.pos+=g}if(!f)break;d+=g+1;var v=void 0;if("\t"==f[0]){var y=t.cm.options.tabSize,x=y-t.col%y;v=l.appendChild(i("span",p(x),"cm-tab")),v.setAttribute("role","presentation"),v.setAttribute("cm-text","\t"),t.col+=x}else"\r"==f[0]||"\n"==f[0]?(v=l.appendChild(i("span","\r"==f[0]?"␍":"␤","cm-invalidchar")),v.setAttribute("cm-text",f[0]),t.col+=1):(v=t.cm.options.specialCharPlaceholder(f[0]),v.setAttribute("cm-text",f[0]),ya&&xa<9?l.appendChild(i("span",[v])):l.appendChild(v),t.col+=1);t.map.push(t.pos,t.pos+1,v),t.pos++}}else t.col+=e.length,l=document.createTextNode(c),t.map.push(t.pos,t.pos+e.length,l),ya&&xa<9&&(h=!0),t.pos+=e.length;if(t.trailingSpace=32==c.charCodeAt(e.length-1),n||r||o||h||s){var b=n||"";r&&(b+=r),o&&(b+=o);var w=i("span",[l],b,s);return a&&(w.title=a),t.content.appendChild(w)}t.content.appendChild(l)}}function he(t,e){if(t.length>1&&!/  /.test(t))return t;for(var n=e,i="",r=0;r<t.length;r++){var o=t.charAt(r);" "!=o||!n||r!=t.length-1&&32!=t.charCodeAt(r+1)||(o=" "),i+=o,n=" "==o}return i}function de(t,e){return function(n,i,r,o,a,s,l){r=r?r+" cm-force-border":"cm-force-border";for(var c=n.pos,u=c+i.length;;){for(var h=void 0,d=0;d<e.length&&(h=e[d],!(h.to>c&&h.from<=c));d++);if(h.to>=u)return t(n,i,r,o,a,s,l);t(n,i.slice(0,h.to-c),r,o,null,s,l),o=null,i=i.slice(h.to-c),c=h.to}}}function fe(t,e,n,i){var r=!i&&n.widgetNode;r&&t.map.push(t.pos,t.pos+e,r),!i&&t.cm.display.input.needsContentAttribute&&(r||(r=t.content.appendChild(document.createElement("span"))),r.setAttribute("cm-marker",n.id)),r&&(t.cm.display.input.setUneditable(r),t.content.appendChild(r)),t.pos+=e,t.trailingSpace=!1}function pe(t,e,n){var i=t.markedSpans,r=t.text,o=0;if(i)for(var a,s,l,c,u,h,d,f=r.length,p=0,g=1,m="",v=0;;){if(v==p){l=c=u=h=s="",d=null,v=1/0;for(var y=[],x=void 0,b=0;b<i.length;++b){var w=i[b],_=w.marker;"bookmark"==_.type&&w.from==p&&_.widgetNode?y.push(_):w.from<=p&&(null==w.to||w.to>p||_.collapsed&&w.to==p&&w.from==p)?(null!=w.to&&w.to!=p&&v>w.to&&(v=w.to,c=""),_.className&&(l+=" "+_.className),_.css&&(s=(s?s+";":"")+_.css),_.startStyle&&w.from==p&&(u+=" "+_.startStyle),_.endStyle&&w.to==v&&(x||(x=[])).push(_.endStyle,w.to),_.title&&!h&&(h=_.title),_.collapsed&&(!d||at(d.marker,_)<0)&&(d=w)):w.from>p&&v>w.from&&(v=w.from)}if(x)for(var S=0;S<x.length;S+=2)x[S+1]==v&&(c+=" "+x[S]);if(!d||d.from==p)for(var C=0;C<y.length;++C)fe(e,0,y[C]);if(d&&(d.from||0)==p){if(fe(e,(null==d.to?f+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(p>=f)break;for(var T=Math.min(f,v);;){if(m){var k=p+m.length;if(!d){var A=k>T?m.slice(0,T-p):m;e.addToken(e,A,a?a+l:l,u,p+A.length==v?c:"",h,s)}if(k>=T){m=m.slice(T-p),p=T;break}p=k,u=""}m=r.slice(o,o=n[g++]),a=se(n[g++],e.cm.options)}}else for(var M=1;M<n.length;M+=2)e.addToken(e,r.slice(o,o=n[M]),se(n[M+1],e.cm.options))}function ge(t,e,n){this.line=e,this.rest=ft(e),this.size=this.rest?P(g(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mt(t,e)}function me(t,e,n){for(var i,r=[],o=e;o<n;o=i){var a=new ge(t.doc,A(t.doc,o),o);i=o+a.size,r.push(a)}return r}function ve(t){ys?ys.ops.push(t):t.ownsGroup=ys={ops:[t],delayedCallbacks:[]}}function ye(t){var e=t.delayedCallbacks,n=0;do{for(;n<e.length;n++)e[n].call(null);for(var i=0;i<t.ops.length;i++){var r=t.ops[i];if(r.cursorActivityHandlers)for(;r.cursorActivityCalled<r.cursorActivityHandlers.length;)r.cursorActivityHandlers[r.cursorActivityCalled++].call(null,r.cm)}}while(n<e.length)}function xe(t,e){var n=t.ownsGroup;if(n)try{ye(n)}finally{ys=null,e(n)}}function be(t,e){var n=Ct(t,e);if(n.length){var i,r=Array.prototype.slice.call(arguments,2);ys?i=ys.delayedCallbacks:xs?i=xs:(i=xs=[],setTimeout(we,0));for(var o=0;o<n.length;++o)!function(t){i.push(function(){return n[t].apply(null,r)})}(o)}}function we(){var t=xs;xs=null;for(var e=0;e<t.length;++e)t[e]()}function _e(t,e,n,i){for(var r=0;r<e.changes.length;r++){var o=e.changes[r];"text"==o?ke(t,e):"gutter"==o?Me(t,e,n,i):"class"==o?Ae(t,e):"widget"==o&&Ee(t,e,i)}e.changes=null}function Se(t){return t.node==t.text&&(t.node=i("div",null,null,"position: relative"),t.text.parentNode&&t.text.parentNode.replaceChild(t.node,t.text),t.node.appendChild(t.text),ya&&xa<8&&(t.node.style.zIndex=2)),t.node}function Ce(t,e){var n=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(n&&(n+=" CodeMirror-linebackground"),e.background)n?e.background.className=n:(e.background.parentNode.removeChild(e.background),e.background=null);else if(n){var r=Se(e);e.background=r.insertBefore(i("div",null,n),r.firstChild),t.display.input.setUneditable(e.background)}}function Te(t,e){var n=t.display.externalMeasured;return n&&n.line==e.line?(t.display.externalMeasured=null,e.measure=n.measure,n.built):le(t,e)}function ke(t,e){var n=e.text.className,i=Te(t,e);e.text==e.node&&(e.node=i.pre),e.text.parentNode.replaceChild(i.pre,e.text),e.text=i.pre,i.bgClass!=e.bgClass||i.textClass!=e.textClass?(e.bgClass=i.bgClass,e.textClass=i.textClass,Ae(t,e)):n&&(e.text.className=n)}function Ae(t,e){Ce(t,e),e.line.wrapClass?Se(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var n=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=n||""}function Me(t,e,n,r){if(e.gutter&&(e.node.removeChild(e.gutter),e.gutter=null),e.gutterBackground&&(e.node.removeChild(e.gutterBackground),e.gutterBackground=null),e.line.gutterClass){var o=Se(e);e.gutterBackground=i("div",null,"CodeMirror-gutter-background "+e.line.gutterClass,"left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.display.input.setUneditable(e.gutterBackground),o.insertBefore(e.gutterBackground,e.text)}var a=e.line.gutterMarkers;if(t.options.lineNumbers||a){var s=Se(e),l=e.gutter=i("div",null,"CodeMirror-gutter-wrapper","left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(t.display.input.setUneditable(l),s.insertBefore(l,e.text),e.line.gutterClass&&(l.className+=" "+e.line.gutterClass),!t.options.lineNumbers||a&&a["CodeMirror-linenumbers"]||(e.lineNumber=l.appendChild(i("div",R(t.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+t.display.lineNumInnerWidth+"px"))),a)for(var c=0;c<t.options.gutters.length;++c){var u=t.options.gutters[c],h=a.hasOwnProperty(u)&&a[u];h&&l.appendChild(i("div",[h],"CodeMirror-gutter-elt","left: "+r.gutterLeft[u]+"px; width: "+r.gutterWidth[u]+"px"))}}}function Ee(t,e,n){e.alignable&&(e.alignable=null);for(var i=e.node.firstChild,r=void 0;i;i=r)r=i.nextSibling,"CodeMirror-linewidget"==i.className&&e.node.removeChild(i);Pe(t,e,n)}function Le(t,e,n,i){var r=Te(t,e);return e.text=e.node=r.pre,r.bgClass&&(e.bgClass=r.bgClass),r.textClass&&(e.textClass=r.textClass),Ae(t,e),Me(t,e,n,i),Pe(t,e,i),e.node}function Pe(t,e,n){if(Ne(t,e.line,e,n,!0),e.rest)for(var i=0;i<e.rest.length;i++)Ne(t,e.rest[i],e,n,!1)}function Ne(t,e,n,r,o){if(e.widgets)for(var a=Se(n),s=0,l=e.widgets;s<l.length;++s){var c=l[s],u=i("div",[c.node],"CodeMirror-linewidget");c.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),Oe(c,u,n,r),t.display.input.setUneditable(u),o&&c.above?a.insertBefore(u,n.gutter||n.text):a.appendChild(u),be(c,"redraw")}}function Oe(t,e,n,i){if(t.noHScroll){(n.alignable||(n.alignable=[])).push(e);var r=i.wrapperWidth;e.style.left=i.fixedPos+"px",t.coverGutter||(r-=i.gutterTotalWidth,e.style.paddingLeft=i.gutterTotalWidth+"px"),e.style.width=r+"px"}t.coverGutter&&(e.style.zIndex=5,e.style.position="relative",t.noHScroll||(e.style.marginLeft=-i.gutterTotalWidth+"px"))}function Re(t){if(null!=t.height)return t.height;var e=t.doc.cm;if(!e)return 0;if(!o(document.body,t.node)){var r="position: relative;";t.coverGutter&&(r+="margin-left: -"+e.display.gutters.offsetWidth+"px;"),t.noHScroll&&(r+="width: "+e.display.wrapper.clientWidth+"px;"),n(e.display.measure,i("div",[t.node],null,r))}return t.height=t.node.parentNode.offsetHeight}function De(t,e){for(var n=Dt(e);n!=t.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==t.sizer&&n!=t.mover)return!0}function Ie(t){return t.lineSpace.offsetTop}function He(t){return t.mover.offsetHeight-t.lineSpace.offsetHeight}function je(t){if(t.cachedPaddingH)return t.cachedPaddingH;var e=n(t.measure,i("pre","x")),r=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,o={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(o.left)||isNaN(o.right)||(t.cachedPaddingH=o),o}function Ve(t){return qa-t.display.nativeBarWidth}function Fe(t){return t.display.scroller.clientWidth-Ve(t)-t.display.barWidth}function ze(t){return t.display.scroller.clientHeight-Ve(t)-t.display.barHeight}function qe(t,e,n){var i=t.options.lineWrapping,r=i&&Fe(t);if(!e.measure.heights||i&&e.measure.width!=r){var o=e.measure.heights=[];if(i){e.measure.width=r;for(var a=e.text.firstChild.getClientRects(),s=0;s<a.length-1;s++){var l=a[s],c=a[s+1];Math.abs(l.bottom-c.bottom)>2&&o.push((l.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function Ge(t,e,n){if(t.line==e)return{map:t.measure.map,cache:t.measure.cache};for(var i=0;i<t.rest.length;i++)if(t.rest[i]==e)return{map:t.measure.maps[i],cache:t.measure.caches[i]};for(var r=0;r<t.rest.length;r++)if(P(t.rest[r])>n)return{map:t.measure.maps[r],cache:t.measure.caches[r],before:!0}}function Be(t,e){e=ht(e);var i=P(e),r=t.display.externalMeasured=new ge(t.doc,e,i);r.lineN=i;var o=r.built=le(t,r);return r.text=o.pre,n(t.display.lineMeasure,o.pre),r}function $e(t,e,n,i){return Xe(t,Ue(t,e),n,i)}function We(t,e){if(e>=t.display.viewFrom&&e<t.display.viewTo)return t.display.view[kn(t,e)];var n=t.display.externalMeasured;return n&&e>=n.lineN&&e<n.lineN+n.size?n:void 0}function Ue(t,e){var n=P(e),i=We(t,n);i&&!i.text?i=null:i&&i.changes&&(_e(t,i,n,wn(t)),t.curOp.forceUpdate=!0),i||(i=Be(t,e));var r=Ge(i,e,n);return{line:e,view:i,rect:null,map:r.map,cache:r.cache,before:r.before,hasHeights:!1}}function Xe(t,e,n,i,r){e.before&&(n=-1);var o,a=n+(i||"");return e.cache.hasOwnProperty(a)?o=e.cache[a]:(e.rect||(e.rect=e.view.text.getBoundingClientRect()),e.hasHeights||(qe(t,e.view,e.rect),e.hasHeights=!0),o=Ze(t,e,n,i),o.bogus||(e.cache[a]=o)),{left:o.left,right:o.right,top:r?o.rtop:o.top,bottom:r?o.rbottom:o.bottom}}function Ye(t,e,n){for(var i,r,o,a,s,l,c=0;c<t.length;c+=3)if(s=t[c],l=t[c+1],e<s?(r=0,o=1,a="left"):e<l?(r=e-s,o=r+1):(c==t.length-3||e==l&&t[c+3]>e)&&(o=l-s,r=o-1,e>=l&&(a="right")),null!=r){if(i=t[c+2],s==l&&n==(i.insertLeft?"left":"right")&&(a=n),"left"==n&&0==r)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)i=t[2+(c-=3)],a="left";if("right"==n&&r==l-s)for(;c<t.length-3&&t[c+3]==t[c+4]&&!t[c+5].insertLeft;)i=t[(c+=3)+2],a="right";break}return{node:i,start:r,end:o,collapse:a,coverStart:s,coverEnd:l}}function Qe(t,e){var n=bs;if("left"==e)for(var i=0;i<t.length&&(n=t[i]).left==n.right;i++);else for(var r=t.length-1;r>=0&&(n=t[r]).left==n.right;r--);return n}function Ze(t,e,n,i){var r,o=Ye(e.map,n,i),a=o.node,s=o.start,l=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;u<4;u++){for(;s&&S(e.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+l<o.coverEnd&&S(e.line.text.charAt(o.coverStart+l));)++l;if(r=ya&&xa<9&&0==s&&l==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Qe(Ra(a,s,l).getClientRects(),i),r.left||r.right||0==s)break;l=s,s-=1,c="right"}ya&&xa<11&&(r=Ke(t.display.measure,r))}else{s>0&&(c=i="right");var h;r=t.options.lineWrapping&&(h=a.getClientRects()).length>1?h["right"==i?h.length-1:0]:a.getBoundingClientRect()}if(ya&&xa<9&&!s&&(!r||!r.left&&!r.right)){var d=a.parentNode.getClientRects()[0];r=d?{left:d.left,right:d.left+bn(t.display),top:d.top,bottom:d.bottom}:bs}for(var f=r.top-e.rect.top,p=r.bottom-e.rect.top,g=(f+p)/2,m=e.view.measure.heights,v=0;v<m.length-1&&!(g<m[v]);v++);var y=v?m[v-1]:0,x=m[v],b={left:("right"==c?r.right:r.left)-e.rect.left,right:("left"==c?r.left:r.right)-e.rect.left,top:y,bottom:x};return r.left||r.right||(b.bogus=!0),t.options.singleCursorHeightPerLine||(b.rtop=f,b.rbottom=p),b}function Ke(t,e){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!Vt(t))return e;var n=screen.logicalXDPI/screen.deviceXDPI,i=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*n,right:e.right*n,top:e.top*i,bottom:e.bottom*i}}function Je(t){if(t.measure&&(t.measure.cache={},t.measure.heights=null,t.rest))for(var e=0;e<t.rest.length;e++)t.measure.caches[e]={}}function tn(t){t.display.externalMeasure=null,e(t.display.lineMeasure);for(var n=0;n<t.display.view.length;n++)Je(t.display.view[n])}function en(t){tn(t),t.display.cachedCharWidth=t.display.cachedTextHeight=t.display.cachedPaddingH=null,t.options.lineWrapping||(t.display.maxLineChanged=!0),t.display.lineNumChars=null}function nn(){return _a&&Ma?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function rn(){return _a&&Ma?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function on(t){var e=0;if(t.widgets)for(var n=0;n<t.widgets.length;++n)t.widgets[n].above&&(e+=Re(t.widgets[n]));return e}function an(t,e,n,i,r){if(!r){var o=on(e);n.top+=o,n.bottom+=o}if("line"==i)return n;i||(i="local");var a=yt(e);if("local"==i?a+=Ie(t.display):a-=t.display.viewOffset,"page"==i||"window"==i){var s=t.display.lineSpace.getBoundingClientRect();a+=s.top+("window"==i?0:rn());var l=s.left+("window"==i?0:nn());n.left+=l,n.right+=l}return n.top+=a,n.bottom+=a,n}function sn(t,e,n){if("div"==n)return e;var i=e.left,r=e.top;if("page"==n)i-=nn(),r-=rn();else if("local"==n||!n){var o=t.display.sizer.getBoundingClientRect();i+=o.left,r+=o.top}var a=t.display.lineSpace.getBoundingClientRect();return{left:i-a.left,top:r-a.top}}function ln(t,e,n,i,r){return i||(i=A(t.doc,e.line)),an(t,i,$e(t,i,e.ch,r),n)}function cn(t,e,n,i,r,o){function a(e,a){var s=Xe(t,r,e,a?"right":"left",o);return a?s.left=s.right:s.right=s.left,an(t,i,s,n)}function s(t,e,n){var i=l[e],r=1==i.level;return a(n?t-1:t,r!=n)}i=i||A(t.doc,e.line),r||(r=Ue(t,i));var l=St(i,t.doc.direction),c=e.ch,u=e.sticky;if(c>=i.text.length?(c=i.text.length,u="before"):c<=0&&(c=0,u="after"),!l)return a("before"==u?c-1:c,"before"==u);var h=_t(l,c,u),d=Ka,f=s(c,h,"before"==u);return null!=d&&(f.other=s(c,d,"before"!=u)),f}function un(t,e){var n=0;e=q(t.doc,e),t.options.lineWrapping||(n=bn(t.display)*e.ch);var i=A(t.doc,e.line),r=yt(i)+Ie(t.display);return{left:n,right:n,top:r,bottom:r+i.height}}function hn(t,e,n,i,r){var o=D(t,e,n);return o.xRel=r,i&&(o.outside=!0),o}function dn(t,e,n){var i=t.doc;if((n+=t.display.viewOffset)<0)return hn(i.first,0,null,!0,-1);var r=N(i,n),o=i.first+i.size-1;if(r>o)return hn(i.first+i.size-1,A(i,o).text.length,null,!0,1);e<0&&(e=0);for(var a=A(i,r);;){var s=mn(t,a,r,e,n),l=ct(a),c=l&&l.find(0,!0);if(!l||!(s.ch>c.from.ch||s.ch==c.from.ch&&s.xRel>0))return s;r=P(a=c.to.line)}}function fn(t,e,n,i){i-=on(e);var r=e.text.length,o=T(function(e){return Xe(t,n,e-1).bottom<=i},r,0);return r=T(function(e){return Xe(t,n,e).top>i},o,r),{begin:o,end:r}}function pn(t,e,n,i){return n||(n=Ue(t,e)),fn(t,e,n,an(t,e,Xe(t,n,i),"line").top)}function gn(t,e,n,i){return!(t.bottom<=n)&&(t.top>n||(i?t.left:t.right)>e)}function mn(t,e,n,i,r){r-=yt(e);var o=Ue(t,e),a=on(e),s=0,l=e.text.length,c=!0,u=St(e,t.doc.direction);if(u){var h=(t.options.lineWrapping?yn:vn)(t,e,n,o,u,i,r);c=1!=h.level,s=c?h.from:h.to-1,l=c?h.to:h.from-1}var d,f,p=null,g=null,m=T(function(e){var n=Xe(t,o,e);return n.top+=a,n.bottom+=a,!!gn(n,i,r,!1)&&(n.top<=r&&n.left<=i&&(p=e,g=n),!0)},s,l),v=!1;if(g){var y=i-g.left<g.right-i,x=y==c;m=p+(x?0:1),f=x?"after":"before",d=y?g.left:g.right}else{c||m!=l&&m!=s||m++,f=0==m?"after":m==e.text.length?"before":Xe(t,o,m-(c?1:0)).bottom+a<=r==c?"after":"before";var b=cn(t,D(n,m,f),"line",e,o);d=b.left,v=r<b.top||r>=b.bottom}return m=C(e.text,m,1),hn(n,m,f,v,i-d)}function vn(t,e,n,i,r,o,a){var s=T(function(s){var l=r[s],c=1!=l.level;return gn(cn(t,D(n,c?l.to:l.from,c?"before":"after"),"line",e,i),o,a,!0)},0,r.length-1),l=r[s];if(s>0){var c=1!=l.level,u=cn(t,D(n,c?l.from:l.to,c?"after":"before"),"line",e,i);gn(u,o,a,!0)&&u.top>a&&(l=r[s-1])}return l}function yn(t,e,n,i,r,o,a){var s=fn(t,e,i,a),l=s.begin,c=s.end;/\s/.test(e.text.charAt(c-1))&&c--;for(var u=null,h=null,d=0;d<r.length;d++){var f=r[d];if(!(f.from>=c||f.to<=l)){var p=1!=f.level,g=Xe(t,i,p?Math.min(c,f.to)-1:Math.max(l,f.from)).right,m=g<o?o-g+1e9:g-o;(!u||h>m)&&(u=f,h=m)}}return u||(u=r[r.length-1]),u.from<l&&(u={from:l,to:u.to,level:u.level}),u.to>c&&(u={from:u.from,to:c,level:u.level}),u}function xn(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==gs){gs=i("pre");for(var r=0;r<49;++r)gs.appendChild(document.createTextNode("x")),gs.appendChild(i("br"));gs.appendChild(document.createTextNode("x"))}n(t.measure,gs);var o=gs.offsetHeight/50;return o>3&&(t.cachedTextHeight=o),e(t.measure),o||1}function bn(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=i("span","xxxxxxxxxx"),r=i("pre",[e]);n(t.measure,r);var o=e.getBoundingClientRect(),a=(o.right-o.left)/10;return a>2&&(t.cachedCharWidth=a),a||10}function wn(t){for(var e=t.display,n={},i={},r=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a)n[t.options.gutters[a]]=o.offsetLeft+o.clientLeft+r,i[t.options.gutters[a]]=o.clientWidth;return{fixedPos:_n(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:i,wrapperWidth:e.wrapper.clientWidth}}function _n(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function Sn(t){var e=xn(t.display),n=t.options.lineWrapping,i=n&&Math.max(5,t.display.scroller.clientWidth/bn(t.display)-3);return function(r){if(mt(t.doc,r))return 0;var o=0;if(r.widgets)for(var a=0;a<r.widgets.length;a++)r.widgets[a].height&&(o+=r.widgets[a].height);return n?o+(Math.ceil(r.text.length/i)||1)*e:o+e}}function Cn(t){var e=t.doc,n=Sn(t);e.iter(function(t){var e=n(t);e!=t.height&&L(t,e)})}function Tn(t,e,n,i){var r=t.display;if(!n&&"true"==Dt(e).getAttribute("cm-not-content"))return null;var o,a,s=r.lineSpace.getBoundingClientRect();try{o=e.clientX-s.left,a=e.clientY-s.top}catch(e){return null}var l,c=dn(t,o,a);if(i&&1==c.xRel&&(l=A(t.doc,c.line).text).length==c.ch){var u=h(l,l.length,t.options.tabSize)-l.length;c=D(c.line,Math.max(0,Math.round((o-je(t.display).left)/bn(t.display))-u))}return c}function kn(t,e){if(e>=t.display.viewTo)return null;if((e-=t.display.viewFrom)<0)return null;for(var n=t.display.view,i=0;i<n.length;i++)if((e-=n[i].size)<0)return i}function An(t){t.display.input.showSelection(t.display.input.prepareSelection())}function Mn(t,e){void 0===e&&(e=!0);for(var n=t.doc,i={},r=i.cursors=document.createDocumentFragment(),o=i.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(e||a!=n.sel.primIndex){var s=n.sel.ranges[a]
+;if(!(s.from().line>=t.display.viewTo||s.to().line<t.display.viewFrom)){var l=s.empty();(l||t.options.showCursorWhenSelecting)&&En(t,s.head,r),l||Pn(t,s,o)}}return i}function En(t,e,n){var r=cn(t,e,"div",null,null,!t.options.singleCursorHeightPerLine),o=n.appendChild(i("div"," ","CodeMirror-cursor"));if(o.style.left=r.left+"px",o.style.top=r.top+"px",o.style.height=Math.max(0,r.bottom-r.top)*t.options.cursorHeight+"px",r.other){var a=n.appendChild(i("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function Ln(t,e){return t.top-e.top||t.left-e.left}function Pn(t,e,n){function r(t,e,n,r){e<0&&(e=0),e=Math.round(e),r=Math.round(r),l.appendChild(i("div",null,"CodeMirror-selected","position: absolute; left: "+t+"px;\n                             top: "+e+"px; width: "+(null==n?h-t:n)+"px;\n                             height: "+(r-e)+"px"))}function o(e,n,i){function o(n,i){return ln(t,D(e,n),"div",f,i)}function a(e,n,i){var r=pn(t,f,null,e),a="ltr"==n==("after"==i)?"left":"right";return o("after"==i?r.begin:r.end-(/\s/.test(f.text.charAt(r.end-1))?2:1),a)[a]}var l,c,f=A(s,e),p=f.text.length,g=St(f,s.direction);return wt(g,n||0,null==i?p:i,function(t,e,s,f){var m="ltr"==s,v=o(t,m?"left":"right"),y=o(e-1,m?"right":"left"),x=null==n&&0==t,b=null==i&&e==p,w=0==f,_=!g||f==g.length-1;if(y.top-v.top<=3){var S=(d?x:b)&&w,C=(d?b:x)&&_,T=S?u:(m?v:y).left,k=C?h:(m?y:v).right;r(T,v.top,k-T,v.bottom)}else{var A,M,E,L;m?(A=d&&x&&w?u:v.left,M=d?h:a(t,s,"before"),E=d?u:a(e,s,"after"),L=d&&b&&_?h:y.right):(A=d?a(t,s,"before"):u,M=!d&&x&&w?h:v.right,E=!d&&b&&_?u:y.left,L=d?a(e,s,"after"):h),r(A,v.top,M-A,v.bottom),v.bottom<y.top&&r(u,v.bottom,null,y.top),r(E,y.top,L-E,y.bottom)}(!l||Ln(v,l)<0)&&(l=v),Ln(y,l)<0&&(l=y),(!c||Ln(v,c)<0)&&(c=v),Ln(y,c)<0&&(c=y)}),{start:l,end:c}}var a=t.display,s=t.doc,l=document.createDocumentFragment(),c=je(t.display),u=c.left,h=Math.max(a.sizerWidth,Fe(t)-a.sizer.offsetLeft)-c.right,d="ltr"==s.direction,f=e.from(),p=e.to();if(f.line==p.line)o(f.line,f.ch,p.ch);else{var g=A(s,f.line),m=A(s,p.line),v=ht(g)==ht(m),y=o(f.line,f.ch,v?g.text.length+1:null).end,x=o(p.line,v?0:null,p.ch).start;v&&(y.top<x.top-2?(r(y.right,y.top,null,y.bottom),r(u,x.top,x.left,x.bottom)):r(y.right,y.top,x.left-y.right,y.bottom)),y.bottom<x.top&&r(u,y.bottom,null,x.top)}n.appendChild(l)}function Nn(t){if(t.state.focused){var e=t.display;clearInterval(e.blinker);var n=!0;e.cursorDiv.style.visibility="",t.options.cursorBlinkRate>0?e.blinker=setInterval(function(){return e.cursorDiv.style.visibility=(n=!n)?"":"hidden"},t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function On(t){t.state.focused||(t.display.input.focus(),Dn(t))}function Rn(t){t.state.delayingBlurEvent=!0,setTimeout(function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,In(t))},100)}function Dn(t,e){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(kt(t,"focus",t,e),t.state.focused=!0,s(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),ba&&setTimeout(function(){return t.display.input.reset(!0)},20)),t.display.input.receivedFocus()),Nn(t))}function In(t,e){t.state.delayingBlurEvent||(t.state.focused&&(kt(t,"blur",t,e),t.state.focused=!1,Ha(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout(function(){t.state.focused||(t.display.shift=!1)},150))}function Hn(t){for(var e=t.display,n=e.lineDiv.offsetTop,i=0;i<e.view.length;i++){var r=e.view[i],o=void 0;if(!r.hidden){if(ya&&xa<8){var a=r.node.offsetTop+r.node.offsetHeight;o=a-n,n=a}else{var s=r.node.getBoundingClientRect();o=s.bottom-s.top}var l=r.line.height-o;if(o<2&&(o=xn(e)),(l>.005||l<-.005)&&(L(r.line,o),jn(r.line),r.rest))for(var c=0;c<r.rest.length;c++)jn(r.rest[c])}}}function jn(t){if(t.widgets)for(var e=0;e<t.widgets.length;++e){var n=t.widgets[e],i=n.node.parentNode;i&&(n.height=i.offsetHeight)}}function Vn(t,e,n){var i=n&&null!=n.top?Math.max(0,n.top):t.scroller.scrollTop;i=Math.floor(i-Ie(t));var r=n&&null!=n.bottom?n.bottom:i+t.wrapper.clientHeight,o=N(e,i),a=N(e,r);if(n&&n.ensure){var s=n.ensure.from.line,l=n.ensure.to.line;s<o?(o=s,a=N(e,yt(A(e,s))+t.wrapper.clientHeight)):Math.min(l,e.lastLine())>=a&&(o=N(e,yt(A(e,l))-t.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Fn(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var i=_n(e)-e.scroller.scrollLeft+t.doc.scrollLeft,r=e.gutters.offsetWidth,o=i+"px",a=0;a<n.length;a++)if(!n[a].hidden){t.options.fixedGutter&&(n[a].gutter&&(n[a].gutter.style.left=o),n[a].gutterBackground&&(n[a].gutterBackground.style.left=o));var s=n[a].alignable;if(s)for(var l=0;l<s.length;l++)s[l].style.left=o}t.options.fixedGutter&&(e.gutters.style.left=i+r+"px")}}function zn(t){if(!t.options.lineNumbers)return!1;var e=t.doc,n=R(t.options,e.first+e.size-1),r=t.display;if(n.length!=r.lineNumChars){var o=r.measure.appendChild(i("div",[i("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),a=o.firstChild.offsetWidth,s=o.offsetWidth-a;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(a,r.lineGutter.offsetWidth-s)+1,r.lineNumWidth=r.lineNumInnerWidth+s,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",Ni(t),!0}return!1}function qn(t,e){if(!At(t,"scrollCursorIntoView")){var n=t.display,r=n.sizer.getBoundingClientRect(),o=null;if(e.top+r.top<0?o=!0:e.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(o=!1),null!=o&&!ka){var a=i("div","​",null,"position: absolute;\n                         top: "+(e.top-n.viewOffset-Ie(t.display))+"px;\n                         height: "+(e.bottom-e.top+Ve(t)+n.barHeight)+"px;\n                         left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(a),a.scrollIntoView(o),t.display.lineSpace.removeChild(a)}}}function Gn(t,e,n,i){null==i&&(i=0);var r;t.options.lineWrapping||e!=n||(e=e.ch?D(e.line,"before"==e.sticky?e.ch-1:e.ch,"after"):e,n="before"==e.sticky?D(e.line,e.ch+1,"before"):e);for(var o=0;o<5;o++){var a=!1,s=cn(t,e),l=n&&n!=e?cn(t,n):s;r={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-i,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+i};var c=$n(t,r),u=t.doc.scrollTop,h=t.doc.scrollLeft;if(null!=c.scrollTop&&(Kn(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(ti(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-h)>1&&(a=!0)),!a)break}return r}function Bn(t,e){var n=$n(t,e);null!=n.scrollTop&&Kn(t,n.scrollTop),null!=n.scrollLeft&&ti(t,n.scrollLeft)}function $n(t,e){var n=t.display,i=xn(t.display);e.top<0&&(e.top=0);var r=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=ze(t),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+He(n),l=e.top<i,c=e.bottom>s-i;if(e.top<r)a.scrollTop=l?0:e.top;else if(e.bottom>r+o){var u=Math.min(e.top,(c?s:e.bottom)-o);u!=r&&(a.scrollTop=u)}var h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft,d=Fe(t)-(t.options.fixedGutter?n.gutters.offsetWidth:0),f=e.right-e.left>d;return f&&(e.right=e.left+d),e.left<10?a.scrollLeft=0:e.left<h?a.scrollLeft=Math.max(0,e.left-(f?0:10)):e.right>d+h-3&&(a.scrollLeft=e.right+(f?0:10)-d),a}function Wn(t,e){null!=e&&(Qn(t),t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+e)}function Un(t){Qn(t);var e=t.getCursor();t.curOp.scrollToPos={from:e,to:e,margin:t.options.cursorScrollMargin}}function Xn(t,e,n){null==e&&null==n||Qn(t),null!=e&&(t.curOp.scrollLeft=e),null!=n&&(t.curOp.scrollTop=n)}function Yn(t,e){Qn(t),t.curOp.scrollToPos=e}function Qn(t){var e=t.curOp.scrollToPos;if(e){t.curOp.scrollToPos=null;Zn(t,un(t,e.from),un(t,e.to),e.margin)}}function Zn(t,e,n,i){var r=$n(t,{left:Math.min(e.left,n.left),top:Math.min(e.top,n.top)-i,right:Math.max(e.right,n.right),bottom:Math.max(e.bottom,n.bottom)+i});Xn(t,r.scrollLeft,r.scrollTop)}function Kn(t,e){Math.abs(t.doc.scrollTop-e)<2||(pa||Li(t,{top:e}),Jn(t,e,!0),pa&&Li(t),Si(t,100))}function Jn(t,e,n){e=Math.min(t.display.scroller.scrollHeight-t.display.scroller.clientHeight,e),(t.display.scroller.scrollTop!=e||n)&&(t.doc.scrollTop=e,t.display.scrollbars.setScrollTop(e),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e))}function ti(t,e,n,i){e=Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth),(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)&&!i||(t.doc.scrollLeft=e,Fn(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function ei(t){var e=t.display,n=e.gutters.offsetWidth,i=Math.round(t.doc.height+He(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:i,scrollHeight:i+Ve(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}function ni(t,e){e||(e=ei(t));var n=t.display.barWidth,i=t.display.barHeight;ii(t,e);for(var r=0;r<4&&n!=t.display.barWidth||i!=t.display.barHeight;r++)n!=t.display.barWidth&&t.options.lineWrapping&&Hn(t),ii(t,ei(t)),n=t.display.barWidth,i=t.display.barHeight}function ii(t,e){var n=t.display,i=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=i.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=i.bottom)+"px",n.heightForcer.style.borderBottom=i.bottom+"px solid transparent",i.right&&i.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=i.bottom+"px",n.scrollbarFiller.style.width=i.right+"px"):n.scrollbarFiller.style.display="",i.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=i.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}function ri(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&Ha(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new Ss[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),es(e,"mousedown",function(){t.state.focused&&setTimeout(function(){return t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?ti(t,e):Kn(t,e)},t),t.display.scrollbars.addClass&&s(t.display.wrapper,t.display.scrollbars.addClass)}function oi(t){t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Cs},ve(t.curOp)}function ai(t){xe(t.curOp,function(t){for(var e=0;e<t.ops.length;e++)t.ops[e].cm.curOp=null;si(t)})}function si(t){for(var e=t.ops,n=0;n<e.length;n++)li(e[n]);for(var i=0;i<e.length;i++)ci(e[i]);for(var r=0;r<e.length;r++)ui(e[r]);for(var o=0;o<e.length;o++)hi(e[o]);for(var a=0;a<e.length;a++)di(e[a])}function li(t){var e=t.cm,n=e.display;Ti(e),t.updateMaxLine&&bt(e),t.mustUpdate=t.viewChanged||t.forceUpdate||null!=t.scrollTop||t.scrollToPos&&(t.scrollToPos.from.line<n.viewFrom||t.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new Ts(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function ci(t){t.updatedDisplay=t.mustUpdate&&Mi(t.cm,t.update)}function ui(t){var e=t.cm,n=e.display;t.updatedDisplay&&Hn(e),t.barMeasure=ei(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=$e(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+Ve(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Fe(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection())}function hi(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft<e.doc.scrollLeft&&ti(e,Math.min(e.display.scroller.scrollLeft,t.maxScrollLeft),!0),e.display.maxLineChanged=!1);var n=t.focus&&t.focus==a();t.preparedSelection&&e.display.input.showSelection(t.preparedSelection,n),(t.updatedDisplay||t.startHeight!=e.doc.height)&&ni(e,t.barMeasure),t.updatedDisplay&&Oi(e,t.barMeasure),t.selectionChanged&&Nn(e),e.state.focused&&t.updateInput&&e.display.input.reset(t.typing),n&&On(t.cm)}function di(t){var e=t.cm,n=e.display,i=e.doc;if(t.updatedDisplay&&Ei(e,t.update),null==n.wheelStartX||null==t.scrollTop&&null==t.scrollLeft&&!t.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null!=t.scrollTop&&Jn(e,t.scrollTop,t.forceScroll),null!=t.scrollLeft&&ti(e,t.scrollLeft,!0,!0),t.scrollToPos){qn(e,Gn(e,q(i,t.scrollToPos.from),q(i,t.scrollToPos.to),t.scrollToPos.margin))}var r=t.maybeHiddenMarkers,o=t.maybeUnhiddenMarkers;if(r)for(var a=0;a<r.length;++a)r[a].lines.length||kt(r[a],"hide");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&kt(o[s],"unhide");n.wrapper.offsetHeight&&(i.scrollTop=e.display.scroller.scrollTop),t.changeObjs&&kt(e,"changes",e,t.changeObjs),t.update&&t.update.finish()}function fi(t,e){if(t.curOp)return e();oi(t);try{return e()}finally{ai(t)}}function pi(t,e){return function(){if(t.curOp)return e.apply(t,arguments);oi(t);try{return e.apply(t,arguments)}finally{ai(t)}}}function gi(t){return function(){if(this.curOp)return t.apply(this,arguments);oi(this);try{return t.apply(this,arguments)}finally{ai(this)}}}function mi(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);oi(e);try{return t.apply(this,arguments)}finally{ai(e)}}}function vi(t,e,n,i){null==e&&(e=t.doc.first),null==n&&(n=t.doc.first+t.doc.size),i||(i=0);var r=t.display;if(i&&n<r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>e)&&(r.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=r.viewTo)Za&&pt(t.doc,e)<r.viewTo&&xi(t);else if(n<=r.viewFrom)Za&&gt(t.doc,n+i)>r.viewFrom?xi(t):(r.viewFrom+=i,r.viewTo+=i);else if(e<=r.viewFrom&&n>=r.viewTo)xi(t);else if(e<=r.viewFrom){var o=bi(t,n,n+i,1);o?(r.view=r.view.slice(o.index),r.viewFrom=o.lineN,r.viewTo+=i):xi(t)}else if(n>=r.viewTo){var a=bi(t,e,e,-1);a?(r.view=r.view.slice(0,a.index),r.viewTo=a.lineN):xi(t)}else{var s=bi(t,e,e,-1),l=bi(t,n,n+i,1);s&&l?(r.view=r.view.slice(0,s.index).concat(me(t,s.lineN,l.lineN)).concat(r.view.slice(l.index)),r.viewTo+=i):xi(t)}var c=r.externalMeasured;c&&(n<c.lineN?c.lineN+=i:e<c.lineN+c.size&&(r.externalMeasured=null))}function yi(t,e,n){t.curOp.viewChanged=!0;var i=t.display,r=t.display.externalMeasured;if(r&&e>=r.lineN&&e<r.lineN+r.size&&(i.externalMeasured=null),!(e<i.viewFrom||e>=i.viewTo)){var o=i.view[kn(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==d(a,n)&&a.push(n)}}}function xi(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function bi(t,e,n,i){var r,o=kn(t,e),a=t.display.view;if(!Za||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,l=0;l<o;l++)s+=a[l].size;if(s!=e){if(i>0){if(o==a.length-1)return null;r=s+a[o].size-e,o++}else r=s-e;e+=r,n+=r}for(;pt(t.doc,n)!=n;){if(o==(i<0?0:a.length-1))return null;n+=i*a[o-(i<0?1:0)].size,o+=i}return{index:o,lineN:n}}function wi(t,e,n){var i=t.display;0==i.view.length||e>=i.viewTo||n<=i.viewFrom?(i.view=me(t,e,n),i.viewFrom=e):(i.viewFrom>e?i.view=me(t,e,i.viewFrom).concat(i.view):i.viewFrom<e&&(i.view=i.view.slice(kn(t,e))),i.viewFrom=e,i.viewTo<n?i.view=i.view.concat(me(t,i.viewTo,n)):i.viewTo>n&&(i.view=i.view.slice(0,kn(t,n)))),i.viewTo=n}function _i(t){for(var e=t.display.view,n=0,i=0;i<e.length;i++){var r=e[i];r.hidden||r.node&&!r.changes||++n}return n}function Si(t,e){t.doc.highlightFrontier<t.display.viewTo&&t.state.highlight.set(e,c(Ci,t))}function Ci(t){var e=t.doc;if(!(e.highlightFrontier>=t.display.viewTo)){var n=+new Date+t.options.workTime,i=Qt(t,e.highlightFrontier),r=[];e.iter(i.line,Math.min(e.first+e.size,t.display.viewTo+500),function(o){if(i.line>=t.display.viewFrom){var a=o.styles,s=o.text.length>t.options.maxHighlightLength?$t(e.mode,i.state):null,l=Xt(t,o,i,!0);s&&(i.state=s),o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var h=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),d=0;!h&&d<a.length;++d)h=a[d]!=o.styles[d];h&&r.push(i.line),o.stateAfter=i.save(),i.nextLine()}else o.text.length<=t.options.maxHighlightLength&&Zt(t,o.text,i),o.stateAfter=i.line%5==0?i.save():null,i.nextLine();if(+new Date>n)return Si(t,t.options.workDelay),!0}),e.highlightFrontier=i.line,e.modeFrontier=Math.max(e.modeFrontier,i.line),r.length&&fi(t,function(){for(var e=0;e<r.length;e++)yi(t,r[e],"text")})}}function Ti(t){var e=t.display;!e.scrollbarsClipped&&e.scroller.offsetWidth&&(e.nativeBarWidth=e.scroller.offsetWidth-e.scroller.clientWidth,e.heightForcer.style.height=Ve(t)+"px",e.sizer.style.marginBottom=-e.nativeBarWidth+"px",e.sizer.style.borderRightWidth=Ve(t)+"px",e.scrollbarsClipped=!0)}function ki(t){if(t.hasFocus())return null;var e=a();if(!e||!o(t.display.lineDiv,e))return null;var n={activeElt:e};if(window.getSelection){var i=window.getSelection();i.anchorNode&&i.extend&&o(t.display.lineDiv,i.anchorNode)&&(n.anchorNode=i.anchorNode,n.anchorOffset=i.anchorOffset,n.focusNode=i.focusNode,n.focusOffset=i.focusOffset)}return n}function Ai(t){if(t&&t.activeElt&&t.activeElt!=a()&&(t.activeElt.focus(),t.anchorNode&&o(document.body,t.anchorNode)&&o(document.body,t.focusNode))){var e=window.getSelection(),n=document.createRange();n.setEnd(t.anchorNode,t.anchorOffset),n.collapse(!1),e.removeAllRanges(),e.addRange(n),e.extend(t.focusNode,t.focusOffset)}}function Mi(t,n){var i=t.display,r=t.doc;if(n.editorIsHidden)return xi(t),!1;if(!n.force&&n.visible.from>=i.viewFrom&&n.visible.to<=i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&0==_i(t))return!1;zn(t)&&(xi(t),n.dims=wn(t));var o=r.first+r.size,a=Math.max(n.visible.from-t.options.viewportMargin,r.first),s=Math.min(o,n.visible.to+t.options.viewportMargin);i.viewFrom<a&&a-i.viewFrom<20&&(a=Math.max(r.first,i.viewFrom)),i.viewTo>s&&i.viewTo-s<20&&(s=Math.min(o,i.viewTo)),Za&&(a=pt(t.doc,a),s=gt(t.doc,s));var l=a!=i.viewFrom||s!=i.viewTo||i.lastWrapHeight!=n.wrapperHeight||i.lastWrapWidth!=n.wrapperWidth;wi(t,a,s),i.viewOffset=yt(A(t.doc,i.viewFrom)),t.display.mover.style.top=i.viewOffset+"px";var c=_i(t);if(!l&&0==c&&!n.force&&i.renderedView==i.view&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo))return!1;var u=ki(t);return c>4&&(i.lineDiv.style.display="none"),Pi(t,i.updateLineNumbers,n.dims),c>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,Ai(u),e(i.cursorDiv),e(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,l&&(i.lastWrapHeight=n.wrapperHeight,i.lastWrapWidth=n.wrapperWidth,Si(t,400)),i.updateLineNumbers=null,!0}function Ei(t,e){for(var n=e.viewport,i=!0;(i&&t.options.lineWrapping&&e.oldDisplayWidth!=Fe(t)||(n&&null!=n.top&&(n={top:Math.min(t.doc.height+He(t.display)-ze(t),n.top)}),e.visible=Vn(t.display,t.doc,n),!(e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)))&&Mi(t,e);i=!1){Hn(t);var r=ei(t);An(t),ni(t,r),Oi(t,r),e.force=!1}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function Li(t,e){var n=new Ts(t,e);if(Mi(t,n)){Hn(t),Ei(t,n);var i=ei(t);An(t),ni(t,i),Oi(t,i),n.finish()}}function Pi(t,n,i){function r(e){var n=e.nextSibling;return ba&&La&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var o=t.display,a=t.options.lineNumbers,s=o.lineDiv,l=s.firstChild,c=o.view,u=o.viewFrom,h=0;h<c.length;h++){var f=c[h];if(f.hidden);else if(f.node&&f.node.parentNode==s){for(;l!=f.node;)l=r(l);var p=a&&null!=n&&n<=u&&f.lineNumber;f.changes&&(d(f.changes,"gutter")>-1&&(p=!1),_e(t,f,u,i)),p&&(e(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(R(t.options,u)))),l=f.node.nextSibling}else{var g=Le(t,f,u,i);s.insertBefore(g,l)}u+=f.size}for(;l;)l=r(l)}function Ni(t){var e=t.display.gutters.offsetWidth;t.display.sizer.style.marginLeft=e+"px"}function Oi(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+Ve(t)+"px"}function Ri(t){var n=t.display.gutters,r=t.options.gutters;e(n);for(var o=0;o<r.length;++o){var a=r[o],s=n.appendChild(i("div",null,"CodeMirror-gutter "+a));"CodeMirror-linenumbers"==a&&(t.display.lineGutter=s,s.style.width=(t.display.lineNumWidth||1)+"px")}n.style.display=o?"":"none",Ni(t)}function Di(t){var e=d(t.gutters,"CodeMirror-linenumbers");-1==e&&t.lineNumbers?t.gutters=t.gutters.concat(["CodeMirror-linenumbers"]):e>-1&&!t.lineNumbers&&(t.gutters=t.gutters.slice(0),t.gutters.splice(e,1))}function Ii(t){var e=t.wheelDeltaX,n=t.wheelDeltaY;return null==e&&t.detail&&t.axis==t.HORIZONTAL_AXIS&&(e=t.detail),null==n&&t.detail&&t.axis==t.VERTICAL_AXIS?n=t.detail:null==n&&(n=t.wheelDelta),{x:e,y:n}}function Hi(t){var e=Ii(t);return e.x*=As,e.y*=As,e}function ji(t,e){var n=Ii(e),i=n.x,r=n.y,o=t.display,a=o.scroller,s=a.scrollWidth>a.clientWidth,l=a.scrollHeight>a.clientHeight;if(i&&s||r&&l){if(r&&La&&ba)t:for(var c=e.target,u=o.view;c!=a;c=c.parentNode)for(var h=0;h<u.length;h++)if(u[h].node==c){t.display.currentWheelTarget=c;break t}if(i&&!pa&&!Sa&&null!=As)return r&&l&&Kn(t,Math.max(0,a.scrollTop+r*As)),ti(t,Math.max(0,a.scrollLeft+i*As)),(!r||r&&l)&&Pt(e),void(o.wheelStartX=null);if(r&&null!=As){var d=r*As,f=t.doc.scrollTop,p=f+o.wrapper.clientHeight;d<0?f=Math.max(0,f+d-50):p=Math.min(t.doc.height,p+d+50),Li(t,{top:f,bottom:p})}ks<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=i,o.wheelDY=r,setTimeout(function(){if(null!=o.wheelStartX){var t=a.scrollLeft-o.wheelStartX,e=a.scrollTop-o.wheelStartY,n=e&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(As=(As*ks+n)/(ks+1),++ks)}},200)):(o.wheelDX+=i,o.wheelDY+=r))}}function Vi(t,e){var n=t[e];t.sort(function(t,e){return I(t.from(),e.from())}),e=d(t,n);for(var i=1;i<t.length;i++){var r=t[i],o=t[i-1];if(I(o.to(),r.from())>=0){var a=F(o.from(),r.from()),s=V(o.to(),r.to()),l=o.empty()?r.from()==r.head:o.from()==o.head;i<=e&&--e,t.splice(--i,2,new Es(l?s:a,l?a:s))}}return new Ms(t,e)}function Fi(t,e){return new Ms([new Es(t,e||t)],0)}function zi(t){return t.text?D(t.from.line+t.text.length-1,g(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function qi(t,e){if(I(t,e.from)<0)return t;if(I(t,e.to)<=0)return zi(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,i=t.ch;return t.line==e.to.line&&(i+=zi(e).ch-e.to.ch),D(n,i)}function Gi(t,e){for(var n=[],i=0;i<t.sel.ranges.length;i++){var r=t.sel.ranges[i];n.push(new Es(qi(r.anchor,e),qi(r.head,e)))}return Vi(n,t.sel.primIndex)}function Bi(t,e,n){return t.line==e.line?D(n.line,t.ch-e.ch+n.ch):D(n.line+(t.line-e.line),t.ch)}function $i(t,e,n){for(var i=[],r=D(t.first,0),o=r,a=0;a<e.length;a++){var s=e[a],l=Bi(s.from,r,o),c=Bi(zi(s),r,o);if(r=s.to,o=c,"around"==n){var u=t.sel.ranges[a],h=I(u.head,u.anchor)<0;i[a]=new Es(h?c:l,h?l:c)}else i[a]=new Es(l,l)}return new Ms(i,t.sel.primIndex)}function Wi(t){t.doc.mode=Gt(t.options,t.doc.modeOption),Ui(t)}function Ui(t){t.doc.iter(function(t){t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null)}),t.doc.modeFrontier=t.doc.highlightFrontier=t.doc.first,Si(t,100),t.state.modeGen++,t.curOp&&vi(t)}function Xi(t,e){return 0==e.from.ch&&0==e.to.ch&&""==g(e.text)&&(!t.cm||t.cm.options.wholeLineUpdateBefore)}function Yi(t,e,n,i){function r(t){return n?n[t]:null}function o(t,n,r){oe(t,n,r,i),be(t,"change",t,e)}function a(t,e){for(var n=[],o=t;o<e;++o)n.push(new ps(c[o],r(o),i));return n}var s=e.from,l=e.to,c=e.text,u=A(t,s.line),h=A(t,l.line),d=g(c),f=r(c.length-1),p=l.line-s.line;if(e.full)t.insert(0,a(0,c.length)),t.remove(c.length,t.size-c.length);else if(Xi(t,e)){var m=a(0,c.length-1);o(h,h.text,f),p&&t.remove(s.line,p),m.length&&t.insert(s.line,m)}else if(u==h)if(1==c.length)o(u,u.text.slice(0,s.ch)+d+u.text.slice(l.ch),f);else{var v=a(1,c.length-1);v.push(new ps(d+u.text.slice(l.ch),f,i)),o(u,u.text.slice(0,s.ch)+c[0],r(0)),t.insert(s.line+1,v)}else if(1==c.length)o(u,u.text.slice(0,s.ch)+c[0]+h.text.slice(l.ch),r(0)),t.remove(s.line+1,p);else{o(u,u.text.slice(0,s.ch)+c[0],r(0)),o(h,d+h.text.slice(l.ch),f);var y=a(1,c.length-1);p>1&&t.remove(s.line+1,p-1),t.insert(s.line+1,y)}be(t,"change",t,e)}function Qi(t,e,n){function i(t,r,o){if(t.linked)for(var a=0;a<t.linked.length;++a){var s=t.linked[a];if(s.doc!=r){var l=o&&s.sharedHist;n&&!l||(e(s.doc,l),i(s.doc,t,l))}}}i(t,null,!0)}function Zi(t,e){if(e.cm)throw new Error("This document is already in use.");t.doc=e,e.cm=t,Cn(t),Wi(t),Ki(t),t.options.lineWrapping||bt(t),t.options.mode=e.modeOption,vi(t)}function Ki(t){("rtl"==t.doc.direction?s:Ha)(t.display.lineDiv,"CodeMirror-rtl")}function Ji(t){fi(t,function(){Ki(t),vi(t)})}function tr(t){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=t||1}function er(t,e){var n={from:j(e.from),to:zi(e),text:M(t,e.from,e.to)};return lr(t,n,e.from.line,e.to.line+1),Qi(t,function(t){return lr(t,n,e.from.line,e.to.line+1)},!0),n}function nr(t){for(;t.length;){if(!g(t).ranges)break;t.pop()}}function ir(t,e){return e?(nr(t.done),g(t.done)):t.done.length&&!g(t.done).ranges?g(t.done):t.done.length>1&&!t.done[t.done.length-2].ranges?(t.done.pop(),g(t.done)):void 0}function rr(t,e,n,i){var r=t.history;r.undone.length=0;var o,a,s=+new Date;if((r.lastOp==i||r.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&r.lastModTime>s-(t.cm?t.cm.options.historyEventDelay:500)||"*"==e.origin.charAt(0)))&&(o=ir(r,r.lastOp==i)))a=g(o.changes),0==I(e.from,e.to)&&0==I(e.from,a.to)?a.to=zi(e):o.changes.push(er(t,e));else{var l=g(r.done);for(l&&l.ranges||sr(t.sel,r.done),o={changes:[er(t,e)],generation:r.generation},r.done.push(o);r.done.length>r.undoDepth;)r.done.shift(),r.done[0].ranges||r.done.shift()}r.done.push(n),r.generation=++r.maxGeneration,r.lastModTime=r.lastSelTime=s,r.lastOp=r.lastSelOp=i,r.lastOrigin=r.lastSelOrigin=e.origin,a||kt(t,"historyAdded")}function or(t,e,n,i){var r=e.charAt(0);return"*"==r||"+"==r&&n.ranges.length==i.ranges.length&&n.somethingSelected()==i.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}function ar(t,e,n,i){var r=t.history,o=i&&i.origin;n==r.lastSelOp||o&&r.lastSelOrigin==o&&(r.lastModTime==r.lastSelTime&&r.lastOrigin==o||or(t,o,g(r.done),e))?r.done[r.done.length-1]=e:sr(e,r.done),r.lastSelTime=+new Date,r.lastSelOrigin=o,r.lastSelOp=n,i&&!1!==i.clearRedo&&nr(r.undone)}function sr(t,e){var n=g(e);n&&n.ranges&&n.equals(t)||e.push(t)}function lr(t,e,n,i){var r=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,i),function(n){n.markedSpans&&((r||(r=e["spans_"+t.id]={}))[o]=n.markedSpans),++o})}function cr(t){if(!t)return null;for(var e,n=0;n<t.length;++n)t[n].marker.explicitlyCleared?e||(e=t.slice(0,n)):e&&e.push(t[n]);return e?e.length?e:null:t}function ur(t,e){var n=e["spans_"+t.id];if(!n)return null;for(var i=[],r=0;r<e.text.length;++r)i.push(cr(n[r]));return i}function hr(t,e){var n=ur(t,e),i=J(t,e);if(!n)return i;if(!i)return n;for(var r=0;r<n.length;++r){var o=n[r],a=i[r];if(o&&a)t:for(var s=0;s<a.length;++s){for(var l=a[s],c=0;c<o.length;++c)if(o[c].marker==l.marker)continue t;o.push(l)}else a&&(n[r]=a)}return n}function dr(t,e,n){for(var i=[],r=0;r<t.length;++r){var o=t[r];if(o.ranges)i.push(n?Ms.prototype.deepCopy.call(o):o);else{var a=o.changes,s=[];i.push({changes:s});for(var l=0;l<a.length;++l){var c=a[l],u=void 0;if(s.push({from:c.from,to:c.to,text:c.text}),e)for(var h in c)(u=h.match(/^spans_(\d+)$/))&&d(e,Number(u[1]))>-1&&(g(s)[h]=c[h],delete c[h])}}}return i}function fr(t,e,n,i){if(i){var r=t.anchor;if(n){var o=I(e,r)<0;o!=I(n,r)<0?(r=e,e=n):o!=I(e,n)<0&&(e=n)}return new Es(r,e)}return new Es(n||e,e)}function pr(t,e,n,i,r){null==r&&(r=t.cm&&(t.cm.display.shift||t.extend)),br(t,new Ms([fr(t.sel.primary(),e,n,r)],0),i)}function gr(t,e,n){for(var i=[],r=t.cm&&(t.cm.display.shift||t.extend),o=0;o<t.sel.ranges.length;o++)i[o]=fr(t.sel.ranges[o],e[o],null,r);br(t,Vi(i,t.sel.primIndex),n)}function mr(t,e,n,i){var r=t.sel.ranges.slice(0);r[e]=n,br(t,Vi(r,t.sel.primIndex),i)}function vr(t,e,n,i){br(t,Fi(e,n),i)}function yr(t,e,n){var i={ranges:e.ranges,update:function(e){var n=this;this.ranges=[];for(var i=0;i<e.length;i++)n.ranges[i]=new Es(q(t,e[i].anchor),q(t,e[i].head))},origin:n&&n.origin};return kt(t,"beforeSelectionChange",t,i),t.cm&&kt(t.cm,"beforeSelectionChange",t.cm,i),i.ranges!=e.ranges?Vi(i.ranges,i.ranges.length-1):e}function xr(t,e,n){var i=t.history.done,r=g(i);r&&r.ranges?(i[i.length-1]=e,wr(t,e,n)):br(t,e,n)}function br(t,e,n){wr(t,e,n),ar(t,t.sel,t.cm?t.cm.curOp.id:NaN,n)}function wr(t,e,n){(Et(t,"beforeSelectionChange")||t.cm&&Et(t.cm,"beforeSelectionChange"))&&(e=yr(t,e,n)),_r(t,Cr(t,e,n&&n.bias||(I(e.primary().head,t.sel.primary().head)<0?-1:1),!0)),n&&!1===n.scroll||!t.cm||Un(t.cm)}function _r(t,e){e.equals(t.sel)||(t.sel=e,t.cm&&(t.cm.curOp.updateInput=t.cm.curOp.selectionChanged=!0,Mt(t.cm)),be(t,"cursorActivity",t))}function Sr(t){_r(t,Cr(t,t.sel,null,!1))}function Cr(t,e,n,i){for(var r,o=0;o<e.ranges.length;o++){var a=e.ranges[o],s=e.ranges.length==t.sel.ranges.length&&t.sel.ranges[o],l=kr(t,a.anchor,s&&s.anchor,n,i),c=kr(t,a.head,s&&s.head,n,i);(r||l!=a.anchor||c!=a.head)&&(r||(r=e.ranges.slice(0,o)),r[o]=new Es(l,c))}return r?Vi(r,e.primIndex):e}function Tr(t,e,n,i,r){var o=A(t,e.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var s=o.markedSpans[a],l=s.marker;if((null==s.from||(l.inclusiveLeft?s.from<=e.ch:s.from<e.ch))&&(null==s.to||(l.inclusiveRight?s.to>=e.ch:s.to>e.ch))){if(r&&(kt(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var c=l.find(i<0?1:-1),u=void 0;if((i<0?l.inclusiveRight:l.inclusiveLeft)&&(c=Ar(t,c,-i,c&&c.line==e.line?o:null)),c&&c.line==e.line&&(u=I(c,n))&&(i<0?u<0:u>0))return Tr(t,c,e,i,r)}var h=l.find(i<0?-1:1);return(i<0?l.inclusiveLeft:l.inclusiveRight)&&(h=Ar(t,h,i,h.line==e.line?o:null)),h?Tr(t,h,e,i,r):null}}return e}function kr(t,e,n,i,r){var o=i||1,a=Tr(t,e,n,o,r)||!r&&Tr(t,e,n,o,!0)||Tr(t,e,n,-o,r)||!r&&Tr(t,e,n,-o,!0);return a||(t.cantEdit=!0,D(t.first,0))}function Ar(t,e,n,i){return n<0&&0==e.ch?e.line>t.first?q(t,D(e.line-1)):null:n>0&&e.ch==(i||A(t,e.line)).text.length?e.line<t.first+t.size-1?D(e.line+1,0):null:new D(e.line,e.ch+n)}function Mr(t){t.setSelection(D(t.firstLine(),0),D(t.lastLine()),Ba)}function Er(t,e,n){var i={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return i.canceled=!0}};return n&&(i.update=function(e,n,r,o){e&&(i.from=q(t,e)),n&&(i.to=q(t,n)),r&&(i.text=r),void 0!==o&&(i.origin=o)}),kt(t,"beforeChange",t,i),t.cm&&kt(t.cm,"beforeChange",t.cm,i),i.canceled?null:{from:i.from,to:i.to,text:i.text,origin:i.origin}}function Lr(t,e,n){if(t.cm){if(!t.cm.curOp)return pi(t.cm,Lr)(t,e,n);if(t.cm.state.suppressEdits)return}if(!(Et(t,"beforeChange")||t.cm&&Et(t.cm,"beforeChange"))||(e=Er(t,e,!0))){var i=Qa&&!n&&et(t,e.from,e.to);if(i)for(var r=i.length-1;r>=0;--r)Pr(t,{from:i[r].from,to:i[r].to,
+text:r?[""]:e.text,origin:e.origin});else Pr(t,e)}}function Pr(t,e){if(1!=e.text.length||""!=e.text[0]||0!=I(e.from,e.to)){var n=Gi(t,e);rr(t,e,n,t.cm?t.cm.curOp.id:NaN),Rr(t,e,n,J(t,e));var i=[];Qi(t,function(t,n){n||-1!=d(i,t.history)||(Vr(t.history,e),i.push(t.history)),Rr(t,e,null,J(t,e))})}}function Nr(t,e,n){var i=t.cm&&t.cm.state.suppressEdits;if(!i||n){for(var r,o=t.history,a=t.sel,s="undo"==e?o.done:o.undone,l="undo"==e?o.undone:o.done,c=0;c<s.length&&(r=s[c],n?!r.ranges||r.equals(t.sel):r.ranges);c++);if(c!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(r=s.pop(),!r.ranges){if(i)return void s.push(r);break}if(sr(r,l),n&&!r.equals(t.sel))return void br(t,r,{clearRedo:!1});a=r}var u=[];sr(a,l),l.push({changes:u,generation:o.generation}),o.generation=r.generation||++o.maxGeneration;for(var h=Et(t,"beforeChange")||t.cm&&Et(t.cm,"beforeChange"),f=r.changes.length-1;f>=0;--f){var p=function(n){var i=r.changes[n];if(i.origin=e,h&&!Er(t,i,!1))return s.length=0,{};u.push(er(t,i));var o=n?Gi(t,i):g(s);Rr(t,i,o,hr(t,i)),!n&&t.cm&&t.cm.scrollIntoView({from:i.from,to:zi(i)});var a=[];Qi(t,function(t,e){e||-1!=d(a,t.history)||(Vr(t.history,i),a.push(t.history)),Rr(t,i,null,hr(t,i))})}(f);if(p)return p.v}}}}function Or(t,e){if(0!=e&&(t.first+=e,t.sel=new Ms(m(t.sel.ranges,function(t){return new Es(D(t.anchor.line+e,t.anchor.ch),D(t.head.line+e,t.head.ch))}),t.sel.primIndex),t.cm)){vi(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,i=n.viewFrom;i<n.viewTo;i++)yi(t.cm,i,"gutter")}}function Rr(t,e,n,i){if(t.cm&&!t.cm.curOp)return pi(t.cm,Rr)(t,e,n,i);if(e.to.line<t.first)return void Or(t,e.text.length-1-(e.to.line-e.from.line));if(!(e.from.line>t.lastLine())){if(e.from.line<t.first){var r=e.text.length-1-(t.first-e.from.line);Or(t,r),e={from:D(t.first,0),to:D(e.to.line+r,e.to.ch),text:[g(e.text)],origin:e.origin}}var o=t.lastLine();e.to.line>o&&(e={from:e.from,to:D(o,A(t,o).text.length),text:[e.text[0]],origin:e.origin}),e.removed=M(t,e.from,e.to),n||(n=Gi(t,e)),t.cm?Dr(t.cm,e,i):Yi(t,e,i),wr(t,n,Ba)}}function Dr(t,e,n){var i=t.doc,r=t.display,o=e.from,a=e.to,s=!1,l=o.line;t.options.lineWrapping||(l=P(ht(A(i,o.line))),i.iter(l,a.line+1,function(t){if(t==r.maxLine)return s=!0,!0})),i.sel.contains(e.from,e.to)>-1&&Mt(t),Yi(i,e,n,Sn(t)),t.options.lineWrapping||(i.iter(l,o.line+e.text.length,function(t){var e=xt(t);e>r.maxLineLength&&(r.maxLine=t,r.maxLineLength=e,r.maxLineChanged=!0,s=!1)}),s&&(t.curOp.updateMaxLine=!0)),re(i,o.line),Si(t,400);var c=e.text.length-(a.line-o.line)-1;e.full?vi(t):o.line!=a.line||1!=e.text.length||Xi(t.doc,e)?vi(t,o.line,a.line+1,c):yi(t,o.line,"text");var u=Et(t,"changes"),h=Et(t,"change");if(h||u){var d={from:o,to:a,text:e.text,removed:e.removed,origin:e.origin};h&&be(t,"change",t,d),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(d)}t.display.selForContextMenu=null}function Ir(t,e,n,i,r){if(i||(i=n),I(i,n)<0){var o;o=[i,n],n=o[0],i=o[1]}"string"==typeof e&&(e=t.splitLines(e)),Lr(t,{from:n,to:i,text:e,origin:r})}function Hr(t,e,n,i){n<t.line?t.line+=i:e<t.line&&(t.line=e,t.ch=0)}function jr(t,e,n,i){for(var r=0;r<t.length;++r){var o=t[r],a=!0;if(o.ranges){o.copied||(o=t[r]=o.deepCopy(),o.copied=!0);for(var s=0;s<o.ranges.length;s++)Hr(o.ranges[s].anchor,e,n,i),Hr(o.ranges[s].head,e,n,i)}else{for(var l=0;l<o.changes.length;++l){var c=o.changes[l];if(n<c.from.line)c.from=D(c.from.line+i,c.from.ch),c.to=D(c.to.line+i,c.to.ch);else if(e<=c.to.line){a=!1;break}}a||(t.splice(0,r+1),r=0)}}}function Vr(t,e){var n=e.from.line,i=e.to.line,r=e.text.length-(i-n)-1;jr(t.done,n,i,r),jr(t.undone,n,i,r)}function Fr(t,e,n,i){var r=e,o=e;return"number"==typeof e?o=A(t,z(t,e)):r=P(e),null==r?null:(i(o,r)&&t.cm&&yi(t.cm,r,n),o)}function zr(t){var e=this;this.lines=t,this.parent=null;for(var n=0,i=0;i<t.length;++i)t[i].parent=e,n+=t[i].height;this.height=n}function qr(t){var e=this;this.children=t;for(var n=0,i=0,r=0;r<t.length;++r){var o=t[r];n+=o.chunkSize(),i+=o.height,o.parent=e}this.size=n,this.height=i,this.parent=null}function Gr(t,e,n){yt(e)<(t.curOp&&t.curOp.scrollTop||t.doc.scrollTop)&&Wn(t,n)}function Br(t,e,n,i){var r=new Ls(t,n,i),o=t.cm;return o&&r.noHScroll&&(o.display.alignWidgets=!0),Fr(t,e,"widget",function(e){var n=e.widgets||(e.widgets=[]);if(null==r.insertAt?n.push(r):n.splice(Math.min(n.length-1,Math.max(0,r.insertAt)),0,r),r.line=e,o&&!mt(t,e)){var i=yt(e)<t.scrollTop;L(e,e.height+Re(r)),i&&Wn(o,r.height),o.curOp.forceUpdate=!0}return!0}),o&&be(o,"lineWidgetAdded",o,r,"number"==typeof e?e:P(e)),r}function $r(t,e,n,i,o){if(i&&i.shared)return Wr(t,e,n,i,o);if(t.cm&&!t.cm.curOp)return pi(t.cm,$r)(t,e,n,i,o);var a=new Ns(t,o),s=I(e,n);if(i&&u(i,a,!1),s>0||0==s&&!1!==a.clearWhenEmpty)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=r("span",[a.replacedWith],"CodeMirror-widget"),i.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),i.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(ut(t,e.line,e,n,a)||e.line!=n.line&&ut(t,n.line,e,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");W()}a.addToHistory&&rr(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var l,c=e.line,h=t.cm;if(t.iter(c,n.line+1,function(t){h&&a.collapsed&&!h.options.lineWrapping&&ht(t)==h.display.maxLine&&(l=!0),a.collapsed&&c!=e.line&&L(t,0),Q(t,new U(a,c==e.line?e.ch:null,c==n.line?n.ch:null)),++c}),a.collapsed&&t.iter(e.line,n.line+1,function(e){mt(t,e)&&L(e,0)}),a.clearOnEnter&&es(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&($(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),a.collapsed&&(a.id=++Ps,a.atomic=!0),h){if(l&&(h.curOp.updateMaxLine=!0),a.collapsed)vi(h,e.line,n.line+1);else if(a.className||a.title||a.startStyle||a.endStyle||a.css)for(var d=e.line;d<=n.line;d++)yi(h,d,"text");a.atomic&&Sr(h.doc),be(h,"markerAdded",h,a)}return a}function Wr(t,e,n,i,r){i=u(i),i.shared=!1;var o=[$r(t,e,n,i,r)],a=o[0],s=i.widgetNode;return Qi(t,function(t){s&&(i.widgetNode=s.cloneNode(!0)),o.push($r(t,q(t,e),q(t,n),i,r));for(var l=0;l<t.linked.length;++l)if(t.linked[l].isParent)return;a=g(o)}),new Os(o,a)}function Ur(t){return t.findMarks(D(t.first,0),t.clipPos(D(t.lastLine())),function(t){return t.parent})}function Xr(t,e){for(var n=0;n<e.length;n++){var i=e[n],r=i.find(),o=t.clipPos(r.from),a=t.clipPos(r.to);if(I(o,a)){var s=$r(t,o,a,i.primary,i.primary.type);i.markers.push(s),s.parent=i}}}function Yr(t){for(var e=0;e<t.length;e++)!function(e){var n=t[e],i=[n.primary.doc];Qi(n.primary.doc,function(t){return i.push(t)});for(var r=0;r<n.markers.length;r++){var o=n.markers[r];-1==d(i,o.doc)&&(o.parent=null,n.markers.splice(r--,1))}}(e)}function Qr(t){var e=this;if(Jr(e),!At(e,t)&&!De(e.display,t)){Pt(t),ya&&(Is=+new Date);var n=Tn(e,t,!0),i=t.dataTransfer.files;if(n&&!e.isReadOnly())if(i&&i.length&&window.FileReader&&window.File)for(var r=i.length,o=Array(r),a=0,s=0;s<r;++s)!function(t,i){if(!e.options.allowDropFileTypes||-1!=d(e.options.allowDropFileTypes,t.type)){var s=new FileReader;s.onload=pi(e,function(){var t=s.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(t)&&(t=""),o[i]=t,++a==r){n=q(e.doc,n);var l={from:n,to:n,text:e.doc.splitLines(o.join(e.doc.lineSeparator())),origin:"paste"};Lr(e.doc,l),xr(e.doc,Fi(n,zi(l)))}}),s.readAsText(t)}}(i[s],s);else{if(e.state.draggingText&&e.doc.sel.contains(n)>-1)return e.state.draggingText(t),void setTimeout(function(){return e.display.input.focus()},20);try{var l=t.dataTransfer.getData("Text");if(l){var c;if(e.state.draggingText&&!e.state.draggingText.copy&&(c=e.listSelections()),wr(e.doc,Fi(n,n)),c)for(var u=0;u<c.length;++u)Ir(e.doc,"",c[u].anchor,c[u].head,"drag");e.replaceSelection(l,"around","paste"),e.display.input.focus()}}catch(t){}}}}function Zr(t,e){if(ya&&(!t.state.draggingText||+new Date-Is<100))return void Rt(e);if(!At(t,e)&&!De(t.display,e)&&(e.dataTransfer.setData("Text",t.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!Ca)){var n=i("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",Sa&&(n.width=n.height=1,t.display.wrapper.appendChild(n),n._top=n.offsetTop),e.dataTransfer.setDragImage(n,0,0),Sa&&n.parentNode.removeChild(n)}}function Kr(t,e){var r=Tn(t,e);if(r){var o=document.createDocumentFragment();En(t,r,o),t.display.dragCursor||(t.display.dragCursor=i("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),n(t.display.dragCursor,o)}}function Jr(t){t.display.dragCursor&&(t.display.lineSpace.removeChild(t.display.dragCursor),t.display.dragCursor=null)}function to(t){if(document.getElementsByClassName)for(var e=document.getElementsByClassName("CodeMirror"),n=0;n<e.length;n++){var i=e[n].CodeMirror;i&&t(i)}}function eo(){Hs||(no(),Hs=!0)}function no(){var t;es(window,"resize",function(){null==t&&(t=setTimeout(function(){t=null,to(io)},100))}),es(window,"blur",function(){return to(In)})}function io(t){var e=t.display;e.lastWrapHeight==e.wrapper.clientHeight&&e.lastWrapWidth==e.wrapper.clientWidth||(e.cachedCharWidth=e.cachedTextHeight=e.cachedPaddingH=null,e.scrollbarsClipped=!1,t.setSize())}function ro(t){var e=t.split(/-(?!$)/);t=e[e.length-1];for(var n,i,r,o,a=0;a<e.length-1;a++){var s=e[a];if(/^(cmd|meta|m)$/i.test(s))o=!0;else if(/^a(lt)?$/i.test(s))n=!0;else if(/^(c|ctrl|control)$/i.test(s))i=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);r=!0}}return n&&(t="Alt-"+t),i&&(t="Ctrl-"+t),o&&(t="Cmd-"+t),r&&(t="Shift-"+t),t}function oo(t){var e={};for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==i){delete t[n];continue}for(var r=m(n.split(" "),ro),o=0;o<r.length;o++){var a=void 0,s=void 0;o==r.length-1?(s=r.join(" "),a=i):(s=r.slice(0,o+1).join(" "),a="...");var l=e[s];if(l){if(l!=a)throw new Error("Inconsistent bindings for "+s)}else e[s]=a}delete t[n]}for(var c in e)t[c]=e[c];return t}function ao(t,e,n,i){e=uo(e);var r=e.call?e.call(t,i):e[t];if(!1===r)return"nothing";if("..."===r)return"multi";if(null!=r&&n(r))return"handled";if(e.fallthrough){if("[object Array]"!=Object.prototype.toString.call(e.fallthrough))return ao(t,e.fallthrough,n,i);for(var o=0;o<e.fallthrough.length;o++){var a=ao(t,e.fallthrough[o],n,i);if(a)return a}}}function so(t){var e="string"==typeof t?t:js[t.keyCode];return"Ctrl"==e||"Alt"==e||"Shift"==e||"Mod"==e}function lo(t,e,n){var i=t;return e.altKey&&"Alt"!=i&&(t="Alt-"+t),(Da?e.metaKey:e.ctrlKey)&&"Ctrl"!=i&&(t="Ctrl-"+t),(Da?e.ctrlKey:e.metaKey)&&"Cmd"!=i&&(t="Cmd-"+t),!n&&e.shiftKey&&"Shift"!=i&&(t="Shift-"+t),t}function co(t,e){if(Sa&&34==t.keyCode&&t.char)return!1;var n=js[t.keyCode];return null!=n&&!t.altGraphKey&&(3==t.keyCode&&t.code&&(n=t.code),lo(n,t,e))}function uo(t){return"string"==typeof t?qs[t]:t}function ho(t,e){for(var n=t.doc.sel.ranges,i=[],r=0;r<n.length;r++){for(var o=e(n[r]);i.length&&I(o.from,g(i).to)<=0;){var a=i.pop();if(I(a.from,o.from)<0){o.from=a.from;break}}i.push(o)}fi(t,function(){for(var e=i.length-1;e>=0;e--)Ir(t.doc,"",i[e].from,i[e].to,"+delete");Un(t)})}function fo(t,e,n){var i=C(t.text,e+n,n);return i<0||i>t.text.length?null:i}function po(t,e,n){var i=fo(t,e.ch,n);return null==i?null:new D(e.line,i,n<0?"after":"before")}function go(t,e,n,i,r){if(t){var o=St(n,e.doc.direction);if(o){var a,s=r<0?g(o):o[0],l=r<0==(1==s.level),c=l?"after":"before";if(s.level>0||"rtl"==e.doc.direction){var u=Ue(e,n);a=r<0?n.text.length-1:0;var h=Xe(e,u,a).top;a=T(function(t){return Xe(e,u,t).top==h},r<0==(1==s.level)?s.from:s.to-1,a),"before"==c&&(a=fo(n,a,1))}else a=r<0?s.to:s.from;return new D(i,a,c)}}return new D(i,r<0?n.text.length:0,r<0?"before":"after")}function mo(t,e,n,i){var r=St(e,t.doc.direction);if(!r)return po(e,n,i);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=_t(r,n.ch,n.sticky),a=r[o];if("ltr"==t.doc.direction&&a.level%2==0&&(i>0?a.to>n.ch:a.from<n.ch))return po(e,n,i);var s,l=function(t,n){return fo(e,t instanceof D?t.ch:t,n)},c=function(n){return t.options.lineWrapping?(s=s||Ue(t,e),pn(t,e,s,n)):{begin:0,end:e.text.length}},u=c("before"==n.sticky?l(n,-1):n.ch);if("rtl"==t.doc.direction||1==a.level){var h=1==a.level==i<0,d=l(n,h?1:-1);if(null!=d&&(h?d<=a.to&&d<=u.end:d>=a.from&&d>=u.begin)){var f=h?"before":"after";return new D(n.line,d,f)}}var p=function(t,e,i){for(var o=function(t,e){return e?new D(n.line,l(t,1),"before"):new D(n.line,t,"after")};t>=0&&t<r.length;t+=e){var a=r[t],s=e>0==(1!=a.level),c=s?i.begin:l(i.end,-1);if(a.from<=c&&c<a.to)return o(c,s);if(c=s?a.from:l(a.to,-1),i.begin<=c&&c<i.end)return o(c,s)}},g=p(o+i,i,u);if(g)return g;var m=i>0?u.end:l(u.begin,-1);return null==m||i>0&&m==e.text.length||!(g=p(i>0?0:r.length-1,i,c(m)))?null:g}function vo(t,e){var n=A(t.doc,e),i=ht(n);return i!=n&&(e=P(i)),go(!0,t,i,e,1)}function yo(t,e){var n=A(t.doc,e),i=dt(n);return i!=n&&(e=P(i)),go(!0,t,n,e,-1)}function xo(t,e){var n=vo(t,e.line),i=A(t.doc,n.line),r=St(i,t.doc.direction);if(!r||0==r[0].level){var o=Math.max(0,i.text.search(/\S/)),a=e.line==n.line&&e.ch<=o&&e.ch;return D(n.line,a?0:o,n.sticky)}return n}function bo(t,e,n){if("string"==typeof e&&!(e=Gs[e]))return!1;t.display.input.ensurePolled();var i=t.display.shift,r=!1;try{t.isReadOnly()&&(t.state.suppressEdits=!0),n&&(t.display.shift=!1),r=e(t)!=Ga}finally{t.display.shift=i,t.state.suppressEdits=!1}return r}function wo(t,e,n){for(var i=0;i<t.state.keyMaps.length;i++){var r=ao(e,t.state.keyMaps[i],n,t);if(r)return r}return t.options.extraKeys&&ao(e,t.options.extraKeys,n,t)||ao(e,t.options.keyMap,n,t)}function _o(t,e,n,i){var r=t.state.keySeq;if(r){if(so(e))return"handled";if(/\'$/.test(e)?t.state.keySeq=null:Bs.set(50,function(){t.state.keySeq==r&&(t.state.keySeq=null,t.display.input.reset())}),So(t,r+" "+e,n,i))return!0}return So(t,e,n,i)}function So(t,e,n,i){var r=wo(t,e,i);return"multi"==r&&(t.state.keySeq=e),"handled"==r&&be(t,"keyHandled",t,e,n),"handled"!=r&&"multi"!=r||(Pt(n),Nn(t)),!!r}function Co(t,e){var n=co(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?_o(t,"Shift-"+n,e,function(e){return bo(t,e,!0)})||_o(t,n,e,function(e){if("string"==typeof e?/^go[A-Z]/.test(e):e.motion)return bo(t,e)}):_o(t,n,e,function(e){return bo(t,e)}))}function To(t,e,n){return _o(t,"'"+n+"'",e,function(e){return bo(t,e,!0)})}function ko(t){var e=this;if(e.curOp.focus=a(),!At(e,t)){ya&&xa<11&&27==t.keyCode&&(t.returnValue=!1);var n=t.keyCode;e.display.shift=16==n||t.shiftKey;var i=Co(e,t);Sa&&($s=i?n:null,!i&&88==n&&!os&&(La?t.metaKey:t.ctrlKey)&&e.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(e.display.lineDiv.className)||Ao(e)}}function Ao(t){function e(t){18!=t.keyCode&&t.altKey||(Ha(n,"CodeMirror-crosshair"),Tt(document,"keyup",e),Tt(document,"mouseover",e))}var n=t.display.lineDiv;s(n,"CodeMirror-crosshair"),es(document,"keyup",e),es(document,"mouseover",e)}function Mo(t){16==t.keyCode&&(this.doc.sel.shift=!1),At(this,t)}function Eo(t){var e=this;if(!(De(e.display,t)||At(e,t)||t.ctrlKey&&!t.altKey||La&&t.metaKey)){var n=t.keyCode,i=t.charCode;if(Sa&&n==$s)return $s=null,void Pt(t);if(!Sa||t.which&&!(t.which<10)||!Co(e,t)){var r=String.fromCharCode(null==i?n:i);"\b"!=r&&(To(e,t,r)||e.display.input.onKeyPress(t))}}}function Lo(t,e){var n=+new Date;return Xs&&Xs.compare(n,t,e)?(Us=Xs=null,"triple"):Us&&Us.compare(n,t,e)?(Xs=new Ws(n,t,e),Us=null,"double"):(Us=new Ws(n,t,e),Xs=null,"single")}function Po(t){var e=this,n=e.display;if(!(At(e,t)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=t.shiftKey,De(n,t))return void(ba||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100)));if(!Fo(e,t)){var i=Tn(e,t),r=It(t),o=i?Lo(i,r):"single";window.focus(),1==r&&e.state.selectingText&&e.state.selectingText(t),i&&No(e,r,i,o,t)||(1==r?i?Ro(e,i,o,t):Dt(t)==n.scroller&&Pt(t):2==r?(i&&pr(e.doc,i),setTimeout(function(){return n.input.focus()},20)):3==r&&(Ia?zo(e,t):Rn(e)))}}}function No(t,e,n,i,r){var o="Click";return"double"==i?o="Double"+o:"triple"==i&&(o="Triple"+o),o=(1==e?"Left":2==e?"Middle":"Right")+o,_o(t,lo(o,r),r,function(e){if("string"==typeof e&&(e=Gs[e]),!e)return!1;var i=!1;try{t.isReadOnly()&&(t.state.suppressEdits=!0),i=e(t,n)!=Ga}finally{t.state.suppressEdits=!1}return i})}function Oo(t,e,n){var i=t.getOption("configureMouse"),r=i?i(t,e,n):{};if(null==r.unit){var o=Pa?n.shiftKey&&n.metaKey:n.altKey;r.unit=o?"rectangle":"single"==e?"char":"double"==e?"word":"line"}return(null==r.extend||t.doc.extend)&&(r.extend=t.doc.extend||n.shiftKey),null==r.addNew&&(r.addNew=La?n.metaKey:n.ctrlKey),null==r.moveOnDrag&&(r.moveOnDrag=!(La?n.altKey:n.ctrlKey)),r}function Ro(t,e,n,i){ya?setTimeout(c(On,t),0):t.curOp.focus=a();var r,o=Oo(t,n,i),s=t.doc.sel;t.options.dragDrop&&ns&&!t.isReadOnly()&&"single"==n&&(r=s.contains(e))>-1&&(I((r=s.ranges[r]).from(),e)<0||e.xRel>0)&&(I(r.to(),e)>0||e.xRel<0)?Do(t,i,e,o):Ho(t,i,e,o)}function Do(t,e,n,i){var r=t.display,o=!1,a=pi(t,function(e){ba&&(r.scroller.draggable=!1),t.state.draggingText=!1,Tt(r.wrapper.ownerDocument,"mouseup",a),Tt(r.wrapper.ownerDocument,"mousemove",s),Tt(r.scroller,"dragstart",l),Tt(r.scroller,"drop",a),o||(Pt(e),i.addNew||pr(t.doc,n,null,null,i.extend),ba||ya&&9==xa?setTimeout(function(){r.wrapper.ownerDocument.body.focus(),r.input.focus()},20):r.input.focus())}),s=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},l=function(){return o=!0};ba&&(r.scroller.draggable=!0),t.state.draggingText=a,a.copy=!i.moveOnDrag,r.scroller.dragDrop&&r.scroller.dragDrop(),es(r.wrapper.ownerDocument,"mouseup",a),es(r.wrapper.ownerDocument,"mousemove",s),es(r.scroller,"dragstart",l),es(r.scroller,"drop",a),Rn(t),setTimeout(function(){return r.input.focus()},20)}function Io(t,e,n){if("char"==n)return new Es(e,e);if("word"==n)return t.findWordAt(e);if("line"==n)return new Es(D(e.line,0),q(t.doc,D(e.line+1,0)));var i=n(t,e);return new Es(i.from,i.to)}function Ho(t,e,n,i){function r(e){if(0!=I(v,e))if(v=e,"rectangle"==i.unit){for(var r=[],o=t.options.tabSize,a=h(A(c,n.line).text,n.ch,o),s=h(A(c,e.line).text,e.ch,o),l=Math.min(a,s),g=Math.max(a,s),m=Math.min(n.line,e.line),y=Math.min(t.lastLine(),Math.max(n.line,e.line));m<=y;m++){var x=A(c,m).text,b=f(x,l,o);l==g?r.push(new Es(D(m,b),D(m,b))):x.length>b&&r.push(new Es(D(m,b),D(m,f(x,g,o))))}r.length||r.push(new Es(n,n)),br(c,Vi(p.ranges.slice(0,d).concat(r),d),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var w,_=u,S=Io(t,e,i.unit),C=_.anchor;I(S.anchor,C)>0?(w=S.head,C=F(_.from(),S.anchor)):(w=S.anchor,C=V(_.to(),S.head));var T=p.ranges.slice(0);T[d]=jo(t,new Es(q(c,C),w)),br(c,Vi(T,d),$a)}}function o(e){var n=++x,s=Tn(t,e,!0,"rectangle"==i.unit);if(s)if(0!=I(s,v)){t.curOp.focus=a(),r(s);var u=Vn(l,c);(s.line>=u.to||s.line<u.from)&&setTimeout(pi(t,function(){x==n&&o(e)}),150)}else{var h=e.clientY<y.top?-20:e.clientY>y.bottom?20:0;h&&setTimeout(pi(t,function(){x==n&&(l.scroller.scrollTop+=h,o(e))}),50)}}function s(e){t.state.selectingText=!1,x=1/0,Pt(e),l.input.focus(),Tt(l.wrapper.ownerDocument,"mousemove",b),Tt(l.wrapper.ownerDocument,"mouseup",w),c.history.lastSelOrigin=null}var l=t.display,c=t.doc;Pt(e);var u,d,p=c.sel,g=p.ranges;if(i.addNew&&!i.extend?(d=c.sel.contains(n),u=d>-1?g[d]:new Es(n,n)):(u=c.sel.primary(),d=c.sel.primIndex),"rectangle"==i.unit)i.addNew||(u=new Es(n,n)),n=Tn(t,e,!0,!0),d=-1;else{var m=Io(t,n,i.unit);u=i.extend?fr(u,m.anchor,m.head,i.extend):m}i.addNew?-1==d?(d=g.length,br(c,Vi(g.concat([u]),d),{scroll:!1,origin:"*mouse"})):g.length>1&&g[d].empty()&&"char"==i.unit&&!i.extend?(br(c,Vi(g.slice(0,d).concat(g.slice(d+1)),0),{scroll:!1,origin:"*mouse"}),p=c.sel):mr(c,d,u,$a):(d=0,br(c,new Ms([u],0),$a),p=c.sel);var v=n,y=l.wrapper.getBoundingClientRect(),x=0,b=pi(t,function(t){It(t)?o(t):s(t)}),w=pi(t,s);t.state.selectingText=w,es(l.wrapper.ownerDocument,"mousemove",b),es(l.wrapper.ownerDocument,"mouseup",w)}function jo(t,e){var n=e.anchor,i=e.head,r=A(t.doc,n.line);if(0==I(n,i)&&n.sticky==i.sticky)return e;var o=St(r);if(!o)return e;var a=_t(o,n.ch,n.sticky),s=o[a];if(s.from!=n.ch&&s.to!=n.ch)return e;var l=a+(s.from==n.ch==(1!=s.level)?0:1);if(0==l||l==o.length)return e;var c;if(i.line!=n.line)c=(i.line-n.line)*("ltr"==t.doc.direction?1:-1)>0;else{var u=_t(o,i.ch,i.sticky),h=u-a||(i.ch-n.ch)*(1==s.level?-1:1);c=u==l-1||u==l?h<0:h>0}var d=o[l+(c?-1:0)],f=c==(1==d.level),p=f?d.from:d.to,g=f?"after":"before";return n.ch==p&&n.sticky==g?e:new Es(new D(n.line,p,g),i)}function Vo(t,e,n,i){var r,o;if(e.touches)r=e.touches[0].clientX,o=e.touches[0].clientY;else try{r=e.clientX,o=e.clientY}catch(e){return!1}if(r>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;i&&Pt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!Et(t,n))return Ot(e);o-=s.top-a.viewOffset;for(var l=0;l<t.options.gutters.length;++l){var c=a.gutters.childNodes[l];if(c&&c.getBoundingClientRect().right>=r){return kt(t,n,t,N(t.doc,o),t.options.gutters[l],e),Ot(e)}}}function Fo(t,e){return Vo(t,e,"gutterClick",!0)}function zo(t,e){De(t.display,e)||qo(t,e)||At(t,e,"contextmenu")||t.display.input.onContextMenu(e)}function qo(t,e){return!!Et(t,"gutterContextMenu")&&Vo(t,e,"gutterContextMenu",!1)}function Go(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),en(t)}function Bo(t){Ri(t),vi(t),Fn(t)}function $o(t,e,n){if(!e!=!(n&&n!=Ys)){var i=t.display.dragFunctions,r=e?es:Tt;r(t.display.scroller,"dragstart",i.start),r(t.display.scroller,"dragenter",i.enter),r(t.display.scroller,"dragover",i.over),r(t.display.scroller,"dragleave",i.leave),r(t.display.scroller,"drop",i.drop)}}function Wo(t){t.options.lineWrapping?(s(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(Ha(t.display.wrapper,"CodeMirror-wrap"),bt(t)),Cn(t),vi(t),en(t),setTimeout(function(){return ni(t)},100)}function Uo(t,e){var n=this;if(!(this instanceof Uo))return new Uo(t,e);this.options=e=e?u(e):{},u(Qs,e,!1),Di(e);var i=e.value;"string"==typeof i&&(i=new Ds(i,e.mode,null,e.lineSeparator,e.direction)),this.doc=i;var r=new Uo.inputStyles[e.inputStyle](this),o=this.display=new k(t,i,r);o.wrapper.CodeMirror=this,Ri(this),Go(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ri(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new Va,keySeq:null,specialChars:null},e.autofocus&&!Ea&&o.input.focus(),ya&&xa<11&&setTimeout(function(){return n.display.input.reset(!0)},20),Xo(this),eo(),oi(this),this.curOp.forceUpdate=!0,Zi(this,i),e.autofocus&&!Ea||this.hasFocus()?setTimeout(c(Dn,this),20):In(this);for(var a in Zs)Zs.hasOwnProperty(a)&&Zs[a](n,e[a],Ys);zn(this),e.finishInit&&e.finishInit(this);for(var s=0;s<Ks.length;++s)Ks[s](n);ai(this),ba&&e.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}function Xo(t){function e(){r.activeTouch&&(o=setTimeout(function(){return r.activeTouch=null},1e3),a=r.activeTouch,a.end=+new Date)}function n(t){if(1!=t.touches.length)return!1;var e=t.touches[0];return e.radiusX<=1&&e.radiusY<=1}function i(t,e){if(null==e.left)return!0;var n=e.left-t.left,i=e.top-t.top;return n*n+i*i>400}var r=t.display;es(r.scroller,"mousedown",pi(t,Po)),ya&&xa<11?es(r.scroller,"dblclick",pi(t,function(e){if(!At(t,e)){var n=Tn(t,e);if(n&&!Fo(t,e)&&!De(t.display,e)){Pt(e);var i=t.findWordAt(n);pr(t.doc,i.anchor,i.head)}}})):es(r.scroller,"dblclick",function(e){return At(t,e)||Pt(e)}),Ia||es(r.scroller,"contextmenu",function(e){return zo(t,e)});var o,a={end:0};es(r.scroller,"touchstart",function(e){if(!At(t,e)&&!n(e)&&!Fo(t,e)){r.input.ensurePolled(),clearTimeout(o);var i=+new Date;r.activeTouch={start:i,moved:!1,prev:i-a.end<=300?a:null},1==e.touches.length&&(r.activeTouch.left=e.touches[0].pageX,r.activeTouch.top=e.touches[0].pageY)}}),es(r.scroller,"touchmove",function(){r.activeTouch&&(r.activeTouch.moved=!0)}),es(r.scroller,"touchend",function(n){var o=r.activeTouch;if(o&&!De(r,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var a,s=t.coordsChar(r.activeTouch,"page");a=!o.prev||i(o,o.prev)?new Es(s,s):!o.prev.prev||i(o,o.prev.prev)?t.findWordAt(s):new Es(D(s.line,0),q(t.doc,D(s.line+1,0))),t.setSelection(a.anchor,a.head),t.focus(),Pt(n)}e()}),es(r.scroller,"touchcancel",e),es(r.scroller,"scroll",function(){r.scroller.clientHeight&&(Kn(t,r.scroller.scrollTop),ti(t,r.scroller.scrollLeft,!0),kt(t,"scroll",t))}),es(r.scroller,"mousewheel",function(e){return ji(t,e)}),es(r.scroller,"DOMMouseScroll",function(e){return ji(t,e)}),es(r.wrapper,"scroll",function(){return r.wrapper.scrollTop=r.wrapper.scrollLeft=0}),r.dragFunctions={enter:function(e){At(t,e)||Rt(e)},over:function(e){At(t,e)||(Kr(t,e),Rt(e))},start:function(e){return Zr(t,e)},drop:pi(t,Qr),leave:function(e){At(t,e)||Jr(t)}};var s=r.input.getField();es(s,"keyup",function(e){return Mo.call(t,e)}),es(s,"keydown",pi(t,ko)),es(s,"keypress",pi(t,Eo)),es(s,"focus",function(e){return Dn(t,e)}),es(s,"blur",function(e){return In(t,e)})}function Yo(t,e,n,i){var r,o=t.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?r=Qt(t,e).state:n="prev");var a=t.options.tabSize,s=A(o,e),l=h(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(i||/\S/.test(s.text)){if("smart"==n&&((c=o.mode.indent(r,s.text.slice(u.length),s.text))==Ga||c>150)){if(!i)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?h(A(o,e-1).text,null,a):0:"add"==n?c=l+t.options.indentUnit:"subtract"==n?c=l-t.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var d="",f=0;if(t.options.indentWithTabs)for(var g=Math.floor(c/a);g;--g)f+=a,d+="\t";if(f<c&&(d+=p(c-f)),d!=u)return Ir(o,d,D(e,0),D(e,u.length),"+input"),s.stateAfter=null,!0;for(var m=0;m<o.sel.ranges.length;m++){var v=o.sel.ranges[m];if(v.head.line==e&&v.head.ch<u.length){var y=D(e,u.length);mr(o,m,new Es(y,y));break}}}function Qo(t){Js=t}function Zo(t,e,n,i,r){var o=t.doc;t.display.shift=!1,i||(i=o.sel);var a=t.state.pasteIncoming||"paste"==r,s=is(e),l=null;if(a&&i.ranges.length>1)if(Js&&Js.text.join("\n")==e){if(i.ranges.length%Js.text.length==0){l=[];for(var c=0;c<Js.text.length;c++)l.push(o.splitLines(Js.text[c]))}}else s.length==i.ranges.length&&t.options.pasteLinesPerSelection&&(l=m(s,function(t){return[t]}));for(var u,h=i.ranges.length-1;h>=0;h--){var d=i.ranges[h],f=d.from(),p=d.to();d.empty()&&(n&&n>0?f=D(f.line,f.ch-n):t.state.overwrite&&!a?p=D(p.line,Math.min(A(o,p.line).text.length,p.ch+g(s).length)):Js&&Js.lineWise&&Js.text.join("\n")==e&&(f=p=D(f.line,0))),u=t.curOp.updateInput;var v={from:f,to:p,text:l?l[h%l.length]:s,origin:r||(a?"paste":t.state.cutIncoming?"cut":"+input")};Lr(t.doc,v),be(t,"inputRead",t,v)}e&&!a&&Jo(t,e),Un(t),t.curOp.updateInput=u,t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=!1}function Ko(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||fi(e,function(){return Zo(e,n,0,null,"paste")}),!0}function Jo(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,i=n.ranges.length-1;i>=0;i--){var r=n.ranges[i];if(!(r.head.ch>100||i&&n.ranges[i-1].head.line==r.head.line)){var o=t.getModeAt(r.head),a=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(e.indexOf(o.electricChars.charAt(s))>-1){a=Yo(t,r.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(A(t.doc,r.head.line).text.slice(0,r.head.ch))&&(a=Yo(t,r.head.line,"smart"));a&&be(t,"electricInput",t,r.head.line)}}}function ta(t){for(var e=[],n=[],i=0;i<t.doc.sel.ranges.length;i++){var r=t.doc.sel.ranges[i].head.line,o={anchor:D(r,0),head:D(r+1,0)};n.push(o),e.push(t.getRange(o.anchor,o.head))}return{text:e,ranges:n}}function ea(t,e){t.setAttribute("autocorrect","off"),t.setAttribute("autocapitalize","off"),t.setAttribute("spellcheck",!!e)}function na(){var t=i("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),e=i("div",[t],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return ba?t.style.width="1000px":t.setAttribute("wrap","off"),Aa&&(t.style.border="1px solid black"),ea(t),e}function ia(t,e,n,i,r){function o(){var i=e.line+n;return!(i<t.first||i>=t.first+t.size)&&(e=new D(i,e.ch,e.sticky),c=A(t,i))}function a(i){var a;if(null==(a=r?mo(t.cm,c,e,n):po(c,e,n))){if(i||!o())return!1;e=go(r,t.cm,c,e.line,n)}else e=a;return!0}var s=e,l=n,c=A(t,e.line);if("char"==i)a();else if("column"==i)a(!0);else if("word"==i||"group"==i)for(var u=null,h="group"==i,d=t.cm&&t.cm.getHelper(e,"wordChars"),f=!0;!(n<0)||a(!f);f=!1){var p=c.text.charAt(e.ch)||"\n",g=w(p,d)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||f||g||(g="s"),u&&u!=g){n<0&&(n=1,a(),e.sticky="after");break}if(g&&(u=g),n>0&&!a(!f))break}var m=kr(t,e,s,l,!0);return H(s,m)&&(m.hitSide=!0),m}function ra(t,e,n,i){var r,o=t.doc,a=e.left;if("page"==i){var s=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*xn(t.display),3);r=(n>0?e.bottom:e.top)+n*l}else"line"==i&&(r=n>0?e.bottom+3:e.top-3);for(var c;c=dn(t,a,r),c.outside;){if(n<0?r<=0:r>=o.height){c.hitSide=!0;break}r+=5*n}return c}function oa(t,e){var n=We(t,e.line);if(!n||n.hidden)return null;var i=A(t.doc,e.line),r=Ge(n,i,e.line),o=St(i,t.doc.direction),a="left";if(o){a=_t(o,e.ch)%2?"right":"left"}var s=Ye(r.map,e.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function aa(t){for(var e=t;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return!0;return!1}function sa(t,e){return e&&(t.bad=!0),t}function la(t,e,n,i,r){function o(t){return function(e){return e.id==t}}function a(){u&&(c+=h,u=!1)}function s(t){t&&(a(),c+=t)}function l(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(null!=n)return void s(n||e.textContent.replace(/\u200b/g,""));var c,d=e.getAttribute("cm-marker");if(d){var f=t.findMarks(D(i,0),D(r+1,0),o(+d));return void(f.length&&(c=f[0].find(0))&&s(M(t.doc,c.from,c.to).join(h)))}if("false"==e.getAttribute("contenteditable"))return;var p=/^(pre|div|p)$/i.test(e.nodeName);p&&a();for(var g=0;g<e.childNodes.length;g++)l(e.childNodes[g]);p&&(u=!0)}else 3==e.nodeType&&s(e.nodeValue)}for(var c="",u=!1,h=t.doc.lineSeparator();l(e),e!=n;)e=e.nextSibling;return c}function ca(t,e,n){var i;if(e==t.display.lineDiv){if(!(i=t.display.lineDiv.childNodes[n]))return sa(t.clipPos(D(t.display.viewTo-1)),!0);e=null,n=0}else for(i=e;;i=i.parentNode){if(!i||i==t.display.lineDiv)return null;if(i.parentNode&&i.parentNode==t.display.lineDiv)break}for(var r=0;r<t.display.view.length;r++){var o=t.display.view[r];if(o.node==i)return ua(o,e,n)}}function ua(t,e,n){function i(e,n,i){for(var r=-1;r<(h?h.length:0);r++)for(var o=r<0?u.map:h[r],a=0;a<o.length;a+=3){var s=o[a+2];if(s==e||s==n){var l=P(r<0?t.line:t.rest[r]),c=o[a]+i;return(i<0||s!=e)&&(c=o[a+(i?1:0)]),D(l,c)}}}var r=t.text.firstChild,a=!1;if(!e||!o(r,e))return sa(D(P(t.line),0),!0);if(e==r&&(a=!0,e=r.childNodes[n],n=0,!e)){var s=t.rest?g(t.rest):t.line;return sa(D(P(s),s.text.length),a)}var l=3==e.nodeType?e:null,c=e;for(l||1!=e.childNodes.length||3!=e.firstChild.nodeType||(l=e.firstChild,n&&(n=l.nodeValue.length));c.parentNode!=r;)c=c.parentNode;var u=t.measure,h=u.maps,d=i(l,c,n);if(d)return sa(d,a);for(var f=c.nextSibling,p=l?l.nodeValue.length-n:0;f;f=f.nextSibling){if(d=i(f,f.firstChild,0))return sa(D(d.line,d.ch-p),a);p+=f.textContent.length}for(var m=c.previousSibling,v=n;m;m=m.previousSibling){if(d=i(m,m.firstChild,-1))return sa(D(d.line,d.ch+v),a);v+=m.textContent.length}}function ha(t,e){function n(){t.value=l.getValue()}if(e=e?u(e):{},e.value=t.value,
+!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var i=a();e.autofocus=i==t||null!=t.getAttribute("autofocus")&&i==document.body}var r;if(t.form&&(es(t.form,"submit",n),!e.leaveSubmitMethodAlone)){var o=t.form;r=o.submit;try{var s=o.submit=function(){n(),o.submit=r,o.submit(),o.submit=s}}catch(t){}}e.finishInit=function(e){e.save=n,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,n(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(Tt(t.form,"submit",n),"function"==typeof t.form.submit&&(t.form.submit=r))}},t.style.display="none";var l=Uo(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return l}var da=navigator.userAgent,fa=navigator.platform,pa=/gecko\/\d/i.test(da),ga=/MSIE \d/.test(da),ma=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(da),va=/Edge\/(\d+)/.exec(da),ya=ga||ma||va,xa=ya&&(ga?document.documentMode||6:+(va||ma)[1]),ba=!va&&/WebKit\//.test(da),wa=ba&&/Qt\/\d+\.\d+/.test(da),_a=!va&&/Chrome\//.test(da),Sa=/Opera\//.test(da),Ca=/Apple Computer/.test(navigator.vendor),Ta=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(da),ka=/PhantomJS/.test(da),Aa=!va&&/AppleWebKit/.test(da)&&/Mobile\/\w+/.test(da),Ma=/Android/.test(da),Ea=Aa||Ma||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(da),La=Aa||/Mac/.test(fa),Pa=/\bCrOS\b/.test(da),Na=/win/i.test(fa),Oa=Sa&&da.match(/Version\/(\d*\.\d*)/);Oa&&(Oa=Number(Oa[1])),Oa&&Oa>=15&&(Sa=!1,ba=!0);var Ra,Da=La&&(wa||Sa&&(null==Oa||Oa<12.11)),Ia=pa||ya&&xa>=9,Ha=function(e,n){var i=e.className,r=t(n).exec(i);if(r){var o=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(o?r[1]+o:"")}};Ra=document.createRange?function(t,e,n,i){var r=document.createRange();return r.setEnd(i||t,n),r.setStart(t,e),r}:function(t,e,n){var i=document.body.createTextRange();try{i.moveToElementText(t.parentNode)}catch(t){return i}return i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",e),i};var ja=function(t){t.select()};Aa?ja=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:ya&&(ja=function(t){try{t.select()}catch(t){}});var Va=function(){this.id=null};Va.prototype.set=function(t,e){clearTimeout(this.id),this.id=setTimeout(e,t)};var Fa,za,qa=30,Ga={toString:function(){return"CodeMirror.Pass"}},Ba={scroll:!1},$a={origin:"*mouse"},Wa={origin:"+move"},Ua=[""],Xa=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ya=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Qa=!1,Za=!1,Ka=null,Ja=function(){function t(t){return t<=247?n.charAt(t):1424<=t&&t<=1524?"R":1536<=t&&t<=1785?i.charAt(t-1536):1774<=t&&t<=2220?"r":8192<=t&&t<=8203?"w":8204==t?"b":"L"}function e(t,e,n){this.level=t,this.from=e,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,a=/[LRr]/,s=/[Lb1n]/,l=/[1n]/;return function(n,i){var c="ltr"==i?"L":"R";if(0==n.length||"ltr"==i&&!r.test(n))return!1;for(var u=n.length,h=[],d=0;d<u;++d)h.push(t(n.charCodeAt(d)));for(var f=0,p=c;f<u;++f){var m=h[f];"m"==m?h[f]=p:p=m}for(var v=0,y=c;v<u;++v){var x=h[v];"1"==x&&"r"==y?h[v]="n":a.test(x)&&(y=x,"r"==x&&(h[v]="R"))}for(var b=1,w=h[0];b<u-1;++b){var _=h[b];"+"==_&&"1"==w&&"1"==h[b+1]?h[b]="1":","!=_||w!=h[b+1]||"1"!=w&&"n"!=w||(h[b]=w),w=_}for(var S=0;S<u;++S){var C=h[S];if(","==C)h[S]="N";else if("%"==C){var T=void 0;for(T=S+1;T<u&&"%"==h[T];++T);for(var k=S&&"!"==h[S-1]||T<u&&"1"==h[T]?"1":"N",A=S;A<T;++A)h[A]=k;S=T-1}}for(var M=0,E=c;M<u;++M){var L=h[M];"L"==E&&"1"==L?h[M]="L":a.test(L)&&(E=L)}for(var P=0;P<u;++P)if(o.test(h[P])){var N=void 0;for(N=P+1;N<u&&o.test(h[N]);++N);for(var O="L"==(P?h[P-1]:c),R="L"==(N<u?h[N]:c),D=O==R?O?"L":"R":c,I=P;I<N;++I)h[I]=D;P=N-1}for(var H,j=[],V=0;V<u;)if(s.test(h[V])){var F=V;for(++V;V<u&&s.test(h[V]);++V);j.push(new e(0,F,V))}else{var z=V,q=j.length;for(++V;V<u&&"L"!=h[V];++V);for(var G=z;G<V;)if(l.test(h[G])){z<G&&j.splice(q,0,new e(1,z,G));var B=G;for(++G;G<V&&l.test(h[G]);++G);j.splice(q,0,new e(2,B,G)),z=G}else++G;z<V&&j.splice(q,0,new e(1,z,V))}return"ltr"==i&&(1==j[0].level&&(H=n.match(/^\s+/))&&(j[0].from=H[0].length,j.unshift(new e(0,0,H[0].length))),1==g(j).level&&(H=n.match(/\s+$/))&&(g(j).to-=H[0].length,j.push(new e(0,u-H[0].length,u)))),"rtl"==i?j.reverse():j}}(),ts=[],es=function(t,e,n){if(t.addEventListener)t.addEventListener(e,n,!1);else if(t.attachEvent)t.attachEvent("on"+e,n);else{var i=t._handlers||(t._handlers={});i[e]=(i[e]||ts).concat(n)}},ns=function(){if(ya&&xa<9)return!1;var t=i("div");return"draggable"in t||"dragDrop"in t}(),is=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],i=t.length;e<=i;){var r=t.indexOf("\n",e);-1==r&&(r=t.length);var o=t.slice(e,"\r"==t.charAt(r-1)?r-1:r),a=o.indexOf("\r");-1!=a?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=r+1)}return n}:function(t){return t.split(/\r\n?|\n/)},rs=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},os=function(){var t=i("div");return"oncopy"in t||(t.setAttribute("oncopy","return;"),"function"==typeof t.oncopy)}(),as=null,ss={},ls={},cs={},us=function(t,e,n){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};us.prototype.eol=function(){return this.pos>=this.string.length},us.prototype.sol=function(){return this.pos==this.lineStart},us.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},us.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},us.prototype.eat=function(t){var e=this.string.charAt(this.pos);if("string"==typeof t?e==t:e&&(t.test?t.test(e):t(e)))return++this.pos,e},us.prototype.eatWhile=function(t){for(var e=this.pos;this.eat(t););return this.pos>e},us.prototype.eatSpace=function(){for(var t=this,e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++t.pos;return this.pos>e},us.prototype.skipToEnd=function(){this.pos=this.string.length},us.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},us.prototype.backUp=function(t){this.pos-=t},us.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=h(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},us.prototype.indentation=function(){return h(this.string,null,this.tabSize)-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},us.prototype.match=function(t,e,n){if("string"!=typeof t){var i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&!1!==e&&(this.pos+=i[0].length),i)}var r=function(t){return n?t.toLowerCase():t};if(r(this.string.substr(this.pos,t.length))==r(t))return!1!==e&&(this.pos+=t.length),!0},us.prototype.current=function(){return this.string.slice(this.start,this.pos)},us.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}},us.prototype.lookAhead=function(t){var e=this.lineOracle;return e&&e.lookAhead(t)},us.prototype.baseToken=function(){var t=this.lineOracle;return t&&t.baseToken(this.pos)};var hs=function(t,e){this.state=t,this.lookAhead=e},ds=function(t,e,n,i){this.state=e,this.doc=t,this.line=n,this.maxLookAhead=i||0,this.baseTokens=null,this.baseTokenPos=1};ds.prototype.lookAhead=function(t){var e=this.doc.getLine(this.line+t);return null!=e&&t>this.maxLookAhead&&(this.maxLookAhead=t),e},ds.prototype.baseToken=function(t){var e=this;if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=t;)e.baseTokenPos+=2;var n=this.baseTokens[this.baseTokenPos+1];return{type:n&&n.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-t}},ds.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ds.fromSaved=function(t,e,n){return e instanceof hs?new ds(t,$t(t.mode,e.state),n,e.lookAhead):new ds(t,$t(t.mode,e),n)},ds.prototype.save=function(t){var e=!1!==t?$t(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new hs(e,this.maxLookAhead):e};var fs=function(t,e,n){this.start=t.start,this.end=t.pos,this.string=t.current(),this.type=e||null,this.state=n},ps=function(t,e,n){this.text=t,it(this,e),this.height=n?n(this):1};ps.prototype.lineNo=function(){return P(this)},Lt(ps);var gs,ms={},vs={},ys=null,xs=null,bs={left:0,right:0,top:0,bottom:0},ws=function(t,e,n){this.cm=n;var r=this.vert=i("div",[i("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=i("div",[i("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");t(r),t(o),es(r,"scroll",function(){r.clientHeight&&e(r.scrollTop,"vertical")}),es(o,"scroll",function(){o.clientWidth&&e(o.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,ya&&xa<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};ws.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,i=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?i+"px":"0";var r=t.viewHeight-(e?i:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+r)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?i+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?i:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?i:0,bottom:e?i:0}},ws.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},ws.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},ws.prototype.zeroWidthHack=function(){var t=La&&!Ta?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new Va,this.disableVert=new Va},ws.prototype.enableZeroWidthBar=function(t,e,n){function i(){var r=t.getBoundingClientRect();("vert"==n?document.elementFromPoint(r.right-1,(r.top+r.bottom)/2):document.elementFromPoint((r.right+r.left)/2,r.bottom-1))!=t?t.style.pointerEvents="none":e.set(1e3,i)}t.style.pointerEvents="auto",e.set(1e3,i)},ws.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var _s=function(){};_s.prototype.update=function(){return{bottom:0,right:0}},_s.prototype.setScrollLeft=function(){},_s.prototype.setScrollTop=function(){},_s.prototype.clear=function(){};var Ss={native:ws,null:_s},Cs=0,Ts=function(t,e,n){var i=t.display;this.viewport=e,this.visible=Vn(i,t.doc,e),this.editorIsHidden=!i.wrapper.offsetWidth,this.wrapperHeight=i.wrapper.clientHeight,this.wrapperWidth=i.wrapper.clientWidth,this.oldDisplayWidth=Fe(t),this.force=n,this.dims=wn(t),this.events=[]};Ts.prototype.signal=function(t,e){Et(t,e)&&this.events.push(arguments)},Ts.prototype.finish=function(){for(var t=this,e=0;e<this.events.length;e++)kt.apply(null,t.events[e])};var ks=0,As=null;ya?As=-.53:pa?As=15:_a?As=-.7:Ca&&(As=-1/3);var Ms=function(t,e){this.ranges=t,this.primIndex=e};Ms.prototype.primary=function(){return this.ranges[this.primIndex]},Ms.prototype.equals=function(t){var e=this;if(t==this)return!0;if(t.primIndex!=this.primIndex||t.ranges.length!=this.ranges.length)return!1;for(var n=0;n<this.ranges.length;n++){var i=e.ranges[n],r=t.ranges[n];if(!H(i.anchor,r.anchor)||!H(i.head,r.head))return!1}return!0},Ms.prototype.deepCopy=function(){for(var t=this,e=[],n=0;n<this.ranges.length;n++)e[n]=new Es(j(t.ranges[n].anchor),j(t.ranges[n].head));return new Ms(e,this.primIndex)},Ms.prototype.somethingSelected=function(){for(var t=this,e=0;e<this.ranges.length;e++)if(!t.ranges[e].empty())return!0;return!1},Ms.prototype.contains=function(t,e){var n=this;e||(e=t);for(var i=0;i<this.ranges.length;i++){var r=n.ranges[i];if(I(e,r.from())>=0&&I(t,r.to())<=0)return i}return-1};var Es=function(t,e){this.anchor=t,this.head=e};Es.prototype.from=function(){return F(this.anchor,this.head)},Es.prototype.to=function(){return V(this.anchor,this.head)},Es.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},zr.prototype={chunkSize:function(){return this.lines.length},removeInner:function(t,e){for(var n=this,i=t,r=t+e;i<r;++i){var o=n.lines[i];n.height-=o.height,ae(o),be(o,"delete")}this.lines.splice(t,e)},collapse:function(t){t.push.apply(t,this.lines)},insertInner:function(t,e,n){var i=this;this.height+=n,this.lines=this.lines.slice(0,t).concat(e).concat(this.lines.slice(t));for(var r=0;r<e.length;++r)e[r].parent=i},iterN:function(t,e,n){for(var i=this,r=t+e;t<r;++t)if(n(i.lines[t]))return!0}},qr.prototype={chunkSize:function(){return this.size},removeInner:function(t,e){var n=this;this.size-=e;for(var i=0;i<this.children.length;++i){var r=n.children[i],o=r.chunkSize();if(t<o){var a=Math.min(e,o-t),s=r.height;if(r.removeInner(t,a),n.height-=s-r.height,o==a&&(n.children.splice(i--,1),r.parent=null),0==(e-=a))break;t=0}else t-=o}if(this.size-e<25&&(this.children.length>1||!(this.children[0]instanceof zr))){var l=[];this.collapse(l),this.children=[new zr(l)],this.children[0].parent=this}},collapse:function(t){for(var e=this,n=0;n<this.children.length;++n)e.children[n].collapse(t)},insertInner:function(t,e,n){var i=this;this.size+=e.length,this.height+=n;for(var r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<=a){if(o.insertInner(t,e,n),o.lines&&o.lines.length>50){for(var s=o.lines.length%25+25,l=s;l<o.lines.length;){var c=new zr(o.lines.slice(l,l+=25));o.height-=c.height,i.children.splice(++r,0,c),c.parent=i}o.lines=o.lines.slice(0,s),i.maybeSpill()}break}t-=a}},maybeSpill:function(){if(!(this.children.length<=10)){var t=this;do{var e=t.children.splice(t.children.length-5,5),n=new qr(e);if(t.parent){t.size-=n.size,t.height-=n.height;var i=d(t.parent.children,t);t.parent.children.splice(i+1,0,n)}else{var r=new qr(t.children);r.parent=t,t.children=[r,n],t=r}n.parent=t.parent}while(t.children.length>10);t.parent.maybeSpill()}},iterN:function(t,e,n){for(var i=this,r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<a){var s=Math.min(e,a-t);if(o.iterN(t,s,n))return!0;if(0==(e-=s))break;t=0}else t-=a}}};var Ls=function(t,e,n){var i=this;if(n)for(var r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);this.doc=t,this.node=e};Ls.prototype.clear=function(){var t=this,e=this.doc.cm,n=this.line.widgets,i=this.line,r=P(i);if(null!=r&&n){for(var o=0;o<n.length;++o)n[o]==t&&n.splice(o--,1);n.length||(i.widgets=null);var a=Re(this);L(i,Math.max(0,i.height-a)),e&&(fi(e,function(){Gr(e,i,-a),yi(e,r,"widget")}),be(e,"lineWidgetCleared",e,this,r))}},Ls.prototype.changed=function(){var t=this,e=this.height,n=this.doc.cm,i=this.line;this.height=null;var r=Re(this)-e;r&&(L(i,i.height+r),n&&fi(n,function(){n.curOp.forceUpdate=!0,Gr(n,i,r),be(n,"lineWidgetChanged",n,t,P(i))}))},Lt(Ls);var Ps=0,Ns=function(t,e){this.lines=[],this.type=e,this.doc=t,this.id=++Ps};Ns.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){var e=this.doc.cm,n=e&&!e.curOp;if(n&&oi(e),Et(this,"clear")){var i=this.find();i&&be(this,"clear",i.from,i.to)}for(var r=null,o=null,a=0;a<this.lines.length;++a){var s=t.lines[a],l=X(s.markedSpans,t);e&&!t.collapsed?yi(e,P(s),"text"):e&&(null!=l.to&&(o=P(s)),null!=l.from&&(r=P(s))),s.markedSpans=Y(s.markedSpans,l),null==l.from&&t.collapsed&&!mt(t.doc,s)&&e&&L(s,xn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var c=0;c<this.lines.length;++c){var u=ht(t.lines[c]),h=xt(u);h>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=h,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&vi(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Sr(e.doc)),e&&be(e,"markerCleared",e,this,r,o),n&&ai(e),this.parent&&this.parent.clear()}},Ns.prototype.find=function(t,e){var n=this;null==t&&"bookmark"==this.type&&(t=1);for(var i,r,o=0;o<this.lines.length;++o){var a=n.lines[o],s=X(a.markedSpans,n);if(null!=s.from&&(i=D(e?a:P(a),s.from),-1==t))return i;if(null!=s.to&&(r=D(e?a:P(a),s.to),1==t))return r}return i&&{from:i,to:r}},Ns.prototype.changed=function(){var t=this,e=this.find(-1,!0),n=this,i=this.doc.cm;e&&i&&fi(i,function(){var r=e.line,o=P(e.line),a=We(i,o);if(a&&(Je(a),i.curOp.selectionChanged=i.curOp.forceUpdate=!0),i.curOp.updateMaxLine=!0,!mt(n.doc,r)&&null!=n.height){var s=n.height;n.height=null;var l=Re(n)-s;l&&L(r,r.height+l)}be(i,"markerChanged",i,t)})},Ns.prototype.attachLine=function(t){if(!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;e.maybeHiddenMarkers&&-1!=d(e.maybeHiddenMarkers,this)||(e.maybeUnhiddenMarkers||(e.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(t)},Ns.prototype.detachLine=function(t){if(this.lines.splice(d(this.lines,t),1),!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;(e.maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)}},Lt(Ns);var Os=function(t,e){var n=this;this.markers=t,this.primary=e;for(var i=0;i<t.length;++i)t[i].parent=n};Os.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)t.markers[e].clear();be(this,"clear")}},Os.prototype.find=function(t,e){return this.primary.find(t,e)},Lt(Os);var Rs=0,Ds=function(t,e,n,i,r){if(!(this instanceof Ds))return new Ds(t,e,n,i,r);null==n&&(n=0),qr.call(this,[new zr([new ps("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=n;var o=D(n,0);this.sel=Fi(o),this.history=new tr(null),this.id=++Rs,this.modeOption=e,this.lineSep=i,this.direction="rtl"==r?"rtl":"ltr",this.extend=!1,"string"==typeof t&&(t=this.splitLines(t)),Yi(this,{from:o,to:o,text:t}),br(this,Fi(o),Ba)};Ds.prototype=x(qr.prototype,{constructor:Ds,iter:function(t,e,n){n?this.iterN(t-this.first,e-t,n):this.iterN(this.first,this.first+this.size,t)},insert:function(t,e){for(var n=0,i=0;i<e.length;++i)n+=e[i].height;this.insertInner(t-this.first,e,n)},remove:function(t,e){this.removeInner(t-this.first,e)},getValue:function(t){var e=E(this,this.first,this.first+this.size);return!1===t?e:e.join(t||this.lineSeparator())},setValue:mi(function(t){var e=D(this.first,0),n=this.first+this.size-1;Lr(this,{from:e,to:D(n,A(this,n).text.length),text:this.splitLines(t),origin:"setValue",full:!0},!0),this.cm&&Xn(this.cm,0,0),br(this,Fi(e),Ba)}),replaceRange:function(t,e,n,i){e=q(this,e),n=n?q(this,n):e,Ir(this,t,e,n,i)},getRange:function(t,e,n){var i=M(this,q(this,t),q(this,e));return!1===n?i:i.join(n||this.lineSeparator())},getLine:function(t){var e=this.getLineHandle(t);return e&&e.text},getLineHandle:function(t){if(O(this,t))return A(this,t)},getLineNumber:function(t){return P(t)},getLineHandleVisualStart:function(t){return"number"==typeof t&&(t=A(this,t)),ht(t)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(t){return q(this,t)},getCursor:function(t){var e=this.sel.primary();return null==t||"head"==t?e.head:"anchor"==t?e.anchor:"end"==t||"to"==t||!1===t?e.to():e.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:mi(function(t,e,n){vr(this,q(this,"number"==typeof t?D(t,e||0):t),null,n)}),setSelection:mi(function(t,e,n){vr(this,q(this,t),q(this,e||t),n)}),extendSelection:mi(function(t,e,n){pr(this,q(this,t),e&&q(this,e),n)}),extendSelections:mi(function(t,e){gr(this,B(this,t),e)}),extendSelectionsBy:mi(function(t,e){gr(this,B(this,m(this.sel.ranges,t)),e)}),setSelections:mi(function(t,e,n){var i=this;if(t.length){for(var r=[],o=0;o<t.length;o++)r[o]=new Es(q(i,t[o].anchor),q(i,t[o].head));null==e&&(e=Math.min(t.length-1,this.sel.primIndex)),br(this,Vi(r,e),n)}}),addSelection:mi(function(t,e,n){var i=this.sel.ranges.slice(0);i.push(new Es(q(this,t),q(this,e||t))),br(this,Vi(i,i.length-1),n)}),getSelection:function(t){for(var e,n=this,i=this.sel.ranges,r=0;r<i.length;r++){var o=M(n,i[r].from(),i[r].to());e=e?e.concat(o):o}return!1===t?e:e.join(t||this.lineSeparator())},getSelections:function(t){for(var e=this,n=[],i=this.sel.ranges,r=0;r<i.length;r++){var o=M(e,i[r].from(),i[r].to());!1!==t&&(o=o.join(t||e.lineSeparator())),n[r]=o}return n},replaceSelection:function(t,e,n){for(var i=[],r=0;r<this.sel.ranges.length;r++)i[r]=t;this.replaceSelections(i,e,n||"+input")},replaceSelections:mi(function(t,e,n){for(var i=this,r=[],o=this.sel,a=0;a<o.ranges.length;a++){var s=o.ranges[a];r[a]={from:s.from(),to:s.to(),text:i.splitLines(t[a]),origin:n}}for(var l=e&&"end"!=e&&$i(this,r,e),c=r.length-1;c>=0;c--)Lr(i,r[c]);l?xr(this,l):this.cm&&Un(this.cm)}),undo:mi(function(){Nr(this,"undo")}),redo:mi(function(){Nr(this,"redo")}),undoSelection:mi(function(){Nr(this,"undo",!0)}),redoSelection:mi(function(){Nr(this,"redo",!0)}),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,i=0;i<t.done.length;i++)t.done[i].ranges||++e;for(var r=0;r<t.undone.length;r++)t.undone[r].ranges||++n;return{undo:e,redo:n}},clearHistory:function(){this.history=new tr(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(t){return t&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(t){return this.history.generation==(t||this.cleanGeneration)},getHistory:function(){return{done:dr(this.history.done),undone:dr(this.history.undone)}},setHistory:function(t){var e=this.history=new tr(this.history.maxGeneration);e.done=dr(t.done.slice(0),null,!0),e.undone=dr(t.undone.slice(0),null,!0)},setGutterMarker:mi(function(t,e,n){return Fr(this,t,"gutter",function(t){var i=t.gutterMarkers||(t.gutterMarkers={});return i[e]=n,!n&&_(i)&&(t.gutterMarkers=null),!0})}),clearGutter:mi(function(t){var e=this;this.iter(function(n){n.gutterMarkers&&n.gutterMarkers[t]&&Fr(e,n,"gutter",function(){return n.gutterMarkers[t]=null,_(n.gutterMarkers)&&(n.gutterMarkers=null),!0})})}),lineInfo:function(t){var e;if("number"==typeof t){if(!O(this,t))return null;if(e=t,!(t=A(this,t)))return null}else if(null==(e=P(t)))return null;return{line:e,handle:t,text:t.text,gutterMarkers:t.gutterMarkers,textClass:t.textClass,bgClass:t.bgClass,wrapClass:t.wrapClass,widgets:t.widgets}},addLineClass:mi(function(e,n,i){return Fr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass";if(e[r]){if(t(i).test(e[r]))return!1;e[r]+=" "+i}else e[r]=i;return!0})}),removeLineClass:mi(function(e,n,i){return Fr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass",o=e[r];if(!o)return!1;if(null==i)e[r]=null;else{var a=o.match(t(i));if(!a)return!1;var s=a.index+a[0].length;e[r]=o.slice(0,a.index)+(a.index&&s!=o.length?" ":"")+o.slice(s)||null}return!0})}),addLineWidget:mi(function(t,e,n){return Br(this,t,e,n)}),removeLineWidget:function(t){t.clear()},markText:function(t,e,n){return $r(this,q(this,t),q(this,e),n,n&&n.type||"range")},setBookmark:function(t,e){var n={replacedWith:e&&(null==e.nodeType?e.widget:e),insertLeft:e&&e.insertLeft,clearWhenEmpty:!1,shared:e&&e.shared,handleMouseEvents:e&&e.handleMouseEvents};return t=q(this,t),$r(this,t,t,n,"bookmark")},findMarksAt:function(t){t=q(this,t);var e=[],n=A(this,t.line).markedSpans;if(n)for(var i=0;i<n.length;++i){var r=n[i];(null==r.from||r.from<=t.ch)&&(null==r.to||r.to>=t.ch)&&e.push(r.marker.parent||r.marker)}return e},findMarks:function(t,e,n){t=q(this,t),e=q(this,e);var i=[],r=t.line;return this.iter(t.line,e.line+1,function(o){var a=o.markedSpans;if(a)for(var s=0;s<a.length;s++){var l=a[s];null!=l.to&&r==t.line&&t.ch>=l.to||null==l.from&&r!=t.line||null!=l.from&&r==e.line&&l.from>=e.ch||n&&!n(l.marker)||i.push(l.marker.parent||l.marker)}++r}),i},getAllMarks:function(){var t=[];return this.iter(function(e){var n=e.markedSpans;if(n)for(var i=0;i<n.length;++i)null!=n[i].from&&t.push(n[i].marker)}),t},posFromIndex:function(t){var e,n=this.first,i=this.lineSeparator().length;return this.iter(function(r){var o=r.text.length+i;if(o>t)return e=t,!0;t-=o,++n}),q(this,D(n,e))},indexFromPos:function(t){t=q(this,t);var e=t.ch;if(t.line<this.first||t.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,t.line,function(t){e+=t.text.length+n}),e},copy:function(t){var e=new Ds(E(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return e.scrollTop=this.scrollTop,e.scrollLeft=this.scrollLeft,e.sel=this.sel,e.extend=!1,t&&(e.history.undoDepth=this.history.undoDepth,e.setHistory(this.getHistory())),e},linkedDoc:function(t){t||(t={});var e=this.first,n=this.first+this.size;null!=t.from&&t.from>e&&(e=t.from),null!=t.to&&t.to<n&&(n=t.to);var i=new Ds(E(this,e,n),t.mode||this.modeOption,e,this.lineSep,this.direction);return t.sharedHist&&(i.history=this.history),(this.linked||(this.linked=[])).push({doc:i,sharedHist:t.sharedHist}),i.linked=[{doc:this,isParent:!0,sharedHist:t.sharedHist}],Xr(i,Ur(this)),i},unlinkDoc:function(t){var e=this;if(t instanceof Uo&&(t=t.doc),this.linked)for(var n=0;n<this.linked.length;++n){var i=e.linked[n];if(i.doc==t){e.linked.splice(n,1),t.unlinkDoc(e),Yr(Ur(e));break}}if(t.history==this.history){var r=[t.id];Qi(t,function(t){return r.push(t.id)},!0),t.history=new tr(null),t.history.done=dr(this.history.done,r),t.history.undone=dr(this.history.undone,r)}},iterLinkedDocs:function(t){Qi(this,t)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(t){return this.lineSep?t.split(this.lineSep):is(t)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:mi(function(t){"rtl"!=t&&(t="ltr"),t!=this.direction&&(this.direction=t,this.iter(function(t){return t.order=null}),this.cm&&Ji(this.cm))})}),Ds.prototype.eachLine=Ds.prototype.iter;for(var Is=0,Hs=!1,js={3:"Pause",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",145:"ScrollLock",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},Vs=0;Vs<10;Vs++)js[Vs+48]=js[Vs+96]=String(Vs);for(var Fs=65;Fs<=90;Fs++)js[Fs]=String.fromCharCode(Fs);for(var zs=1;zs<=12;zs++)js[zs+111]=js[zs+63235]="F"+zs;var qs={};qs.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},qs.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},qs.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},qs.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",
+fallthrough:["basic","emacsy"]},qs.default=La?qs.macDefault:qs.pcDefault;var Gs={selectAll:Mr,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),Ba)},killLine:function(t){return ho(t,function(e){if(e.empty()){var n=A(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line<t.lastLine()?{from:e.head,to:D(e.head.line+1,0)}:{from:e.head,to:D(e.head.line,n)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return ho(t,function(e){return{from:D(e.from().line,0),to:q(t.doc,D(e.to().line+1,0))}})},delLineLeft:function(t){return ho(t,function(t){return{from:D(t.from().line,0),to:t.from()}})},delWrappedLineLeft:function(t){return ho(t,function(e){var n=t.charCoords(e.head,"div").top+5;return{from:t.coordsChar({left:0,top:n},"div"),to:e.from()}})},delWrappedLineRight:function(t){return ho(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div");return{from:e.from(),to:i}})},undo:function(t){return t.undo()},redo:function(t){return t.redo()},undoSelection:function(t){return t.undoSelection()},redoSelection:function(t){return t.redoSelection()},goDocStart:function(t){return t.extendSelection(D(t.firstLine(),0))},goDocEnd:function(t){return t.extendSelection(D(t.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return vo(t,e.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return xo(t,e.head)},{origin:"+move",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return yo(t,e.head.line)},{origin:"+move",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){var n=t.cursorCoords(e.head,"div").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div")},Wa)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){var n=t.cursorCoords(e.head,"div").top+5;return t.coordsChar({left:0,top:n},"div")},Wa)},goLineLeftSmart:function(t){return t.extendSelectionsBy(function(e){var n=t.cursorCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return i.ch<t.getLine(i.line).search(/\S/)?xo(t,e.head):i},Wa)},goLineUp:function(t){return t.moveV(-1,"line")},goLineDown:function(t){return t.moveV(1,"line")},goPageUp:function(t){return t.moveV(-1,"page")},goPageDown:function(t){return t.moveV(1,"page")},goCharLeft:function(t){return t.moveH(-1,"char")},goCharRight:function(t){return t.moveH(1,"char")},goColumnLeft:function(t){return t.moveH(-1,"column")},goColumnRight:function(t){return t.moveH(1,"column")},goWordLeft:function(t){return t.moveH(-1,"word")},goGroupRight:function(t){return t.moveH(1,"group")},goGroupLeft:function(t){return t.moveH(-1,"group")},goWordRight:function(t){return t.moveH(1,"word")},delCharBefore:function(t){return t.deleteH(-1,"char")},delCharAfter:function(t){return t.deleteH(1,"char")},delWordBefore:function(t){return t.deleteH(-1,"word")},delWordAfter:function(t){return t.deleteH(1,"word")},delGroupBefore:function(t){return t.deleteH(-1,"group")},delGroupAfter:function(t){return t.deleteH(1,"group")},indentAuto:function(t){return t.indentSelection("smart")},indentMore:function(t){return t.indentSelection("add")},indentLess:function(t){return t.indentSelection("subtract")},insertTab:function(t){return t.replaceSelection("\t")},insertSoftTab:function(t){for(var e=[],n=t.listSelections(),i=t.options.tabSize,r=0;r<n.length;r++){var o=n[r].from(),a=h(t.getLine(o.line),o.ch,i);e.push(p(i-a%i))}t.replaceSelections(e)},defaultTab:function(t){t.somethingSelected()?t.indentSelection("add"):t.execCommand("insertTab")},transposeChars:function(t){return fi(t,function(){for(var e=t.listSelections(),n=[],i=0;i<e.length;i++)if(e[i].empty()){var r=e[i].head,o=A(t.doc,r.line).text;if(o)if(r.ch==o.length&&(r=new D(r.line,r.ch-1)),r.ch>0)r=new D(r.line,r.ch+1),t.replaceRange(o.charAt(r.ch-1)+o.charAt(r.ch-2),D(r.line,r.ch-2),r,"+transpose");else if(r.line>t.doc.first){var a=A(t.doc,r.line-1).text;a&&(r=new D(r.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),D(r.line-1,a.length-1),r,"+transpose"))}n.push(new Es(r,r))}t.setSelections(n)})},newlineAndIndent:function(t){return fi(t,function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var i=0;i<e.length;i++)t.indentLine(e[i].from().line,null,!0);Un(t)})},openLine:function(t){return t.replaceSelection("\n","start")},toggleOverwrite:function(t){return t.toggleOverwrite()}},Bs=new Va,$s=null,Ws=function(t,e,n){this.time=t,this.pos=e,this.button=n};Ws.prototype.compare=function(t,e,n){return this.time+400>t&&0==I(e,this.pos)&&n==this.button};var Us,Xs,Ys={toString:function(){return"CodeMirror.Init"}},Qs={},Zs={};Uo.defaults=Qs,Uo.optionHandlers=Zs;var Ks=[];Uo.defineInitHook=function(t){return Ks.push(t)};var Js=null,tl=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Va,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};tl.prototype.init=function(t){function e(t){if(!At(r,t)){if(r.somethingSelected())Qo({lineWise:!1,text:r.getSelections()}),"cut"==t.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var e=ta(r);Qo({lineWise:!0,text:e.text}),"cut"==t.type&&r.operation(function(){r.setSelections(e.ranges,0,Ba),r.replaceSelection("",null,"cut")})}if(t.clipboardData){t.clipboardData.clearData();var n=Js.text.join("\n");if(t.clipboardData.setData("Text",n),t.clipboardData.getData("Text")==n)return void t.preventDefault()}var a=na(),s=a.firstChild;r.display.lineSpace.insertBefore(a,r.display.lineSpace.firstChild),s.value=Js.text.join("\n");var l=document.activeElement;ja(s),setTimeout(function(){r.display.lineSpace.removeChild(a),l.focus(),l==o&&i.showPrimarySelection()},50)}}var n=this,i=this,r=i.cm,o=i.div=t.lineDiv;ea(o,r.options.spellcheck),es(o,"paste",function(t){At(r,t)||Ko(t,r)||xa<=11&&setTimeout(pi(r,function(){return n.updateFromDOM()}),20)}),es(o,"compositionstart",function(t){n.composing={data:t.data,done:!1}}),es(o,"compositionupdate",function(t){n.composing||(n.composing={data:t.data,done:!1})}),es(o,"compositionend",function(t){n.composing&&(t.data!=n.composing.data&&n.readFromDOMSoon(),n.composing.done=!0)}),es(o,"touchstart",function(){return i.forceCompositionEnd()}),es(o,"input",function(){n.composing||n.readFromDOMSoon()}),es(o,"copy",e),es(o,"cut",e)},tl.prototype.prepareSelection=function(){var t=Mn(this.cm,!1);return t.focus=this.cm.state.focused,t},tl.prototype.showSelection=function(t,e){t&&this.cm.display.view.length&&((t.focus||e)&&this.showPrimarySelection(),this.showMultipleSelections(t))},tl.prototype.showPrimarySelection=function(){var t=window.getSelection(),e=this.cm,n=e.doc.sel.primary(),i=n.from(),r=n.to();if(e.display.viewTo==e.display.viewFrom||i.line>=e.display.viewTo||r.line<e.display.viewFrom)return void t.removeAllRanges();var o=ca(e,t.anchorNode,t.anchorOffset),a=ca(e,t.focusNode,t.focusOffset);if(!o||o.bad||!a||a.bad||0!=I(F(o,a),i)||0!=I(V(o,a),r)){var s=e.display.view,l=i.line>=e.display.viewFrom&&oa(e,i)||{node:s[0].measure.map[2],offset:0},c=r.line<e.display.viewTo&&oa(e,r);if(!c){var u=s[s.length-1].measure,h=u.maps?u.maps[u.maps.length-1]:u.map;c={node:h[h.length-1],offset:h[h.length-2]-h[h.length-3]}}if(!l||!c)return void t.removeAllRanges();var d,f=t.rangeCount&&t.getRangeAt(0);try{d=Ra(l.node,l.offset,c.offset,c.node)}catch(t){}d&&(!pa&&e.state.focused?(t.collapse(l.node,l.offset),d.collapsed||(t.removeAllRanges(),t.addRange(d))):(t.removeAllRanges(),t.addRange(d)),f&&null==t.anchorNode?t.addRange(f):pa&&this.startGracePeriod()),this.rememberSelection()}},tl.prototype.startGracePeriod=function(){var t=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){t.gracePeriod=!1,t.selectionChanged()&&t.cm.operation(function(){return t.cm.curOp.selectionChanged=!0})},20)},tl.prototype.showMultipleSelections=function(t){n(this.cm.display.cursorDiv,t.cursors),n(this.cm.display.selectionDiv,t.selection)},tl.prototype.rememberSelection=function(){var t=window.getSelection();this.lastAnchorNode=t.anchorNode,this.lastAnchorOffset=t.anchorOffset,this.lastFocusNode=t.focusNode,this.lastFocusOffset=t.focusOffset},tl.prototype.selectionInEditor=function(){var t=window.getSelection();if(!t.rangeCount)return!1;var e=t.getRangeAt(0).commonAncestorContainer;return o(this.div,e)},tl.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},tl.prototype.blur=function(){this.div.blur()},tl.prototype.getField=function(){return this.div},tl.prototype.supportsTouch=function(){return!0},tl.prototype.receivedFocus=function(){function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))}var e=this;this.selectionInEditor()?this.pollSelection():fi(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,t)},tl.prototype.selectionChanged=function(){var t=window.getSelection();return t.anchorNode!=this.lastAnchorNode||t.anchorOffset!=this.lastAnchorOffset||t.focusNode!=this.lastFocusNode||t.focusOffset!=this.lastFocusOffset},tl.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var t=window.getSelection(),e=this.cm;if(Ma&&_a&&this.cm.options.gutters.length&&aa(t.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var n=ca(e,t.anchorNode,t.anchorOffset),i=ca(e,t.focusNode,t.focusOffset);n&&i&&fi(e,function(){br(e.doc,Fi(n,i),Ba),(n.bad||i.bad)&&(e.curOp.selectionChanged=!0)})}}},tl.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var t=this.cm,e=t.display,n=t.doc.sel.primary(),i=n.from(),r=n.to();if(0==i.ch&&i.line>t.firstLine()&&(i=D(i.line-1,A(t.doc,i.line-1).length)),r.ch==A(t.doc,r.line).text.length&&r.line<t.lastLine()&&(r=D(r.line+1,0)),i.line<e.viewFrom||r.line>e.viewTo-1)return!1;var o,a,s;i.line==e.viewFrom||0==(o=kn(t,i.line))?(a=P(e.view[0].line),s=e.view[0].node):(a=P(e.view[o].line),s=e.view[o-1].node.nextSibling);var l,c,u=kn(t,r.line);if(u==e.view.length-1?(l=e.viewTo-1,c=e.lineDiv.lastChild):(l=P(e.view[u+1].line)-1,c=e.view[u+1].node.previousSibling),!s)return!1;for(var h=t.doc.splitLines(la(t,s,c,a,l)),d=M(t.doc,D(a,0),D(l,A(t.doc,l).text.length));h.length>1&&d.length>1;)if(g(h)==g(d))h.pop(),d.pop(),l--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),a++}for(var f=0,p=0,m=h[0],v=d[0],y=Math.min(m.length,v.length);f<y&&m.charCodeAt(f)==v.charCodeAt(f);)++f;for(var x=g(h),b=g(d),w=Math.min(x.length-(1==h.length?f:0),b.length-(1==d.length?f:0));p<w&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==d.length&&a==i.line)for(;f&&f>i.ch&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=x.slice(0,x.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var _=D(a,f),S=D(l,d.length?g(d).length-p:0);return h.length>1||h[0]||I(_,S)?(Ir(t.doc,h,_,S,"+input"),!0):void 0},tl.prototype.ensurePolled=function(){this.forceCompositionEnd()},tl.prototype.reset=function(){this.forceCompositionEnd()},tl.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},tl.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()},80))},tl.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||fi(this.cm,function(){return vi(t.cm)})},tl.prototype.setUneditable=function(t){t.contentEditable="false"},tl.prototype.onKeyPress=function(t){0==t.charCode||this.composing||(t.preventDefault(),this.cm.isReadOnly()||pi(this.cm,Zo)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},tl.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},tl.prototype.onContextMenu=function(){},tl.prototype.resetPosition=function(){},tl.prototype.needsContentAttribute=!0;var el=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new Va,this.hasSelection=!1,this.composing=null};el.prototype.init=function(t){function e(t){if(!At(r,t)){if(r.somethingSelected())Qo({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var e=ta(r);Qo({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,Ba):(i.prevInput="",o.value=e.text.join("\n"),ja(o))}"cut"==t.type&&(r.state.cutIncoming=!0)}}var n=this,i=this,r=this.cm;this.createField(t);var o=this.textarea;t.wrapper.insertBefore(this.wrapper,t.wrapper.firstChild),Aa&&(o.style.width="0px"),es(o,"input",function(){ya&&xa>=9&&n.hasSelection&&(n.hasSelection=null),i.poll()}),es(o,"paste",function(t){At(r,t)||Ko(t,r)||(r.state.pasteIncoming=!0,i.fastPoll())}),es(o,"cut",e),es(o,"copy",e),es(t.scroller,"paste",function(e){De(t,e)||At(r,e)||(r.state.pasteIncoming=!0,i.focus())}),es(t.lineSpace,"selectstart",function(e){De(t,e)||Pt(e)}),es(o,"compositionstart",function(){var t=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}}),es(o,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},el.prototype.createField=function(t){this.wrapper=na(),this.textarea=this.wrapper.firstChild},el.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,i=Mn(t);if(t.options.moveInputWithCursor){var r=cn(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),a=e.lineDiv.getBoundingClientRect();i.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,r.top+a.top-o.top)),i.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,r.left+a.left-o.left))}return i},el.prototype.showSelection=function(t){var e=this.cm,i=e.display;n(i.cursorDiv,t.cursors),n(i.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},el.prototype.reset=function(t){if(!this.contextMenuPending&&!this.composing){var e=this.cm;if(e.somethingSelected()){this.prevInput="";var n=e.getSelection();this.textarea.value=n,e.state.focused&&ja(this.textarea),ya&&xa>=9&&(this.hasSelection=n)}else t||(this.prevInput=this.textarea.value="",ya&&xa>=9&&(this.hasSelection=null))}},el.prototype.getField=function(){return this.textarea},el.prototype.supportsTouch=function(){return!1},el.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!Ea||a()!=this.textarea))try{this.textarea.focus()}catch(t){}},el.prototype.blur=function(){this.textarea.blur()},el.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},el.prototype.receivedFocus=function(){this.slowPoll()},el.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){t.poll(),t.cm.state.focused&&t.slowPoll()})},el.prototype.fastPoll=function(){function t(){n.poll()||e?(n.pollingFast=!1,n.slowPoll()):(e=!0,n.polling.set(60,t))}var e=!1,n=this;n.pollingFast=!0,n.polling.set(20,t)},el.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,i=this.prevInput;if(this.contextMenuPending||!e.state.focused||rs(n)&&!i&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=n.value;if(r==i&&!e.somethingSelected())return!1;if(ya&&xa>=9&&this.hasSelection===r||La&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=r.charCodeAt(0);if(8203!=o||i||(i="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,s=Math.min(i.length,r.length);a<s&&i.charCodeAt(a)==r.charCodeAt(a);)++a;return fi(e,function(){Zo(e,r.slice(a),i.length-a,null,t.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=r,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},el.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},el.prototype.onKeyPress=function(){ya&&xa>=9&&(this.hasSelection=null),this.fastPoll()},el.prototype.onContextMenu=function(t){function e(){if(null!=a.selectionStart){var t=r.somethingSelected(),e="​"+(t?a.value:"");a.value="⇚",a.value=e,i.prevInput=t?"":"​",a.selectionStart=1,a.selectionEnd=e.length,o.selForContextMenu=r.doc.sel}}function n(){if(i.contextMenuPending=!1,i.wrapper.style.cssText=u,a.style.cssText=c,ya&&xa<9&&o.scrollbars.setScrollTop(o.scroller.scrollTop=l),null!=a.selectionStart){(!ya||ya&&xa<9)&&e();var t=0,n=function(){o.selForContextMenu==r.doc.sel&&0==a.selectionStart&&a.selectionEnd>0&&"​"==i.prevInput?pi(r,Mr)(r):t++<10?o.detectingSelectAll=setTimeout(n,500):(o.selForContextMenu=null,o.input.reset())};o.detectingSelectAll=setTimeout(n,200)}}var i=this,r=i.cm,o=r.display,a=i.textarea,s=Tn(r,t),l=o.scroller.scrollTop;if(s&&!Sa){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(s)&&pi(r,br)(r.doc,Fi(s),Ba);var c=a.style.cssText,u=i.wrapper.style.cssText;i.wrapper.style.cssText="position: absolute";var h=i.wrapper.getBoundingClientRect();a.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(t.clientY-h.top-5)+"px; left: "+(t.clientX-h.left-5)+"px;\n      z-index: 1000; background: "+(ya?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var d;if(ba&&(d=window.scrollY),o.input.focus(),ba&&window.scrollTo(null,d),o.input.reset(),r.somethingSelected()||(a.value=i.prevInput=" "),i.contextMenuPending=!0,o.selForContextMenu=r.doc.sel,clearTimeout(o.detectingSelectAll),ya&&xa>=9&&e(),Ia){Rt(t);var f=function(){Tt(window,"mouseup",f),setTimeout(n,20)};es(window,"mouseup",f)}else setTimeout(n,50)}},el.prototype.readOnlyChanged=function(t){t||this.reset(),this.textarea.disabled="nocursor"==t},el.prototype.setUneditable=function(){},el.prototype.needsContentAttribute=!1,function(t){function e(e,i,r,o){t.defaults[e]=i,r&&(n[e]=o?function(t,e,n){n!=Ys&&r(t,e,n)}:r)}var n=t.optionHandlers;t.defineOption=e,t.Init=Ys,e("value","",function(t,e){return t.setValue(e)},!0),e("mode",null,function(t,e){t.doc.modeOption=e,Wi(t)},!0),e("indentUnit",2,Wi,!0),e("indentWithTabs",!1),e("smartIndent",!0),e("tabSize",4,function(t){Ui(t),en(t),vi(t)},!0),e("lineSeparator",null,function(t,e){if(t.doc.lineSep=e,e){var n=[],i=t.doc.first;t.doc.iter(function(t){for(var r=0;;){var o=t.text.indexOf(e,r);if(-1==o)break;r=o+e.length,n.push(D(i,o))}i++});for(var r=n.length-1;r>=0;r--)Ir(t.doc,e,n[r],D(n[r].line,n[r].ch+e.length))}}),e("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Ys&&t.refresh()}),e("specialCharPlaceholder",ce,function(t){return t.refresh()},!0),e("electricChars",!0),e("inputStyle",Ea?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),e("spellcheck",!1,function(t,e){return t.getInputField().spellcheck=e},!0),e("rtlMoveVisually",!Na),e("wholeLineUpdateBefore",!0),e("theme","default",function(t){Go(t),Bo(t)},!0),e("keyMap","default",function(t,e,n){var i=uo(e),r=n!=Ys&&uo(n);r&&r.detach&&r.detach(t,i),i.attach&&i.attach(t,r||null)}),e("extraKeys",null),e("configureMouse",null),e("lineWrapping",!1,Wo,!0),e("gutters",[],function(t){Di(t.options),Bo(t)},!0),e("fixedGutter",!0,function(t,e){t.display.gutters.style.left=e?_n(t.display)+"px":"0",t.refresh()},!0),e("coverGutterNextToScrollbar",!1,function(t){return ni(t)},!0),e("scrollbarStyle","native",function(t){ri(t),ni(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)},!0),e("lineNumbers",!1,function(t){Di(t.options),Bo(t)},!0),e("firstLineNumber",1,Bo,!0),e("lineNumberFormatter",function(t){return t},Bo,!0),e("showCursorWhenSelecting",!1,An,!0),e("resetSelectionOnContextMenu",!0),e("lineWiseCopyCut",!0),e("pasteLinesPerSelection",!0),e("readOnly",!1,function(t,e){"nocursor"==e&&(In(t),t.display.input.blur()),t.display.input.readOnlyChanged(e)}),e("disableInput",!1,function(t,e){e||t.display.input.reset()},!0),e("dragDrop",!0,$o),e("allowDropFileTypes",null),e("cursorBlinkRate",530),e("cursorScrollMargin",0),e("cursorHeight",1,An,!0),e("singleCursorHeightPerLine",!0,An,!0),e("workTime",100),e("workDelay",100),e("flattenSpans",!0,Ui,!0),e("addModeClass",!1,Ui,!0),e("pollInterval",100),e("undoDepth",200,function(t,e){return t.doc.history.undoDepth=e}),e("historyEventDelay",1250),e("viewportMargin",10,function(t){return t.refresh()},!0),e("maxHighlightLength",1e4,Ui,!0),e("moveInputWithCursor",!0,function(t,e){e||t.display.input.resetPosition()}),e("tabindex",null,function(t,e){return t.display.input.getField().tabIndex=e||""}),e("autofocus",null),e("direction","ltr",function(t,e){return t.doc.setDirection(e)},!0)}(Uo),function(t){var e=t.optionHandlers,n=t.helpers={};t.prototype={constructor:t,focus:function(){window.focus(),this.display.input.focus()},setOption:function(t,n){var i=this.options,r=i[t];i[t]==n&&"mode"!=t||(i[t]=n,e.hasOwnProperty(t)&&pi(this,e[t])(this,n,r),kt(this,"optionChange",this,t))},getOption:function(t){return this.options[t]},getDoc:function(){return this.doc},addKeyMap:function(t,e){this.state.keyMaps[e?"push":"unshift"](uo(t))},removeKeyMap:function(t){for(var e=this.state.keyMaps,n=0;n<e.length;++n)if(e[n]==t||e[n].name==t)return e.splice(n,1),!0},addOverlay:gi(function(e,n){var i=e.token?e:t.getMode(this.options,e);if(i.startState)throw new Error("Overlays may not be stateful.");v(this.state.overlays,{mode:i,modeSpec:e,opaque:n&&n.opaque,priority:n&&n.priority||0},function(t){return t.priority}),this.state.modeGen++,vi(this)}),removeOverlay:gi(function(t){for(var e=this,n=this.state.overlays,i=0;i<n.length;++i){var r=n[i].modeSpec;if(r==t||"string"==typeof t&&r.name==t)return n.splice(i,1),e.state.modeGen++,void vi(e)}}),indentLine:gi(function(t,e,n){"string"!=typeof e&&"number"!=typeof e&&(e=null==e?this.options.smartIndent?"smart":"prev":e?"add":"subtract"),O(this.doc,t)&&Yo(this,t,e,n)}),indentSelection:gi(function(t){for(var e=this,n=this.doc.sel.ranges,i=-1,r=0;r<n.length;r++){var o=n[r];if(o.empty())o.head.line>i&&(Yo(e,o.head.line,t,!0),i=o.head.line,r==e.doc.sel.primIndex&&Un(e));else{var a=o.from(),s=o.to(),l=Math.max(i,a.line);i=Math.min(e.lastLine(),s.line-(s.ch?0:1))+1;for(var c=l;c<i;++c)Yo(e,c,t);var u=e.doc.sel.ranges;0==a.ch&&n.length==u.length&&u[r].from().ch>0&&mr(e.doc,r,new Es(a,u[r].to()),Ba)}}}),getTokenAt:function(t,e){return te(this,t,e)},getLineTokens:function(t,e){return te(this,D(t),e,!0)},getTokenTypeAt:function(t){t=q(this.doc,t);var e,n=Yt(this,A(this.doc,t.line)),i=0,r=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=i+r>>1;if((a?n[2*a-1]:0)>=o)r=a;else{if(!(n[2*a+1]<o)){e=n[2*a+2];break}i=a+1}}var s=e?e.indexOf("overlay "):-1;return s<0?e:0==s?null:e.slice(0,s-1)},getModeAt:function(e){var n=this.doc.mode;return n.innerMode?t.innerMode(n,this.getTokenAt(e).state).mode:n},getHelper:function(t,e){return this.getHelpers(t,e)[0]},getHelpers:function(t,e){var i=this,r=[];if(!n.hasOwnProperty(e))return r;var o=n[e],a=this.getModeAt(t);if("string"==typeof a[e])o[a[e]]&&r.push(o[a[e]]);else if(a[e])for(var s=0;s<a[e].length;s++){var l=o[a[e][s]];l&&r.push(l)}else a.helperType&&o[a.helperType]?r.push(o[a.helperType]):o[a.name]&&r.push(o[a.name]);for(var c=0;c<o._global.length;c++){var u=o._global[c];u.pred(a,i)&&-1==d(r,u.val)&&r.push(u.val)}return r},getStateAfter:function(t,e){var n=this.doc;return t=z(n,null==t?n.first+n.size-1:t),Qt(this,t+1,e).state},cursorCoords:function(t,e){var n,i=this.doc.sel.primary();return n=null==t?i.head:"object"==typeof t?q(this.doc,t):t?i.from():i.to(),cn(this,n,e||"page")},charCoords:function(t,e){return ln(this,q(this.doc,t),e||"page")},coordsChar:function(t,e){return t=sn(this,t,e||"page"),dn(this,t.left,t.top)},lineAtHeight:function(t,e){return t=sn(this,{top:t,left:0},e||"page").top,N(this.doc,t+this.display.viewOffset)},heightAtLine:function(t,e,n){var i,r=!1;if("number"==typeof t){var o=this.doc.first+this.doc.size-1;t<this.doc.first?t=this.doc.first:t>o&&(t=o,r=!0),i=A(this.doc,t)}else i=t;return an(this,i,{top:0,left:0},e||"page",n||r).top+(r?this.doc.height-yt(i):0)},defaultTextHeight:function(){return xn(this.display)},defaultCharWidth:function(){return bn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,i,r){var o=this.display;t=cn(this,q(this.doc,t));var a=t.bottom,s=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==i)a=t.top;else if("above"==i||"near"==i){var l=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==i||t.bottom+e.offsetHeight>l)&&t.top>e.offsetHeight?a=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(a=t.bottom),s+e.offsetWidth>c&&(s=c-e.offsetWidth)}e.style.top=a+"px",e.style.left=e.style.right="","right"==r?(s=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==r?s=0:"middle"==r&&(s=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=s+"px"),n&&Bn(this,{left:s,top:a,right:s+e.offsetWidth,bottom:a+e.offsetHeight})},triggerOnKeyDown:gi(ko),triggerOnKeyPress:gi(Eo),triggerOnKeyUp:Mo,triggerOnMouseDown:gi(Po),execCommand:function(t){if(Gs.hasOwnProperty(t))return Gs[t].call(null,this)},triggerElectric:gi(function(t){Jo(this,t)}),findPosH:function(t,e,n,i){var r=this,o=1;e<0&&(o=-1,e=-e);for(var a=q(this.doc,t),s=0;s<e&&(a=ia(r.doc,a,o,n,i),!a.hitSide);++s);return a},moveH:gi(function(t,e){var n=this;this.extendSelectionsBy(function(i){return n.display.shift||n.doc.extend||i.empty()?ia(n.doc,i.head,t,e,n.options.rtlMoveVisually):t<0?i.from():i.to()},Wa)}),deleteH:gi(function(t,e){var n=this.doc.sel,i=this.doc;n.somethingSelected()?i.replaceSelection("",null,"+delete"):ho(this,function(n){var r=ia(i,n.head,t,e,!1);return t<0?{from:r,to:n.head}:{from:n.head,to:r}})}),findPosV:function(t,e,n,i){var r=this,o=1,a=i;e<0&&(o=-1,e=-e);for(var s=q(this.doc,t),l=0;l<e;++l){var c=cn(r,s,"div");if(null==a?a=c.left:c.left=a,s=ra(r,c,o,n),s.hitSide)break}return s},moveV:gi(function(t,e){var n=this,i=this.doc,r=[],o=!this.display.shift&&!i.extend&&i.sel.somethingSelected();if(i.extendSelectionsBy(function(a){if(o)return t<0?a.from():a.to();var s=cn(n,a.head,"div");null!=a.goalColumn&&(s.left=a.goalColumn),r.push(s.left);var l=ra(n,s,t,e);return"page"==e&&a==i.sel.primary()&&Wn(n,ln(n,l,"div").top-s.top),l},Wa),r.length)for(var a=0;a<i.sel.ranges.length;a++)i.sel.ranges[a].goalColumn=r[a]}),findWordAt:function(t){var e=this.doc,n=A(e,t.line).text,i=t.ch,r=t.ch;if(n){var o=this.getHelper(t,"wordChars");"before"!=t.sticky&&r!=n.length||!i?++r:--i;for(var a=n.charAt(i),s=w(a,o)?function(t){return w(t,o)}:/\s/.test(a)?function(t){return/\s/.test(t)}:function(t){return!/\s/.test(t)&&!w(t)};i>0&&s(n.charAt(i-1));)--i;for(;r<n.length&&s(n.charAt(r));)++r}return new Es(D(t.line,i),D(t.line,r))},toggleOverwrite:function(t){null!=t&&t==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?s(this.display.cursorDiv,"CodeMirror-overwrite"):Ha(this.display.cursorDiv,"CodeMirror-overwrite"),kt(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==a()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:gi(function(t,e){Xn(this,t,e)}),getScrollInfo:function(){var t=this.display.scroller;return{left:t.scrollLeft,top:t.scrollTop,height:t.scrollHeight-Ve(this)-this.display.barHeight,width:t.scrollWidth-Ve(this)-this.display.barWidth,clientHeight:ze(this),clientWidth:Fe(this)}},scrollIntoView:gi(function(t,e){null==t?(t={from:this.doc.sel.primary().head,to:null},null==e&&(e=this.options.cursorScrollMargin)):"number"==typeof t?t={from:D(t,0),to:null}:null==t.from&&(t={from:t,to:null}),t.to||(t.to=t.from),t.margin=e||0,null!=t.from.line?Yn(this,t):Zn(this,t.from,t.to,t.margin)}),setSize:gi(function(t,e){var n=this,i=function(t){return"number"==typeof t||/^\d+$/.test(String(t))?t+"px":t};null!=t&&(this.display.wrapper.style.width=i(t)),null!=e&&(this.display.wrapper.style.height=i(e)),this.options.lineWrapping&&tn(this);var r=this.display.viewFrom;this.doc.iter(r,this.display.viewTo,function(t){if(t.widgets)for(var e=0;e<t.widgets.length;e++)if(t.widgets[e].noHScroll){yi(n,r,"widget");break}++r}),this.curOp.forceUpdate=!0,kt(this,"refresh",this)}),operation:function(t){return fi(this,t)},startOperation:function(){return oi(this)},endOperation:function(){return ai(this)},refresh:gi(function(){var t=this.display.cachedTextHeight;vi(this),this.curOp.forceUpdate=!0,en(this),Xn(this,this.doc.scrollLeft,this.doc.scrollTop),Ni(this),(null==t||Math.abs(t-xn(this.display))>.5)&&Cn(this),kt(this,"refresh",this)}),swapDoc:gi(function(t){var e=this.doc;return e.cm=null,Zi(this,t),en(this),this.display.input.reset(),Xn(this,t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,be(this,"swapDoc",this,e),e}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Lt(t),t.registerHelper=function(e,i,r){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][i]=r},t.registerGlobalHelper=function(e,i,r,o){t.registerHelper(e,i,o),n[e]._global.push({pred:r,val:o})}}(Uo);var nl="iter insert remove copy getEditor constructor".split(" ");for(var il in Ds.prototype)Ds.prototype.hasOwnProperty(il)&&d(nl,il)<0&&(Uo.prototype[il]=function(t){return function(){return t.apply(this.doc,arguments)}}(Ds.prototype[il]));return Lt(Ds),Uo.inputStyles={textarea:el,contenteditable:tl},Uo.defineMode=function(t){Uo.defaults.mode||"null"==t||(Uo.defaults.mode=t),Ft.apply(this,arguments)},Uo.defineMIME=zt,Uo.defineMode("null",function(){return{token:function(t){return t.skipToEnd()}}}),Uo.defineMIME("text/plain","null"),Uo.defineExtension=function(t,e){Uo.prototype[t]=e},Uo.defineDocExtension=function(t,e){Ds.prototype[t]=e},Uo.fromTextArea=ha,function(t){t.off=Tt,t.on=es,t.wheelEventPixels=Hi,t.Doc=Ds,t.splitLines=is,t.countColumn=h,t.findColumn=f,t.isWordChar=b,t.Pass=Ga,t.signal=kt,t.Line=ps,t.changeEnd=zi,t.scrollbarModel=Ss,t.Pos=D,t.cmpPos=I,t.modes=ss,t.mimeModes=ls,t.resolveMode=qt,t.getMode=Gt,t.modeExtensions=cs,t.extendMode=Bt,t.copyState=$t,t.startState=Ut,t.innerMode=Wt,t.commands=Gs,t.keyMap=qs,t.keyName=co,t.isModifierKey=so,t.lookupKey=ao,t.normalizeKeyMap=oo,t.StringStream=us,t.SharedTextMarker=Os,t.TextMarker=Ns,t.LineWidget=Ls,t.e_preventDefault=Pt,t.e_stopPropagation=Nt,t.e_stop=Rt,t.addClass=s,t.contains=o,t.rmClass=Ha,t.keyNames=js}(Uo),Uo.version="5.37.0",Uo}),define("chatroom",["jquery","form","cm/lib/codemirror","utils","config","modal","links","laconic"],function(t,e,n,i,r,o,a){!function(t){function s(e,i){var r=t.el.pre({class:"cm-s-prolog"});n.runMode(i,"prolog",r),e.attr("title",t.el.div(r).innerHTML),e.data("html",!0),e.data("placement","bottom"),e.data("trigger","hover"),e.tooltip()}function l(t,n,i){return e.widgets.glyphIconButton(t,{class:"btn-xs "+n,title:i})}function c(t){for(var e=[{regex:/[a-z][a-zA-Z0-9_]*\/[0-9]/g,
+func:function(t){return'<a class="builtin" href="/pldoc/man?predicate='+t+'">'+t+"</a>"}},{regex:/[a-zA-Z0-9_-]+\.(pl|swinb)\b/g,func:function(t){return'<a class="builtin" href="'+r.http.locations.web_storage+t+'">'+t+"</a>"}},{regex:/`(.)`/g,func:function(t,e){return"<code>"+e+"</code>"}},{regex:/`([\w\[\{\(][^`]*[\w\]\}\)])`/g,func:function(t,e){return"<code>"+e+"</code>"}},{delim:"\\*",a:"\\*\\b",z:"\\b\\*",tag:"b"},{delim:"__",a:"\\b__",z:"__\\b",tag:"b"},{delim:"_",a:"\\b_",z:"_\\b",tag:"i"}],n=0;n<e.length;n++){var i=e[n];i.regex?t=t.replace(i.regex,i.func):i.delim&&(t=t.replace(RegExp(i.a+"([^"+i.delim+"]+)"+i.z,"g"),function(t){return function(e,n){return"<"+t+">"+n+"</"+t+">"}}(i.tag)))}return t}var u=0,h={_init:function(n){return this.each(function(){var i,s,l,c,h=t(this),d={messages:[]},f="gitty:"+r.swish.hangout;d.docid=n.docid,h.data("chatroom",d),h.addClass("chatroom each-minute swish-event-receiver"),i=t.el.div({class:"btn-group dropup"},s=t.el.button({type:"button",class:"btn btn-primary btn-xs"},"Send"),t.el.button({type:"button",class:"btn btn-info btn-xs dropdown-toggle","data-toggle":"dropdown","aria-haspopup":!0,"aria-expanded":!1},t.el.span({class:"caret"})),ul=t.el.ul({class:"dropdown-menu pull-right"})),c=t.el.textarea({placeholder:"Type chat message here ..."}),h.append(t.el.div({class:"chat-conversation"},t.el.div({class:"chat-outer-wrapper"},t.el.div({class:"chat-inner-wrapper"},t.el.div({class:"chat-content-wrapper"},t.el.div({class:"chat-stretch"}),t.el.div({class:"chat-content"}))))),l=t.el.span({class:"glyphicon menu glyphicon-remove-circle"}),t.el.div({class:"chat-input"},t.el.table({class:"chat-input"},t.el.tr(t.el.td({class:"chat-text"},c),t.el.td({class:"chat-send"},i))))),t(s).on("click",function(){h.chatroom("send")}),e.widgets.populateMenu(t(i),h,{"Include my query":function(){var e=t(".prolog-query-editor").queryEditor("getQuery");""!=e.trim()?this.chatroom("send",{payload:[{type:"query",query:e}]}):o.alert("Your query editor is empty")}}),n.docid!=f&&e.widgets.populateMenu(t(i),h,{"Broadcast to hangout":function(){this.chatroom("send",{broadcast:"gitty:"+r.swish.hangout})}}),t(l).on("click",function(){h.tile("close")}),n.oneline?t(c).keypress(function(t){if(13==t.which)return h.chatroom("send"),t.preventDefault(),!1}):t(c).on("keyup",function(){var e,n=t(this);0!=n.scrollTop()&&(e=n.height())<500&&(e+=parseFloat(n.css("line-height")),n.animate({height:e},200,function(){h.chatroom("scrollToBottom")}))}),n.docid==f&&t(c).focus(function(){if(""==t(c).val()){var e=(new Date).getTime();e-u>3e5&&(u=e,o.help({file:"hangout.html",notagain:"hangout"}))}}),h.on("click",".chat-message button",function(e){var n,i=t(e.target).closest("button");return(n=i.data("commit"))?h.closest(".swish").swish("playFile",n):(n=i.data("diff"))&&h.chatroom("diff",n),e.preventDefault(),!1}),h.on("click",".chat-content a",a.followLink),h.on("pane.resize",function(){h.chatroom("scrollToBottom",!0)}),h.on("minute",function(){h.chatroom("update_time")}),h.on("activate-tab",function(){h.chatroom("read_until")}),t(c).height(parseFloat(t(c).css("line-height"))+5),h.chatroom("load_from_server")})},close:function(){return this.tile("close")},send:function(e){e=e||{};var n=this.data("chatroom"),a={type:"chat-message"},s=this.find("textarea");a.text=s.val().trim();var l=e.payload||[],c=!1,u=this.chatroom("storage").storage("getSelection"),h="gitty:"+r.swish.hangout;u&&l.push({type:"selection",selection:u});for(var d=0;d<l.length;d++)if("about"!=l[d].type){c=!0;break}e.broadcast||n.docid==h||0!=n.messages.length||(e.broadcast=h),""!=a.text||c?(a.uuid=i.generateUUID(),a.payload=l,a.docid=e.docid||n.docid,e.class&&(a.class=e.class),1==e.clear?this.chatroom("clear"):n.clear=a.uuid,t("#chat").chat("send",a),e.broadcast&&(a.payload.unshift({type:"about",docid:n.docid}),a.docid=e.broadcast,t("#chat").chat("send",a))):e.payload||o.alert("No message to send")},storage:function(){return this.closest(".tab-pane").find(".storage")},is_self:function(e){var n=e.user||{},i=r.swish.user||{},o=t("#chat").chat("self");return n.id&&n.id==o.id||n.avatar&&n.avatar==o.avatar||n.profile_id&&n.profile_id==i.profile_id},read_until:function(e){var n;void 0==e&&(n=this.data("chatroom"))&&n.messages.length>0&&(e=n.messages[n.messages.length-1]),e&&(t("#chat").chat("read_until",e.docid,e.time),t(".chat-bell").chatbell("read_until",e.docid,e.time))},render:function(e){var n=e.user||{};r.swish.user;if(void 0===e.is_self&&(e.is_self=this.chatroom("is_self",e)),elem=t(t.el.div({class:"chat-message"+(e.is_self?" self":""),"data-userid":n.wsid})),!e.is_self&&n.avatar&&elem.append(t.el.img({class:"avatar",src:n.avatar})),elem.append(t.el.span({class:"chat-sender"},e.is_self?"Me":n.name)),e.time){var o=new Date(1e3*e.time).toLocaleString();elem.append(t.el.span({class:"chat-time",title:o},"(",i.ago(e.time),") ")),elem.data("time",e.time)}if(e.payload)for(var a=0;a<e.payload.length;a++){var s=e.payload[a];d[s.type]?d[s.type].call(elem,s):console.log(s)}var l;if(e.html?l=e.html:e.text&&(l=t(t.el.span(e.text)).html(),l=c(l)),l){var u=t.el.span({class:"chat-message html"});t(u).html(l),elem.append(u)}return elem},add:function(t,e){var n=this.data("chatroom");if(t.docid==n.docid){var i;void 0==e&&(e=this.is(":visible")),void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),n.messages.push(t),i=this.chatroom("render",t),this.find(".chat-content").append(i),this.chatroom("scrollToBottom"),e&&this.chatroom("read_until",t)}return t.uuid&&t.uuid==n.clear&&this.chatroom("clear"),this},clear:function(){var t=this.find("textarea");t.val(""),t.height(parseFloat(t.css("line-height")+5))},load_from_server:function(e){var n=this.data("chatroom"),i=t(this);return t.get(r.http.locations.chat_messages,{docid:n.docid},function(t){if(0==t.length)e?i.chatroom("close"):n.docid!="gitty:"+r.swish.hangout&&o.help({file:"newchat.html",notagain:"newchat"});else for(var a=0;a<t.length;a++)i.chatroom("add",t[a],a==t.length-1)}).fail(function(t,e,n){o.ajaxError(t)}),this},update_time:function(){return this.find(".chat-message").each(function(){var e,n=t(this);(e=n.data("time"))&&n.find(".chat-time").text("("+i.ago(e)+") ")})},diff:function(n){function i(t){o.ajaxError(t)}t.ajax({url:r.http.locations.web_storage+n.from,data:{format:"raw"},success:function(o){t.ajax({url:r.http.locations.web_storage+n.to,data:{format:"raw"},success:function(i){function r(){var e=t.el.div();this.append(e),t(e).diff({base:o,head:i,baseName:n.name+" (before)",headName:n.name+" (after)"}),this.parents("div.modal-dialog").addClass("modal-wide")}e.showDialog({title:"Update differences",body:r})},error:i})},error:i})},docid:function(t,e){var n=this.data("chatroom");n.docid!=t&&(this.find(".chat-content").html(""),n.docid=t,this.chatroom("load_from_server",e))},rooms:function(e){var n=[];return this.each(function(){t(this).data("chatroom").docid==e&&n.push(this)}),t(n)},scrollToBottom:function(e){return this.each(function(){var n=t(this);scroll=n.find("div.chat-inner-wrapper"),wrap=scroll.find("div.chat-content-wrapper"),content=wrap.find("div.chat-content");var i=content[0].scrollHeight,r=wrap.height()-i-8;(r>0||!0!==e)&&(wrap.find("div.chat-stretch").height(r>0?r:0),scroll.scrollTop(i))}),this}},d={selection:function(n){var i=t().storage("getSelectionLabel",n.selection),r=t(t.el.button({class:"btn btn-xs btn-primary"},i+" ",e.widgets.glyphIcon("eye-open")));r.on("click",function(e){t(e.target).chatroom("storage").storage("restoreSelection",n.selection)}),this.append(" ",r," ")},query:function(n){var r=t(t.el.button({class:"btn btn-xs btn-primary"},"Query ",e.widgets.glyphIcon("download")));r.on("click",function(){var e=t(".prolog-query-editor");e.queryEditor("setQuery",n.query),i.flash(e.find(".CodeMirror"))}),s(r,n.query),this.append(" ",r," ")},update:function(e){var n,i,r;this.append(" ",t.el.span({class:"update"},n=l("play","btn-primary","Open old version"),i=l("zoom-in","btn-info","View changes"),r=l("play","btn-primary","Open new version"))," "),t(n).data("commit",e.previous),t(i).data("diff",{from:e.previous,to:e.commit,name:e.name}),t(r).data("commit",e.commit)},about:function(e){var n=e.docid.replace("gitty:","");this.append(" ",t.el.a({href:r.http.locations.web_storage+n,class:"store btn btn-primary btn-xs"},n)," ")}};t.fn.chatroom=function(e){return h[e]?h[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.chatroom"):h._init.apply(this,arguments)}}(jQuery)}),define("chatbell",["jquery","form","modal","config","preferences","laconic","chatroom"],function(t,e,n,i,r){!function(t){var o={_init:function(n){return n=n||{},this.each(function(){var i=t(this),r=t.extend({},n);r.docid=n.docid||i.data("document"),i.data("chatbell",r),i.addClass("chat-bell"),i.attr("title","Messages available"),i.append(e.widgets.glyphIcon("bell"),t.el.span({class:"chat-bell-count"},"-")),i.chatbell("update")})},chats:function(t){function e(){i.text("-"),r.removeClass("chat-available chat-alert"),r.attr("title",n.empty_title||"No messages available")}var n=this.data("chatbell"),i=this.find(".chat-bell-count"),r=this;if(void 0==t)delete n.docid,delete n.count,delete n.total,e();else{var o=void 0==t.count?t.total:t.count;t.docid&&(n.docid=t.docid),t.count&&(n.count=t.count),t.total&&(n.total=t.total),t.total>0?(this.addClass("chat-available"),o>0?(i.text(o),this.addClass("chat-alert"),this.attr("title",o+" new messages")):(i.text(t.total),this.removeClass("chat-alert"),this.attr("title",t.total+" old messages"))):e()}return this},"chats++":function(t){var e=this.data("chatbell");return void 0!=e.total?e.total++:e.total=1,void 0!=e.count&&e.count++,void 0!=t&&(e.docid=t),e.total&&this.chatbell("chats",{total:e.total,count:e.count}),this},update:function(e){var n=this.data("chatbell");if(e=e||{},void 0!=e.total&&void 0!=e.count)this.chatbell("chats",e);else{var o=e.docid||n.docid,a=r.getDocVal(o,"chatBar",0);if(o&&(a||void 0==e.total)){var s=t(this);t.get(i.http.locations.chat_status,{docid:o,after:a},function(t){s.chatbell("chats",t)})}else void 0!=e.total&&this.chatbell("chats",e)}return this},read_until:function(e,n){return this.each(function(){var n=t(this),i=n.data("chatbell");i.docid==e&&i.total&&n.chatbell("chats",{total:i.total,count:0})})},"chat-message":function(t){if(void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),this.chatbell("chats++"),!t.is_self){var e=this.chatroom("render",t),i={dom:e};n.notify(this,i)}}};t.fn.chatbell=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.chatbell"):o._init.apply(this,arguments)}}(jQuery)}),define("sourcelist",["jquery","config","form","modal","laconic"],function(t,e,n,i){!function(t){function r(t,e){if(void 0!=e){e.offset=e.offset||0,e.limit=e.limit||10;for(var n=t.length-1;n>=0;n--){var i=t[n];if(function(t){var n=t.query;if(e.q==n.q&&e.offset>=n.offset&&(e.offset+e.limit<=n.offset+t.matches.length||n.offset+t.matches.length==t.total))return n}(i))return i}}}function o(t,e){var n=e.query;n.offset=n.offset||0,n.limit=n.limit||10;for(var i=t.length-1;i>=0;i--){var r=t[i],o=r.query;if(o.q==n.q&&o.offset+r.matches.length==n.offset){for(var i=0;i<e.matches.length;i++)r.matches.push(e.matches[i]);return}}t.push(e)}var a,s="sourcelist",l={q:'user:"me"'},c=[],u=[],h=0,d={_init:function(e){return this.each(function(){var e=t(this),n={};e.data(s,n),e[s]("fill",void 0,l),e[s]("check_cache"),e[s]("update",l),e.on("login",function(){e[s]("check_cache")&&e[s]("update",l)})})},check_cache:function(){var e=t("#login").login("get_profile",["display_name","avatar"]);return a&&a.display_name==e.display_name&&a.avatar==e.avatar?(a||(a=e),!1):(c=[],a=e,!0)},update:function(n){var l,d=this;this[s]("check_cache"),(l=r(c,n))?t.ajax({url:e.http.locations.source_modified,dataType:"json",success:function(t){t.modified<l.modified+10?d.sourcelist("fill",l,n):(c=[],d[s]("update",n))},error:function(t){i.ajaxError(t)}}):(n=n||{},t.extend(n,a),n.q=n.q||"",n.offset=n.offset||0,n.limit=n.limit||10,n.qid=h++,u.push(n),d[s]("busy",!0),t.ajax({url:e.http.locations.source_list,data:n,dataType:"json",success:function(t){t.query=n,u.pop(),0==u.length&&d[s]("busy",!1),o(c,t),d.sourcelist("fill",t,n)},error:function(t){u.pop(),i.ajaxError(t)}}))},page:function(e){var n=this.data(s);if(n&&n.page){var i=t.extend({},n.page.query);switch(void 0==i.offset&&(i.offset=0),e){case"first":i.offset=0;break;case"prev":i.offset-=n.page.size;break;case"next":i.offset+=n.page.size;break;case"last":i.offset=function(t,e){return Math.floor((t+(e-1))/e)*e}(n.page.total,n.page.size)-n.page.size;break;default:return}i.offset=Math.max(0,i.offset),this[s]("update",i)}},fill:function(e,i){function r(e){return t.el.th(e)}var o,a=this.data(s);if(!a)return this;e&&(l=i,a.page={query:i,offset:i.offset,size:i.limit,total:e.total}),o=this.find("tbody"),0==o.length?(this.append(t.el.div({class:"search-form input-group"}),t.el.div({class:"search-results"},table=t.el.table({class:"table table-striped table-hover table-condensed"},t.el.thead(t.el.tr(r("Type"),r("Name"),r("Tags"),r("User"),r("Modified"))),o=t.el.tbody()),t.el.div({class:"search-no-results"}),t.el.div({class:"loading search"})),t.el.div({class:"search-footer"})),this[s]("search_form"),o=t(o),o.on("click","tr",function(e){var n=t(e.target).closest("tr");t("body").swish("playFile",{file:n.attr("data-name")})})):t(o).html("");var c=this.find("input.search");if(c.is(":focus")||(c.val(e?e.query.q:i?i.q:""),c.trigger("propertychange",!1)),e){var u=i.offset-e.query.offset,h=Math.min(u+i.limit,e.matches.length);for(u<h?t(table).show():t(table).hide();u<h;u++){var d=e.matches[u],f=d.name.split(".").pop(),p=d.name.slice(0,-(f.length+1));o.append(t.el.tr({"data-name":d.name},t.el.td(n.widgets.typeIcon(f)),t.el.td(p),t.el.td((d.tags||[]).join(" ")),t.el.td(d.author),t.el.td(function(t){var e=new Date(1e3*t),n=e.toISOString();return n.slice(0,10)+" "+n.slice(11,19)}(d.time))))}this[s]("search_footer",e,i)}},search_footer:function(e,r){function o(t,e,i){return c.action=t,c.class="btn-primary "+e,n.widgets.glyphIconButton(i,c)}var a=this.find("div.search-footer"),l=this.find("div.search-no-results"),c={};0==a.find(".f-total").length&&(a.append(o("first","backward","fast-backward"),o("prev","backward","step-backward"),t.el.button({class:"btn btn-default"},t.el.span({class:"f-from"}),t.el.label("to"),t.el.span({class:"f-to"}),t.el.label("from"),t.el.span({class:"f-total"})),o("next","forward","step-forward"),o("last","forward","fast-forward")),a.on("click","button",function(e){var n=t(e.target).closest("button"),i=n.data("action");i&&n.closest("div.sourcelist")[s]("page",i)}));var u=Math.min(r.offset+r.limit,e.total);if(0==e.total){if(0==l.find("div").length){var h;l.append(t.el.div(t.el.span({class:"no-search-results-warning"},n.widgets.glyphIcon("alert")," No matching files"),t.el.br(),"If you are a new user you may",t.el.ul(t.el.li("Use the Examples menu from the navigation bar"),t.el.li("Use the Program or Notebook button above")),t.el.div(h=t.el.a({href:"#"},"help on search")))),t(h).on("click",function(){console.log("help"),i.help({file:"sourcelist.html"})})}l.show(),a.hide()}else l.hide(),r.offset>0||u<e.total?(a.show(),0==r.offset?a.find(".backward").attr("disabled","disabled"):a.find(".backward").removeAttr("disabled"),u>=e.total?a.find(".forward").attr("disabled","disabled"):a.find(".forward").removeAttr("disabled"),a.find(".f-from").text(""+r.offset),a.find(".f-to").text(""+u),a.find(".f-total").text(""+e.total)):a.hide()},search_form:function(){function e(e,i){for(var r,o=t.el.div({class:"btn-group"},t.el.button({type:"button",class:"btn btn-default dropdown-toggle","data-toggle":"dropdown","aria-haspopup":!0,"aria-expanded":!1},e," ",t.el.span({class:"caret"})),r=t.el.ul({class:"dropdown-menu"})),a=0;a<i.length;a++)t(r).append(t.el.li(function(e){var i;return"string"==typeof e?t.el.a({"data-tag":e},e):(i=e.i?t.el.a({"data-tag":e.t,"data-value":e.v},n.widgets.typeIcon(e.i)," "+e.l):t.el.a({"data-tag":e.t,"data-value":e.v},e.l),t(i).data("quote",void 0==e.q?'"':e.q),i)}(i[a])));return o}function i(t){l.tmo&&(clearTimeout(l.tmo),l.tmo=void 0),1==t&&(t=1e3),t&&(l.tmo=setTimeout(o,t))}function o(t){t&&t.preventDefault(),i();var e=u.find("input").val();return u[s]("update",{q:e}),!1}var a,l=this.data(s),u=this,h=this.find("div.search-form");h.append(t.el.div({class:"form-group has-feedback has-clear"},t.el.input({type:"text",class:"form-control search",placeholder:"Find files"}),t.el.span({class:"form-control-clear glyphicon glyphicon-remove form-control-feedback hidden"})),t.el.div({class:"input-group-btn"},e("Filter",[{t:"user",l:"My files",v:"me",q:'"'},{t:"user",l:"By user",v:"",q:'"'},{t:"user",l:"By user (regex)",v:"",q:"/"},{t:"tag",l:"By tag",v:"",q:'"'},{t:"tag",l:"By tag (regex)",v:"",q:"/"},{t:"name",l:"By name",v:"",q:'"'},{t:"name",l:"By name (regex)",v:"",q:"/"}]),e("Type",[{t:"type",l:"Program",i:"pl",v:"pl",q:""},{t:"type",l:"Notebook",i:"swinb",v:"swinb",q:""},{t:"type",l:"Permalink",i:"lnk",v:"lnk",q:""}]),a=t.el.button({class:"btn btn-default",type:"submit"},t.el.i({class:"glyphicon glyphicon-search"})))),n.dyn_clear(h,o),h.on("click","a",function(e){var n=t(e.target).closest("a");!function(t,e,n){var i=h.find("input"),r=i.val(),a=t+":"+n+(e||"")+n;r=""==r.trim()?a:e&&RegExp("\\b"+t+":").test(r)?r.replace(RegExp("\\b"+t+':(\\S*|\\s*"[^"]*")'),a):r.trim()+" "+a,i.val(r).trigger("propertychange"),(e||"tag"==t)&&o()}(n.data("tag"),n.data("value"),n.data("quote"))}),t(a).on("click",function(t){return o(t)});var d=u.find("input");d.keydown(function(t){if(13==t.which)return o(t)}).on("input propertychange",function(t,e){0!=e&&i(r(c,d.val())?200:!0)})},busy:function(t){var e=this.find("div.loading");t?e.show():e.hide()}};t.fn.sourcelist=function(e){return d[e]?d[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+s):d._init.apply(this,arguments)}}(jQuery)}),define("tabbed",["jquery","form","config","preferences","modal","laconic","search","chatbell","sourcelist"],function(t,e,n,i,r){var o={tabTypes:{},type:function(t){var e=t.split(".").pop();for(var n in o.tabTypes)if(o.tabTypes.hasOwnProperty(n)&&o.tabTypes[n].dataType==e)return o.tabTypes[n]}};return o.tabTypes.permalink={dataType:"lnk",typeName:"program",label:"Program",create:function(e,n){t(e).addClass("prolog-editor").prologEditor(t.extend({save:!0},n)).prologEditor("makeCurrent")}},function(t){function a(e,n,i){t(e).wrap('<div role="tabpanel" class="tab-pane" id="'+n+'"></div>');var r=t(e).parent();return i&&r.addClass("active"),r}function s(e,n){var i=t.el.span({class:"glyphicon glyphicon-"+e});return n&&t(i).addClass(n),i}function l(){return"tabbed-tab-"+u++}function c(t){if(n.swish.profiles)for(var e=0;e<n.swish.profiles.length;e++)if(n.swish.profiles[e].value==t)return n.swish.profiles[e]}var u=0,h={_init:function(e){return e=e||{},this.each(function(){var n=t(this),i={};i.newTab=e.newTab,i.tabTypes=e.tabTypes||o.tabTypes,n.data("tabbed",i),n.addClass("tabbed unloadable"),n.tabbed("makeTabbed"),n.on("trace-location",function(t,e){n.tabbed("showTracePort",e)}),n.on("data-is-clean",function(e,i){var r=t(e.target).closest(".tab-pane"),o=n.tabbed("navTab",r.attr("id"));o&&(i?o.removeClass("data-dirty"):o.addClass("data-dirty"))}),n.on("unload",function(t){if(t.target==n[0]&&n.closest(".swish").swish("preserve_state")){var e=n.tabbed("getState");localStorage.setItem("tabs",JSON.stringify(e))}}),n.on("restore",function(t){var e;if(t.target==n[0]){try{var i=localStorage.getItem("tabs"),e=JSON.parse(i)}catch(t){}"object"==typeof e&&n.tabbed("setState",e)}}),n.on("preference",function(t,e){"preserve-state"==e.name&&0==e.value&&localStorage.removeItem("tabs")})})},makeTabbed:function(){var e=this.children(),n=t.el.ul({class:"nav nav-tabs",role:"tablist"}),i=t.el.div({class:"tab-content"});this.prepend(i),this.prepend(n),t(n).on("click","span.xclose",function(e){var n=t(e.target).parent().attr("data-id");t(e.target).parents(".tabbed").first().tabbed("removeTab",n),e.preventDefault()}),t(n).on("click","a",function(e){t(e.target).closest("a").tab("show"),e.preventDefault()});for(var r=0;r<e.length;r++){var o=t(e[r]),c=l(),u=o.attr("data-label")||"Unknown",h="disabled"!=o.attr("data-close"),d=r==e.length-1,f=this.tabbed("tabLabel",c,u,h);d&&t(f).addClass("active"),t(n).append(f),t(i).append(a(t(e[r]),c,d))}var p=t.el.a({class:"tab-new compact",title:"Open a new tab"},s("plus"));t(n).append(t.el.li({class:"tab-new",role:"presentation"},p)),t(p).on("click",function(e){return t(e.target).parents(".tabbed").first().tabbed("newTab"),e.preventDefault(),!1}),t(n).on("shown.bs.tab","a",function(e){var n=t(e.target).data("id");t("#"+n+" .swish-event-receiver").trigger("activate-tab"),t("#"+n+" .storage").storage("activate")}),0==this.tabbed("navContent").children().length&&this.tabbed("newTab")},newTab:function(e,n){var i=this.data("tabbed");if(void 0==e)if(i.newTab)e=i.newTab();else{var r;e=this.tabbed("tabSelect"),t(e).append(this.tabbed("profileForm"),t.el.hr(),r=t.el.div({class:"sourcelist"})),t(r).sourcelist()}return void 0==n&&(n=!0),this.tabbed("addTab",e,{active:n,close:!0})},getState:function(){var t=this.tabbed("get_ordered_storage").storage("getState");return t.pathname=window.location.pathname,t.time=(new Date).getTime(),t},setState:function(t){for(var e=0;e<t.tabs.length;e++){var n=t.tabs[e];this.tabbed("restoreTab",n)}},restoreTab:function(e){function i(t,e){e.data&&t.find(".storage").storage("setValue",{data:e.data,role:"source"}),e.chatroom&&t.find(".storage").storage("chat",e.chatroom)}var o,a=this;e.query=null,e.noHistory=!0;var s=this.find(".storage").storage("match",e);if(s?(o=s.closest(".tab-pane"),a.tabbed("move_right",o)):o=void 0,s)i(o,e);else if(s);else{var l,c=this.find("div.tabbed-select"),u='<div class="restore-tab">Restoring '+(e.file||e.url)+" ...</div>";if(c.length>0?(l=c.first().closest(".tab-pane"),l.html(u)):l=a.tabbed("newTab",t(u),Boolean(e.active)),"gitty"==e.st_type){var h=n.http.locations.web_storage+e.file;t.ajax({url:h,type:"GET",data:{format:"json"},success:function(t){t.url=h,t.st_type="gitty",t.noHistory=!0,a.tabbed("setSource",l,t)||(console.log("Failed to restore",e.file),a.tabbed("removeTab",o.attr("id"))),i(l,e),l.hasClass("active")&&l.find(".storage").storage("activate")},error:function(t){r.ajaxError(t)}})}else e.url?t.ajax({url:e.url,type:"GET",data:{format:"json"},success:function(t){var n;if("string"==typeof t)n={data:t},n.st_type="external";else{if("object"!=typeof t||"string"!=typeof t.data)return void alert("Invalid data");n=t,n.st_type="filesys"}n.noHistory=!0,n.url=e.url,a.tabbed("setSource",l,n)||(console.log("Failed to restore",e.url),a.tabbed("removeTab",l.attr("id"))),i(l,e),l.hasClass("active")&&l.find(".storage").storage("activate")},error:function(t){r.ajaxError(t)}}):console.log("Cannot restore ",e)}},tabFromSource:function(e){function n(){var n=r.tabbed("newTab",t("<span></span>"));r.tabbed("setSource",n,e)||r.tabbed("removeTab",n.attr("id"))}var r=this,o=this.find("div.tabbed-select");if("string"==typeof e&&(e={data:e}),o.length>0){var a=o.first().closest(".tab-pane");this.tabbed("show",a.attr("id")),this.tabbed("setSource",a,e)}else if(e.newTab||i.getVal("new-tab"))n();else{var a;this.find(".storage").each(function(n,i){if(t(i).storage("setSource",e))return a=t(i).closest(".tab-pane"),!1}),a?this.tabbed("show",a.attr("id")):n()}return this},setSource:function(e,n){if("object"==typeof n&&(n.meta&&n.meta.name||n.url)){var i=n.meta&&n.meta.name?n.meta.name:n.url,r=o.type(i),a=t.el.div();return e.html(""),e.tabbed("title",r.label,r.dataType),e.append(a),r.create(a),t(a).storage("setSource",n),!0}return!1},showTracePort:function(e){if(e&&e.source&&e.source.file){var n,i,r,o=e.source.file;if(n=function(){if(o.startsWith("pengine://"))return o.split("/")[2]}())r=this.find(".prolog-editor").filter(function(e,i){return t(i).prologEditor("pengine",{has:n})});else if((i=function(){if(o.startsWith("swish://"))return o.slice("swish://".length)}())&&!(r=this.find(".storage").storage("match",{file:i})))return this.closest(".swish").swish("playFile",{file:i,newTab:!0,noHistory:!0,prompt:e}),this;r&&r.prologEditor("showTracePort",e)}return this},addTab:function(e,n){var i=this.tabbed("navTabs"),r=l(),o=a(e,r,n.close);this.tabbed("navContent").append(o);var s=this.tabbed("tabLabel",r,"New tab",close,"select"),c=i.find("a.tab-new");return 1==c.length?t(s).insertBefore(c.first().parent()):i.append(s),n.active&&t(s).find("a").first().tab("show"),o},removeTab:function(e){var n,i=this.tabbed("navTabs").find("a[data-id='"+e+"']").parent(),r=t("#"+e);0!=r.find(".storage").storage("unload","closetab")&&(r.is(":visible")&&(n=i.prev()||i.next()),i.remove(),r.find(".prolog-runner").prologRunner("close"),r.find(".storage").storage("close"),r.remove(),n&&n.length>0?n.find("a").first().tab("show"):0==this.tabbed("navContent").children().length&&this.tabbed("newTab"),t(".storage").storage("chat_status",!0))},show:function(e){var n=this.tabbed("navTab",e);n&&n.tab("show"),t(".storage").storage("chat_status",!0)},move_right:function(t){var e,n=this.find(">ul");e="string"==typeof t?t:t.attr("id"),n.find("a[data-id="+e+"]").closest("li").insertBefore(n.children().last())},tabLabel:function(e,n,i,r){var o,a;i&&(o=s("remove","xclose"),t(o).attr("title","Close tab")),r=r||"pl";var l=t.el.a({class:"compact",href:"#"+e,"data-id":e},t.el.span({class:"tab-icon type-icon "+r}),t.el.span({class:"tab-dirty",title:"Tab is modified. See File/Save and Edit/View changes"}),a=t.el.a({class:"tab-chat"}),t.el.span({class:"tab-title"},n),o),c=t.el.li({role:"presentation"},l);return t(a).chatbell().on("click",function(e){var n=t(e.target).closest("a.compact").data("id");return t("#"+n).find(".storage").storage("chat"),!1}),c},anchor:function(){var t=this.closest(".tab-pane");if(0!=t.length){var e=t.closest(".tabbed"),n=t.attr("id");return e.tabbed("navTabs").find("a[data-id="+n+"]")}},get_ordered_storage:function(){var e=this,n=[];return this.find(">ul>li").each(function(){var i=t(this).find(">a").data("id");e.find(">div.tab-content>div[id="+i+"] .storage").each(function(){n.push(this)})}),t(n)},title:function(t,e){var n=this.tabbed("anchor");if(n&&(n.find(".tab-title").text(t),e)){var i=n.find(".tab-icon");i.removeClass(),i.addClass("tab-icon type-icon "+e)}return this},chats:function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("update",t),this},"chats++":function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("chats++",t),this},tabSelect:function(){var e=this.data("tabbed"),n=t.el.div({class:"tabbed-select"},t.el.div({class:"tabbed-create"},t.el.label({class:"tabbed-left"},"Create a "),g=t.el.div({class:"btn-group",role:"group"}),t.el.label({class:"tabbed-right"},"here"))),a=[];for(var s in e.tabTypes)e.tabTypes.hasOwnProperty(s)&&e.tabTypes[s].order&&a.push(s);a.sort(function(t,n){return e.tabTypes[t].order-e.tabTypes[n].order});for(var l=0;l<a.length;l++){var c=e.tabTypes[a[l]];t(g).append(t.el.button({type:"button",class:"btn btn-primary","data-type":c.typeName,"data-ext":c.dataType},c.label))}return t(g).on("click",".btn",function(e){var n=t(e.target).data("type"),r=t(e.target).closest(".tab-pane"),a=t.el.div(),s=t.extend({},o.tabTypes[n]),l=r.find("label.active > input[name=profile]").val();l&&(s.profile=l,s.value=r.tabbed("profileValue",l,o.tabTypes[n].dataType),void 0!=s.value&&i.setVal("default-profile",l)),r.html(""),r.tabbed("title",s.label,s.dataType),r.append(a),o.tabTypes[n].create(a,s)}),t(g).addClass("swish-event-receiver"),t(g).on("download save fileInfo print",function(e){if(t(e.target).closest(".tab-pane").is(":visible")){var n={download:"you wish to download",save:"you wish to save",print:"you wish to print",fileInfo:"for which you want details"};r.alert("Please activate the tab "+n[e.type]),e.stopPropagation()}}),t(g).on("profile-selected",function(e,n){t(e.target).find("button").each(function(){t(this).prop("disabled",n.type.indexOf(t(this).data("ext"))<0)})}),n},searchForm:function(){var n=t.el.form({class:"search-sources"},t.el.label({class:"control-label"},"Open source file containing"),t.el.div({class:"input-group"},t.el.input({type:"text",class:"form-control search",placeholder:"Search sources","data-search-in":"sources store_content"}),t.el.div({class:"input-group-btn"},t.el.button({class:"btn btn-default",type:"submit"},t.el.i({class:"glyphicon glyphicon-search"})))),t.el.div({class:"input-group"},e.fields.radio("smatch",[{label:"Start of line",value:"sol"},{label:"Start of word",value:"sow",active:!0},{label:"Anywhere",value:"anywhere"}])));return t(n).find("input.search").search(),n},sourceList:function(){},profileForm:function(){if(n.swish.profiles&&n.swish.profiles.length>0){for(var r,o=0;o<n.swish.profiles.length;o++)delete n.swish.profiles[o].active;if(r=i.getVal("default-profile"))for(var o=0;o<n.swish.profiles.length;o++)n.swish.profiles[o].value==r&&(n.swish.profiles[o].active=!0);else n.swish.profiles[0].active=!0;var a=t.el.div({class:"tabbed-profile"},t.el.label({class:"tabbed-left"},"based on"),t.el.div({class:"input-group select-profile"},e.fields.radio("profile",n.swish.profiles)),t.el.label({class:"tabbed-right"},"profile"));return t(a).on("click",function(e){var n=t(e.target).find("input").val(),i=c(n);t(e.target).closest(".tab-pane").find(".tabbed-create .btn-group").trigger("profile-selected",i)}),a}},profileValue:function(e,i){var o=n.http.locations.swish+"profile/"+e+"."+i;return t.ajax({url:o,type:"GET",data:{format:"raw"},async:!1,error:function(t){r.ajaxError(t)}}).responseText},navTabs:function(){return this.find("ul.nav-tabs").first()},navTab:function(t){var e=this.find("ul.nav-tabs").first().find("a[data-id='"+t+"']");if(e.length>0)return e},navContent:function(){return this.find("div.tab-content").first()}};t.fn.tabbed=function(e){return h[e]?h[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.tabbed"):h._init.apply(this,arguments)}}(jQuery),o}),define("prolog",["jquery","config","form","preferences"],function(t,e,n,i){var r={downloadCSV:function(o,a,s){function l(e,n){return t.el.input({type:"hidden",name:e,value:n})}function c(){var s=t.el.form({class:"form-horizontal"},n.fields.projection(f.join(",")),n.fields.csvFormat(e.swish.csv_formats,i.getVal("csvFormat")),n.fields.limit("10 000",!1),n.fields.filename(p,2),n.fields.buttons({label:"Download CSV",action:function(t,n){return t.preventDefault(),e.swish.csv_formats.length>1&&i.setVal("csvFormat",n.format),r.downloadCSV(o,a,n),!1}}));this.append(s)}if(s=s||{},s.disposition=s.disposition||s.filename||"swish-results.csv",s.projection){var u,h=s.format||"prolog";if(s.distinct&&(o="distinct(["+s.projection+"],("+o+"))"),s.limit){var d=parseInt(s.limit.replace(/[ _]/g,""));if("number"!=typeof d)return alert("Not an integer: ",s.limit),!1;o="limit("+d+",("+o+"))"}u=t.el.form({method:"POST",action:e.http.locations.pengines+"/create",target:"_blank"},l("format","csv"),l("chunk","10"),l("solutions","all"),l("disposition",s.disposition),l("application","swish"),l("ask",o),l("src_text",a),l("template",h+"("+s.projection+")")),console.log(u),t("body").append(u),u.submit(),t(u).remove()}else{var f=t().prologEditor("variables",o),p=s.disposition;p.indexOf(".")<0&&(p+=".csv"),n.showDialog({title:"Download query results as CSV",body:c})}return this},trimFullStop:function(t){return t.replace(/\.\s*$/m,"")},options:{application:"swish",chunk:5}};return t.swish=function(t){for(var e in r.options)r.options.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=r.options[e]);return new Pengine(t)},r}),define("answer",["jquery","laconic"],function(){!function($){function answerHasOutput(t){
+return t.variables.length>0||t.residuals}function renderSubstitutions(t,e){e.push(', <span class="pl-comment">% where</span><br/>');for(var n=0;n<t.length;n++)e.push('<span class="where-binding">',"<span class='pl-var'>",t[n].var+"</span> = ",t[n].value,"</span>"),n<t.length-1&&e.push(",<br/>")}function renderAnswer(t){for(var e=[],n=t.variables,i=0;i<n.length;i++){for(var r=n[i].variables,o=0;o<r.length-1;o++)e.push("<span class='pl-ovar'>",r[o],"</span> = ","<span class='pl-var'>",r[o+1],"</span>, ");e.push("<span class='pl-ovar'>",r[r.length-1],"</span> = ",n[i].value),n[i].substitutions&&renderSubstitutions(n[i].substitutions,e),(i<n.length-1||t.residuals)&&e.push(",<br/>")}var a;if(a=t.residuals)for(var i=0;i<a.length;i++)e.push(a[i]),i<a.length-1&&e.push(",<br/>");return e.join("")}function renderTabledAnswer(t,e){for(var n=[],i=0;i<t.projection.length;i++){var r=t.projection[i],o=function(e){for(var n=t.variables,i=0;i<n.length;i++)for(var r=n[i].variables,o=0;o<r.length;o++)if(r[o]==e)return n[i];return null}(r);n.push("<td>"),o?(n.push(o.value),o.substitutions&&renderSubstitutions(o.substitutions,n)):n.push("<span class='pl-var'>",r,"</span>"),n.push("</td>")}var a;if(a=t.residuals){!function(){0==e.find("tr.projection th.residuals").length&&($("<th class='residuals'>Residual goals</th>").insertBefore(e.find("tr.projection th.answer-nth")),$("<td></td>").insertBefore(e.find("tr td.answer-nth")))}(),n.push("<td>");for(var i=0;i<a.length;i++)n.push(a[i]),i<a.length-1&&n.push(",<br/>");n.push("</td>")}return t.nth&&n.push("<td class='answer-nth'>",t.nth,"</td>"),n.join("")}function evalScripts(elem){elem.find("script").each(function(){var type=this.getAttribute("type")||"text/javascript";"text/javascript"==type&&($.ajaxScript=$(this),eval(this.textContent))}),$.ajaxScript&&delete $.ajaxScript}var methods={_init:function(t){return this.each(function(){var e=$(this);if(answerHasOutput(t))if(e.is("table")){var n=$.el.tr();e.append(n),n.innerHTML=renderTabledAnswer(t,e),evalScripts($(n)),$(n).find(".render-multi").renderMulti()}else e[0].innerHTML=renderAnswer(t),evalScripts(e),e.find(".render-multi").renderMulti();else e.append($.el.span({class:"prolog-true"},"true"))})}};$.fn.prologAnswer=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery.prologAnswer"):methods._init.apply(this,arguments)}}(jQuery),function(t){function e(){var e=t("#render-select");return e[0]||(e=t(t.el.form({id:"render-select",style:"display:none"})),e.on("click","a",function(n){var i=t(n.target).closest("a"),r=i.data("nr");return e.data("target").renderMulti(i.data("action"),r),!1}),e.on("click",function(){var n=t("input[name=render]:checked",t(this)).val();e.data("target").renderMulti("select",parseInt(n))}),e.hover(function(){s=!0,i()},function(){r()}),t("body").append(e)),e}function n(){if(!s){var t=e(),n=t.data("target");n&&(n.removeClass("render-selecting"),t.data("target",null)),t.hide(400)}}function i(){a=setTimeout(function(){n()},400)}function r(){s=!1,i()}function o(e){return e.originalEvent.dataTransfer.setData("Text",t(e.target).renderMulti("prologText")),!0}var a=0,s=!1,l={_init:function(e){return this.each(function(){var e=t(this),n={current:0},i=[],r=t.el.div({class:"render-multi-active"}),a=0;e.children().each(function(){var n=t(this).css("display");i.push(n),0==a++?(e.css("display",n),t(this).attr("draggable",!1)):t(this).hide()}),n.display=i,e.append(r),t(r).hover(function(t){e.renderMulti("showSelect",t)},function(t){e.renderMulti("hideSelect",t)}),e.attr("draggable",!0).bind("dragstart",o),e.data("renderMulti",n)})},selectMenu:function(){for(var e=this.data("renderMulti"),n=["<label>View as</label><br>"],i=this.children(),r=0,r=0;r<e.display.length;r++){var o=t(i[r]),a=o.attr("data-render");a||(a=0==r?"Default rendered":"Alt rendered ["+(r+1)+"]"),n.push("<div class='render-item'>",function(t,e){var n,i;return"Prolog term"==e?(n="Copy",i="copy"):(n="Download",i="download"),btn='<a href="#" class="btn btn-style btn-sm" data-nr="'+t+'" data-action="'+i+'" title="'+n+'"><span class="glyphicon glyphicon-'+i+'"></span></a>',btn}(r,a),"<input type='radio' name='render' value='",r,"'"),r==e.current&&n.push(" checked"),n.push("> ",a,"</div>")}return n.push("</form"),n.join("")},showSelect:function(t){var n,i=this,r=e(),o=this.offset();s=!0,a&&(clearTimeout(a),a=0),(n=r.data("target"))&&n.removeClass("render-selecting"),r.data("target",i),r.html(this.renderMulti("selectMenu")),r.css({top:o.top+5+"px",left:o.left+5+"px"}).show(400),this.addClass("render-selecting")},hideSelect:function(t){r()},select:function(e){var i=this.data("renderMulti");if(i.current!=e){var r=this.children(),o=i.display[e];t(r[i.current]).hide(400),t(r[e]).show(400,function(){t(this).css("display",o)}),this.css("display",o),t(r[e]).is("span.render-as-prolog")?this.attr("draggable",!1):this.attr("draggable",!0),i.current=e}n()},copy:function(t){var e=this.children(),n=this.data("renderMulti"),i=n.current;this.renderMulti("select",t),function(t){var e=document.createRange();e.selectNodeContents(t);var n=window.getSelection();n.removeAllRanges(),n.addRange(e)}(e[t]);try{document.execCommand("copy")}catch(t){alert("Sorry, cannot copy text with this browser")}return this.renderMulti("select",i),this},download:function(e){var n,i=this.children(),r=t(i[e]),o="html";if(r.hasClass("export-dom")){var a={};r=r.trigger("export-dom",a),a.element?(n=a.element.outerHTML,o=a.extension||"html",type=a.contentType||"text/html"):alert("Failed to export rendered result")}else if(1==r.find("svg").length){var s=r.find("svg");s.attr("xmlns")||s.attr("xmlns","http://www.w3.org/2000/svg"),n=s[0].outerHTML,o="svg",type="image/svg+xml"}else n=r.html(),type="text/html";(function(){return void 0!=t("<a>")[0].download})()||(type="application/octet-stream");var l="data:"+type+";charset=UTF-8,"+encodeURIComponent(n),c=t.el.a({href:l,download:"swish-rendered."+o});return this.append(c),c.click(),t(c).remove(),this},prologText:function(){return this.find("span.render-as-prolog").text()}};t.fn.renderMulti=function(e){return l[e]?l[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.renderMulti"):l._init.apply(this,arguments)}}(jQuery)}),function(t,e,n){!function(t){"function"==typeof define&&define.amd?define("sparkline",["jquery"],t):jQuery&&!jQuery.fn.sparkline&&t(jQuery)}(function(n){"use strict";var i,r,o,a,s,l,c,u,h,d,f,p,g,m,v,y,x,b,w,_,S,C,T,k,A,M,E,L,P,N,O,R={},D=0;i=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:void 0,normalRangeMax:void 0,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:void 0,chartRangeMax:void 0,chartRangeMinX:void 0,chartRangeMaxX:void 0,tooltipFormat:new o('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:void 0,nullColor:void 0,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:void 0,chartRangeMin:void 0,chartRangeClip:!1,colorMap:void 0,tooltipFormat:new o('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new o('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:void 0,thresholdValue:0,chartRangeMax:void 0,chartRangeMin:void 0,chartRangeClip:!1,tooltipFormat:new o("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:void 0,tooltipFormat:new o("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new o('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:void 0,targetColor:"#4a2",chartRangeMax:void 0,chartRangeMin:void 0,tooltipFormat:new o("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},A='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',r=function(){var t,e;return t=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(t.prototype=n.extend(new arguments[0],arguments[arguments.length-1]),t._super=arguments[0].prototype):t.prototype=arguments[arguments.length-1],arguments.length>2&&(e=Array.prototype.slice.call(arguments,1,-1),e.unshift(t.prototype),n.extend.apply(n,e))):t.prototype=arguments[0],t.prototype.cls=t,t},n.SPFormatClass=o=r({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(t,e){this.format=t,this.fclass=e},render:function(t,e,n){var i,r,o,a,s,l=this,c=t;return this.format.replace(this.fre,function(){var t;return r=arguments[1],o=arguments[3],i=l.precre.exec(r),i?(s=i[2],r=i[1]):s=!1,void 0===(a=c[r])?"":o&&e&&e[o]?(t=e[o],t.get?e[o].get(a)||a:e[o][a]||a):(h(a)&&(a=n.get("numberFormatter")?n.get("numberFormatter")(a):g(a,s,n.get("numberDigitGroupCount"),n.get("numberDigitGroupSep"),n.get("numberDecimalMark"))),a)})}}),n.spformat=function(t,e){return new o(t,e)},a=function(t,e,n){return t<e?e:t>n?n:t},s=function(t,n){var i;return 2===n?(i=e.floor(t.length/2),t.length%2?t[i]:(t[i-1]+t[i])/2):t.length%2?(i=(t.length*n+n)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1]):(i=(t.length*n+2)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1])},l=function(t){var e;switch(t){case"undefined":t=void 0;break;case"null":t=null;break;case"true":t=!0;break;case"false":t=!1;break;default:e=parseFloat(t),t==e&&(t=e)}return t},c=function(t){var e,n=[];for(e=t.length;e--;)n[e]=l(t[e]);return n},u=function(t,e){var n,i,r=[];for(n=0,i=t.length;n<i;n++)t[n]!==e&&r.push(t[n]);return r},h=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=function(t,e,i,r,o){var a,s;for(t=(!1===e?parseFloat(t).toString():t.toFixed(e)).split(""),a=(a=n.inArray(".",t))<0?t.length:a,a<t.length&&(t[a]=o),s=a-i;s>0;s-=i)t.splice(s,0,r);return t.join("")},d=function(t,e,n){var i;for(i=e.length;i--;)if((!n||null!==e[i])&&e[i]!==t)return!1;return!0},p=function(t){return n.isArray(t)?t:[t]},f=function(e){var n;t.createStyleSheet?t.createStyleSheet().cssText=e:(n=t.createElement("style"),n.type="text/css",t.getElementsByTagName("head")[0].appendChild(n),n["string"==typeof t.body.style.WebkitAppearance?"innerText":"innerHTML"]=e)},n.fn.simpledraw=function(e,i,r,o){var a,s;if(r&&(a=this.data("_jqs_vcanvas")))return a;if(!1===n.fn.sparkline.canvas)return!1;if(void 0===n.fn.sparkline.canvas){var l=t.createElement("canvas");if(l.getContext&&l.getContext("2d"))n.fn.sparkline.canvas=function(t,e,n,i){return new P(t,e,n,i)};else{if(!t.namespaces||t.namespaces.v)return n.fn.sparkline.canvas=!1,!1;t.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),n.fn.sparkline.canvas=function(t,e,n,i){return new N(t,e,n)}}}return void 0===e&&(e=n(this).innerWidth()),void 0===i&&(i=n(this).innerHeight()),a=n.fn.sparkline.canvas(e,i,this,o),s=n(this).data("_jqs_mhandler"),s&&s.registerCanvas(a),a},n.fn.cleardraw=function(){var t=this.data("_jqs_vcanvas");t&&t.reset()},n.RangeMapClass=m=r({init:function(t){var e,n,i=[];for(e in t)t.hasOwnProperty(e)&&"string"==typeof e&&e.indexOf(":")>-1&&(n=e.split(":"),n[0]=0===n[0].length?-1/0:parseFloat(n[0]),n[1]=0===n[1].length?1/0:parseFloat(n[1]),n[2]=t[e],i.push(n));this.map=t,this.rangelist=i||!1},get:function(t){var e,n,i,r=this.rangelist;if(void 0!==(i=this.map[t]))return i;if(r)for(e=r.length;e--;)if(n=r[e],n[0]<=t&&n[1]>=t)return n[2]}}),n.range_map=function(t){return new m(t)},v=r({init:function(t,e){var i=n(t);this.$el=i,this.options=e,this.currentPageX=0,this.currentPageY=0,this.el=t,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!e.get("disableTooltips"),this.highlightEnabled=!e.get("disableHighlight")},registerSparkline:function(t){this.splist.push(t),this.over&&this.updateDisplay()},registerCanvas:function(t){var e=n(t.canvas);this.canvas=t,this.$canvas=e,e.mouseenter(n.proxy(this.mouseenter,this)),e.mouseleave(n.proxy(this.mouseleave,this)),e.click(n.proxy(this.mouseclick,this))},reset:function(t){this.splist=[],this.tooltip&&t&&(this.tooltip.remove(),this.tooltip=void 0)},mouseclick:function(t){var e=n.Event("sparklineClick");e.originalEvent=t,e.sparklines=this.splist,this.$el.trigger(e)},mouseenter:function(e){n(t.body).unbind("mousemove.jqs"),n(t.body).bind("mousemove.jqs",n.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=e.pageX,this.currentPageY=e.pageY,this.currentEl=e.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new y(this.options),this.tooltip.updatePosition(e.pageX,e.pageY)),this.updateDisplay()},mouseleave:function(){n(t.body).unbind("mousemove.jqs");var e,i,r=this.splist,o=r.length,a=!1;for(this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null),i=0;i<o;i++)e=r[i],e.clearRegionHighlight()&&(a=!0);a&&this.canvas.render()},mousemove:function(t){this.currentPageX=t.pageX,this.currentPageY=t.pageY,this.currentEl=t.target,this.tooltip&&this.tooltip.updatePosition(t.pageX,t.pageY),this.updateDisplay()},updateDisplay:function(){var t,e,i,r,o,a=this.splist,s=a.length,l=!1,c=this.$canvas.offset(),u=this.currentPageX-c.left,h=this.currentPageY-c.top;if(this.over){for(i=0;i<s;i++)e=a[i],(r=e.setRegionHighlight(this.currentEl,u,h))&&(l=!0);if(l){if(o=n.Event("sparklineRegionChange"),o.sparklines=this.splist,this.$el.trigger(o),this.tooltip){for(t="",i=0;i<s;i++)e=a[i],t+=e.getCurrentRegionTooltip();this.tooltip.setContent(t)}this.disableHighlight||this.canvas.render()}null===r&&this.mouseleave()}}}),y=r({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(e){var i,r=e.get("tooltipClassname","jqstooltip"),o=this.sizeStyle;this.container=e.get("tooltipContainer")||t.body,this.tooltipOffsetX=e.get("tooltipOffsetX",10),this.tooltipOffsetY=e.get("tooltipOffsetY",12),n("#jqssizetip").remove(),n("#jqstooltip").remove(),this.sizetip=n("<div/>",{id:"jqssizetip",style:o,class:r}),this.tooltip=n("<div/>",{id:"jqstooltip",class:r}).appendTo(this.container),i=this.tooltip.offset(),this.offsetLeft=i.left,this.offsetTop=i.top,this.hidden=!0,n(window).unbind("resize.jqs scroll.jqs"),n(window).bind("resize.jqs scroll.jqs",n.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=n(window).scrollTop(),this.scrollLeft=n(window).scrollLeft(),this.scrollRight=this.scrollLeft+n(window).width(),this.updatePosition()},getSize:function(t){this.sizetip.html(t).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(t){if(!t)return this.tooltip.css("visibility","hidden"),void(this.hidden=!0);this.getSize(t),this.tooltip.html(t).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(t,e){if(void 0===t){if(void 0===this.mousex)return;t=this.mousex-this.offsetLeft,e=this.mousey-this.offsetTop}else this.mousex=t-=this.offsetLeft,this.mousey=e-=this.offsetTop;this.height&&this.width&&!this.hidden&&(e-=this.height+this.tooltipOffsetY,t+=this.tooltipOffsetX,e<this.scrollTop&&(e=this.scrollTop),t<this.scrollLeft?t=this.scrollLeft:t+this.width>this.scrollRight&&(t=this.scrollRight-this.width),this.tooltip.css({left:t,top:e}))},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=void 0,n(window).unbind("resize.jqs scroll.jqs")}}),M=function(){f(A)},n(M),O=[],n.fn.sparkline=function(e,i){return this.each(function(){var r,o,a=new n.fn.sparkline.options(this,i),s=n(this);if(r=function(){var i,r,o,l,c,u,h;if("html"===e||void 0===e?(h=this.getAttribute(a.get("tagValuesAttribute")),void 0!==h&&null!==h||(h=s.html()),i=h.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")):i=e,r="auto"===a.get("width")?i.length*a.get("defaultPixelsPerValue"):a.get("width"),"auto"===a.get("height")?a.get("composite")&&n.data(this,"_jqs_vcanvas")||(l=t.createElement("span"),l.innerHTML="a",s.html(l),o=n(l).innerHeight()||n(l).height(),n(l).remove(),l=null):o=a.get("height"),a.get("disableInteraction")?c=!1:(c=n.data(this,"_jqs_mhandler"),c?a.get("composite")||c.reset():(c=new v(this,a),n.data(this,"_jqs_mhandler",c))),a.get("composite")&&!n.data(this,"_jqs_vcanvas"))return void(n.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),n.data(this,"_jqs_errnotify",!0)));u=new(n.fn.sparkline[a.get("type")])(this,i,a,r,o),u.render(),c&&c.registerSparkline(u)},n(this).html()&&!a.get("disableHiddenCheck")&&n(this).is(":hidden")||!n(this).parents("body").length){if(!a.get("composite")&&n.data(this,"_jqs_pending"))for(o=O.length;o;o--)O[o-1][0]==this&&O.splice(o-1,1);O.push([this,r]),n.data(this,"_jqs_pending",!0)}else r.call(this)})},n.fn.sparkline.defaults=i(),n.sparkline_display_visible=function(){var t,e,i,r=[];for(e=0,i=O.length;e<i;e++)t=O[e][0],n(t).is(":visible")&&!n(t).parents().is(":hidden")?(O[e][1].call(t),n.data(O[e][0],"_jqs_pending",!1),r.push(e)):n(t).closest("html").length||n.data(t,"_jqs_pending")||(n.data(O[e][0],"_jqs_pending",!1),r.push(e));for(e=r.length;e;e--)O.splice(r[e-1],1)},n.fn.sparkline.options=r({init:function(t,e){var i,r,o,a;this.userOptions=e=e||{},this.tag=t,this.tagValCache={},r=n.fn.sparkline.defaults,o=r.common,this.tagOptionsPrefix=e.enableTagOptions&&(e.tagOptionsPrefix||o.tagOptionsPrefix),a=this.getTagSetting("type"),i=a===R?r[e.type||o.type]:r[a],this.mergedOptions=n.extend({},o,i,e)},getTagSetting:function(t){var e,n,i,r,o=this.tagOptionsPrefix;if(!1===o||void 0===o)return R;if(this.tagValCache.hasOwnProperty(t))e=this.tagValCache.key;else{if(void 0===(e=this.tag.getAttribute(o+t))||null===e)e=R;else if("["===e.substr(0,1))for(e=e.substr(1,e.length-2).split(","),n=e.length;n--;)e[n]=l(e[n].replace(/(^\s*)|(\s*$)/g,""));else if("{"===e.substr(0,1))for(i=e.substr(1,e.length-2).split(","),e={},n=i.length;n--;)r=i[n].split(":",2),e[r[0].replace(/(^\s*)|(\s*$)/g,"")]=l(r[1].replace(/(^\s*)|(\s*$)/g,""));else e=l(e);this.tagValCache.key=e}return e},get:function(t,e){var n,i=this.getTagSetting(t);return i!==R?i:void 0===(n=this.mergedOptions[t])?e:n}}),n.fn.sparkline._base=r({disabled:!1,init:function(t,e,i,r,o){this.el=t,this.$el=n(t),this.values=e,this.options=i,this.width=r,this.height=o,this.currentRegion=void 0},initTarget:function(){var t=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),t))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return!this.disabled||(this.el.innerHTML="",!1)},getRegion:function(t,e){},setRegionHighlight:function(t,e,n){var i,r=this.currentRegion,o=!this.options.get("disableHighlight");return e>this.canvasWidth||n>this.canvasHeight||e<0||n<0?null:(i=this.getRegion(t,e,n),r!==i&&(void 0!==r&&o&&this.removeHighlight(),this.currentRegion=i,void 0!==i&&o&&this.renderHighlight(),!0))},clearRegionHighlight:function(){return void 0!==this.currentRegion&&(this.removeHighlight(),this.currentRegion=void 0,!0)},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(t){},getCurrentRegionTooltip:function(){var t,e,i,r,a,s,l,c,u,h,d,f,p,g,m=this.options,v="",y=[];if(void 0===this.currentRegion)return"";if(t=this.getCurrentRegionFields(),d=m.get("tooltipFormatter"))return d(this,m,t);if(m.get("tooltipChartTitle")&&(v+='<div class="jqs jqstitle">'+m.get("tooltipChartTitle")+"</div>\n"),!(e=this.options.get("tooltipFormat")))return"";if(n.isArray(e)||(e=[e]),n.isArray(t)||(t=[t]),l=this.options.get("tooltipFormatFieldlist"),c=this.options.get("tooltipFormatFieldlistKey"),l&&c){for(u=[],s=t.length;s--;)h=t[s][c],-1!=(g=n.inArray(h,l))&&(u[g]=t[s]);t=u}for(i=e.length,p=t.length,s=0;s<i;s++)for(f=e[s],"string"==typeof f&&(f=new o(f)),r=f.fclass||"jqsfield",g=0;g<p;g++)t[g].isNull&&m.get("tooltipSkipNull")||(n.extend(t[g],{prefix:m.get("tooltipPrefix"),suffix:m.get("tooltipSuffix")}),a=f.render(t[g],m.get("tooltipValueLookups"),m),y.push('<div class="'+r+'">'+a+"</div>"));return y.length?v+y.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(t,n){var i,r,o,s,l=n.get("highlightColor"),c=n.get("highlightLighten");if(l)return l;if(c&&(i=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t))){for(o=[],r=4===t.length?16:1,s=0;s<3;s++)o[s]=a(e.round(parseInt(i[s+1],16)*r*c),0,255);return"rgb("+o.join(",")+")"}return t}}),x={changeHighlight:function(t){var e,i=this.currentRegion,r=this.target,o=this.regionShapes[i];o&&(e=this.renderRegion(i,t),n.isArray(e)||n.isArray(o)?(r.replaceWithShapes(o,e),this.regionShapes[i]=n.map(e,function(t){return t.id})):(r.replaceWithShape(o,e),this.regionShapes[i]=e.id))},render:function(){var t,e,i,r,o=this.values,a=this.target,s=this.regionShapes;if(this.cls._super.render.call(this)){for(i=o.length;i--;)if(t=this.renderRegion(i))if(n.isArray(t)){for(e=[],r=t.length;r--;)t[r].append(),e.push(t[r].id);s[i]=e}else t.append(),s[i]=t.id;else s[i]=null;a.render()}}},n.fn.sparkline.line=b=r(n.fn.sparkline._base,{type:"line",init:function(t,e,n,i,r){b._super.init.call(this,t,e,n,i,r),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(t,e,n){var i,r=this.regionMap;for(i=r.length;i--;)if(null!==r[i]&&e>=r[i][0]&&e<=r[i][1])return r[i][2]},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:null===this.yvalues[t],x:this.xvalues[t],y:this.yvalues[t],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:t}},renderHighlight:function(){var t,e,n=this.currentRegion,i=this.target,r=this.vertices[n],o=this.options,a=o.get("spotRadius"),s=o.get("highlightSpotColor"),l=o.get("highlightLineColor");r&&(a&&s&&(t=i.drawCircle(r[0],r[1],a,void 0,s),this.highlightSpotId=t.id,i.insertAfterShape(this.lastShapeId,t)),l&&(e=i.drawLine(r[0],this.canvasTop,r[0],this.canvasTop+this.canvasHeight,l),this.highlightLineId=e.id,i.insertAfterShape(this.lastShapeId,e)))},removeHighlight:function(){var t=this.target;this.highlightSpotId&&(t.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(t.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var t,n,i,r,o,a=this.values,s=a.length,l=this.xvalues,c=this.yvalues,u=this.yminmax;for(t=0;t<s;t++)n=a[t],i="string"==typeof a[t],r="object"==typeof a[t]&&a[t]instanceof Array,o=i&&a[t].split(":"),i&&2===o.length?(l.push(Number(o[0])),c.push(Number(o[1])),u.push(Number(o[1]))):r?(l.push(n[0]),c.push(n[1]),u.push(n[1])):(l.push(t),null===a[t]||"null"===a[t]?c.push(null):(c.push(Number(n)),u.push(Number(n))));this.options.get("xvalues")&&(l=this.options.get("xvalues")),this.maxy=this.maxyorg=e.max.apply(e,u),this.miny=this.minyorg=e.min.apply(e,u),this.maxx=e.max.apply(e,l),this.minx=e.min.apply(e,l),this.xvalues=l,this.yvalues=c,this.yminmax=u},processRangeOptions:function(){var t=this.options,e=t.get("normalRangeMin"),n=t.get("normalRangeMax");void 0!==e&&(e<this.miny&&(this.miny=e),n>this.maxy&&(this.maxy=n)),void 0!==t.get("chartRangeMin")&&(t.get("chartRangeClip")||t.get("chartRangeMin")<this.miny)&&(this.miny=t.get("chartRangeMin")),void 0!==t.get("chartRangeMax")&&(t.get("chartRangeClip")||t.get("chartRangeMax")>this.maxy)&&(this.maxy=t.get("chartRangeMax")),void 0!==t.get("chartRangeMinX")&&(t.get("chartRangeClipX")||t.get("chartRangeMinX")<this.minx)&&(this.minx=t.get("chartRangeMinX")),void 0!==t.get("chartRangeMaxX")&&(t.get("chartRangeClipX")||t.get("chartRangeMaxX")>this.maxx)&&(this.maxx=t.get("chartRangeMaxX"))},drawNormalRange:function(t,n,i,r,o){var a=this.options.get("normalRangeMin"),s=this.options.get("normalRangeMax"),l=n+e.round(i-i*((s-this.miny)/o)),c=e.round(i*(s-a)/o);this.target.drawRect(t,l,r,c,void 0,this.options.get("normalRangeColor")).append()},render:function(){var t,i,r,o,a,s,l,c,u,h,d,f,p,g,v,y,x,w,_,S,C,T,k,A,M,E=this.options,L=this.target,P=this.canvasWidth,N=this.canvasHeight,O=this.vertices,R=E.get("spotRadius"),D=this.regionMap;if(b._super.render.call(this)&&(this.scanValues(),this.processRangeOptions(),k=this.xvalues,A=this.yvalues,this.yminmax.length&&!(this.yvalues.length<2))){for(o=a=0,t=this.maxx-this.minx==0?1:this.maxx-this.minx,i=this.maxy-this.miny==0?1:this.maxy-this.miny,r=this.yvalues.length-1,R&&(P<4*R||N<4*R)&&(R=0),R&&(C=E.get("highlightSpotColor")&&!E.get("disableInteraction"),(C||E.get("minSpotColor")||E.get("spotColor")&&A[r]===this.miny)&&(N-=e.ceil(R)),(C||E.get("maxSpotColor")||E.get("spotColor")&&A[r]===this.maxy)&&(N-=e.ceil(R),o+=e.ceil(R)),(C||(E.get("minSpotColor")||E.get("maxSpotColor"))&&(A[0]===this.miny||A[0]===this.maxy))&&(a+=e.ceil(R),P-=e.ceil(R)),(C||E.get("spotColor")||E.get("minSpotColor")||E.get("maxSpotColor")&&(A[r]===this.miny||A[r]===this.maxy))&&(P-=e.ceil(R))),N--,void 0===E.get("normalRangeMin")||E.get("drawNormalOnTop")||this.drawNormalRange(a,o,N,P,i),l=[],c=[l],g=v=null,y=A.length,M=0;M<y;M++)u=k[M],d=k[M+1],h=A[M],f=a+e.round((u-this.minx)*(P/t)),p=M<y-1?a+e.round((d-this.minx)*(P/t)):P,v=f+(p-f)/2,D[M]=[g||0,v,M],g=v,null===h?M&&(null!==A[M-1]&&(l=[],c.push(l)),O.push(null)):(h<this.miny&&(h=this.miny),h>this.maxy&&(h=this.maxy),l.length||l.push([f,o+N]),s=[f,o+e.round(N-N*((h-this.miny)/i))],l.push(s),O.push(s));for(x=[],w=[],_=c.length,M=0;M<_;M++)l=c[M],l.length&&(E.get("fillColor")&&(l.push([l[l.length-1][0],o+N]),w.push(l.slice(0)),l.pop()),l.length>2&&(l[0]=[l[0][0],l[1][1]]),x.push(l));for(_=w.length,M=0;M<_;M++)L.drawShape(w[M],E.get("fillColor"),E.get("fillColor")).append();for(void 0!==E.get("normalRangeMin")&&E.get("drawNormalOnTop")&&this.drawNormalRange(a,o,N,P,i),_=x.length,M=0;M<_;M++)L.drawShape(x[M],E.get("lineColor"),void 0,E.get("lineWidth")).append();if(R&&E.get("valueSpots"))for(S=E.get("valueSpots"),void 0===S.get&&(S=new m(S)),M=0;M<y;M++)(T=S.get(A[M]))&&L.drawCircle(a+e.round((k[M]-this.minx)*(P/t)),o+e.round(N-N*((A[M]-this.miny)/i)),R,void 0,T).append();R&&E.get("spotColor")&&null!==A[r]&&L.drawCircle(a+e.round((k[k.length-1]-this.minx)*(P/t)),o+e.round(N-N*((A[r]-this.miny)/i)),R,void 0,E.get("spotColor")).append(),this.maxy!==this.minyorg&&(R&&E.get("minSpotColor")&&(u=k[n.inArray(this.minyorg,A)],L.drawCircle(a+e.round((u-this.minx)*(P/t)),o+e.round(N-N*((this.minyorg-this.miny)/i)),R,void 0,E.get("minSpotColor")).append()),R&&E.get("maxSpotColor")&&(u=k[n.inArray(this.maxyorg,A)],L.drawCircle(a+e.round((u-this.minx)*(P/t)),o+e.round(N-N*((this.maxyorg-this.miny)/i)),R,void 0,E.get("maxSpotColor")).append())),this.lastShapeId=L.getLastShapeId(),this.canvasTop=o,L.render()}}}),n.fn.sparkline.bar=w=r(n.fn.sparkline._base,x,{type:"bar",init:function(t,i,r,o,s){var h,d,f,p,g,v,y,x,b,_,S,C,T,k,A,M,E,L,P,N,O,R,D=parseInt(r.get("barWidth"),10),I=parseInt(r.get("barSpacing"),10),H=r.get("chartRangeMin"),j=r.get("chartRangeMax"),V=r.get("chartRangeClip"),F=1/0,z=-1/0;for(w._super.init.call(this,t,i,r,o,s),v=0,y=i.length;v<y;v++)N=i[v],((h="string"==typeof N&&N.indexOf(":")>-1)||n.isArray(N))&&(A=!0,h&&(N=i[v]=c(N.split(":"))),N=u(N,null),d=e.min.apply(e,N),f=e.max.apply(e,N),d<F&&(F=d),f>z&&(z=f));this.stacked=A,this.regionShapes={},this.barWidth=D,this.barSpacing=I,this.totalBarWidth=D+I,this.width=o=i.length*D+(i.length-1)*I,this.initTarget(),V&&(T=void 0===H?-1/0:H,k=void 0===j?1/0:j),g=[],p=A?[]:g;var q=[],G=[];for(v=0,y=i.length;v<y;v++)if(A)for(M=i[v],i[v]=P=[],q[v]=0,p[v]=G[v]=0,E=0,L=M.length;E<L;E++)null!==(N=P[E]=V?a(M[E],T,k):M[E])&&(N>0&&(q[v]+=N),F<0&&z>0?N<0?G[v]+=e.abs(N):p[v]+=N:p[v]+=e.abs(N-(N<0?z:F)),g.push(N));else N=V?a(i[v],T,k):i[v],null!==(N=i[v]=l(N))&&g.push(N);this.max=C=e.max.apply(e,g),this.min=S=e.min.apply(e,g),this.stackMax=z=A?e.max.apply(e,q):C,this.stackMin=F=A?e.min.apply(e,g):S,void 0!==r.get("chartRangeMin")&&(r.get("chartRangeClip")||r.get("chartRangeMin")<S)&&(S=r.get("chartRangeMin")),void 0!==r.get("chartRangeMax")&&(r.get("chartRangeClip")||r.get("chartRangeMax")>C)&&(C=r.get("chartRangeMax")),this.zeroAxis=b=r.get("zeroAxis",!0),_=S<=0&&C>=0&&b?0:0==b?S:S>0?S:C,this.xaxisOffset=_,x=A?e.max.apply(e,p)+e.max.apply(e,G):C-S,this.canvasHeightEf=b&&S<0?this.canvasHeight-2:this.canvasHeight-1,S<_?(R=A&&C>=0?z:C,(O=(R-_)/x*this.canvasHeight)!==e.ceil(O)&&(this.canvasHeightEf-=2,O=e.ceil(O))):O=this.canvasHeight,this.yoffset=O,n.isArray(r.get("colorMap"))?(this.colorMapByIndex=r.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=r.get("colorMap"),this.colorMapByValue&&void 0===this.colorMapByValue.get&&(this.colorMapByValue=new m(this.colorMapByValue))),this.range=x},getRegion:function(t,n,i){var r=e.floor(n/this.totalBarWidth);return r<0||r>=this.values.length?void 0:r},getCurrentRegionFields:function(){var t,e,n=this.currentRegion,i=p(this.values[n]),r=[];for(e=i.length;e--;)t=i[e],r.push({isNull:null===t,value:t,color:this.calcColor(e,t,n),offset:n});return r},calcColor:function(t,e,i){var r,o,a=this.colorMapByIndex,s=this.colorMapByValue,l=this.options;return r=this.stacked?l.get("stackedBarColor"):e<0?l.get("negBarColor"):l.get("barColor"),0===e&&void 0!==l.get("zeroColor")&&(r=l.get("zeroColor")),s&&(o=s.get(e))?r=o:a&&a.length>i&&(r=a[i]),n.isArray(r)?r[t%r.length]:r},renderRegion:function(t,i){var r,o,a,s,l,c,u,h,f,p,g=this.values[t],m=this.options,v=this.xaxisOffset,y=[],x=this.range,b=this.stacked,w=this.target,_=t*this.totalBarWidth,S=this.canvasHeightEf,C=this.yoffset;if(g=n.isArray(g)?g:[g],u=g.length,h=g[0],s=d(null,g),p=d(v,g,!0),s)return m.get("nullColor")?(a=i?m.get("nullColor"):this.calcHighlightColor(m.get("nullColor"),m),r=C>0?C-1:C,w.drawRect(_,r,this.barWidth-1,0,a,a)):void 0;for(l=C,c=0;c<u;c++){if(h=g[c],b&&h===v){if(!p||f)continue;f=!0}o=x>0?e.floor(S*(e.abs(h-v)/x))+1:1,h<v||h===v&&0===C?(r=l,l+=o):(r=C-o,C-=o),a=this.calcColor(c,h,t),i&&(a=this.calcHighlightColor(a,m)),y.push(w.drawRect(_,r,this.barWidth-1,o-1,a,a))}
+return 1===y.length?y[0]:y}}),n.fn.sparkline.tristate=_=r(n.fn.sparkline._base,x,{type:"tristate",init:function(t,e,i,r,o){var a=parseInt(i.get("barWidth"),10),s=parseInt(i.get("barSpacing"),10);_._super.init.call(this,t,e,i,r,o),this.regionShapes={},this.barWidth=a,this.barSpacing=s,this.totalBarWidth=a+s,this.values=n.map(e,Number),this.width=r=e.length*a+(e.length-1)*s,n.isArray(i.get("colorMap"))?(this.colorMapByIndex=i.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=i.get("colorMap"),this.colorMapByValue&&void 0===this.colorMapByValue.get&&(this.colorMapByValue=new m(this.colorMapByValue))),this.initTarget()},getRegion:function(t,n,i){return e.floor(n/this.totalBarWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:void 0===this.values[t],value:this.values[t],color:this.calcColor(this.values[t],t),offset:t}},calcColor:function(t,e){var n,i=this.values,r=this.options,o=this.colorMapByIndex,a=this.colorMapByValue;return a&&(n=a.get(t))?n:o&&o.length>e?o[e]:i[e]<0?r.get("negBarColor"):i[e]>0?r.get("posBarColor"):r.get("zeroBarColor")},renderRegion:function(t,n){var i,r,o,a,s,l,c=this.values,u=this.options,h=this.target;if(i=h.pixelHeight,o=e.round(i/2),a=t*this.totalBarWidth,c[t]<0?(s=o,r=o-1):c[t]>0?(s=0,r=o-1):(s=o-1,r=2),null!==(l=this.calcColor(c[t],t)))return n&&(l=this.calcHighlightColor(l,u)),h.drawRect(a,s,this.barWidth-1,r-1,l,l)}}),n.fn.sparkline.discrete=S=r(n.fn.sparkline._base,x,{type:"discrete",init:function(t,i,r,o,a){S._super.init.call(this,t,i,r,o,a),this.regionShapes={},this.values=i=n.map(i,Number),this.min=e.min.apply(e,i),this.max=e.max.apply(e,i),this.range=this.max-this.min,this.width=o="auto"===r.get("width")?2*i.length:this.width,this.interval=e.floor(o/i.length),this.itemWidth=o/i.length,void 0!==r.get("chartRangeMin")&&(r.get("chartRangeClip")||r.get("chartRangeMin")<this.min)&&(this.min=r.get("chartRangeMin")),void 0!==r.get("chartRangeMax")&&(r.get("chartRangeClip")||r.get("chartRangeMax")>this.max)&&(this.max=r.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight="auto"===r.get("lineHeight")?e.round(.3*this.canvasHeight):r.get("lineHeight"))},getRegion:function(t,n,i){return e.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:void 0===this.values[t],value:this.values[t],offset:t}},renderRegion:function(t,n){var i,r,o,s,l=this.values,c=this.options,u=this.min,h=this.max,d=this.range,f=this.interval,p=this.target,g=this.canvasHeight,m=this.lineHeight,v=g-m;return r=a(l[t],u,h),s=t*f,i=e.round(v-v*((r-u)/d)),o=c.get("thresholdColor")&&r<c.get("thresholdValue")?c.get("thresholdColor"):c.get("lineColor"),n&&(o=this.calcHighlightColor(o,c)),p.drawLine(s,i,s,i+m,o)}}),n.fn.sparkline.bullet=C=r(n.fn.sparkline._base,{type:"bullet",init:function(t,n,i,r,o){var a,s,l;C._super.init.call(this,t,n,i,r,o),this.values=n=c(n),l=n.slice(),l[0]=null===l[0]?l[2]:l[0],l[1]=null===n[1]?l[2]:l[1],a=e.min.apply(e,n),s=e.max.apply(e,n),a=void 0===i.get("base")?a<0?a:0:i.get("base"),this.min=a,this.max=s,this.range=s-a,this.shapes={},this.valueShapes={},this.regiondata={},this.width=r="auto"===i.get("width")?"4.0em":r,this.target=this.$el.simpledraw(r,o,i.get("composite")),n.length||(this.disabled=!0),this.initTarget()},getRegion:function(t,e,n){var i=this.target.getShapeAt(t,e,n);return void 0!==i&&void 0!==this.shapes[i]?this.shapes[i]:void 0},getCurrentRegionFields:function(){var t=this.currentRegion;return{fieldkey:t.substr(0,1),value:this.values[t.substr(1)],region:t}},changeHighlight:function(t){var e,n=this.currentRegion,i=this.valueShapes[n];switch(delete this.shapes[i],n.substr(0,1)){case"r":e=this.renderRange(n.substr(1),t);break;case"p":e=this.renderPerformance(t);break;case"t":e=this.renderTarget(t)}this.valueShapes[n]=e.id,this.shapes[e.id]=n,this.target.replaceWithShape(i,e)},renderRange:function(t,n){var i=this.values[t],r=e.round(this.canvasWidth*((i-this.min)/this.range)),o=this.options.get("rangeColors")[t-2];return n&&(o=this.calcHighlightColor(o,this.options)),this.target.drawRect(0,0,r-1,this.canvasHeight-1,o,o)},renderPerformance:function(t){var n=this.values[1],i=e.round(this.canvasWidth*((n-this.min)/this.range)),r=this.options.get("performanceColor");return t&&(r=this.calcHighlightColor(r,this.options)),this.target.drawRect(0,e.round(.3*this.canvasHeight),i-1,e.round(.4*this.canvasHeight)-1,r,r)},renderTarget:function(t){var n=this.values[0],i=e.round(this.canvasWidth*((n-this.min)/this.range)-this.options.get("targetWidth")/2),r=e.round(.1*this.canvasHeight),o=this.canvasHeight-2*r,a=this.options.get("targetColor");return t&&(a=this.calcHighlightColor(a,this.options)),this.target.drawRect(i,r,this.options.get("targetWidth")-1,o-1,a,a)},render:function(){var t,e,n=this.values.length,i=this.target;if(C._super.render.call(this)){for(t=2;t<n;t++)e=this.renderRange(t).append(),this.shapes[e.id]="r"+t,this.valueShapes["r"+t]=e.id;null!==this.values[1]&&(e=this.renderPerformance().append(),this.shapes[e.id]="p1",this.valueShapes.p1=e.id),null!==this.values[0]&&(e=this.renderTarget().append(),this.shapes[e.id]="t0",this.valueShapes.t0=e.id),i.render()}}}),n.fn.sparkline.pie=T=r(n.fn.sparkline._base,{type:"pie",init:function(t,i,r,o,a){var s,l=0;if(T._super.init.call(this,t,i,r,o,a),this.shapes={},this.valueShapes={},this.values=i=n.map(i,Number),"auto"===r.get("width")&&(this.width=this.height),i.length>0)for(s=i.length;s--;)l+=i[s];this.total=l,this.initTarget(),this.radius=e.floor(e.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(t,e,n){var i=this.target.getShapeAt(t,e,n);return void 0!==i&&void 0!==this.shapes[i]?this.shapes[i]:void 0},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:void 0===this.values[t],value:this.values[t],percent:this.values[t]/this.total*100,color:this.options.get("sliceColors")[t%this.options.get("sliceColors").length],offset:t}},changeHighlight:function(t){var e=this.currentRegion,n=this.renderSlice(e,t),i=this.valueShapes[e];delete this.shapes[i],this.target.replaceWithShape(i,n),this.valueShapes[e]=n.id,this.shapes[n.id]=e},renderSlice:function(t,n){var i,r,o,a,s,l=this.target,c=this.options,u=this.radius,h=c.get("borderWidth"),d=c.get("offset"),f=2*e.PI,p=this.values,g=this.total,m=d?2*e.PI*(d/360):0;for(a=p.length,o=0;o<a;o++){if(i=m,r=m,g>0&&(r=m+f*(p[o]/g)),t===o)return s=c.get("sliceColors")[o%c.get("sliceColors").length],n&&(s=this.calcHighlightColor(s,c)),l.drawPieSlice(u,u,u-h,i,r,void 0,s);m=r}},render:function(){var t,n,i=this.target,r=this.values,o=this.options,a=this.radius,s=o.get("borderWidth");if(T._super.render.call(this)){for(s&&i.drawCircle(a,a,e.floor(a-s/2),o.get("borderColor"),void 0,s).append(),n=r.length;n--;)r[n]&&(t=this.renderSlice(n).append(),this.valueShapes[n]=t.id,this.shapes[t.id]=n);i.render()}}}),n.fn.sparkline.box=k=r(n.fn.sparkline._base,{type:"box",init:function(t,e,i,r,o){k._super.init.call(this,t,e,i,r,o),this.values=n.map(e,Number),this.width="auto"===i.get("width")?"4.0em":r,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var t=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return void 0!==this.loutlier&&t.push({field:"lo",value:this.loutlier}),void 0!==this.routlier&&t.push({field:"ro",value:this.routlier}),void 0!==this.lwhisker&&t.push({field:"lw",value:this.lwhisker}),void 0!==this.rwhisker&&t.push({field:"rw",value:this.rwhisker}),t},render:function(){var t,n,i,r,o,a,l,c,u,h,d,f=this.target,p=this.values,g=p.length,m=this.options,v=this.canvasWidth,y=this.canvasHeight,x=void 0===m.get("chartRangeMin")?e.min.apply(e,p):m.get("chartRangeMin"),b=void 0===m.get("chartRangeMax")?e.max.apply(e,p):m.get("chartRangeMax"),w=0;if(k._super.render.call(this)){if(m.get("raw"))m.get("showOutliers")&&p.length>5?(n=p[0],t=p[1],r=p[2],o=p[3],a=p[4],l=p[5],c=p[6]):(t=p[0],r=p[1],o=p[2],a=p[3],l=p[4]);else if(p.sort(function(t,e){return t-e}),r=s(p,1),o=s(p,2),a=s(p,3),i=a-r,m.get("showOutliers")){for(t=l=void 0,u=0;u<g;u++)void 0===t&&p[u]>r-i*m.get("outlierIQR")&&(t=p[u]),p[u]<a+i*m.get("outlierIQR")&&(l=p[u]);n=p[0],c=p[g-1]}else t=p[0],l=p[g-1];this.quartiles=[r,o,a],this.lwhisker=t,this.rwhisker=l,this.loutlier=n,this.routlier=c,d=v/(b-x+1),m.get("showOutliers")&&(w=e.ceil(m.get("spotRadius")),v-=2*e.ceil(m.get("spotRadius")),d=v/(b-x+1),n<t&&f.drawCircle((n-x)*d+w,y/2,m.get("spotRadius"),m.get("outlierLineColor"),m.get("outlierFillColor")).append(),c>l&&f.drawCircle((c-x)*d+w,y/2,m.get("spotRadius"),m.get("outlierLineColor"),m.get("outlierFillColor")).append()),f.drawRect(e.round((r-x)*d+w),e.round(.1*y),e.round((a-r)*d),e.round(.8*y),m.get("boxLineColor"),m.get("boxFillColor")).append(),f.drawLine(e.round((t-x)*d+w),e.round(y/2),e.round((r-x)*d+w),e.round(y/2),m.get("lineColor")).append(),f.drawLine(e.round((t-x)*d+w),e.round(y/4),e.round((t-x)*d+w),e.round(y-y/4),m.get("whiskerColor")).append(),f.drawLine(e.round((l-x)*d+w),e.round(y/2),e.round((a-x)*d+w),e.round(y/2),m.get("lineColor")).append(),f.drawLine(e.round((l-x)*d+w),e.round(y/4),e.round((l-x)*d+w),e.round(y-y/4),m.get("whiskerColor")).append(),f.drawLine(e.round((o-x)*d+w),e.round(.1*y),e.round((o-x)*d+w),e.round(.9*y),m.get("medianColor")).append(),m.get("target")&&(h=e.ceil(m.get("spotRadius")),f.drawLine(e.round((m.get("target")-x)*d+w),e.round(y/2-h),e.round((m.get("target")-x)*d+w),e.round(y/2+h),m.get("targetColor")).append(),f.drawLine(e.round((m.get("target")-x)*d+w-h),e.round(y/2),e.round((m.get("target")-x)*d+w+h),e.round(y/2),m.get("targetColor")).append()),f.render()}}}),E=r({init:function(t,e,n,i){this.target=t,this.id=e,this.type=n,this.args=i},append:function(){return this.target.appendShape(this),this}}),L=r({_pxregex:/(\d+)(px)?\s*$/i,init:function(t,e,i){t&&(this.width=t,this.height=e,this.target=i,this.lastShapeId=null,i[0]&&(i=i[0]),n.data(i,"_jqs_vcanvas",this))},drawLine:function(t,e,n,i,r,o){return this.drawShape([[t,e],[n,i]],r,o)},drawShape:function(t,e,n,i){return this._genShape("Shape",[t,e,n,i])},drawCircle:function(t,e,n,i,r,o){return this._genShape("Circle",[t,e,n,i,r,o])},drawPieSlice:function(t,e,n,i,r,o,a){return this._genShape("PieSlice",[t,e,n,i,r,o,a])},drawRect:function(t,e,n,i,r,o){return this._genShape("Rect",[t,e,n,i,r,o])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(t,e){n(e).html(t)},_calculatePixelDims:function(t,e,i){var r;r=this._pxregex.exec(e),this.pixelHeight=r?r[1]:n(i).height(),r=this._pxregex.exec(t),this.pixelWidth=r?r[1]:n(i).width()},_genShape:function(t,e){var n=D++;return e.unshift(n),new E(this,n,t,e)},appendShape:function(t){alert("appendShape not implemented")},replaceWithShape:function(t,e){alert("replaceWithShape not implemented")},insertAfterShape:function(t,e){alert("insertAfterShape not implemented")},removeShapeId:function(t){alert("removeShapeId not implemented")},getShapeAt:function(t,e,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),P=r(L,{init:function(e,i,r,o){P._super.init.call(this,e,i,r),this.canvas=t.createElement("canvas"),r[0]&&(r=r[0]),n.data(r,"_jqs_vcanvas",this),n(this.canvas).css({display:"inline-block",width:e,height:i,verticalAlign:"top"}),this._insert(this.canvas,r),this._calculatePixelDims(e,i,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=o,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=void 0,n(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(t,e,n){var i=this.canvas.getContext("2d");return void 0!==t&&(i.strokeStyle=t),i.lineWidth=void 0===n?1:n,void 0!==e&&(i.fillStyle=e),i},reset:function(){this._getContext().clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=void 0},_drawShape:function(t,e,n,i,r){var o,a,s=this._getContext(n,i,r);for(s.beginPath(),s.moveTo(e[0][0]+.5,e[0][1]+.5),o=1,a=e.length;o<a;o++)s.lineTo(e[o][0]+.5,e[o][1]+.5);void 0!==n&&s.stroke(),void 0!==i&&s.fill(),void 0!==this.targetX&&void 0!==this.targetY&&s.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawCircle:function(t,n,i,r,o,a,s){var l=this._getContext(o,a,s);l.beginPath(),l.arc(n,i,r,0,2*e.PI,!1),void 0!==this.targetX&&void 0!==this.targetY&&l.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t),void 0!==o&&l.stroke(),void 0!==a&&l.fill()},_drawPieSlice:function(t,e,n,i,r,o,a,s){var l=this._getContext(a,s);l.beginPath(),l.moveTo(e,n),l.arc(e,n,i,r,o,!1),l.lineTo(e,n),l.closePath(),void 0!==a&&l.stroke(),s&&l.fill(),void 0!==this.targetX&&void 0!==this.targetY&&l.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e+i,n],[e+i,n+r],[e,n+r],[e,n]],o,a)},appendShape:function(t){return this.shapes[t.id]=t,this.shapeseq.push(t.id),this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n,i=this.shapeseq;for(this.shapes[e.id]=e,n=i.length;n--;)i[n]==t&&(i[n]=e.id);delete this.shapes[t]},replaceWithShapes:function(t,e){var n,i,r,o=this.shapeseq,a={};for(i=t.length;i--;)a[t[i]]=!0;for(i=o.length;i--;)n=o[i],a[n]&&(o.splice(i,1),delete this.shapes[n],r=i);for(i=e.length;i--;)o.splice(r,0,e[i].id),this.shapes[e[i].id]=e[i]},insertAfterShape:function(t,e){var n,i=this.shapeseq;for(n=i.length;n--;)if(i[n]===t)return i.splice(n+1,0,e.id),void(this.shapes[e.id]=e)},removeShapeId:function(t){var e,n=this.shapeseq;for(e=n.length;e--;)if(n[e]===t){n.splice(e,1);break}delete this.shapes[t]},getShapeAt:function(t,e,n){return this.targetX=e,this.targetY=n,this.render(),this.currentTargetShapeId},render:function(){var t,e,n,i=this.shapeseq,r=this.shapes,o=i.length,a=this._getContext();for(a.clearRect(0,0,this.pixelWidth,this.pixelHeight),n=0;n<o;n++)t=i[n],e=r[t],this["_draw"+e.type].apply(this,e.args);this.interact||(this.shapes={},this.shapeseq=[])}}),N=r(L,{init:function(e,i,r){var o;N._super.init.call(this,e,i,r),r[0]&&(r=r[0]),n.data(r,"_jqs_vcanvas",this),this.canvas=t.createElement("span"),n(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:e,height:i,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,r),this._calculatePixelDims(e,i,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,o='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",o),this.group=n(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(t,e,n,i,r){var o,a,s,l,c,u,h=[];for(u=0,c=e.length;u<c;u++)h[u]=e[u][0]+","+e[u][1];return o=h.splice(0,1),r=void 0===r?1:r,a=void 0===n?' stroked="false" ':' strokeWeight="'+r+'px" strokeColor="'+n+'" ',s=void 0===i?' filled="false"':' fillColor="'+i+'" filled="true" ',l=h[0]===h[h.length-1]?"x ":"",'<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+a+s+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+o+" l "+h.join(", ")+" "+l+'e"> </v:shape>'},_drawCircle:function(t,e,n,i,r,o,a){var s,l;return e-=i,n-=i,s=void 0===r?' stroked="false" ':' strokeWeight="'+a+'px" strokeColor="'+r+'" ',l=void 0===o?' filled="false"':' fillColor="'+o+'" filled="true" ','<v:oval  id="jqsshape'+t+'" '+s+l+' style="position:absolute;top:'+n+"px; left:"+e+"px; width:"+2*i+"px; height:"+2*i+'px"></v:oval>'},_drawPieSlice:function(t,n,i,r,o,a,s,l){var c,u,h,d,f,p,g;if(o===a)return"";if(a-o==2*e.PI&&(o=0,a=2*e.PI),u=n+e.round(e.cos(o)*r),h=i+e.round(e.sin(o)*r),d=n+e.round(e.cos(a)*r),f=i+e.round(e.sin(a)*r),u===d&&h===f){if(a-o<e.PI)return"";u=d=n+r,h=f=i}return u===d&&h===f&&a-o<e.PI?"":(c=[n-r,i-r,n+r,i+r,u,h,d,f],p=void 0===s?' stroked="false" ':' strokeWeight="1px" strokeColor="'+s+'" ',g=void 0===l?' filled="false"':' fillColor="'+l+'" filled="true" ','<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+p+g+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+n+","+i+" wa "+c.join(", ")+' x e"> </v:shape>')},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e,n+r],[e+i,n+r],[e+i,n],[e,n]],o,a)},reset:function(){this.group.innerHTML=""},appendShape:function(t){var e=this["_draw"+t.type].apply(this,t.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",e):this.prerender+=e,this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var i=n("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);i[0].outerHTML=r},replaceWithShapes:function(t,e){var i,r=n("#jqsshape"+t[0]),o="",a=e.length;for(i=0;i<a;i++)o+=this["_draw"+e[i].type].apply(this,e[i].args);for(r[0].outerHTML=o,i=1;i<t.length;i++)n("#jqsshape"+t[i]).remove()},insertAfterShape:function(t,e){var i=n("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);i[0].insertAdjacentHTML("afterEnd",r)},removeShapeId:function(t){var e=n("#jqsshape"+t);this.group.removeChild(e[0])},getShapeAt:function(t,e,n){return t.id.substr(8)},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})}(document,Math),define("download",["jquery","laconic"],function(){!function(t){var e={_init:function(e){return this.each(function(){var n=t(this),i=t.extend({name:"swish-download",ext:"dat"},e),r=i.content_type,o=i.filename||"swish-download.dat",a=i.charset||"charset=UTF-8";(function(){return void 0!=t("<a>")[0].download})()&&r||(r="application/octet-stream");var s="data:"+r+";"+a+",";s+="base64"==a?i.data:encodeURIComponent(i.data),n.attr("download",o),n.attr("href",s),n.attr("title","Download (use menu for save link as)"),n.text(o),n.addClass("btn btn-primary download"),n.append(t.el.span({class:"glyphicon glyphicon-download"}))})}};t.fn.downloader=function(n){return e[n]?e[n].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof n&&n?void t.error("Method "+n+" does not exist on jQuery.downloader"):e._init.apply(this,arguments)}}(jQuery)}),define("runner",["jquery","config","preferences","cm/lib/codemirror","form","prolog","links","modal","answer","laconic","sparkline","download","search"],function($,config,preferences,CodeMirror,form,prolog,links,modal){function glyphButton(t,e){return $.el.a({href:"#",class:"close btn btn-link btn-sm",title:e},$.el.span({class:"glyphicon glyphicon-"+t}))}!function(t){var e={_init:function(e){return this.each(function(){var e=t(this),n={};n.stretch=t(t.el.div({class:"stretch"})),n.inner=t(t.el.div({class:"inner"})),e.append(function(){var n=t.el.span({class:"glyphicon glyphicon-menu-hamburger"});return form.widgets.dropdownButton(n,{divClass:"runners-menu btn-transparent",ulClass:"pull-right",client:e,actions:{"Collapse all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!0)},"Expand all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!1)},"Stop all":function(){this.find(".prolog-runner").prologRunner("stop")},Clear:function(){this.prologRunners("clear")}}})}()),e.append(n.stretch),e.append(n.inner),e.on("pane.resize",function(){e.prologRunners("scrollToBottom",!0)}),e.on("scroll-to-bottom",function(t,n){e.prologRunners("scrollToBottom",n)}),e.data("prologRunners",n)})},run:function(e){var n=this.data("prologRunners");e.iconifyLast&&this.prologRunners("iconifyLast");var i=t.el.div({class:"prolog-runner"});return n.inner.append(i),t(i).prologRunner(e),this.trigger("scroll-to-bottom"),this},clear:function(){this.find(".prolog-runner").prologRunner("close")},iconifyLast:function(){var e=t(this.inner).children().last();if(1==e.length){var n=e.prologRunner();n.alive()||n.toggleIconic(!0)}return this},scrollToBottom:function(e){return this.each(function(){var n=t(this),i=n.data("prologRunners"),r=i.inner.height(),o=n.height()-r-4-2;(o>0||!0!==e)&&(i.stretch.height(o>0?o:0),n.scrollTop(r))}),this}};t.fn.prologRunners=function(n){return e[n]?e[n].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof n&&n?void t.error("Method "+n+" does not exist on jQuery.prologRunners"):e._init.apply(this,arguments)}}(jQuery),function($){function RS(t){return $(t).closest(".prolog-runners")}function addAnswer(t,e){return t.find(".runner-results").append(e),this}function aliveState(t){switch(t){case"running":case"wait-next":case"wait-input":case"wait-debug":return!0;default:return!1}}function answerTable(t){var e=[{class:"projection"}];for(i=0;i<t.length;i++)e.push($.el.th({class:"pl-pvar"},t[i]));return e.push($.el.th({class:"answer-nth"},"")),$.el.table({class:"prolog-answers"},$.el.tbody($.el.tr.apply(this,e)))}function runScripts(elem){var scripts=[];if(elem=$(elem),elem.find("script").each(function(){"text/javascript"==(this.getAttribute("type")||"text/javascript")&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(node){"+scripts.join("\n")+"})",node=new Node({node:elem[0]});try{eval(script)(node)}catch(t){alert(t)}}}function Node(t){this.my_node=t.node}function breakpoints(t){var e=t.data(pluginName);return $(t).parents(".swish").swish("breakpoints",e.prolog.id)}function registerSources(t){var e=t.options.runner,n=e.data(pluginName);n.query.editor&&$(n.query.editor).prologEditor("pengine",{add:t.id})}function handleCreate(){var t=this.pengine.options.runner,e=t.data(pluginName);if(void 0==e)this.pengine.destroy();else{var n,i=$.extend({},e.screen),r=config.swish.residuals_var||"Residuals",o=config.swish.permahash_var;o=o?", "+o:"",registerSources(this.pengine),(n=breakpoints(t))&&(i.breakpoints=Pengine.stringify(n)),e.chunk&&(i.chunk=e.chunk),this.pengine.ask("'$swish wrapper'((\n"+termNoFullStop(e.query.query)+"\n), ["+r+o+"])",i),t.prologRunner("setState","running")}}function handleSuccess(){var t=this.pengine.options.runner;if(void 0==t.data(pluginName))this.pengine.destroy();else{for(var e=0;e<this.data.length;e++){var n=this.data[e];this.projection&&(n.projection=this.projection),t.prologRunner("renderAnswer",n)}this.time>.1&&addAnswer(t,$.el.div({class:"cputime"},$.el.span(this.time.toFixed(3)," seconds cpu time"))),t.prologRunner("setState",this.more?"wait-next":"true")}}function handleFailure(){var t=this.pengine.options.runner;addAnswer(t,$.el.span({class:"prolog-false"},"false")),t.prologRunner("setState","false")}function handleStop(){this.pengine.options.runner.prologRunner("setState","stopped")}function handlePrompt(){var t=this.pengine.options.runner,e=t.data("prologRunner"),n=this.data||"Please enter a Prolog term";if(e.wait_for="term","object"==typeof n){if("trace"==n.type)return t.prologRunner("trace",this);if("form"==n.type)return t.prologRunner("form",this);if("jQuery"==n.type)return t.prologRunner("jQuery",this);"console"==n.type?(n=n.prompt||"console> ",e.wait_for="line"):n=JSON.stringify(n)}t.prologRunner("setPrompt",n),t.prologRunner("setState","wait-input")}function clickableLocations(t,e){var n=/pengine:\/\/[-0-9a-f]{36}\/src:(\d+)/;return t.replace(n,function(t){return"<a class='goto-error' title='Goto location'><span class='glyphicon glyphicon-hand-right'></span> <b>line <span class='line'>"+t.match(n)[1]+"</span></b></a>"})}function gotoError(t){var e=$(t.target).closest("a.goto-error"),n=$(t.target).closest(".error-context"),i=n.data("error_context");if(e[0]){var r=parseInt(e.find("span.line").text()),o=e.find("span.file").text();return t.preventDefault(),o?n.closest("body.swish").swish("playFile",{file:o,line:r}):$(i.editor).prologEditor("gotoLine",r),!1}i.location.file?n.closest("body.swish").swish("playFile",i.location):$(i.editor).prologEditor("gotoLine",i.location.line)}function handleOutput(t){function e(){var e=a.file+":"+a.line+":";a.ch&&(e+=a.ch+":"),e+="\\s*",t.data=clickableLocations(t.data.replace(new RegExp(e,"g"),""),r.editor),o=n.prologRunner("outputHTML",t.data),$(o).addClass("error-context"),$(o).append($.el.span({class:"glyphicon glyphicon-hand-right"})),$(o).attr("title","Error in program.  Click to show in context"),$(o).on("click",gotoError),$(o).data("error_context",r)}var n=t.pengine.options.runner,i=n.data(pluginName);if(i){if("string"==typeof t.data){var r={editor:i.query.editor};if(t.data=t.data.replace(/'[-0-9a-f]{36}':/g,""),t.location){var o,a=t.location;if(a.file.startsWith("swish://")){var s=a.file.slice("swish://".length);r.location={file:s,line:a.line},e()}else a.file.startsWith("pengine://")&&(r.location={line:a.line},e(i.query.editor));registerSources(t.pengine),t.error_context=r,t.error_handler=gotoError,$(".swish-event-receiver").trigger("source-error",t)}else{var o=n.prologRunner("outputHTML",clickableLocations(t.data,r.editor));$(o).on("click",gotoError),$(o).data("error_context",r)}}else"object"==typeof t.data?n.prologRunner(t.data.action,t.data):console.log(t.data);n.trigger("scroll-to-bottom")}}function handleError(){var t=this.pengine.options.runner;"too_many_pengines"==this.code?this.message="Too many open queries.  Please complete some\nqueries by using |Next|, |Stop| or by\nclosing some queries.":"string"==typeof this.data?this.message=this.data.replace(new RegExp("'"+this.pengine.id+"':","g"),""):this.message="Unknown error",t.prologRunner("error",this),t.prologRunner("setState","error")}function handleAbort(){var t=this.pengine.options.runner;t.data("prologRunner")?(t.prologRunner("error","** Execution aborted **"),t.prologRunner("setState","aborted")):this.pengine.destroy()}function handlePing(){this.pengine.options.runner.prologRunner("ping",this.data)}function answerHasOutput(t){return t.variables.length>0||t.residuals}function termNoFullStop(t){return String($.trim(t)).replace(/\.$/,"")}var pluginName="prologRunner",keyBindings={59:"next",186:"next",32:"next",190:"stop",13:"stop",65:"stopOrAbort",27:"stopOrAbort",46:"close",112:"help"},methods={_init:function(t){return this.each(function(){function e(t,e,i,r){var o=$.el.button({title:e,class:"rtb-"+i},$.el.span({class:"glyphicon glyphicon-"+t}));return $(o).on("click",function(){n.prologRunner(i)}),0==r&&$(o).hide(),o}var n=$(this),i={};if(n.addClass("prolog-runner panel panel-default"),t.tabled&&n.addClass("tabled"),0!=t.title){var r=$.el.span({class:"query cm-s-prolog"});CodeMirror.runMode(t.query,"prolog",r),n.append($.el.div({class:"runner-title panel-heading"},e("remove-circle","Close","close"),e("minus","Iconify","toggleIconic"),e("download","Download CSV","downloadCSV"),e("link","Permalink","permalink",!1),function(){var t=$.el.span({class:"runner-state show-state idle"});return form.widgets.dropdownButton(t)}(),r,$.el.br({clear:"all"})))}else n.append($.el.div({class:"runner-title runner-button-group"},e("remove-circle","Close","close"),e("minus","Iconify","toggleIconic"),e("download","Download CSV","downloadCSV"),e("link","Permalink","permalink",!1)));return t.chunk&&(i.chunk=t.chunk),n.append($.el.div({class:"runner-results panel-body"})),n.append(function(){function t(){n.prologRunner("next",1)}function e(){n.prologRunner("next",10)}function r(){n.prologRunner("next",100)}function o(){n.prologRunner("next",1e3)}function a(){i.prolog.stop()}function s(){i.prolog.abort()}function l(t,e){var n=$.el.button(e);return $(n).on("click",t),n}var c=function(){var t=$.el.input({class:"prolog-input"}),e=$.el.button("Send");return $(t).keypress(function(e){if(13==e.which&&n.prologRunner("respond",$(t).val()))return $(t).val(""),e.preventDefault(),!1;"Esc"!=e.key&&e.stopPropagation()}),$(e).on("click",function(){n.prologRunner("respond",$(t).val())}),{input:t,button:e}}();return $.el.div({class:"controller show-state"},$.el.span({class:"running"},l(s,"Abort")),$.el.span({class:"wait-next"},l(t,"Next"),l(e,"10"),l(r,"100"),l(o,"1,000")," ",l(a,"Stop")),$.el.span({class:"wait-input"},l(s,"Abort"),c.button,$.el.span(c.input)),function(){return $.el.span({class:"sparklines"},"")}())}()),n.data("prologRunner",i),n.prologRunner("populateActionMenu"),n.keydown(function(t){"wait-input"==n.prologRunner("getState")||t.ctrlKey||t.altKey||keyBindings[t.which]&&(t.preventDefault(),n.prologRunner(keyBindings[t.which]))}),n.on("click","a",links.followLink),i.savedFocus=document.activeElement,n.attr("tabindex",-1),n.focus(),i.query=t,i.answers=0,n.prologRunner("setScreenDimensions"),require([config.http.locations.pengines+"/pengines.js"],function(){i.prolog=new Pengine({server:config.http.locations.pengines,runner:n,application:"swish",src:t.source,destroy:!1,format:"json-html",oncreate:handleCreate,onsuccess:handleSuccess,onfailure:handleFailure,onstop:handleStop,onprompt:handlePrompt,onoutput:handleOutput,onping:handlePing,onerror:handleError,onabort:handleAbort}),i.prolog.state="idle",config.swish.ping&&void 0!=i.prolog.ping&&i.prolog.ping(1e3*config.swish.ping)}),this})},setScreenDimensions:function(){var t,e,n=this.data(pluginName),i=$.el.pre({class:"measure"},"xxxxxxxxxx"),r=this.width();e=this.closest(".prolog-runners"),0==e.length&&(e=this.closest(".nb-view")),e.length&&(t=e.height()),this.append(i);var o=$(i).width()/10,a=$(i).height();$(i).remove(),n.screen={width:r,cols:Math.floor(r/o)},void 0!==t&&(n.screen.height=t,n.screen.rows=Math.floor(t/a))},renderAnswer:function(t){var e=this.data("prologRunner"),n=++e.answers%2==0,i=function(t){for(var e={},n=t.variables,i=t.projection,r=0;r<n.length;r++)for(var o=n[r].variables,a=0;a<o.length;a++)if(o[a].startsWith("_swish__")){var s=o[a].replace("_swish__","");e[s]=n[r].value,n.splice(r,1),r--}if(i)for(var r=0;r<i.length;r++)i[r].startsWith("_swish__")&&(i.splice(r,1),r--);return e}(t);if(i.permahash&&(e.permahash=$(i.permahash).text().replace(/'/g,""),this.find(".rtb-permalink").show({duration:400})),e.query.tabled){if(1!=e.answers)return t.projection=e.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this;if(t.projection&&t.projection.length>0){var r=answerTable(t.projection);return addAnswer(this,r),e.table=r,e.projection=t.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this}}var o=$.el.div({class:"answer "+(n?"even":"odd")},$.el.span({class:"answer-no"},e.answers));addAnswer(this,o),$(o).prologAnswer(t)},outputHTML:function(t){var e=$.el.span({class:"output"});return addAnswer(this,e),e.innerHTML=t,runScripts(e),e},downloadButton:function(t){var e=$.el.a({class:"download"});addAnswer(this,e),$(e).downloader(t)},syntaxError:function(t){var e=this.data(pluginName);return t.data='<pre class="output msg-error">'+t.message+"</pre>",t.location.file=!0,$(e.query.query_editor).prologEditor("highlightError",t),this},error:function(t){var e;if("object"==typeof t){if("died"==t.code)return addAnswer(this,$.el.div({class:"RIP",title:"Remote pengine timed out"})),this;if("syntax_error"==t.code){var n=t.message.match(/^HTTP:DATA:(\d+):(\d+):\s*(.*)/);n&&4==n.length&&(this.prologRunner("syntaxError",{location:{line:parseInt(n[1])-1,ch:parseInt(n[2])},message:n[3]}),e="Cannot run query due to a syntax error (check query window)")}e||(e=t.message)}else e=t;return addAnswer(this,$.el.pre({class:"prolog-message msg-error"},e)),this},trace:function(t){function e(e,n,i){var r=$.el.button({class:n,title:e},$.el.span(e));return $(r).on("click",function(e){void 0!==i&&(n+="("+Pengine.stringify(i(e))+")"),t.pengine.respond(n),$(e.target).parent().remove()}),r}var n=$.el.span({class:"goal"}),i=t.data;$(n).html(i.goal),addAnswer(this,$.el.div({class:"prolog-trace"},$.el.span({class:"depth",style:"width:"+(5*i.depth-1)+"px"}," "),$.el.span({class:"port "+i.port},function(t){return t.charAt(0).toUpperCase()+t.slice(1)}(i.port),":"),n)),"exception"==i.port&&addAnswer(this,$.el.div({class:"prolog-exception"
+},i.exception.message)),addAnswer(this,$.el.div({class:"trace-buttons"},e("Continue","nodebug",function(t){return breakpoints($(t.target).closest(".prolog-runner"))}),e("Step into","continue"),e("Step over","skip"),e("Step out","up"),e("Retry","retry"),e("Abort","abort"))),this.closest(".swish").find(".tabbed").trigger("trace-location",i),this.prologRunner("setState","wait-debug")},setPrompt:function(t){this.find(".controller input").attr("placeholder",t)},jQuery:function(t){var e,n=t.data;if("string"==typeof n.selector)e=$(n.selector);else if("object"==typeof n.selector){switch(n.selector.root){case"this":root=this;break;case"swish":root=this.closest(".swish")}e=""==n.selector.sub?root:root.find(n.selector.sub)}console.log(e);var i=e[n.method].apply(e,n.arguments);console.log(i),t.pengine.respond(Pengine.stringify(i))},form:function(t){var e=this.data("prologRunner");modal.show({title:"Please enter parameters",body:function(){this.html(t.data.html),this.find("[data-search-in]").search({search:!1}),this.on("click","button[data-action]",function(t){var n=$(t.target).closest("button"),i=n.data("action");if("run"==i){var r=$(t.target).closest("form"),o=form.serializeAsObject(r,!0),a=Pengine.stringify(o);e.prolog.respond(a)}else"cancel"==i&&e.prolog.respond("cancel");return n.closest(".modal").modal("hide"),t.preventDefault(),!1})}})},respond:function(t){var e=this.data("prologRunner");if("term"==e.wait_for){if(s=termNoFullStop(t),""==s)return null}else s=Pengine.stringify(t+"\n");return addAnswer(this,$.el.div({class:"response"},t)),e.prolog.respond(s),this},stop:function(){return this.each(function(){$(this).data("prologRunner").prolog.stop()})},stopOrAbort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");switch(t.prologRunner("getState")){case"running":case"wait-input":e.prolog.abort();break;case"wait-next":e.prolog.stop()}})},next:function(t){return this.each(function(){var e=$(this);e.data("prologRunner").prolog.next(t),e.prologRunner("setState","running")})},abort:function(){return this.each(function(){$(this).data("prologRunner").prolog.abort()})},close:function(){if(this.length){var t=this.parent();this.each(function(){var t=$(this),e=t.data("prologRunner");t.prologRunner("alive")&&($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.abort(),t.prologRunner("setState","aborted"))}),this.remove(),t.trigger("scroll-to-bottom",!0)}return this},help:function(){$(".swish-event-receiver").trigger("help",{file:"runner.html"})},toggleIconic:function(t){return void 0==t?this.toggleClass("iconic"):t?this.addClass("iconic"):this.removeClass("iconic"),this.trigger("scroll-to-bottom",!0),this},populateActionMenu:function(t){var e=this.find(".runner-title .btn-group.dropdown");return t=$.extend({"Re-run":function(){console.log("Re-Run ",this)}},t),form.widgets.populateMenu(e,this,t),this},downloadCSV:function(t){var e=this.data("prologRunner"),n=termNoFullStop(e.query.query);return prolog.downloadCSV(n,e.query.source,t),this},permalink:function(){function t(){this.append($.el.form({class:"form-horizontal"},form.fields.hidden("identity",r.identity),r.identity?void 0:form.fields.hidden("avatar",r.avatar),form.fields.link(i),form.fields.fileName(null,!1),form.fields.title(),form.fields.description(),form.fields.tags([]),form.fields.author(o,r.identity),form.fields.buttons({label:"Save permalink",action:function(t,n){return e.prologRunner("save_permalink",n),!1}})))}var e=this,n=this.data("prologRunner");if(n.permahash){var i=config.http.locations.permalink+n.permahash;i=location.protocol+"//"+location.host+i;var r=$("#login").login("get_profile",["display_name","avatar","email","identity"]),o=r.display_name;form.showDialog({title:"Save permalink",body:t})}else modal.alert("No permahash");return this},save_permalink:function(t){var e=this,n=this.data("prologRunner"),i={data:n.permahash,type:"lnk",meta:t};return delete i.meta.link,$.ajax({url:config.http.locations.web_storage,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(i),success:function(t){t.error?modal.alert(errorString("Could not save",t)):modal.feedback({html:"Saved",owner:e})},error:function(t,e,n){403==t.status?modal.alert("Permission denied.  Please try a different name"):alert("Save failed: "+e)}}),this},setState:function(t){var e=this.data("prologRunner");if(e){if(e.prolog.state!=t){var n=this.find(".show-state"),i=e.query;n.removeClass(e.prolog.state).addClass(t),e.prolog.state=t,!aliveState(t)&&e.savedFocus?($(e.savedFocus).focus(),e.savedFocus=null):"wait-input"==t&&this.find("input").focus(),"true"==t&&i.success&&i.success.call(this,e.prolog),!aliveState(t)&&i.complete&&i.complete.call(this,e.prolog)}RS(this);if(aliveState(t))if("wait-next"==t||"true"==t){var r=this;setTimeout(function(){r.trigger("scroll-to-bottom")},100)}else this.trigger("scroll-to-bottom");else{var r=this;$(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.destroy(),setTimeout(function(){r.trigger("scroll-to-bottom")},100)}return this}},getState:function(){var t=this.data("prologRunner");return t.prolog?t.prolog.state:"idle"},alive:function(){return aliveState(this.prologRunner("getState"))},ping:function(t){function e(t,e){var n=Math.round(Math.pow(10,e)/1e4*t);return function(t){t=t.toString();for(var e=/(-?\d+)(\d{3})/;e.test(t);)t=t.replace(e,"$1,$2");return t}(n)}var n=this.data("prologRunner");if(n&&n.prolog&&"running"==n.prolog.state){var r=this.find(".sparklines"),o=["global","local","trail"],a=["red","blue","green"],s=["Global ","Local ","Trail "];for(n.stacks||(n.stacks={global:{usage:[]},local:{usage:[]},trail:{usage:[]}}),i=0;i<o.length;i++){var l=o[i],c=t.stacks[l].limit,u=t.stacks[l].usage,h=Math.log10(u/c*1e4);n.stacks[l].limit=c,n.stacks[l].usage.length>=10&&(n.stacks[l].usage=n.stacks[l].usage.slice(1)),n.stacks[l].usage.push(h),r.sparkline(n.stacks[l].usage,{height:"2em",composite:i>0,chartRangeMin:0,chartRangeMax:4,lineColor:a[i],tooltipPrefix:s[i],tooltipSuffix:" bytes",tooltipChartTitle:0==i?"Stack usage":void 0,numberFormatter:function(t){return e(c,t)}})}}}},node_id=1;Node.prototype.node=function(){return $(this.my_node)},Node.prototype.unique_id=function(){return this.uid||(this.uid=node_id++),this.uid},$.fn.prologRunner=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery)}),define("gitty",["jquery","config","form","modal","laconic"],function(t,e,n,i){function r(e,n){function i(t){(e[t]||n[t])&&e[t]!=n[t]&&(r[t]={from:e[t],to:n[t]})}var r={};return i("author"),i("title"),i("data"),i("public"),i("example"),i("name"),(d=a(e.tags,n.tags))&&(r.tags=d),t.isEmptyObject(r)?null:r}function o(e,n){var i={};for(var r in e)if(e.hasOwnProperty(r)){switch(typeof e[r]){case"object":if(t.isArray(e[r])&&!a(e[r],n[r]))continue;break;case"string":case"boolean":if(n[r]==e[r])continue}i[r]=e[r]}return i}function a(e,n){function i(t,e){for(var n=[],i=0;i<e.length;i++)t.indexOf(e[i])<0&&n.push(e[i]);return n}var r,o={};return e=e||[],n=n||[],(r=i(e,n)).length>0&&(o.added=r),(r=i(n,e)).length>0&&(o.deleted=r),t.isEmptyObject(o)?null:o}return function(t){var o={_init:function(e){return this.each(function(){function n(e,n,i,r){var o={role:"presentation"},a=[];return n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" ")),t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e))}var i,r=t(this),o=r.data("gitty")||{},a=e.meta;o.commits=[],o.commits[a.commit]=a,o.commit=a.commit,o.editor=e.editor,henabled=!Boolean(a.previous),i=t(t.el.div({class:"tab-content"})),r.append(t.el.ul({class:"nav nav-tabs"},n("Meta data",!0,"gitty-meta-data"),n("History",!1,"gitty-history",henabled),n("Changes",!1,"gitty-diff",henabled))),r.append(i),i.append(t.el.div({class:"tab-pane fade in active gitty-meta-data",id:"gitty-meta-data"})),r.find('[href="#gitty-meta-data"]').on("show.bs.tab",function(t){r.gitty("showMetaData")}),i.append(t.el.div({class:"tab-pane fade gitty-history",id:"gitty-history"})),r.find('[href="#gitty-history"]').on("show.bs.tab",function(t){r.gitty("showHistory")}),i.append(t.el.div({class:"tab-pane fade gitty-diff",id:"gitty-diff"})),r.find('[href="#gitty-diff"]').on("show.bs.tab",function(t){r.gitty("showDiff")}),r.data("gitty",o),r.gitty("showMetaData")})},title:function(e){var n=t.el.span("File ",t.el.span({class:"filename"},e.name));return"HEAD"!=e.symbolic&&e.commit&&t(n).append("@",t.el.span({class:"sha1 abbrev"},e.commit.substring(0,7))),n},showMetaData:function(){return this.each(function(){var e,i=t(this),r=i.data("gitty"),o=i.find(".gitty-meta-data"),a=r.commits[r.commit];r.metaData!=r.commit&&(r.metaData=r.commit,o.html(""),e=t.el.form({class:"form-horizontal"},n.fields.fileName(a.name,a.public,a.example,!0),n.fields.title(a.title),n.fields.author(a.author),n.fields.date(a.time,"Date","date"),n.fields.tags(a.tags)),"HEAD"==a.symbolic&&t(e).append(n.fields.buttons({label:"Update meta data",action:function(t,e){return r.editor.storage("save",e,"only-meta-data"),!1}})),o.append(e))})},showHistory:function(){return this.each(function(){var r,o=t(this),a=o.data("gitty"),s=o.find(".gitty-history"),l=a.commits[a.commit];if(!a.history){s.html(""),s.append(t.el.table({class:"table table-striped table-condensed gitty-history","data-click-to-select":!0,"data-single-select":!0},t.el.tr(t.el.th("Comment"),t.el.th("Date"),t.el.th("User"),t.el.th("Changed")),t.el.tbody())),r=n.widgets.glyphIconButton("play",{title:"Open the highlighted version in SWISH",class:"btn-primary"}),s.append(r),t(r).on("click",function(e){var n=o.find("tr.success");if(1==n.length){var i=n.data("commit");"HEAD"==a.commits[i].symbolic?file=a.commits[i].name:file=i,o.parents(".swish").swish("playFile",file),t("#ajaxModal").modal("hide")}return!1});var c=e.http.locations.web_storage+encodeURI(l.name);t.ajax({url:c,contentType:"application/json",type:"GET",data:{format:"history",depth:6,to:a.commit},success:function(t){o.gitty("fillHistoryTable",t),a.history=a.commit},error:function(t){i.ajaxError(jqXHR)}})}})},fillHistoryTable:function(e){for(var n=this,i=this.data("gitty"),o=this.find(".table.gitty-history tbody"),a=0;a<e.length;a++){var s=e[a];i.commits[s.commit]||(i.commits[s.commit]=s)}for(var a=0;a<e.length;a++){var l,s=e[a];if(a==e.length-1&&s.previous&&!i.commit[s.previous])break;var c={"data-commit":s.commit};i.commit==s.commit&&(c.class="success"),l=t.el.tr(c,t.el.td({class:"commit-message"},s.commit_message||"No comment"),t.el.td({class:"date"},new Date(1e3*s.time).toLocaleString()),t.el.td({class:"author"},s.author||"No author"),t.el.td({class:"changes"},function(e){var n,o,a=t.el.span();if(e.previous){if((n=i.commits[e.previous])&&(o=r(e,n))){var s=0;for(var l in o)if(o.hasOwnProperty(l)){var c="name"==l?"forked "+n.name:l;t(a).append(0==s++?void 0:", ",t.el.span({class:"change-type"},c))}}}else t(a).append("initial");return a}(s))),o.append(l)}o.on("click","tr",function(e){var i=t(e.target).parents("tr"),r=i.data("commit");n.gitty("setCommit",r)})},setCommit:function(t){var e=this.data("gitty"),n=this.parent(".modal-content").find("h2");return n.html(""),n.append(this.gitty("title",e.commits[t])),this.find("tr.success").removeClass("success"),this.find("tr[data-commit="+t+"]").addClass("success"),e.commit=t,this},showDiff:function(){return this.each(function(){var n=t(this),r=n.data("gitty");if(r.diff!=r.commit){n.find(".gitty-diff").html("");var o=e.http.locations.web_storage+encodeURI(r.commit);t.ajax({url:o,contentType:"application/json",type:"GET",data:{format:"diff"},success:function(t){n.gitty("fillDiff",t),r.diff=r.commit},error:function(t){i.ajaxError(t)}})}})},fillDiff:function(t){t.tags&&this.gitty("diffTags",t.tags),t.data&&this.gitty("udiffData",t.data)},diffTags:function(e){function n(e,n){o.append(t.el.span({class:"diff-tag "+n},e))}var i=this.find(".gitty-diff"),r=t(t.el.div({class:"diff-tags"},t.el.label("Tags"))),o=t(t.el.span({class:"diff-tags"}));if(r.append(o),e.deleted.length){o.append("Removed: ");for(var a=0;a<e.deleted.length;a++)n(e.deleted[a],"deleted")}if(e.added.length){o.append(e.deleted.length?", ":"","Added: ");for(var a=0;a<e.added.length;a++)n(e.added[a],"added")}return i.append(r),this},udiffData:function(e){for(var n=this.find(".gitty-diff"),i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=0;o<i.length;o++){var a=i[o],s={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};r.append(t.el.span({class:s[a.charAt(0)]},a),t.el.br())}n.append(r)}};t.fn.gitty=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.gitty"):o._init.apply(this,arguments)}}(jQuery),{diffMeta:r,reduceMeta:o,diffTags:a}});var __whitespace={" ":!0,"\t":!0,"\n":!0,"\f":!0,"\r":!0},difflib={defaultJunkFunction:function(t){return __whitespace.hasOwnProperty(t)},stripLinebreaks:function(t){return t.replace(/^[\n\r]*|[\n\r]*$/g,"")},stringAsLines:function(t){for(var e=t.indexOf("\n"),n=t.indexOf("\r"),i=e>-1&&n>-1||n<0?"\n":"\r",r=t.split(i),o=0;o<r.length;o++)r[o]=difflib.stripLinebreaks(r[o]);return r},__reduce:function(t,e,n){if(null!=n)var i=n,r=0;else{if(!e)return null;var i=e[0],r=1}for(;r<e.length;r++)i=t(i,e[r]);return i},__ntuplecomp:function(t,e){for(var n=Math.max(t.length,e.length),i=0;i<n;i++){if(t[i]<e[i])return-1;if(t[i]>e[i])return 1}return t.length==e.length?0:t.length<e.length?-1:1},__calculate_ratio:function(t,e){return e?2*t/e:1},__isindict:function(t){return function(e){return t.hasOwnProperty(e)}},__dictget:function(t,e,n){return t.hasOwnProperty(e)?t[e]:n},SequenceMatcher:function(t,e,n){this.set_seqs=function(t,e){this.set_seq1(t),this.set_seq2(e)},this.set_seq1=function(t){t!=this.a&&(this.a=t,this.matching_blocks=this.opcodes=null)},this.set_seq2=function(t){t!=this.b&&(this.b=t,this.matching_blocks=this.opcodes=this.fullbcount=null,this.__chain_b())},this.__chain_b=function(){for(var t=this.b,e=t.length,n=this.b2j={},i={},r=0;r<t.length;r++){var o=t[r];if(n.hasOwnProperty(o)){var a=n[o];e>=200&&100*a.length>e?(i[o]=1,delete n[o]):a.push(r)}else n[o]=[r]}for(var o in i)i.hasOwnProperty(o)&&delete n[o];var s=this.isjunk,l={};if(s){for(var o in i)i.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete i[o]);for(var o in n)n.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete n[o])}this.isbjunk=difflib.__isindict(l),this.isbpopular=difflib.__isindict(i)},this.find_longest_match=function(t,e,n,i){for(var r,o=this.a,a=this.b,s=this.b2j,l=this.isbjunk,c=t,u=n,h=0,d=null,f={},p=[],g=t;g<e;g++){var m={},v=difflib.__dictget(s,o[g],p);for(var y in v)if(v.hasOwnProperty(y)){if((d=v[y])<n)continue;if(d>=i)break;m[d]=r=difflib.__dictget(f,d-1,0)+1,r>h&&(c=g-r+1,u=d-r+1,h=r)}f=m}for(;c>t&&u>n&&!l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&!l(a[u+h])&&o[c+h]==a[u+h];)h++;for(;c>t&&u>n&&l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&l(a[u+h])&&o[c+h]==a[u+h];)h++;return[c,u,h]},this.get_matching_blocks=function(){if(null!=this.matching_blocks)return this.matching_blocks;for(var t,e,n,i,r,o,a,s,l,c=this.a.length,u=this.b.length,h=[[0,c,0,u]],d=[];h.length;)r=h.pop(),t=r[0],e=r[1],n=r[2],i=r[3],l=this.find_longest_match(t,e,n,i),o=l[0],a=l[1],(s=l[2])&&(d.push(l),t<o&&n<a&&h.push([t,o,n,a]),o+s<e&&a+s<i&&h.push([o+s,e,a+s,i]));d.sort(difflib.__ntuplecomp);var f,p,g,m=0,v=0,y=0,x=0,b=[];for(var w in d)d.hasOwnProperty(w)&&(x=d[w],f=x[0],p=x[1],g=x[2],m+y==f&&v+y==p?y+=g:(y&&b.push([m,v,y]),m=f,v=p,y=g));return y&&b.push([m,v,y]),b.push([c,u,0]),this.matching_blocks=b,this.matching_blocks},this.get_opcodes=function(){if(null!=this.opcodes)return this.opcodes;var t=0,e=0,n=[];this.opcodes=n;var i,r,o,a,s,l=this.get_matching_blocks();for(var c in l)l.hasOwnProperty(c)&&(i=l[c],r=i[0],o=i[1],a=i[2],s="",t<r&&e<o?s="replace":t<r?s="delete":e<o&&(s="insert"),s&&n.push([s,t,r,e,o]),t=r+a,e=o+a,a&&n.push(["equal",r,t,o,e]));return n},this.get_grouped_opcodes=function(t){t||(t=3);var e=this.get_opcodes();e||(e=[["equal",0,1,0,1]]);var n,i,r,o,a,s;"equal"==e[0][0]&&(n=e[0],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[0]=[i,Math.max(r,o-t),o,Math.max(a,s-t),s]),"equal"==e[e.length-1][0]&&(n=e[e.length-1],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[e.length-1]=[i,r,Math.min(o,r+t),a,Math.min(s,a+t)]);var l=t+t,c=[],u=[];for(var h in e)e.hasOwnProperty(h)&&(n=e[h],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],"equal"==i&&o-r>l&&(c.push([i,r,Math.min(o,r+t),a,Math.min(s,a+t)]),u.push(c),c=[],r=Math.max(r,o-t),a=Math.max(a,s-t)),c.push([i,r,o,a,s]));return!c||1==c.length&&"equal"==c[0][0]||u.push(c),u},this.ratio=function(){return matches=difflib.__reduce(function(t,e){return t+e[e.length-1]},this.get_matching_blocks(),0),difflib.__calculate_ratio(matches,this.a.length+this.b.length)},this.quick_ratio=function(){var t,e;if(null==this.fullbcount){this.fullbcount=t={};for(var n=0;n<this.b.length;n++)e=this.b[n],t[e]=difflib.__dictget(t,e,0)+1}t=this.fullbcount;for(var i={},r=difflib.__isindict(i),o=numb=0,n=0;n<this.a.length;n++)e=this.a[n],r(e)?numb=i[e]:numb=difflib.__dictget(t,e,0),i[e]=numb-1,numb>0&&o++;return difflib.__calculate_ratio(o,this.a.length+this.b.length)},this.real_quick_ratio=function(){var t=this.a.length,e=this.b.length;return _calculate_ratio(Math.min(t,e),t+e)},this.isjunk=n||difflib.defaultJunkFunction,this.a=this.b=null,this.set_seqs(t,e)}};define("difflib",function(){}),diffview={buildView:function(t){function e(t,e){var n=document.createElement(t);return n.className=e,n}function n(t,e){var n=document.createElement(t);return n.appendChild(document.createTextNode(e)),n}function i(t,e,n){var i=document.createElement(t);return i.className=e,i.appendChild(document.createTextNode(n)),i}function r(t,r,o,a,s){return r<o?(t.appendChild(n("th",(r+1).toString())),t.appendChild(i("td",s,a[r].replace(/\t/g,"    "))),r+1):(t.appendChild(document.createElement("th")),t.appendChild(e("td","empty")),r)}function o(t,e,r,o,a){t.appendChild(n("th",null==e?"":(e+1).toString())),t.appendChild(n("th",null==r?"":(r+1).toString())),t.appendChild(i("td",a,o[null!=e?e:r].replace(/\t/g,"    ")))}var a=t.baseTextLines,s=t.newTextLines,l=t.opcodes,c=t.baseTextName?t.baseTextName:"Base Text",u=t.newTextName?t.newTextName:"New Text",h=t.contextSize,d=0==t.viewType||1==t.viewType?t.viewType:0;if(null==a)throw"Cannot build diff view; baseTextLines is not defined.";if(null==s)throw"Cannot build diff view; newTextLines is not defined.";if(!l)throw"Canno build diff view; opcodes is not defined.";var f=document.createElement("thead"),p=document.createElement("tr");f.appendChild(p),d?(p.appendChild(document.createElement("th")),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c+" vs. "+u))):(p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c)),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",u))),f=[f];for(var g,m=[],v=0;v<l.length;v++){code=l[v],change=code[0];for(var y=code[1],x=code[2],b=code[3],w=code[4],_=Math.max(x-y,w-b),S=[],C=[],T=0;T<_;T++){if(h&&l.length>1&&(v>0&&T==h||0==v&&0==T)&&"equal"==change){var k=_-(0==v?1:2)*h;if(k>1){if(S.push(p=document.createElement("tr")),y+=k,b+=k,T+=k-1,p.appendChild(n("th","...")),d||p.appendChild(i("td","skip","")),p.appendChild(n("th","...")),p.appendChild(i("td","skip","")),v+1==l.length)break;continue}}S.push(p=document.createElement("tr")),d?"insert"==change?o(p,null,b++,s,change):"replace"==change?(C.push(g=document.createElement("tr")),y<x&&o(p,y++,null,a,"delete"),b<w&&o(g,null,b++,s,"insert")):"delete"==change?o(p,y++,null,a,change):o(p,y++,b++,a,change):(y=r(p,y,x,a,change),b=r(p,b,w,s,change))}for(var T=0;T<S.length;T++)m.push(S[T]);for(var T=0;T<C.length;T++)m.push(C[T])}m.push(p=i("th","author","diff view generated by ")),p.setAttribute("colspan",d?3:4),p.appendChild(g=n("a","jsdifflib")),g.setAttribute("href","http://github.com/cemerick/jsdifflib"),f.push(p=document.createElement("tbody"));for(var v in m)m.hasOwnProperty(v)&&p.appendChild(m[v]);p=e("table","diff"+(d?" inlinediff":""));for(var v in f)f.hasOwnProperty(v)&&p.appendChild(f[v]);return p}},define("diffview",function(){}),define("diff",["jquery","difflib","diffview"],function(){!function(t){var e={_init:function(e){return this.each(function(){var n=difflib.stringAsLines(e.base),i=difflib.stringAsLines(e.head),r=new difflib.SequenceMatcher(n,i),o=r.get_opcodes(),a=void 0==e.contextSize?3:e.contextSize;this.appendChild(diffview.buildView({baseTextLines:n,newTextLines:i,opcodes:o,baseTextName:e.baseName||"Base text",newTextName:e.headName||"Current text",contextSize:a,viewType:t("inline").checked?1:0}))})}};t.fn.diff=function(n){return e[n]?e[n].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof n&&n?void t.error("Method "+n+" does not exist on jQuery.diff"):e._init.apply(this,arguments)}}(jQuery)}),define("storage",["jquery","config","modal","form","gitty","history","tabbed","utils","laconic","diff"],function(t,e,n,i,r,o,a,s){function l(t){return t?t.split(".").slice(0,-1).join("."):null}function c(e){if(e){for(var n=e.split("\n"),i=t(t.el.pre({class:"udiff"})),r=0;r<n.length;r++){var o=n[r],a={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};i.append(t.el.span({class:a[o.charAt(0)]},o),t.el.br())}return i}return t(t.el.div({class:"udiff"},"No changes"))}function u(e){function n(e,n){r.append(t.el.span({class:n},e),t.el.br())}for(var i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=null,a=0;a<i.length;a++){var s=i[a];"<<<<<<<"==s?(n(s,"edit-conflict-sep"),o="edit-conflict-me"):"edit-conflict-me"==o&&"======="==s?(n(s,"edit-conflict-sep"),o="edit-conflict-them"):"edit-conflict-them"==o&&">>>>>>>"==s?(n(s,"edit-conflict-sep"),o=null):o&&n(s,o)}return r}!function(t){function h(e,n){var i=t.el.table({class:"table table-striped"});t(i).append(t.el.tr(t.el.th("Path"),t.el.td(n.path))),t(i).append(t.el.tr(t.el.th("Modified"),t.el.td(new Date(1e3*n.last_modified).toLocaleString()))),t(i).append(t.el.tr(t.el.th("Loaded"),t.el.td(n.modified_since_loaded?"yes (modified)":n.loaded?"yes":"no"))),e.append(i)}function d(t,e){return"file_exists"==e.error?t+": file exists: "+e.file:JSON.stringify(e)}var f={typeName:"program",is_clean:!0,markClean:function(t){}},p={_init:function(e){return this.each(function(){function n(e,n){var i=t(e.target);if(i.hasClass("storage")&&i.is(":visible")){if("propagate"==i.storage.apply(i,Array.prototype.slice.call(arguments,1)))return}e.stopPropagation()}var i=t(this),r=t.extend({},f,e);i.data("storage",r),i.addClass("storage unloadable"),i.storage("update_tab_title"),i.on("save",function(t,e){n(t,"save",e)}),i.on("download",function(t){n(t,"download")}),i.on("fileInfo",function(t){n(t,"info")}),i.on("diff",function(t){n(t,"diff")}),i.on("revert",function(t){n(t,"revert")}),i.on("reload",function(t){n(t,"reload")}),i.on("chat-about-file",function(t){n(t,"chat")}),i.on("follow-file",function(t){n(t,"follow")}),i.on("activate-tab",function(t){}),i.on("data-is-clean",function(t,e){i.storage("markClean",e)}),i.on("fullscreen",function(t,e){e||i.storage("update_tab_title")}),i.on("unload",function(t,e){e.rc=i.storage("unload","beforeunload",t)}),i.storage("chat",(r.meta||{}).chat||"update")})},supportsType:function(t){var e=this.data("storage"),n=a.tabTypes[e.typeName];if("string"==typeof t&&(t={data:t}),t.meta&&t.meta.name||t.url){var i=t.meta&&t.meta.name?t.meta.name:t.url;if(a.type(i).typeName!=n.typeName)return!1}return!0},setSource:function(n){var i=this.data("storage");if("string"==typeof n&&(n={data:n}),this.storage("supportsType",n))return 0!=this.storage("unload","setSource")&&(n.meta?(i.file=n.meta.name,i.meta=n.meta,i.url=null,"HEAD"==n.meta.symbolic&&(n.url=e.http.locations.web_storage+n.meta.name)):(i.file=null,i.meta=null),i.url=n.url,i.st_type=n.st_type,i.chats=n.chats,i.setValue(n),i.cleanGeneration=i.changeGen(),i.cleanData=i.getValue(),i.cleanCheckpoint=n.cleanCheckpoint||"load",i.markClean(!0),this.storage("update_tab_title"),n.url||(n.url=e.http.locations.swish),n.noHistory||o.push({url:n.url,reason:"load"}),this.storage("chat",n.chat||(n.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),this)},is_clean:function(){var t=this.data("storage");return t.isClean(t.cleanGeneration)},setValue:function(t){var e=this.data("storage");return e.setValue(t),this.trigger("data-is-clean",e.isClean(e.cleanGeneration)),this},update_tab_title:function(e){return this.each(function(){var n=t(this),i=n.storage("docid");if("chats++"==e)n.tabbed("chats++",i);else{var r,o=n.data("storage"),c=o.file||o.url;c&&(r=a.type(c))||(r=a.tabTypes[o.typeName]);var u=l(s.basename(c))||r.label;i&&o.chats&&(o.chats.docid=i),n.tabbed("title",u,r.dataType),n.tabbed("chats",o.chats)}})},load:function(i){if(i){var r=this;this.data("storage");t.ajax({url:e.http.locations.web_storage+i,dataType:"text",success:function(t){r.storage("setSource",{data:t,meta:{name:i}})},error:function(t){n.ajaxError(jqXHR)}})}return this},revert:function(){var t=this.data("storage");return t.setValue(t.cleanData),t.cleanGeneration=t.changeGen(),t.markClean(!0),this},reload:function(i){var r=this,o=r.data("storage");i=i||o.file;var a=e.http.locations.web_storage+encodeURI(i);return t.ajax({url:a,type:"GET",data:{format:"json"},success:function(e){e.url=a,e.st_type="gitty",e.noHistory=!0,r.storage("setSource",e),t("#chat").trigger("send",{type:"reloaded",file:i,commit:e.meta.commit})},error:function(t){n.ajaxError(t)}}),this},save:function(i,s){var l,c=this.data("storage"),u=a.tabTypes[c.typeName],h=e.http.locations.web_storage,f="POST",p=this;if(("filesys"==c.st_type||"external"==c.st_type)&&c.url)return this.storage("saveURL");if("as"==i)return this.storage("saveAs"),this;if(!c.file||"only-meta-data"!=s&&(i&&i.default||i&&i.name!=c.file)||(h+=encodeURI(c.file),f="PUT"),"only-meta-data"==s){if(t.isEmptyObject(r.reduceMeta(i,c.meta)))return void alert("No change");l={update:"meta-data"}}else if("POST"==f)l={data:c.getValue(),type:u.dataType};else if(c.isClean(c.cleanGeneration)){if(null==r.diffTags(c.meta.tags,i.tags))return void alert("No change")}else l={data:c.getValue(),type:u.dataType};return i&&(l.meta=i),c.meta&&(l.previous=c.meta.commit),t.ajax({url:h,dataType:"json",contentType:"application/json",type:f,data:JSON.stringify(l),success:function(e){e.error?n.alert(d("Could not save",e)):(c.meta&&c.meta.example!=e.meta.example&&p.closest(".swish").trigger("examples-changed"),c.file=e.file,c.meta=e.meta,c.st_type="gitty",c.cleanGeneration=c.changeGen(),c.cleanData=c.getValue(),c.cleanCheckpoint="save",c.markClean(!0),n.feedback({html:"Saved",owner:p}),"POST"==f&&(c.chats={docid:p.storage("docid"),total:0}),p.storage("update_tab_title"),p.storage("chat",(c.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),o.push({url:e.url,reason:"save"}))},error:function(t,e,i){409==t.status?p.storage("resolveEditConflict",JSON.parse(t.responseText)):403==t.status?n.alert("Permission denied.  Please try a different name"):(alert('Save failed; click "ok" to try again'),p.storage("saveAs"))}}),this},saveAs:function(e){function n(){this.append(t.el.form({class:"form-horizontal"},i.fields.hidden("identity",d.identity),i.fields.hidden("default",s.default),i.fields.hidden("chat",s.chat),d.identity?void 0:i.fields.hidden("avatar",d.avatar),i.fields.fileName(u?null:o.file,s.public,s.example),i.fields.title(s.title),i.fields.author(f,d.identity),c?i.fields.commit_message():void 0,i.fields.tags(s.tags),i.fields.modify(p,r),i.fields.follow(d.email),i.fields.buttons({label:u?"Fork "+h.label:c?"Update "+h.label:"Save "+h.label,action:function(t,e){return l.storage("save",e),!1}})))}var r,o=this.data("storage"),s=o.meta||{},l=this,c=Boolean(o.file),u=o.meta&&"HEAD"!=s.symbolic&&!s.default,h=a.tabTypes[o.typeName],d=t("#login").login("get_profile",["display_name","avatar","email","identity"]),f=d.display_name,p=s.modify;return void 0===s.public&&(s.public=!0),d.identity?p||(p=["login","owner"]):p=["any","login","owner"],r=d.identity==s.identity||d.identity&&!(s.identity||s.user),e=e||{},i.showDialog({title:e.title?e.title:u?"Fork from "+s.commit.substring(0,7):c?"Save new version":"Save "+h.label+" as",body:n}),this},saveURL:function(){var e=this.data("storage"),i=e.getValue(),r=a.type(e.url)||{},o=this;return e.isClean(e.cleanGeneration)?(alert("No change"),this):(t.ajax({url:e.url,dataType:"json",contentType:r.contentType||"text/plain",type:"PUT",data:i,success:function(t){t.error?n.alert(d("Could not save",t)):(e.cleanGeneration=e.changeGen(),e.cleanData=e.getValue(),e.cleanCheckpoint="save",e.markClean(!0),n.feedback({html:"Saved",owner:o}))},error:function(t){if(403==t.status){var i=e.url;delete e.meta,delete e.st_type,delete e.url,o.storage("saveAs",{title:"<div class='warning'>Could not save to "+i+"</div> Save a copy as"})}else n.ajaxError(t)}}),this)},activate:function(){var t=this.data("storage");return t&&t.url&&o.push({url:t.url,reason:"activate"}),this},getState:function(e){var n={tabs:[]};return this.each(function(){var i,r=t(this),o=r.data("storage"),a=r.meta||{};if((o.file||o.url)&&o.isClean&&o.cleanGeneration){!a.name&&o.file&&(a.name=o.file);var s={file:a.name,st_type:o.st_type,url:o.url};r.storage("getActive")&&(s.active=!0),(i=r.storage("chatroom_size"))&&(s.chatroom=i),n.tabs.push(s),!e&&o.isClean(o.cleanGeneration)||(s.meta=a,s.data=o.getValue())}}),n},restoreLocal:function(t){var e,n=localStorage.getItem("$file$"+t);try{e=JSON.parse(n),"object"!=typeof e&&(e=void 0)}catch(t){e=void 0}e?this.storage("setSource",e):this.storage("reload",t)},resolveEditConflict:function(e){function n(){function n(e,n,i,r){var o={role:"presentation"},a=[];return n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" ")),t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e))}function i(e,n){tabs.append(t.el.div({class:"tab-pane fade "+e+" "+n,id:e})),o.find('[href="#'+e+'"]').on("show.bs.tab",function(t){o.storage(e)})}var o=t(this);o.addClass("edit-conflict"),tabs=t(t.el.div({class:"tab-content"})),o.append(t.el.ul({class:"nav nav-tabs"},n("My edits",!0,"merge-my-edits"),n("Their edits",!1,"merge-server-edits"),n("Conflicts",!1,"merge-conflicts"))),o.append(tabs),i("merge-my-edits","in active"),i("merge-server-edits",""),i("merge-conflicts",""),o.data("edit-conflict",e),o.storage("merge-my-edits"),o.append(r=t.el.div({class:"form-group"},t.el.button({name:"merge",class:"btn btn-primary"},"Merge"),t.el.button({name:"discard-my-edits",class:"btn btn-primary"},"Discard my changes"),t.el.button({name:"discard-server-edits",class:"btn btn-primary"},"Discard changes on server"),t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel"))),t(r).on("click","button",function(e){return o.storage("editConflictAction",t(e.target).attr("name")),t(e.target).parents(".modal").modal("hide"),e.preventDefault(),!1})}var r;return e.storage=this,i.showDialog({title:"Edit conflict",body:n}),this},"merge-my-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-my-edits").empty().append(c(e.edit.me.data))},"merge-server-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-server-edits").empty().append(c(e.edit.server.data))},"merge-conflicts":function(){var e=t(this).data("edit-conflict"),n=t(this).find(".merge-conflicts");n.empty(),0!=e.patch_status?n.append(u(e.merged)):n.html("No merge conflicts")},editConflictAction:function(e){var n=t(this).data("edit-conflict"),i=t(n.storage).data("storage");if("merge"==e)i.setValue(n.merged),i.meta.commit=n.edit.server.to.commit;else if("discard-my-edits"==e)t(n.storage).storage("reload");else if("discard-server-edits"==e){var i=t(n.storage).data("storage");i.meta.commit=n.edit.server.to.commit}},download:function(){var e=this.data("storage"),n=a.tabTypes[e.typeName],i=e.getValue(),r="data:text/plain;charset=UTF-8,"+encodeURIComponent(i),o=t.el.a({href:r,
+download:e.file||"swish."+n.dataType});return this.append(o),o.click(),t(o).remove(),this},getData:function(e){var n=[];return e=e||{},this.each(function(){function i(t){r.meta[t]&&(o[t]=r.meta[t])}var r=t(this).data("storage"),o={};if(o.type=r.st_type,r.url&&(o.url=r.url),r.meta&&(i("name"),i("path"),i("modified"),i("loaded"),i("modified_since_loaded"),i("module")),t(this).storage("getActive")&&(o.active=!0),!e.type||e.name&&e.name.split(".").pop()==e.type){if(e.data){var a=r.getValue();o.modified=a!=r.cleanData,(1==e.data||o.modified&&"if_modified"==e.data)&&(o.data=a)}n.push(o)}}),n},match:function(e){for(var n=0;n<this.length;n++){me=t(this[n]);var i=me.data("storage");if(e.file&&e.file==i.file)return me;if(e.url&&e.url==i.url)return me}},expose:function(t){var e=this.closest(".tab-pane");if(1==e.length){return e.closest(".tabbed").tabbed("show",e.attr("id")),t&&n.feedback({html:t,owner:this}),this}},info:function(){function e(){"gitty"==r.st_type?(r.editor=a,this.gitty(r)):"filesys"==r.st_type?h(this,o):r.st_type||this.append(t.el.p("The source is not associated with a file. ","Use ",t.el.b("Save ...")," to save the source with meta information."))}var n,r=this.data("storage"),o=r.meta||{},a=this;return n="gitty"==r.st_type?t().gitty("title",o):"filesys"==r.st_type?"File system -- "+s.basename(o.path):"external"==r.st_type?"External -- "+r.url:"Scratch source",i.showDialog({title:n,body:e}),this},diff:function(){function e(){var e=t.el.div(),i=n.getValue();if(this.append(e),i==n.cleanData)t(e).append(t.el.p("No changes"));else{var o,a=t.el.div({class:"btn-group diff",role:"group"},t.el.button({name:"close","data-dismiss":"modal",class:"btn btn-primary"},"Close"),o=t.el.button({name:"revert",class:"btn btn-danger","data-dismiss":"modal"},"Revert changes"));t(e).diff({base:n.cleanData,head:i,baseName:r[n.cleanCheckpoint]}),this.append(t.el.div({class:"wrapper text-center"},a)),t(o).on("click",function(e){t(".swish-event-receiver").trigger("revert")}),this.parents("div.modal-dialog").addClass("modal-wide")}}var n=this.data("storage"),r={load:"Loaded text",new:"New text",save:"Saved text"};return i.showDialog({title:"Changes since "+r[n.cleanCheckpoint],body:e}),this},getSelection:function(){if(this.hasClass("prolog-editor")){var t=this.prologEditor("getSelection");return t?t[0].selections:null}if(this.hasClass("notebook"))return this.notebook("getSelection");console.log("Don't know how to get selection from",this)},getSelectionLabel:function(t){function e(t){for(var e="",n=0;n<t.length;n++){var i=t[n];""!=e&&(e+=";"),e+="@L"+(i.from.line+1),i.to.line!=i.from.line&&(e+="-"+(i.to.line+1))}return e}if(t[0].selections){for(var n="",i=0;i<t.length;i++){var r=t[i];""!=n&&(n+=","),n+=(r.cell||"")+e(r.selections)}return n}return e(t)},restoreSelection:function(t){return this.hasClass("prolog-editor")?this.prologEditor("restoreSelection",t):this.hasClass("notebook")?this.notebook("restoreSelection",t):void console.log(t)},getActive:function(){return 1==t(this).closest(".tab-pane.active").length},docid:function(t,e){if(e=e||this.data("storage"),!t||t==e.st_type){var n=e.meta||{};if("gitty"==e.st_type)return"gitty:"+n.name;if("filesys"==e.st_type)return"filesys:"+n.path;if("external"==e.st_type)return"url:"+e.url}},chat:function(e){var i=this.data("storage"),r=this.storage("docid","gitty");if(r){var o=this.closest(".tab-pane").find(".chatroom");if(o.length>0)"update"==e?o.chatroom("docid",r,"close"):s.flash(o);else if("update"!=e){o=t(t.el.div({class:"chatroom"}));var a;a="number"==typeof e?e:"large"==e?80:20,o.chatroom({docid:r}),this.tile("split",o,"below",a,150).addClass("chat-container")}}else"update"==e?this.storage("close_chat"):i.st_type?n.alert("The chat facility is only available for user-saved files.<br>You can use the <b>Open hangout</b> menu from the top-right bell to access the hangout room."):n.alert("You can only chat about a saved document.<br>Please save your document and try again.");return this},close_chat:function(){this.closest(".chat-container").find(".chatroom").chatroom("close")},chatroom_size:function(){var t=this.closest(".tab-pane"),e=t.find(".chatroom");if(e.length>0){var n=t.height();return 0==n?20:Math.round(100*e.height()/n)}return!1},chat_message:function(e){return e.displayed||0!=e.create?this.each(function(){var n=t(this);if(e.docid==n.storage("docid")){var i=n.data("storage");i.chats?(void 0!=i.chats.total&&i.chats.total++,void 0!=i.chats.count&&i.chats.count++):i.chats={total:1},n.storage("update_tab_title","chats++")}}):this},follow:function(){var t=this.storage("docid","gitty");t?n.server_form({title:"Follow file options",url:e.http.locations.follow_file_options,data:{docid:t}}):n.alert("Sorry, can only follow files")},unload:function(t,e){var n=this.data("storage");if(n&&(n.meta&&o.addRecent({st_type:"gitty",id:n.meta.name}),n.cleanData&&n.getValue&&n.cleanData!=n.getValue())){if("beforeunload"==t){var i="The source editor has unsaved changes.\nThese will be lost if you leave the page";return e=e||window.event,e&&(e.returnValue=i),i}var i="The source editor has unsaved changes.\nThese will be lost"+("setSource"==t?" if you load a new program":"closetab"==t?" close this tab":"");return confirm(i)}},close:function(){},markClean:function(t){this.data("storage").is_clean=t},chat_status:function(e){var n=[];this.each(function(){var e=t(this).data("storage");if("gitty"==e.st_type&&e.meta&&e.meta.name){var i={file:e.meta.name};e.is_clean||(i.modified=!0),t(this).is(":visible")&&(i.visible=!0),n.push(i)}}),(e||n.length>0)&&t("#chat").trigger("send",{type:"has-open-files",files:n})}};t.fn.storage=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.storage"):p._init.apply(this,arguments)}}(jQuery)}),function(){"use strict";function Sha1(t){t?(blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,this.h3=271733878,this.h4=3285377520,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}var root="object"==typeof window?window:{},NODE_JS=!root.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS&&(root=global);var COMMON_JS=!root.JS_SHA1_NO_COMMON_JS&&"object"==typeof module&&module.exports,AMD="function"==typeof define&&define.amd,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[],createOutputMethod=function(t){return function(e){return new Sha1(!0).update(e)[t]()}},createMethod=function(){var t=createOutputMethod("hex");NODE_JS&&(t=nodeWrap(t)),t.create=function(){return new Sha1},t.update=function(e){return t.create().update(e)};for(var e=0;e<OUTPUT_TYPES.length;++e){var n=OUTPUT_TYPES[e];t[n]=createOutputMethod(n)}return t},nodeWrap=function(method){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),nodeMethod=function(t){if("string"==typeof t)return crypto.createHash("sha1").update(t,"utf8").digest("hex");if(t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(void 0===t.length)return method(t);return crypto.createHash("sha1").update(new Buffer(t)).digest("hex")};return nodeMethod};Sha1.prototype.update=function(t){if(!this.finalized){var e="string"!=typeof t;e&&t.constructor===root.ArrayBuffer&&(t=new Uint8Array(t));for(var n,i,r=0,o=t.length||0,a=this.blocks;r<o;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[16]=a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=0),e)for(i=this.start;r<o&&i<64;++r)a[i>>2]|=t[r]<<SHIFT[3&i++];else for(i=this.start;r<o&&i<64;++r)n=t.charCodeAt(r),n<128?a[i>>2]|=n<<SHIFT[3&i++]:n<2048?(a[i>>2]|=(192|n>>6)<<SHIFT[3&i++],a[i>>2]|=(128|63&n)<<SHIFT[3&i++]):n<55296||n>=57344?(a[i>>2]|=(224|n>>12)<<SHIFT[3&i++],a[i>>2]|=(128|n>>6&63)<<SHIFT[3&i++],a[i>>2]|=(128|63&n)<<SHIFT[3&i++]):(n=65536+((1023&n)<<10|1023&t.charCodeAt(++r)),a[i>>2]|=(240|n>>18)<<SHIFT[3&i++],a[i>>2]|=(128|n>>12&63)<<SHIFT[3&i++],a[i>>2]|=(128|n>>6&63)<<SHIFT[3&i++],a[i>>2]|=(128|63&n)<<SHIFT[3&i++]);this.lastByteIndex=i,this.bytes+=i-this.start,i>=64?(this.block=a[16],this.start=i-64,this.hash(),this.hashed=!0):this.start=i}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha1.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha1.prototype.hash=function(){var t,e,n,i=this.h0,r=this.h1,o=this.h2,a=this.h3,s=this.h4,l=this.blocks;for(e=16;e<80;++e)n=l[e-3]^l[e-8]^l[e-14]^l[e-16],l[e]=n<<1|n>>>31;for(e=0;e<20;e+=5)t=r&o|~r&a,n=i<<5|i>>>27,s=n+t+s+1518500249+l[e]<<0,r=r<<30|r>>>2,t=i&r|~i&o,n=s<<5|s>>>27,a=n+t+a+1518500249+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|~s&r,n=a<<5|a>>>27,o=n+t+o+1518500249+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|~a&i,n=o<<5|o>>>27,r=n+t+r+1518500249+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|~o&s,n=r<<5|r>>>27,i=n+t+i+1518500249+l[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s+1859775393+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a+1859775393+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o+1859775393+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r+1859775393+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i+1859775393+l[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)t=r&o|r&a|o&a,n=i<<5|i>>>27,s=n+t+s-1894007588+l[e]<<0,r=r<<30|r>>>2,t=i&r|i&o|r&o,n=s<<5|s>>>27,a=n+t+a-1894007588+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|s&r|i&r,n=a<<5|a>>>27,o=n+t+o-1894007588+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|a&i|s&i,n=o<<5|o>>>27,r=n+t+r-1894007588+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|o&s|a&s,n=r<<5|r>>>27,i=n+t+i-1894007588+l[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s-899497514+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a-899497514+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o-899497514+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r-899497514+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i-899497514+l[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+i<<0,this.h1=this.h1+r<<0,this.h2=this.h2+o<<0,this.h3=this.h3+a<<0,this.h4=this.h4+s<<0},Sha1.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]},Sha1.prototype.toString=Sha1.prototype.hex,Sha1.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,r>>24&255,r>>16&255,r>>8&255,255&r]},Sha1.prototype.array=Sha1.prototype.digest,Sha1.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(20),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),t};var exports=createMethod();COMMON_JS?module.exports=exports:(root.sha1=exports,AMD&&define("sha1",[],function(){return exports}))}(),define("notebook",["jquery","config","tabbed","form","preferences","modal","prolog","links","laconic","runner","storage","sha1"],function($,config,tabbed,form,preferences,modal,prolog,links){function glyphButton(t,e,n,i,r){return r=r||"sm",$.el.a({href:"#",class:"btn btn-"+i+" btn-"+r+" action-"+e,title:n,"data-action":e},$.el.span({class:"glyphicon glyphicon-"+t}))}function imageButton(t,e,n){return n=n||"sm",$.el.a({href:"#",class:"btn btn-default btn-image btn-"+n+" action-"+t,title:e,"data-action":t},$.el.span({class:"image-icon"}))}function glyphButtonGlyph(t,e,n){t.find("a[data-action="+e+"] > span.glyphicon").removeClass(function(t,e){return e.match(/glyphicon-[-a-z]*/g).join(" ")}).addClass("glyphicon-"+n)}function sep(){return $.el.span({class:"menu-space"}," ")}function Notebook(t){this.my_cell=t.cell}var cellTypes={program:{label:"Program",prefix:"p"},query:{label:"Query",prefix:"q"},markdown:{label:"Markdown",prefix:"md"},html:{label:"HTML",prefix:"htm"}};!function(t){function e(e){var n=t(e).find(".nb-cell.active");return 1==n.length?n.first():null}function n(e){function n(t){if(attrs=t.match(/[-a-z]+="[^"]*"/g),attrs){for(var e=t.match(/^<[a-z]* /),n=0;n<attrs.length;n++){var i=attrs[n].split(/=(.*)/);attrs[n]=i[0].toLowerCase()+"="+i[1]}return e[0]+attrs.sort().join(" ")+">"}return t}var i=t(t.el.div(e)).html(),r=[];return i.replace(/(<div [^>]*>|<\/div>)/g,function(t){var e;return"</div>"==t?(e=r.pop(),e?"\n"+t+"\n":t):(e=null!=t.match(/(nb-cell|notebook)/),r.push(e),e?"\n"+n(t)+"\n":t)}).slice(1)}var i=null,r={_init:function(e){return e=e||{},this.each(function(){function n(t){var e=r.data(t);e&&(a[t]=e)}var i,r,o=t(this),a={},s={};o.addClass("notebook"),o.addClass("swish-event-receiver"),o.append(i=t.el.div({class:"nb-toolbar"},glyphButton("trash","delete","Delete cell","warning"),sep(),glyphButton("copy","copy","Copy cell","default"),glyphButton("paste","paste","Paste cell below","default"),sep(),glyphButton("chevron-up","up","Move cell up","default"),glyphButton("chevron-down","down","Move cell down","default"),sep(),glyphButton("plus","insertBelow","Insert cell below","primary"),sep(),glyphButton("erase","clear_all","Clear all query output","warning"),glyphButton("play","run_all","Run all queries","primary"),glyphButton("fullscreen","fullscreen","Full screen","default"))),o.append(function(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"});return form.widgets.dropdownButton(e,{divClass:"notebook-menu btn-transparent",ulClass:"pull-right",client:o,actions:{"Delete cell":function(){this.notebook("delete")},"Copy cell":function(){this.notebook("copy")},"Paste cell":function(){this.notebook("paste")},"Move cell up":function(){this.notebook("up")},"Move cell down":function(){this.notebook("down")},"Insert cell":function(){this.notebook("insertBelow")},"--":"Notebook actions","Exit fullscreen":function(){this.notebook("fullscreen",!1)}}})}()),o.append(t.el.div({class:"nb-view",tabIndex:"-1"},r=t.el.div({class:"nb-content"}),t.el.div({class:"nb-bottom"}))),t(i).on("click","a.btn",function(e){var n=t(e.target).closest("a").data("action");return o.notebook(n),e.preventDefault(),!1}),t(r).on("click",".nb-cell-buttons a.btn",function(e){var n=t(e.target).closest("a"),i=n.closest(".nb-cell"),r=n.data("action");return i.nbCell(r),e.preventDefault(),!1}),o.focusin(function(e){var n=t(e.target).closest(".nb-cell");n.length>0?o.notebook("active",n):t(e.target).closest(".nb-view").length>0&&o.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),o.focusout(function(e){t(e.target).closest(".notebook")[0]!=o[0]&&o.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),o.on("activate-tab",function(e){if(e.target==o[0]){var n=o.find(".nb-content").children(".nb-cell.program"),i=n.filter(".active"),r=i[0]||n[0];r&&t(r).find(".prolog-editor").prologEditor("makeCurrent"),e.stopPropagation()}}),o.on("scroll-to-bottom",function(e,n){1!=n&&t(e.target).closest(".nb-cell").nbCell("ensure_in_view","bottom")}),o.data("notebook",s);var r=o.find(".notebook-data");if(e.value)o.notebook("value",e.value);else if(r.length>0){n("file"),n("url"),n("title"),n("meta"),n("st_type"),n("chats");var l=o.storage("docid",void 0,a),c=preferences.getDocVal(l,"fullscreen",config.swish.notebook.fullscreen);o.notebook("value",r.text(),{fullscreen:c}),r.remove()}else o.notebook("placeHolder");o.notebook("setupStorage",a),o.on("data-is-clean",function(e,n){if(t(e.target).hasClass("prolog-editor"))return o.notebook("checkModified"),e.stopPropagation(),!1}),o.on("fullscreen",function(t,e){preferences.setDocVal(l,"fullscreen",e)})})},delete:function(t){return t=t||e(this),t&&(this.notebook("active",t.next()||t.prev()),t.nbCell("close"),this.notebook("updatePlaceHolder")),this.notebook("checkModified"),this},copy:function(r){if(r=r||e(this)){var o=t.el.div({class:"notebook"});t(o).append(t(r).nbCell("saveDOM")),t(o).find(".nb-cell").removeAttr("name"),i=n(o)}},paste:function(e){var n=this;if(e=e||i){var r=t.el.div();t(r).html(e);if(t(r).find(".nb-cell").length>0)return t(r).find(".nb-cell").each(function(){n.notebook("insert",{where:"below",restore:t(this)})}),this;modal.alert("Not a SWISH notebook")}else modal.alert("Clipboard is empty")},up:function(t){return t=t||e(this),t&&(t.insertBefore(t.prev()),this.notebook("checkModified")),this},down:function(t){return t=t||e(this),t&&(t.insertAfter(t.next()),this.notebook("checkModified")),this},insertAbove:function(){return this.notebook("insert",{where:"above"})},insertBelow:function(){return 0==this.notebook("insert",{where:"below",if_visible:!0})&&modal.alert("<p>New cell would appear outside the visible area of the notebook.<p>Please select the cell below which you want the new cell to appear or scroll to the bottom of the notebook."),this},run:function(t){(t=t||e(this))&&t.nbCell("run")},fullscreen:function(e){if(void 0==e&&(e=!this.hasClass("fullscreen")),e){var n=this.closest(".chat-container"),i=1==n.length?n:this;t("body.swish").swish("fullscreen",i,this)}else t("body.swish").swish("exitFullscreen");return this},cellType:function(t,n){(t=t||e(this))&&t.nbCell("type",n)},getSelection:function(){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("getSelection")},restoreSelection:function(t){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("restoreSelection",t)},checkModified:function(){return this.each(function(){var e=t(this),n=e.data("storage"),i=n.cleanGeneration==e.notebook("changeGen");e.notebook("markClean",i)})},markClean:function(e){return this.each(function(){var n=t(this),i=n.data("notebook");i.clean_signalled!=e&&(i.clean_signalled=e,n.trigger("data-is-clean",e)),e&&n.find(".prolog-editor").prologEditor("setIsClean")})},active:function(t,e){function n(t){t.find(".nb-content .nb-cell.not-for-query").removeClass("not-for-query")}if(t){var i=this.find(".nb-content .nb-cell.active");1==t.length?1==i.length&&t[0]==i[0]||(n(this),i.nbCell("active",!1),t.nbCell("active",!0),e&&t.focus()):(n(this),i.nbCell("active",!1))}},insert:function(n){n=n||{};var i,r=e(this),o=n.cell||t.el.div({class:"nb-cell"}),a=this.find(".nb-view");if(n.if_visible&&a.find(".nb-content > div.nb-cell").length>0&&(i=a[0].getBoundingClientRect()),r)if("above"==n.where){if(i){var s=r[0].getBoundingClientRect().top;if(s<i.top)return!1}t(o).insertBefore(r)}else{if(i){var l=r[0].getBoundingClientRect().bottom;if(l>i.bottom-20)return!1}t(o).insertAfter(r)}else{var c=this.find(".nb-content");if(i){if(c[0].getBoundingClientRect().bottom>i.bottom-20)return!1}c.append(o)}return n.cell||t(o).nbCell(n.restore),t(o).nbCell("assignName"),this.notebook("updatePlaceHolder"),this.notebook("active",t(o)),this.notebook("checkModified"),this},setupStorage:function(e){var n=this;return e=t.extend(e,{getValue:function(){return n.notebook("value")},setValue:function(t){return n.notebook("setSource",t)},changeGen:function(){return n.notebook("changeGen")},isClean:function(t){return t==n.notebook("changeGen")},markClean:function(t){n.notebook("markClean",t)},cleanGeneration:this.notebook("changeGen"),cleanData:this.notebook("value"),cleanCheckpoint:"load",typeName:"notebook"}),this.storage(e)},setSource:function(t){"string"==typeof t&&(t={data:t}),this.notebook("value",t.data)},value:function(e,i){if(i=i||{},void 0==e){var r=t.el.div({class:"notebook"});return this.notebook("assignCellNames",!1),this.find(".nb-cell").each(function(){cell=t(this),i.skipEmpty&&cell.nbCell("isEmpty")||t(r).append(cell.nbCell("saveDOM"))}),n(r)}var o=this.find(".nb-content"),r=t.el.div();o.html(""),r.innerHTML=e,void 0==i.fullscreen&&(i.fullscreen=t(r).find("div.notebook").hasClass("fullscreen")),i.fullscreen&&(this.removeClass("fullscreen"),this.notebook("fullscreen",!0)),t(r).find(".nb-cell").each(function(){var e=t.el.div({class:"nb-cell"});o.append(e),t(e).nbCell(t(this))}),this.find(".nb-cell").nbCell("onload"),this.notebook("run_all","onload"),this.notebook("updatePlaceHolder"),this.notebook("assignCellNames",!1)},changeGen:function(){var e=[];return this.find(".nb-cell").each(function(){var n=t(this).nbCell("changeGen");e.push(n)}),sha1(e.join())},assignCellNames:function(t){return this.find(".nb-cell").nbCell("assignName"),0!=t&&this.notebook("checkModified"),this},updatePlaceHolder:function(){0==this.find(".nb-content").children().length?this.notebook("placeHolder"):this.find(".nb-placeholder").remove()},placeHolder:function(){var e=t.el.div({class:"nb-placeholder"});t.ajax({url:config.http.locations.help+"/notebook.html",dataType:"html",success:function(n){t(e).html(n)}}),this.find(".nb-content").append(e)},run_all:function(e){function n(t){switch(t.state){case"error":case"aborted":return!1}return!0}var i=[];if(e=e||"all",this.notebook("clear_all"),this.find(".nb-cell.query").each(function(){"all"!=e&&t(this).data("run")!=e||i.push(this)}),i.length>0){i.current=0;var r=function(e){n(e)&&++i.current<i.length&&t(i[i.current]).nbCell("run",{complete:r})};t(i[0]).nbCell("run",{complete:r})}},clear_all:function(){this.find(".prolog-runner").prologRunner("close")}};tabbed.tabTypes.notebook={dataType:"swinb",typeName:"notebook",label:"Notebook",contentType:"text/x-prolog-notebook",order:200,create:function(e,n){t(e).notebook(n)}},t.fn.notebook=function(e){return r[e]?r[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.notebook"):r._init.apply(this,arguments)}}(jQuery),function($){function cellText(t){return t.find(".editor").prologEditor("getSource",void 0,!0)}function fileInsertInput(){var t=$('<input type="file" name="file">');return t.on("change",function(t){var e=new FileReader;return e.onload=function(n){var i=$(t.target).closest(".nb-cell");i.closest(".notebook").notebook("paste",e.result)&&i.remove()},e.readAsText(t.target.files[0]),t.preventDefault(),!1}),t}function typeMore(){var t=$('<div class="form-more"> <a href="#">more<a></div>');return t.find("a").on("click",function(t){var e=$(t.target).closest(".form-more");e.hide(400),e.next().show(400)}),t[0]}function typeLess(){for(var t=$('<div class="form-less" style="display:none"> <div><a href="#" class="less">less<a></div></div>'),e=0;e<arguments.length;e++)t.append(arguments[e]);return t.find("a.less").on("click",function(t){var e=$(t.target).closest(".form-less");e.hide(400),e.prev().show(400)}),t[0]}var pluginName="nbCell",id=0,methods={_init:function(t){return this.each(function(){var e,n=$(this),i={};if(n.data(pluginName,i),n.attr("tabIndex",-1),n.attr("id","nbc"+id++),t instanceof jQuery)n.nbCell("restoreDOM",t);else{var r=glyphButton("remove-circle","close","Close","default","xs");n.append(r),$(r).addClass("close-select"),$(r).on("click",function(){n.nbCell("close")}),n.append($.el.div({class:"nb-type-select"},$.el.label("Create a "),e=$.el.div({class:"btn-group",role:"group"}),$.el.label("cell here.")));for(var o in cellTypes)cellTypes.hasOwnProperty(o)&&$(e).append($.el.button({type:"button",class:"btn btn-default","data-type":o},cellTypes[o].label));$(e).on("click",".btn",function(t){n.nbCell("type",$(t.target).data("type"))}),n.append($.el.div({class:"nb-type-more"},typeMore(),typeLess($.el.label("Insert notebook from local file "),fileInsertInput()[0])))}})},active:function(t){var e=this.data(pluginName);if(t)switch(this.addClass("active"),e.type){case"program":this.find(".editor").prologEditor("makeCurrent");break;case"query":var n=this.prevAll(".program").first().find(".editor");1==n.length&&n.prologEditor("makeCurrent"),this.closest(".notebook").find(".nb-cell.program").not(this.nbCell("program_cells")).addClass("not-for-query")}else if(this.length>0)switch(this.removeClass("active"),e.type){case"markdown":case"html":this.hasClass("runnable")&&this.nbCell("run")}},ensure_in_view:function(t){var e=this.position().top,n=this.closest(".nb-view"),i=n.scrollTop(),r=n.height();e>i&&e+this.height()<i+r||("top"!=t&&(e=e+this.height()-r+40),this.nbCell("active",!0),n.scrollTop(e))},type:function(t){var e=this.data(pluginName);return e.type!=t&&(methods.type[t].apply(this),e.type=t,this.addClass(t),this.removeAttr("name"),this.nbCell("assignName")),this},assignName:function(){return this.each(function(){var t=$(this);if(!t.attr("name")){var e=t.data(pluginName);if(e.type){var n=cellTypes[e.type].prefix,r=t.closest(".notebook");for(i=1;;i++){var o=n+i;if(0==r.find("*[name="+o+"]").length){t.attr("name",o);break}}}}})},run:function(){var t=arguments;return this.each(function(){var e=$(this);if(e.hasClass("runnable")){var n=e.data(pluginName);return methods.run[n.type].apply(e,t)}console.log("Cell is not runnable: ",e)})},runTabled:function(){return this.nbCell("run",{tabled:!0})},onload:function(){var t=arguments;return this.each(function(){var e=$(this),n=e.data(pluginName);methods.onload[n.type]&&methods.onload[n.type].apply(e,t)}),this.nbCell("refresh")},close:function(){return this.find(".prolog-runner").prologRunner("close"),this.remove()},refresh:function(){return this.hasClass("program")&&this.find("a[data-action='background']").attr("title",this.hasClass("background")?"Used for all queries in this notebook":"Used for queries below this cell"),this},getSettings:function(){return{tabled:"true"==this.data("tabled"),run:"onload"==this.data("run"),chunk:parseInt(this.data("chunk")||"1"),name:this.attr("name")}},settings:function(){function t(){this.append($.el.form({class:"form-horizontal"},form.fields.checkboxes([{name:"tabled",label:"table results",value:n.tabled,title:"Table results"},{name:"run",label:"run on page load",value:n.run,title:"Run when document is loaded"}],{col:3}),form.fields.chunk(n.chunk),form.fields.name(n.name||""),form.fields.buttons({label:"Apply",offset:3,action:function(t,i){i.tabled!=n.tabled&&(i.tabled?e.data("tabled","true"):e.removeData("tabled")),i.run!=n.run&&(i.run?e.data("run","onload"):e.removeData("run")),i.chunk!=n.chunk&&(1!=i.chunk?e.data("chunk",""+i.chunk):e.removeData("chunk"));var r=i.name?i.name.trim():"";r!=n.name&&(r?e.attr("name",r):e.attr("name",null)),e.closest(".notebook").notebook("checkModified")}})))}var e=this,n=this.nbCell("getSettings");form.showDialog({title:"Set options for query",body:t})},singleline:function(){return this.toggleClass("singleline"),this.find(".editor").prologEditor("refresh"),glyphButtonGlyph(this,"singleline",this.hasClass("singleline")?"triangle-left":"triangle-bottom"),this.find("a[data-action=singleline]").blur(),this},background:function(){return this.toggleClass("background"),this.find("a[data-action=background]").blur(),this.closest(".notebook").notebook("checkModified"),this.nbCell("refresh"),this},program_cells:function(){var t=(this.data(pluginName),this.closest(".notebook").find(".nb-cell.program.background"));return this.hasClass("program")?this.hasClass("background")||(t=t.add(this)):t=t.add(this.prevAll(".program").first()),t},programs:function(){return this.nbCell("program_cells").find(".editor")},isEmpty:function(){return methods.isEmpty[this.data(pluginName).type].call(this)},saveDOM:function(){return methods.saveDOM[this.data(pluginName).type].call(this)},restoreDOM:function(t){var e=this.data(pluginName);e.type=function(t){for(var e in cellTypes)if(cellTypes.hasOwnProperty(e)&&t.hasClass(e))return e}(t),methods.restoreDOM[e.type].apply(this,arguments),this.addClass(e.type)},changeGen:function(){var t=this.data(pluginName).type;return t?methods.changeGen[t].call(this):0},text:function(){return cellText(this)}};methods.type.markdown=function(t){var e,n=this;t=t||{},t.mode="markdown",function(e){void 0!=t[e]&&(n.attr(e,""+t[e]),delete t[e])}("name"),this.html(""),this.append(e=$.el.div({class:"editor"})),$(e).prologEditor(t),this.addClass("runnable")},methods.type.html=function(t){var e,n=this;t=t||{},t.mode="htmlmixed",function(e){void 0!=t[e]&&(n.attr(e,""+t[e]),delete t[e])}("name"),this.html(""),this.append(e=$.el.div({class:"editor"})),$(e).prologEditor(t),this.addClass("runnable")},methods.type.program=function(t){var e,n=this;t=t||{},t.autoCurrent=!1,t.getSource=function(){return n.nbCell("programs").prologEditor("getSource","source",!0)},this.html("");var i=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("triangle-bottom","singleline","Show only first line","default","xs"),imageButton("background","Use as background program","xs"));this.append(i,e=$.el.div({class:"editor with-buttons"})),t.background&&this.addClass("background"),t.singleline&&this.nbCell("singleline"),$(e).prologEditor(t)},methods.type.query=function(t){function e(e){void 0!=t[e]&&(r.data(e,""+t[e]),delete t[e])}function n(t){this.find(".editor.query").prologEditor("wrapSolution",$(t).text())}var i,r=this;this.html(""),t=t||{},void 0==t.tabled&&(t.tabled=preferences.getVal("tabled_results")),e("tabled"),e("chunk"),e("run"),function(e){void 0!=t[e]&&(r.attr(e,""+t[e]),delete t[e])}("name"),t=$.extend({},t,{role:"query",sourceID:function(){return r.nbCell("programs").prologEditor("getSourceID")},prologQuery:function(t){r.nbCell("run")}});var o=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("wrench","settings","Settings","default","xs"),glyphButton("play","run","Run query","primary","xs")),a=form.widgets.dropdownButton($.el.span({class:"glyphicon glyphicon-menu-hamburger"}),{client:r,divClass:"nb-query-menu",actions:{"Aggregate (count all)":n,"--":null,Projection:n,"Order by":n,Distinct:n,Limit:n}});this.append(o,$.el.div({class:"query with-buttons"},a,$.el.span({class:"prolog-prompt"},"?-"),i=$.el.div({class:"editor query"}))),$(i).prologEditor(t),this.addClass("runnable")},methods.run.markdown=function(t){function e(t){var n=$(t.target).closest(".nb-cell"),i=n.data("markdownText");n.removeData("markdownText"),methods.type.markdown.call(n,{value:i}),n.off("dblclick",e),n.off("click",links.followLink)}function n(n){i.html(n),i.removeClass("runnable"),i.data("markdownText",t),i.on("dblclick",e),i.on("click","a",links.followLink)}var i=this;t=t||cellText(this),""!=t.trim()?$.ajax({type:"POST",url:config.http.locations.markdown,data:t,contentType:"text/plain; charset=UTF-8",success:n}):n("<div class='nb-placeholder'>Empty markdown cell.  Double click to edit</div>")},methods.run.html=function(htmlText,options){function makeEditable(t){var e=$(t.target).closest(".nb-cell"),n=e.data("htmlText");e.removeData("htmlText"),methods.type.html.call(e,{value:n}),e.off("dblclick",makeEditable),e.off("click",links.followLink)}function runScripts(){if(1==config.swish.notebook.eval_script&&0!=options.eval_script){var scripts=[];if(cell.find("script").each(function(){"text/javascript"==(this.getAttribute("type")||"text/javascript")&&scripts.push(this.textContent)}),
+scripts.length>0){var script="(function(notebook){"+scripts.join("\n")+"})",nb=new Notebook({cell:cell[0]});try{eval(script)(nb)}catch(t){alert(t)}}}}function runHTML(t){cell[0].innerHTML=t,runScripts()}function setHTML(t){runHTML(t),cell.removeClass("runnable"),cell.data("htmlText",htmlText),cell.on("dblclick",makeEditable),cell.on("click","a",links.followLink)}var cell=this;if(options=options||{},0==options.html)return void runScripts();htmlText=(htmlText||cellText(this)).trim(),setHTML(""!=htmlText?htmlText:"<div class='nb-placeholder'>Empty HTML cell.  Double click to edit</div>")},methods.run.program=function(){modal.alert("Please define a query to run this program")},methods.run.query=function(t){var e=this.nbCell("programs"),n=this.nbCell("getSettings"),i=cellText(this);if(t=t||{},t.bindings){var r="";if("string"==typeof t.bindings)r=t.bindings;else for(var o in t.bindings)t.bindings.hasOwnProperty(o)&&(r&&(r+=", "),r+=o+" = "+Pengine.stringify(t.bindings[o]));r&&(i=r+", ("+prolog.trimFullStop(i)+")")}var a={source:e.prologEditor("getSource","source",!0),query:i,tabled:n.tabled||!1,chunk:n.chunk,title:!1,query_editor:this.find(".prolog-editor.query")};e[0]&&(a.editor=e[0]),t.success&&(a.success=t.success),t.complete&&(a.complete=t.complete);var s=$.el.div({class:"prolog-runner"});this.find(".prolog-runner").prologRunner("close"),this.append(s),$(s).prologRunner(a)},methods.onload.html=function(){return methods.run.html.call(this,void 0,{html:!1,eval_script:!0})},methods.saveDOM.markdown=function(){var t=this.data("markdownText")||cellText(this),e=$.el.div({class:"nb-cell markdown"},t);return function(t){var n;(n=cell.attr(t))&&n&&$(e).attr(t,n)}("name"),e},methods.saveDOM.html=function(){var t=this.data("htmlText")||cellText(this),e=$.el.div({class:"nb-cell html"});return $(e).html(t),function(t){var n;(n=cell.attr(t))&&n&&$(e).attr(t,n)}("name"),e},methods.saveDOM.program=function(){function t(t){e.hasClass(t)&&$(n).attr("data-"+t,!0)}var e=this,n=$.el.div({class:"nb-cell program"},cellText(this));return t("background"),t("singleline"),function(t){var i;(i=e.attr(t))&&i&&$(n).attr(t,i)}("name"),n},methods.saveDOM.query=function(){function t(t,e){return!("tabled"!=t||e&&"false"!=e)}function e(e){var r;(r=n.data(e))&&!t(e,r)&&$(i).attr("data-"+e,r)}var n=this,i=$.el.div({class:"nb-cell query"},cellText(this));return e("tabled"),e("chunk"),e("run"),function(t){var e;(e=n.attr(t))&&e&&$(i).attr(t,e)}("name"),i},methods.restoreDOM.markdown=function(t){var e=this,n=t.text().trim();e.data("markdownText",n),function(n){var i;(i=t.attr(n))&&i&&e.attr(n,i)}("name"),methods.run.markdown.call(this,n)},methods.restoreDOM.html=function(t){var e=this;!function(n){var i;(i=t.attr(n))&&i&&e.attr(n,i)}("name"),methods.run.html.call(this,t.html(),{eval_script:!1})},methods.restoreDOM.program=function(t){function e(e){var n;(n=t.data(e))&&(i[e]=n)}var n=this,i={value:t.text().trim()};e("background"),e("singleline"),function(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}("name"),methods.type.program.call(this,i)},methods.restoreDOM.query=function(t){function e(e){var i;(i=t.data(e))&&("chunk"==e?n.chunk=parseInt(i):n[e]=i)}var n={value:t.text().trim()};e("tabled"),e("chunk"),e("run"),function(e){var i;(i=t.attr(e))&&(n[e]=i)}("name"),void 0==n.tabled&&(n.tabled=!1),methods.type.query.call(this,n)},methods.changeGen.markdown=function(){var t=this.data("markdownText")||cellText(this);return sha1("M"+t.trim())},methods.changeGen.html=function(){var t=this.data("htmlText")||cellText(this);return sha1("H"+t.trim())},methods.changeGen.program=function(){function t(t,i){n.hasClass(t)&&(e+=i)}var e="P",n=this;return t("background","B"),t("singleline","S"),e+="V"+cellText(this).trim(),sha1(e)},methods.changeGen.query=function(){function t(t,i){var r;(r=n.data(t))&&(e+=i+r)}var e="Q",n=this;return t("tabled","T"),t("chunk","C"),t("run","R"),function(t,i){var r;(r=n.attr(t))&&(e+=i+r)}("name","N"),e+="V"+cellText(this).trim(),sha1(e)},methods.isEmpty.markdown=function(){return""==(this.data("markdownText")||cellText(this)).trim()},methods.isEmpty.html=function(){return""==(this.data("htmlText")||cellText(this)).trim()},methods.isEmpty.program=function(){return""==cellText(this).trim()},methods.isEmpty.query=function(){return""==cellText(this).trim()},$.fn.nbCell=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),Notebook.prototype.swish=function(t){var e=this.cell().nbCell("programs"),n=e.prologEditor("getSource","source",!0);return n&&(t.src=n),$.swish(t)},Notebook.prototype.cell=function(t){return t?this.notebook().find('.nb-cell[name="'+t+'"]'):$(this.my_cell)},Notebook.prototype.notebook=function(){return $(this.my_cell).closest(".notebook")},Notebook.prototype.run=function(t,e){var n={};e&&(n.bindings=e),this.cell(t).nbCell("run",n)},Notebook.prototype.submit=function(t,e){var n=this.$(t),i=form.serializeAsObject(n);form.formError(n,null),this.swish({ask:e.predicate+"(("+Pengine.stringify(i)+"))",onerror:function(t){form.formError(n,t)},onsuccess:e.onsuccess})},Notebook.prototype.$=function(t){return this.cell().find(t)}}),define("navbar",["jquery","preferences","form","laconic"],function(t,e,n){!function(t){function i(i,r,o){function a(e){if(e)return t.el.span({class:"dropdown-icon glyphicon glyphicon-"+e})}if(void 0==o);else if("--"==o)i.append(t.el.li({class:"divider"}));else if("function"==typeof o){var s,l;if(o.typeIcon)s=t.el.a(n.widgets.typeIcon(o.typeIcon),r);else if(o.glyph)s=t.el.a(a(o.glyph),r);else if((l=r.indexOf("("))>0){var c=r.substr(l);s=t.el.a({class:"accelerated"},r.substr(0,l).trim(),t.el.span({class:"accell-spacer"},c),t.el.span({class:"accell-text"},c))}else s=t.el.a(r);t(s).data("navbar-action",o),o.name&&t(s).attr("id",o.name),i.append(t.el.li(s))}else if("checkbox"==o.type){var u=t(t.el.input({type:"checkbox"}));void 0!==o.preference?(u.addClass("swish-event-receiver"),e.getVal(o.preference)&&u.prop("checked",!0),u.on("click",function(){e.setVal(o.preference,t(this).prop("checked"))}),u.on("preference",function(t){t.name==o.preference&&u.prop("checked",t.value)})):(o.checked&&u.prop("checked",o.checked),u.on("click",function(){o.action(t(this).prop("checked"))})),i.append(t.el.li({class:"checkbox"},u[0],t.el.span(r)))}else if("submenu"==o.type){var h=t.el.ul({class:"dropdown-menu sub-menu"});if(i.append(t.el.li(t.el.a({class:"trigger right-caret"},a(o.glyph),r),h)),o.action&&t(h).data("navbar-action",o.action),o.items)for(var l=0;l<o.items.length;l++)t(h).append(t.el.li(t.el.a(o.items[l])));o.update&&t(h).on("update",function(t){o.update.call(t.target)})}else alert("Unknown navbar item")}function r(e,n){return e.find(".dropdown-menu").filter(function(){return t(this).attr("name")==n})}function o(e,n){if(!t(e).hasClass("trigger")){var i=t(e).data("navbar-action")||t(e).parents("ul").data("navbar-action");return s.call(e,n),i?(n.preventDefault(),i.call(e,n)):t(e).hasClass("trigger")&&a.call(e,n),!1}a.call(e,n)}function a(e){var n=t(this).next(),i=t(this).parent().parent();(t(this).hasClass("left-caret")||t(this).hasClass("right-caret"))&&t(this).toggleClass("right-caret left-caret"),i.find(".left-caret").not(this).toggleClass("right-caret left-caret"),i.find(".sub-menu:visible").not(n).hide(),n.trigger("update"),n.toggle(),e.stopPropagation()}function s(e){var n=t(this).closest(".dropdown");n.find(".left-caret").toggleClass("right-caret left-caret"),n.find(".sub-menu:visible").hide()}var l={_init:function(e){return this.each(function(){var n=t(this);for(var i in e)e.hasOwnProperty(i)&&(n.navbar("appendDropdown",i),n.navbar("populateDropdown",i,e[i]));n.on("click","a",function(t){o(this,t)})})},appendDropdown:function(e){var n=this.children(".nav.navbar-nav.menubar"),i=t.el.ul({name:e,class:"dropdown-menu"}),r=t.el.li({class:"dropdown"},t.el.a({class:"dropdown-toggle","data-toggle":"dropdown"},e,t.el.b({class:"caret"})),i);return n.append(r),this},populateDropdown:function(t,e){if("function"==typeof e)e(this,t);else{var n=r(this,t);for(var o in e)e.hasOwnProperty(o)&&i(n,o,e[o])}},clearDropdown:function(t){return r(this,t).html(""),this},extendDropdown:function(t,e,n){i(r(this,t),e,n)}};t.fn.navbar=function(e){return l[e]?l[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.navbar"):l._init.apply(this,arguments)}}(jQuery)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/templates-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e){return t.slice(0,e.length).toUpperCase()==e.toUpperCase()}function n(t){}function i(){this.marked=[],this.selectableMarkers=[],this.varIndex=-1}function r(t){return t._templateStack?t._templateStack.length:0}function o(t){this.name=t.name,this.description=t.description,this.text=t.text,t.varTemplates&&(this.varTemplates=t.varTemplates),null!=t.template?this.source=t.template:null!=t.tokens&&(this._tokens=t.tokens)}function a(t){for(var e=[],n=!1,i=null,r="",o=0;o<t.length;o++){var a=t.charAt(o);if("\n"==a)""!=r&&e.push(r),r="",e.push(a),i=null;else{var s=!0;if(n)"}"==a&&(n=!1,s=!1,"cursor"==r?e.push({cursor:!0}):"line_selection"==r?e.push({line_selection:!0}):e.push({variable:r}),r="");else if("$"==a&&o+1<=t.length){o++;var l=t.charAt(o);"{"==l&&(n=!0,s=!1,""!=r&&e.push(r),r="")}s&&"$"!=i?(r+=a,i=a):i=null}}return""!=r&&e.push(r),e}function s(t,e){var n=t.findMarksAt(e.from);if(n)for(var i=0;i<n.length;i++){var r=n[i];if(r._templateVar)return r}return null}function l(t,e){var n=t._templateState;if(e.origin&&n&&!n.updating)try{n.updating=!0;var i=s(t,e);if(null==i)f(t);else for(var r=i.find(),o=t.getRange(r.from,r.to),a=0;a<n.marked.length;a++){var l=n.marked[a];if(l!=i&&l._templateVar==i._templateVar){var c=l.find();t.replaceRange(o,c.from,c.to)}}}finally{n.updating=!1}}function c(t){n("template","endCompletion()",r(t)),r(t)&&f(t,!0)}function u(t,e){var n=t._templateState;if(n.selectableMarkers.length>0){if(++n.varIndex>=n.selectableMarkers.length){if(e)return void d(t);n.varIndex=0}var i=n.selectableMarkers[n.varIndex],r=i.find();t.setSelection(r.from,r.to);for(var o=(i._templateVar,0);o<n.marked.length;o++){var a=n.marked[o];a==i?(a.className="",a.startStyle="",a.endStyle=""):a._templateVar==i._templateVar?(a.className="CodeMirror-templates-variable-selected",a.startStyle="",a.endStyle=""):(a.className="CodeMirror-templates-variable",a.startStyle="CodeMirror-templates-variable-start",a.endStyle="CodeMirror-templates-variable-end")}t.refresh()}else d(t)}function h(e){function n(t,e){return t.ch==e.ch&&t.line==e.line}var i=e._templateState,r=i.selectableMarkers[i.varIndex],o={state:i};e._hintTemplateMarker&&(o.marker=e._hintTemplateMarker),e._templateStack||(e._templateStack=[]),e._templateStack.push(o),delete e._templateState,e._hintTemplateMarker=r;var a=r.find(),s=e.listSelections();1==s.length&&n(s[0].anchor,a.from)&&n(s[0].head,a.to)&&e.replaceRange("☰",a.from,a.to),t.commands.autocomplete(e)}function d(t){var e=t._templateState.cursor;if(null!=e){var n=e.find();null!=n&&t.setSelection(n,n)}f(t)}function f(t,e){var i=t._templateState;if(i){n("template","Uninstall, clearing: ",i.marked.length);for(var r=0;r<i.marked.length;r++)i.marked[r].clear();null!=i.cursor&&i.cursor.clear(),i.marked.length=0,i.selectableMarkers.length=0}else n("template","Uninstall, no state");if(t._templateStack&&t._templateStack.length>0){n("template","Popping from level",t._templateStack.length);var o=t._templateStack.pop();i=t._templateState=o.state,e&&t._hintTemplateMarker&&function(){n("template","Canceled?");for(var e=0;e<i.marked.length;e++){var r=i.marked[e];if(r==t._hintTemplateMarker){var o=r.find();o&&"☰"==t.getRange(o.from,o.to)&&t.replaceRange(r._templateVar,o.from,o.to)}}}(),o.marker?t._hintTemplateMarker=o.marker:delete t._hintTemplateMarker}else n("template","Leaving template mode"),t.off("change",l),t.off("endCompletion",c),t.removeKeyMap(m),delete t._templateState,delete t._hintTemplateMarker}var p=[],g=t.Pos;t.templatesHint={};var m={Tab:u,Enter:function(t){u(t,!0)},Esc:f,"Ctrl-Space":h};o.prototype.tokens=function(){return null==this._tokens&&(this._tokens=a(this.source)),this._tokens},o.prototype.content=function(){if(null==this._content){for(var t=this.tokens(),e="",n=0;n<t.length;n++){var i=t[n];"string"==typeof i?e+=i:i.variable&&(e+=i.variable)}this._content=e}return this._content},o.prototype.insert=function(t,e){var o=this,a=r(t);if(n("template","Insert, nested",a,"template",o),(t._templateState||a)&&(n("template","Uninstall from insert()",a),f(t)),o.text)return void t.replaceRange(o.text,e.from,e.to);var s=new i;t._templateState=s;for(var h=this.tokens(),d="",p=e.from.line,v=e.from.ch,y=[],x=[],b=null,w=0;w<h.length;w++){var _=h[w];if("string"==typeof _)d+=_,"\n"==_?(p++,v=0):v+=_.length;else if(_.variable){d+=_.variable;var S=g(p,v),C=g(p,v+_.variable.length),T=0!=x[_.variable];v+=_.variable.length,y.push({from:S,to:C,variable:_.variable,selectable:T}),x[_.variable]=!1}else _.cursor&&(b=g(p,v))}var S=e.from,C=e.to,k=S.line;t.replaceRange(d,S,C);for(var w=0;w<y.length;w++){var A=y[w],S=A.from,C=A.to,M=t.markText(S,C,{className:"CodeMirror-templates-variable",startStyle:"CodeMirror-templates-variable-start",endStyle:"CodeMirror-templates-variable-end",inclusiveLeft:!0,inclusiveRight:!0,clearWhenEmpty:!1,_templateVar:A.variable,_templates:function(t){if(o.varTemplates&&o.varTemplates[t])return o.varTemplates[t]}(A.variable)});s.marked.push(M),1==A.selectable&&s.selectableMarkers.push(M)}null!=b&&(s.cursor=t.setBookmark(b));for(var E=d.split("\n"),L=1;L<E.length;L++){var P=k+L;t.indentLine(P)}a||(t.on("change",l),n("template","Installing endCompletion"),t.on("endCompletion",c),t.addKeyMap(m)),u(t,!0)},t.templatesHint.getCompletions=function(n,i,r){var o=n.doc.mode.name,a=p[o];if(a)for(var s=0;s<a.length;s++){var l=a[s];if(e(l.name,r)){var c=l.name;l.description&&(c+="- "+l.description);var u="CodeMirror-hint-template";l.className&&(u=l.className);var h={className:u,text:c,template:l};h.data=h,h.hint=function(t,e,n){n.template.insert(t,e)},h.info=function(e){var i=e.template.content();if(t.runMode){var r=document.createElement("div");return r.className="cm-s-default",n.options&&n.options.theme&&(r.className="cm-s-"+n.options.theme),t.runMode(i,n.getMode().name,r),r}return i},i.push(h)}}},t.templatesHint.Template=o,t.templatesHint.addTemplates=function(t){var e=t.context;if(e){var n=p[e];n||(n=[],p[e]=n),t.templates.forEach(function(t){n.push(new o(t))})}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog-template-hint",["../../lib/codemirror","../../addon/hint/templates-hint","jquery","config","laconic"],t):t(CodeMirror)}(function(t,e,n,i){"use strict";function r(t){var e=this,i=["template","displayText","text",{from:"summary",to:"description"},"className","varTemplates"];if("string"==typeof t)this.displayText=t,this.text=t;else{for(var r=0;r<i.length;r++){var o=i[r];"string"==typeof o?t[o]&&(this[o]=t[o]):t[o.from]&&(this[o.to]=t[o.from])}t.mode&&function(t){var n=/[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g,i=/\bis\s+(det|nondet|semidet|fail|multi)$/;if(e.template||(e.template=t.replace(n,"$${$1}").replace(i,""),e.template.match(/\${cursor}/)||(e.template+="${cursor}")),e.displayText||(e.displayText=t),!e.varTemplates){var r=t.match(/:[A-Z][A-Za-z_0-9]*/g);if(r&&r.length>0){for(var o={},a=0;a<r.length;a++)o[r[a].substring(1)]=l;e.varTemplates=o}}}(t.mode),t.classes&&(t.className=t.classes.join(" "))}this.render=function(t,e,i){n(t).append(i.displayText)},this.info=function(t){return t.description}}function o(e,n,i){function o(t,e){return t.slice(0,e.length)==e}var a=n.token.string,s=[],c=l;e._hintTemplateMarker&&("☰"==a&&(a=""),c=e._hintTemplateMarker._templates);var u=a.length>0&&!a.match(/\w/);if(c)for(var h=0;h<c.length;h++){var d=c[h];if("string"==typeof d)o(d,a)&&s.push(new r(d));else{var f=["name","mode","template","text"];if(u)d.name&&d.name.indexOf(a)>=0&&s.push(new r(d));else for(var p=0;p<f.length;p++)if(d[f[p]]){o(d[f[p]],a)&&s.push(new r(d));break}}}if(0==s.length)for(var g=t.hint.anyword,m=""==a&&e._hintTemplateMarker?{word:/[A-Z][A-Za-z0-9_]*/}:i,v=g(e,m),h=0;h<v.list.length;h++)s.push(new r(v.list[h]));return{list:s,from:n.position.from,to:n.position.to}}function a(e,n,i){var r=s(e),a=o(e,r,i);t.attachContextInfo(a),n(a)}function s(e){var n=e.getCursor(),i=e.getTokenAt(n);return"prolog"!=t.innerMode(e.getMode(),i.state).mode.name?null:{token:i,position:{from:new t.Pos(n.line,i.start),to:new t.Pos(n.line,i.end)}}}var l=i.swish.templates||[];return r.prototype.hint=function(e,n,i){new t.templatesHint.Template(this).insert(e,n)},a.async=!0,t.registerHelper("hint","prologTemplate",a),{getHints:a,getState:s}}),define("cm/mode/prolog/prolog-ctype",[],function(){function t(t){var i=t.charCodeAt(0),r=Math.floor(i/256);if(r<e){var o=n[r];return"number"==typeof o?o:o.charCodeAt(255&i)}return 0}
+var e=4353,n=["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0@      ","","","\0\0\0\0\0\0\0\0\0\0","  ","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","@@@@@\0@\0@","\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0",3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",'\0\0\0\0\0"""""""""           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',"",3,"\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0          \0\0\0\0\0\0","@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\0\0\0',"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\b\b\b\b\b\b\b\b\b\b\b@@@@@\b\b@@@@@\b\b@@@@@\0@@@@@@@@@@ \0\0                \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","                 \0\0\0\0\0\0",16,"\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                                                                                  ",16,16,"\0                              ",16,16,16,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0 ","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\b\0\0\0","\0\0\0\0\0\0\0\0\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0                                                          \0",16,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0",3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@","@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@","@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0                                             \0\0\0     \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,"\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0        \0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                               \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,"\0\0\0\0                    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0","\0\0@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0                  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0","\0\0","\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,"\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0","\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0","@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0",0]
+;return{flags:t,id_start:function(e){return 0!=(1&t(e))},id_continue:function(e){return 0!=(2&t(e))},uppercase:function(e){return 0!=(4&t(e))},separator:function(e){return 0!=(8&t(e))},symbol:function(e){return 0!=(16&t(e))},other:function(e){return 0!=(32&t(e))},control:function(e){return 0!=(64&t(e))}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog",["../../lib/codemirror","./prolog-ctype"],t):t(CodeMirror)}(function(t,e){"use strict";t.defineMode("prolog",function(n,i){function r(t,e,n){return e.tokenize=n,n(t,e)}function o(t,e,n){if(n>0){for(;n-- >0;)if(!e.test(t.next()))return!1}else for(;e.test(t.peek());)t.next();return!0}function a(t){var e=t.next();if(S.test(e))return!0;switch(e){case"u":return!!w.unicodeEscape&&o(t,T,4);case"U":return!!w.unicodeEscape&&o(t,T,8);case null:return!0;case"c":return t.eatSpace(),!0;case"x":return o(t,T,2)}return!!C.test(e)&&(!!o(t,C,-1)&&("\\"==t.peek()&&t.next(),!0))}function s(t,e,n){for(var i;null!=(i=t.next());){if(i==n&&n!=t.peek())return e.nesting.pop(),!1;if("\\"==i&&!a(t))return!1}return w.multiLineQuoted}function l(t){return t.nesting.slice(-1)[0]}function c(t){var e=l(t);e?0==e.arg?e.arg=1:"control"==e.type&&(t.goalStart=!1):t.goalStart=!1}function u(t){var e=l(t);e&&!e.alignment&&void 0!=e.arg&&(0==e.arg?e.alignment=e.leftCol?e.leftCol+4:e.column+4:e.alignment=e.column+1)}function h(t){var e=l(t);e?e.arg?e.arg++:"control"==e.type&&(t.goalStart=!0):t.goalStart=!0}function d(t){var e=l(t);return e?"control"==e.type:t.inBody}function f(t,e,n){return x=t,b=n,e}function p(t){return!(!t.eol()&&!/[\s%]/.test(t.peek()))}function g(t,n){var i=t.next();if("("==i)return"functor"==n.lastType?(n.nesting.push({functor:n.functorName,column:t.column(),leftCol:n.functorColumn,arg:0}),delete n.functorName,delete n.functorColumn):n.nesting.push({type:"control",closeColumn:t.column(),alignment:t.column()+4}),f("solo",null,"(");if("{"==i&&"tag"==n.lastType)return n.nesting.push({tag:n.tagName,column:t.column(),leftCol:n.tagColumn,arg:0}),delete n.tagName,delete n.tagColumn,f("dict_open",null);if("/"==i&&t.eat("*"))return r(t,n,y);if("%"==i)return t.skipToEnd(),f("comment","comment");if(c(n),k.test(i)){switch(i){case")":n.nesting.pop();break;case"]":return n.nesting.pop(),f("list_close",null,"]");case"}":var o=l(n),s=o&&o.tag?"dict_close":"brace_term_close";return n.nesting.pop(),f(s,null);case",":t.eol()&&(n.commaAtEOL=!0),h(n);case";":d(n)&&(n.goalStart=!0);break;case"[":return n.nesting.push({type:"list",closeColumn:t.column(),alignment:t.column()+2}),f("list_open",null,"[");case"{":return w.quasiQuotations&&t.eat("|")?(n.nesting.push({type:"quasi-quotation",alignment:t.column()+1}),f("qq_open","qq_open")):(n.nesting.push({type:"curly",closeColumn:t.column(),alignment:t.column()+2}),f("brace_term_open",null));case"|":if(w.quasiQuotations){if(t.eat("|"))return n.tokenize=v,f("qq_sep","qq_sep");if(t.eat("}"))return n.nesting.pop(),f("qq_close","qq_close")}d(n)&&(n.goalStart=!0)}return f("solo",null,i)}if('"'==i||"'"==i||"`"==i)return n.nesting.push({type:"quoted",alignment:t.column()+1}),r(t,n,m(i));if("0"==i){if(t.eat(/x/i))return t.eatWhile(/[\da-f]/i),f("number","number");if(t.eat(/o/i))return t.eatWhile(/[0-7]/i),f("number","number");if(t.eat(/'/)){return"\\"!=t.next()||a(t)?f("code","code"):f("error","error")}}if(/\d/.test(i)||/[+-]/.test(i)&&t.eat(/\d/))return w.groupedIntegers?t.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/):t.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),f("-"==i?"neg-number":"+"==i?"pos-number":"number");if(e.symbol(i)){t.eatWhile(e.symbol);var u=t.current();return"."==u&&p(t)?l(n)?f("fullstop","error",u):f("fullstop","fullstop",u):A.test(u)?f("neck","neck",u):d(n)&&M.test(u)?(n.goalStart=!0,f("symbol","operator",u)):f("symbol","operator",u)}t.eatWhile(e.id_continue);var g=t.current();if("{"==t.peek()&&w.dicts)return n.tagName=g,n.tagColumn=t.column(),f("tag","tag",g);if("_"==i){if(1==g.length)return f("var","anon",g);var x=g.charAt(1);return e.uppercase(x)?f("var","var-2",g):f("var","var",g)}return e.uppercase(i)?f("var","var",g):"("==t.peek()?(n.functorName=g,n.functorColumn=t.column(),f("functor","functor",g)):f("atom","atom",g)}function m(t){return function(e,n){if(!s(e,n,t)){if(n.tokenize=g,"("==e.peek()){var i=e.current();return n.functorName=i,f("functor","functor",i)}if("{"==e.peek()&&w.dicts){var i=e.current();return n.tagName=i,f("tag","tag",i)}}return f(_[t],_[t])}}function v(t,e){for(var n,i=!1;n=t.next();){if("}"==n&&i){e.tokenize=g,t.backUp(2);break}i="|"==n}return f("qq_content","qq_content")}function y(t,e){for(var n,i=!1;n=t.next();){if("/"==n&&i){e.tokenize=g;break}i="*"==n}return f("comment","comment")}var x,b,w={quasiQuotations:!0,dicts:!0,unicodeEscape:!0,multiLineQuoted:!0,groupedIntegers:!0},_={'"':"string","'":"qatom","`":"bqstring"},S=/[abref\\'"nrtsv]/,C=/[0-7]/,T=/[0-9a-fA-F]/,k=/[[\]{}(),;|!]/,A=/^(:-|-->)$/,M=/^(,|;|->|\*->|\\+|\|)$/;return{startState:function(){return{tokenize:g,inBody:!1,goalStart:!1,lastType:null,nesting:new Array,curTerm:null,curToken:null}},token:function(t,e){if(null==e.curTerm&&i.metainfo&&(e.curTerm=0,e.curToken=0),t.sol()&&delete e.commaAtEOL,e.tokenize==g&&t.eatSpace())return t.eol()&&u(e),null;var n=e.tokenize(t,e);return t.eol()&&u(e),"neck"==x?(e.inBody=!0,e.goalStart=!0):"fullstop"==x&&(e.inBody=!1,e.goalStart=!1),e.lastType=x,"function"==typeof i.enrich&&(n=i.enrich(t,e,x,b,n)),n},indent:function(e,n){if(e.tokenize==y)return t.Pass;var i;return(i=l(e))?i.closeColumn&&!e.commaAtEOL?i.closeColumn:i.alignment:e.inBody?4:0},theme:"prolog",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"%"}}),t.defineMIME("text/x-prolog","prolog")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_keys",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologStartIfThenElse=function(e){var n=e.getCursor("start");return 1==e.getTokenAt(n,!0).state.goalStart?void e.replaceSelection("(   ","end"):t.Pass},t.commands.prologStartThen=function(e){function n(t){var e=t.nesting.length;return e>0?t.nesting[e-1]:null}var i=e.getCursor("start"),r=e.getTokenAt(i,!0);return i.ch==r.end&&"operator"==r.type&&"-"==r.string&&function(t){var e=n(t);return e?"control"==e.type:t.inBody}(r.state)?void e.replaceSelection(">  ","end"):t.Pass},t.commands.prologStartElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 0!=i.start||n.ch!=i.end||/\S/.test(i.string)?t.Pass:void e.replaceSelection(";   ","end")},t.defineOption("prologKeys",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prolog"),n){var r={name:"prolog","'('":"prologStartIfThenElse","'>'":"prologStartThen","';'":"prologStartElse","Ctrl-L":"refreshHighlight"};e.addKeyMap(r)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_query",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologMaybeFireQuery=function(e){for(var n=e.lineCount()-1;n>=0&&""==e.getLine(n).trim();)n--;if(n>=0){var i=e.getLine(n).length,r=e.getTokenAt({line:n,ch:i},!0);if("fullstop"==r.type){var o=e.getCursor();(o.line>n||o.line==n&&o.ch>=r.end)&&$(".swish-event-receiver").trigger("feedback",{html:"Use <b>Ctrl+Enter</b> to execute the query",owner:$(e.display.wrapper).closest(".pane-wrapper")})}}return t.Pass},t.commands.prologFireQuery=function(t){return t.prologFireQuery(t.getValue())},t.defineOption("prologQuery",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prologQuery"),"function"==typeof n){var r={name:"prologQuery","Ctrl-Enter":"prologFireQuery",Enter:"prologMaybeFireQuery"};e.addKeyMap(r),e.prologFireQuery=n}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_server",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){"object"==typeof t&&(this.enabled=t.enabled||!1,this.role=t.role||"source",t.sourceID&&(this.sourceID=t.sourceID),this.url={change:t.url+"change",tokens:t.url+"tokens",leave:t.url+"leave",info:t.url+"info"},this.delay=t.delay?t.delay:a,this.generationFromServer=-1,this.tmo=null)}function n(t,e){var n=t.state.prologHighlightServer;null!=n&&null!=n.url&&n.enabled&&(n.tmo&&t.askRefresh(),void 0!==n.changes&&n.changes.push(e),"setValue"!=e.origin&&-1!=n.generationFromServer||(n.changes=void 0,t.serverAssistedHighlight()))}function i(t){var e=t.state.prologHighlightServer;if(null!=e&&null!=e.url&&null!=e.uuid){var n=e.uuid;delete e.uuid,$.ajax({url:e.url.leave,async:!1,contentType:"application/json",type:"POST",dataType:"json",data:JSON.stringify({uuid:n})})}}function r(){var t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)})}function o(t,e,n,i,r){function o(e){var n;if(i==e)return!0;if((n=e.lastIndexOf(i,1))>=0){for(var r=e.substring(i.length+n),o=0;o<r.length;o++)if(!t.eat(r.charAt(o)))return t.backUp(o),!1;return!0}return!1}function a(t){var e=t.slice(-1)[0];return e&&"quoted"==e.type}var c=this;if(null!=e.curTerm){var u,h;if(e.syntax_error)return"fullstop"==n&&(c.editor.askRefresh(),delete e.syntax_error),r;if(e.outOfSync){var d=e.outOfSync;if(d.skippedTerms<=3){if(d.skippedTokens.push({type:n,style:r,content:i}),h=function(){var t=e.outOfSync;t.okToken,t.okTerm;return t.skippedTerms,null}())return h;"fullstop"==n&&(d.skippedTokens=[],d.skippedTerms++)}return r}return(u=function(t){var e=c.metainfo[t.curTerm];if(!e)return null;var n=e[t.curToken];return n||null}(e))?void 0!==(h=function(t,e){if(t){if(!s[n])return i&&t.text==i?(e.curToken++,t.type):r;if(t.text&&i){if(o(t.text))return e.curToken++,t.type;return}if(s[n]==l[t.type])return"fullstop"==n?(e.curTerm++,e.curToken=0):a(e.nesting)||e.curToken++,t.type;if(s[n]==t.base)return e.curToken++,t.type;if("qatom"==n&&"atom"==l[t.type])return e.curToken++,t.type;if("number"==n&&"meta"==t.type)return e.curToken++,t.type;if("neg-number"==n&&t.text&&"-"==t.text)return e.curToken+=2,"number";if("pos-number"==n&&t.text&&"+"==t.text)return e.curToken+=2,"number"}}(u,e))?h:"syntax_error"==u.type?(e.syntax_error=!0,e.curToken=0,e.curTerm++,r):(function(){e.outOfSync||(console.log("Mismatch: ("+i+") "+n+"/"+u.type),e.outOfSync={okToken:e.curToken,okTerm:e.curTerm,skippedTerms:0,skippedTokens:[]}),c.editor.askRefresh()}(),r+" outofsync"):(c.editor.askRefresh(),r)}return r}var a=1e3;t.defineOption("prologHighlightServer",!1,function(t,r,o){function a(){i(t)}t.state.prologHighlightServer?null==r?(i(t),t.off("change",n),window.removeEventListener("unload",a),delete t.state.prologHighlightServer,t.setOption("mode",{name:"prolog"})):r.enabled!=o.enabled&&(t.state.prologHighlightServer.enabled=r.enabled,r.enabled?(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)):(i(t),t.off("change",n),window.removeEventListener("unload",a),t.setOption("mode",{name:"prolog"}))):r&&(t.state.prologHighlightServer=new e(r),t.state.prologHighlightServer.enabled&&(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)))}),t.prototype.askRefresh=function(t){var e=this,n=e.state.prologHighlightServer;null!=n&&(void 0===t&&(t=n.delay),n.tmo&&clearTimeout(n.tmo),n.tmo=setTimeout(function(){e.serverAssistedHighlight()},t))},t.prototype.serverAssistedHighlight=function(t){function e(){var t=n.getOption("mode");return"object"!=typeof t?t={name:"prolog",enrich:o,editor:n}:t.enrich||(t.enrich=o,t.editor=n),t}var n=this,i=n.state.prologHighlightServer,a={};if(i.tmo=null,null!=i&&null!=i.url&&i.enabled&&(!n.isClean(i.generationFromServer)||t)){if(i.uuid)a.uuid=i.uuid,void 0==i.changes?(a.text=n.getValue(),a.text.length>1e3&&(i.changes=[])):(a.changes=i.changes,i.changes=[]);else{if(a.text=n.getValue(),""==a.text.trim())return;i.uuid=r(),a.uuid=i.uuid}a.role=i.role,"function"==typeof i.sourceID&&(a.sourceID=i.sourceID()),i.generationFromServer=n.changeGeneration(),$.ajax({url:i.url.tokens,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(a),success:function(t,i){var r=e();r.metainfo=t.tokens,n.setOption("mode",r)},error:function(t){409==t.status&&delete i.uuid}})}},t.commands.refreshHighlight=function(t){t.serverAssistedHighlight(!0)};var s={var:"var",atom:"atom",qatom:"qatom",bqstring:"string",symbol:"atom",functor:"functor",tag:"tag",number:"number",string:"string",code:"number","neg-number":"number","pos-number":"number",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop"},l={var:"var",singleton:"var",uatom:"var",atom:"atom",qatom:"qatom",string:"string",codes:"string",chars:"string",functor:"functor",tag:"tag",control:"atom",meta:"atom",op_type:"atom",int:"number",float:"number",key:"atom",sep:"atom",ext_quant:"atom",expanded:"expanded",comment_string:"string",identifier:"atom",delimiter:"atom",module:"atom",constraint:"atom",head_exported:"atom",head_public:"atom",head_extern:"atom",head_dynamic:"atom",head_multifile:"atom",head_unreferenced:"atom",head_hook:"atom",head_meta:"atom",head_constraint:"atom",head_imported:"atom",head_built_in:"atom",head_iso:"atom",head_def_iso:"atom",head_def_swi:"atom",head:"atom",goal_built_in:"atom",goal_imported:"atom",goal_autoload:"atom",goal_global:"atom",goal_undefined:"atom",goal_thread_local:"atom",goal_dynamic:"atom",goal_multifile:"atom",goal_expanded:"atom",goal_extern:"atom",goal_recursion:"atom",goal_meta:"atom",goal_foreign:"atom",goal_local:"atom",goal_constraint:"atom",goal_not_callable:"atom",xpce_method:"functor",xpce_class_builtin:"atom",xpce_class_lib:"atom",xpce_class_user:"atom",xpce_class_undef:"atom",option_name:"atom",no_option_name:"atom",flag_name:"atom",no_flag_name:"atom",file_no_depends:"atom",file:"atom",nofile:"atom",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",qq_type:"atom",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop",string_terminal:"string",html:"functor",entity:"atom",html_attribute:"functor",sgml_attr_function:"atom",http_location_for_id:"atom",http_no_location_for_id:"atom"};t.prototype.getEnrichedToken=function(t){if(null!=t.state.curTerm&&null!=t.state.curToken){var e,n=this.getOption("mode");if(n.metainfo&&(e=n.metainfo[t.state.curTerm]))return e[t.state.curToken-1]}},t.prototype.tokenInfo=function(t,e){var n=this.state.prologHighlightServer;return e||(e=$($.el.span({class:"token-info"},"..."))),$.ajax({url:n.url.info,data:t,success:function(t){e.html(t)}}),e[0]},t.prototype.getTokenReferences=function(t){function e(t,e){if(e&&0==e.indexOf("swish://"))return t.file=e.substring(8),!0}var n=[];switch(t.type){case"goal_local":var i={title:"Source for "+t.text+"/"+t.arity,line:t.line,regex:new RegExp("\\b"+RegExp.escape(t.text),"g"),showAllMatches:!0};e(i,t.file),n.push(i);break;case"file":var i={};e(i,t.path)&&(i.title="Included file "+i.file,n.push(i))}return n}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/xml/xml",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};t.defineMode("xml",function(i,r){function o(t,e){function n(n){return e.tokenize=n,n(t,e)}var i=t.next();if("<"==i)return t.eat("!")?t.eat("[")?t.match("CDATA[")?n(l("atom","]]>")):null:t.match("--")?n(l("comment","--\x3e")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(c(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=l("meta","?>"),"meta"):(k=t.eat("/")?"closeTag":"openTag",e.tokenize=a,"tag bracket");if("&"==i){var r;return r=t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"),r?"atom":"error"}return t.eatWhile(/[^&<]/),null}function a(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=o,k=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return k="equals",null;if("<"==n){e.tokenize=o,e.state=f,e.tagName=e.tagStart=null;var i=e.tokenize(t,e);return i?i+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=s(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function s(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=a;break}return"string"};return e.isInAttribute=!0,e}function l(t,e){return function(n,i){for(;!n.eol();){if(n.match(e)){i.tokenize=o;break}n.next()}return t}}function c(t){return function(e,n){for(var i;null!=(i=e.next());){if("<"==i)return n.tokenize=c(t+1),n.tokenize(e,n);if(">"==i){if(1==t){n.tokenize=o;break}return n.tokenize=c(t-1),n.tokenize(e,n)}}return"meta"}}function u(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(S.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function h(t){t.context&&(t.context=t.context.prev)}function d(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!S.contextGrabbers.hasOwnProperty(n)||!S.contextGrabbers[n].hasOwnProperty(e))return;h(t)}}function f(t,e,n){return"openTag"==t?(n.tagStart=e.column(),p):"closeTag"==t?g:f}function p(t,e,n){return"word"==t?(n.tagName=e.current(),A="tag",y):S.allowMissingTagName&&"endTag"==t?(A="tag bracket",y(t,e,n)):(A="error",p)}function g(t,e,n){if("word"==t){var i=e.current();return n.context&&n.context.tagName!=i&&S.implicitlyClosed.hasOwnProperty(n.context.tagName)&&h(n),n.context&&n.context.tagName==i||!1===S.matchClosing?(A="tag",m):(A="tag error",v)}return S.allowMissingTagName&&"endTag"==t?(A="tag bracket",m(t,e,n)):(A="error",v)}function m(t,e,n){return"endTag"!=t?(A="error",m):(h(n),f)}function v(t,e,n){return A="error",m(t,e,n)}function y(t,e,n){if("word"==t)return A="attribute",x;if("endTag"==t||"selfcloseTag"==t){var i=n.tagName,r=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||S.autoSelfClosers.hasOwnProperty(i)?d(n,i):(d(n,i),n.context=new u(n,i,r==n.indented)),f}return A="error",y}function x(t,e,n){return"equals"==t?b:(S.allowMissing||(A="error"),y(t,e,n))}function b(t,e,n){return"string"==t?w:"word"==t&&S.allowUnquoted?(A="string",y):(A="error",y(t,e,n))}function w(t,e,n){return"string"==t?w:y(t,e,n)}var _=i.indentUnit,S={},C=r.htmlMode?e:n;for(var T in C)S[T]=C[T];for(var T in r)S[T]=r[T];var k,A;return o.isInText=!0,{startState:function(t){var e={tokenize:o,state:f,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;k=null;var n=e.tokenize(t,e);return(n||k)&&"comment"!=n&&(A=null,e.state=e.state(k||n,t,e),A&&(n="error"==A?n+" error":A)),n},indent:function(e,n,i){var r=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+_;if(r&&r.noIndent)return t.Pass;if(e.tokenize!=a&&e.tokenize!=o)return i?i.match(/^(\s*)/)[0].length:0;if(e.tagName)return!1!==S.multilineTagIndentPastTag?e.tagStart+e.tagName.length+2:e.tagStart+_*(S.multilineTagIndentFactor||1);if(S.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var s=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(s&&s[1])for(;r;){if(r.tagName==s[2]){r=r.prev;break}if(!S.implicitlyClosed.hasOwnProperty(r.tagName))break;r=r.prev}else if(s)for(;r;){var l=S.contextGrabbers[r.tagName];if(!l||!l.hasOwnProperty(s[2]))break;r=r.prev}for(;r&&r.prev&&!r.startOfLine;)r=r.prev;return r?r.indent+_:e.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:S.htmlMode?"html":"xml",helperType:S.htmlMode?"html":"xml",skipAttribute:function(t){t.state==b&&(t.state=y)}}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/meta",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h","ino"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Esper",mime:"text/x-esper",mode:"sql"},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective-C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mimes:["text/x-php","application/x-httpd-php","application/x-httpd-php-open"],mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"SML",mime:"text/x-sml",mode:"mllike",ext:["sml","sig","fun","smackspec"]},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",
+mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var e=0;e<t.modeInfo.length;e++){var n=t.modeInfo[e];n.mimes&&(n.mime=n.mimes[0])}t.findModeByMIME=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.mime==e)return i;if(i.mimes)for(var r=0;r<i.mimes.length;r++)if(i.mimes[r]==e)return i}return/\+xml$/.test(e)?t.findModeByMIME("application/xml"):/\+json$/.test(e)?t.findModeByMIME("application/json"):void 0},t.findModeByExtension=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.ext)for(var r=0;r<i.ext.length;r++)if(i.ext[r]==e)return i}},t.findModeByFileName=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.file&&i.file.test(e))return i}var r=e.lastIndexOf("."),o=r>-1&&e.substring(r+1,e.length);if(o)return t.findModeByExtension(o)},t.findModeByName=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.name.toLowerCase()==e)return i;if(i.alias)for(var r=0;r<i.alias.length;r++)if(i.alias[r].toLowerCase()==e)return i}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define("cm/mode/markdown/markdown",["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,n){function i(n){if(t.findModeByName){var i=t.findModeByName(n);i&&(n=i.mime||i.mimes[0])}var r=t.getMode(e,n);return"null"==r.name?null:r}function r(t,e,n){return e.f=e.inline=n,n(t,e)}function o(t,e,n){return e.f=e.block=n,n(t,e)}function a(t){return!t||!/\S/.test(t.string)}function s(t){return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==c&&(t.f=f,t.block=l),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function l(e,o){var s=e.column()===o.indentation,l=a(o.prevLine.stream),c=o.indentedCode,d=o.prevLine.hr,f=!1!==o.list,p=(o.listStack[o.listStack.length-1]||0)+3;o.indentedCode=!1;var g=o.indentation;if(null===o.indentationDiff&&(o.indentationDiff=o.indentation,f)){for(o.em=!1,o.strong=!1,o.code=!1,o.strikethrough=!1,o.list=null;g<o.listStack[o.listStack.length-1];)o.listStack.pop(),o.listStack.length?o.indentation=o.listStack[o.listStack.length-1]:o.list=!1;!1!==o.list&&(o.indentationDiff=g-o.listStack[o.listStack.length-1])}var m=!(l||d||o.prevLine.header||f&&c||o.prevLine.fencedCodeEnd),y=(!1===o.list||d||l)&&o.indentation<=p&&e.match(C),x=null;if(o.indentationDiff>=4&&(c||o.prevLine.fencedCodeEnd||o.prevLine.header||l))return e.skipToEnd(),o.indentedCode=!0,_.code;if(e.eatSpace())return null;if(s&&o.indentation<=p&&(x=e.match(A))&&x[1].length<=6)return o.quote=0,o.header=x[1].length,o.thisLine.header=!0,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(o.indentation<=p&&e.eat(">"))return o.quote=s?1:o.quote+1,n.highlightFormatting&&(o.formatting="quote"),e.eatSpace(),h(o);if(!y&&!o.setext&&s&&o.indentation<=p&&(x=e.match(T))){var b=x[1]?"ol":"ul";return o.indentation=g+e.current().length,o.list=!0,o.quote=0,o.listStack.push(o.indentation),n.taskLists&&e.match(k,!1)&&(o.taskList=!0),o.f=o.inline,n.highlightFormatting&&(o.formatting=["list","list-"+b]),h(o)}return s&&o.indentation<=p&&(x=e.match(L,!0))?(o.quote=0,o.fencedEndRE=new RegExp(x[1]+"+ *$"),o.localMode=n.fencedCodeBlockHighlighting&&i(x[2]),o.localMode&&(o.localState=t.startState(o.localMode)),o.f=o.block=u,n.highlightFormatting&&(o.formatting="code-block"),o.code=-1,h(o)):o.setext||!(m&&f||o.quote||!1!==o.list||o.code||y||P.test(e.string))&&(x=e.lookAhead(1))&&(x=x.match(M))?(o.setext?(o.header=o.setext,o.setext=0,e.skipToEnd(),n.highlightFormatting&&(o.formatting="header")):(o.header="="==x[0].charAt(0)?1:2,o.setext=o.header),o.thisLine.header=!0,o.f=o.inline,h(o)):y?(e.skipToEnd(),o.hr=!0,o.thisLine.hr=!0,_.hr):"["===e.peek()?r(e,o,v):r(e,o,o.inline)}function c(e,n){var i=b.token(e,n.htmlState);if(!w){var r=t.innerMode(b,n.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||n.md_inside&&e.current().indexOf(">")>-1)&&(n.f=f,n.block=l,n.htmlState=null)}return i}function u(t,e){var i=e.listStack[e.listStack.length-1]||0,r=e.indentation<i,a=i+3;if(e.fencedEndRE&&e.indentation<=a&&(r||t.match(e.fencedEndRE))){n.highlightFormatting&&(e.formatting="code-block");var s;return r||(s=h(e)),e.localMode=e.localState=null,e.block=l,e.f=f,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,r?o(t,e,e.block):s}return e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),_.code)}function h(t){var e=[];if(t.formatting){e.push(_.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var i=0;i<t.formatting.length;i++)e.push(_.formatting+"-"+t.formatting[i]),"header"===t.formatting[i]&&e.push(_.formatting+"-"+t.formatting[i]+"-"+t.header),"quote"===t.formatting[i]&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(_.formatting+"-"+t.formatting[i]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(_.linkHref,"url"):(t.strong&&e.push(_.strong),t.em&&e.push(_.em),t.strikethrough&&e.push(_.strikethrough),t.emoji&&e.push(_.emoji),t.linkText&&e.push(_.linkText),t.code&&e.push(_.code),t.image&&e.push(_.image),t.imageAltText&&e.push(_.imageAltText,"link"),t.imageMarker&&e.push(_.imageMarker)),t.header&&e.push(_.header,_.header+"-"+t.header),t.quote&&(e.push(_.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(_.quote+"-"+t.quote):e.push(_.quote+"-"+n.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(_.list2):e.push(_.list3):e.push(_.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function d(t,e){if(t.match(E,!0))return h(e)}function f(e,i){var r=i.text(e,i);if(void 0!==r)return r;if(i.list)return i.list=null,h(i);if(i.taskList){return" "===e.match(k,!0)[1]?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting="task"),i.taskList=!1,h(i)}if(i.taskOpen=!1,i.taskClosed=!1,i.header&&e.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting="header"),h(i);var a=e.next();if(i.linkTitle){i.linkTitle=!1;var s=a;"("===a&&(s=")"),s=(s+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var l="^\\s*(?:[^"+s+"\\\\]+|\\\\\\\\|\\\\.)"+s;if(e.match(new RegExp(l),!0))return _.linkHref}if("`"===a){var u=i.formatting;n.highlightFormatting&&(i.formatting="code"),e.eatWhile("`");var d=e.current().length;if(0!=i.code||i.quote&&1!=d){if(d==i.code){var m=h(i);return i.code=0,m}return i.formatting=u,h(i)}return i.code=d,h(i)}if(i.code)return h(i);if("\\"===a&&(e.next(),n.highlightFormatting)){var v=h(i),y=_.formatting+"-escape";return v?v+" "+y:y}if("!"===a&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return i.imageMarker=!0,i.image=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("["===a&&i.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return i.imageMarker=!1,i.imageAltText=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("]"===a&&i.imageAltText){n.highlightFormatting&&(i.formatting="image");var v=h(i);return i.imageAltText=!1,i.image=!1,i.inline=i.f=g,v}if("["===a&&!i.image)return i.linkText=!0,n.highlightFormatting&&(i.formatting="link"),h(i);if("]"===a&&i.linkText){n.highlightFormatting&&(i.formatting="link");var v=h(i);return i.linkText=!1,i.inline=i.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?g:f,v}if("<"===a&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+_.linkInline}if("<"===a&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+_.linkEmail}if(n.xml&&"<"===a&&e.match(/^(!--|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(e.string.substring(e.start,x))&&(i.md_inside=!0)}return e.backUp(1),i.htmlState=t.startState(b),o(e,i,c)}if(n.xml&&"<"===a&&e.match(/^\/\w*?>/))return i.md_inside=!1,"tag";if("*"===a||"_"===a){for(var w=1,S=1==e.pos?" ":e.string.charAt(e.pos-2);w<3&&e.eat(a);)w++;var C=e.peek()||" ",T=!/\s/.test(C)&&(!N.test(C)||/\s/.test(S)||N.test(S)),A=!/\s/.test(S)&&(!N.test(S)||/\s/.test(C)||N.test(C)),M=null,E=null;if(w%2&&(i.em||!T||"*"!==a&&A&&!N.test(S)?i.em!=a||!A||"*"!==a&&T&&!N.test(C)||(M=!1):M=!0),w>1&&(i.strong||!T||"*"!==a&&A&&!N.test(S)?i.strong!=a||!A||"*"!==a&&T&&!N.test(C)||(E=!1):E=!0),null!=E||null!=M){n.highlightFormatting&&(i.formatting=null==M?"strong":null==E?"em":"strong em"),!0===M&&(i.em=a),!0===E&&(i.strong=a);var m=h(i);return!1===M&&(i.em=!1),!1===E&&(i.strong=!1),m}}else if(" "===a&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return h(i);e.backUp(1)}if(n.strikethrough)if("~"===a&&e.eatWhile(a)){if(i.strikethrough){n.highlightFormatting&&(i.formatting="strikethrough");var m=h(i);return i.strikethrough=!1,m}if(e.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting="strikethrough"),h(i)}else if(" "===a&&e.match(/^~~/,!0)){if(" "===e.peek())return h(i);e.backUp(2)}if(n.emoji&&":"===a&&e.match(/^[a-z_\d+-]+:/)){i.emoji=!0,n.highlightFormatting&&(i.formatting="emoji");var L=h(i);return i.emoji=!1,L}return" "===a&&(e.match(/ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),h(i)}function p(t,e){if(">"===t.next()){e.f=e.inline=f,n.highlightFormatting&&(e.formatting="link");var i=h(e);return i?i+=" ":i="",i+_.linkInline}return t.match(/^[^>]+/,!0),_.linkInline}function g(t,e){if(t.eatSpace())return null;var i=t.next();return"("===i||"["===i?(e.f=e.inline=m("("===i?")":"]"),n.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,h(e)):"error"}function m(t){return function(e,i){if(e.next()===t){i.f=i.inline=f,n.highlightFormatting&&(i.formatting="link-string");var r=h(i);return i.linkHref=!1,r}return e.match(O[t]),i.linkHref=!0,h(i)}}function v(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=y,t.next(),n.highlightFormatting&&(e.formatting="link"),e.linkText=!0,h(e)):r(t,e,f)}function y(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=x,n.highlightFormatting&&(e.formatting="link");var i=h(e);return e.linkText=!1,i}return t.match(/^([^\]\\]|\\.)+/,!0),_.linkText}function x(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,_.linkHref+" url")}var b=t.getMode(e,"text/html"),w="null"==b.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.emoji&&(n.emoji=!1),void 0===n.fencedCodeBlockHighlighting&&(n.fencedCodeBlockHighlighting=!0),void 0===n.xml&&(n.xml=!0),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var _={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var S in _)_.hasOwnProperty(S)&&n.tokenTypeOverrides[S]&&(_[S]=n.tokenTypeOverrides[S]);var C=/^([*\-_])(?:\s*\1){2,}\s*$/,T=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,k=/^\[(x| )\](?=\s)/i,A=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,M=/^ *(?:\={1,}|-{1,})\s*$/,E=/^[^#!\[\]*_\\<>` "'(~:]+/,L=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,P=/^\s*\[[^\]]+?\]:.*$/,N=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,O={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/},R={startState:function(){return{f:l,prevLine:{stream:null},thisLine:{stream:null},block:l,htmlState:null,indentation:0,inline:f,text:d,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(b,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,linkHref:e.linkHref,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return s(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=c)){var n=t.match(/^\s*/,!0)[0].replace(/\t/g,"    ").length;if(e.indentation=n,e.indentationDiff=null,n>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==c?{state:t.htmlState,mode:b}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:R}},indent:function(e,n,i){return e.block==c&&b.indent?b.indent(e.htmlState,n,i):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,n,i):t.Pass},blankLine:s,getType:h,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return R},"xml"),t.defineMIME("text/markdown","markdown"),t.defineMIME("text/x-markdown","markdown")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/edit/matchbrackets",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,i){var r=t.getLineHandle(e.line),o=e.ch-1,l=i&&i.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var c=!l&&o>=0&&s[r.text.charAt(o)]||s[r.text.charAt(++o)];if(!c)return null;var u=">"==c.charAt(1)?1:-1;if(i&&i.strict&&u>0!=(o==e.ch))return null;var h=t.getTokenTypeAt(a(e.line,o+1)),d=n(t,a(e.line,o+(u>0?1:0)),u,h||null,i);return null==d?null:{from:a(e.line,o),to:d&&d.pos,match:d&&d.ch==c.charAt(0),forward:u>0}}function n(t,e,n,i,r){for(var o=r&&r.maxScanLineLength||1e4,l=r&&r.maxScanLines||1e3,c=[],u=r&&r.bracketRegex?r.bracketRegex:/[(){}[\]]/,h=n>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),d=e.line;d!=h;d+=n){var f=t.getLine(d);if(f){var p=n>0?0:f.length-1,g=n>0?f.length:-1;if(!(f.length>o))for(d==e.line&&(p=e.ch-(n<0?1:0));p!=g;p+=n){var m=f.charAt(p);if(u.test(m)&&(void 0===i||t.getTokenTypeAt(a(d,p+1))==i)){var v=s[m];if(">"==v.charAt(1)==n>0)c.push(m);else{if(!c.length)return{pos:a(d,p),ch:m};c.pop()}}}}}return d-n!=(n>0?t.lastLine():t.firstLine())&&null}function i(t,n,i){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,s=[],l=t.listSelections(),c=0;c<l.length;c++){var u=l[c].empty()&&e(t,l[c].head,i);if(u&&t.getLine(u.from.line).length<=r){var h=u.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";s.push(t.markText(u.from,a(u.from.line,u.from.ch+1),{className:h})),u.to&&t.getLine(u.to.line).length<=r&&s.push(t.markText(u.to,a(u.to.line,u.to.ch+1),{className:h}))}}if(s.length){o&&t.state.focused&&t.focus();var d=function(){t.operation(function(){for(var t=0;t<s.length;t++)s[t].clear()})};if(!n)return d;setTimeout(d,800)}}function r(t){t.operation(function(){t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null),t.state.matchBrackets.currentlyHighlighted=i(t,!1,t.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=t.Pos,s={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};t.defineOption("matchBrackets",!1,function(e,n,i){i&&i!=t.Init&&(e.off("cursorActivity",r),e.state.matchBrackets&&e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null)),n&&(e.state.matchBrackets="object"==typeof n?n:{},e.on("cursorActivity",r))}),t.defineExtension("matchBrackets",function(){i(this,!0)}),t.defineExtension("findMatchingBracket",function(t,n,i){return(i||"boolean"==typeof n)&&(i?(i.strict=n,n=i):n=n?{strict:!0}:null),e(this,t,n)}),t.defineExtension("scanForBracket",function(t,e,i,r){return n(this,t,e,i,r)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/continuecomment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(e){if(e.getOption("disableInput"))return t.Pass;for(var i,r=e.listSelections(),o=[],a=0;a<r.length;a++){var s=r[a].head;if(!/\bcomment\b/.test(e.getTokenTypeAt(s)))return t.Pass;var l=e.getModeAt(s);if(i){if(i!=l)return t.Pass}else i=l;var c=null;if(i.blockCommentStart&&i.blockCommentContinue){var u,h=e.getLine(s.line).slice(0,s.ch),d=h.lastIndexOf(i.blockCommentEnd);if(-1!=d&&d==s.ch-i.blockCommentEnd.length);else if((u=h.lastIndexOf(i.blockCommentStart))>-1&&u>d){if(c=h.slice(0,u),/\S/.test(c)){c="";for(var f=0;f<u;++f)c+=" "}}else(u=h.indexOf(i.blockCommentContinue))>-1&&!/\S/.test(h.slice(0,u))&&(c=h.slice(0,u));null!=c&&(c+=i.blockCommentContinue)}if(null==c&&i.lineComment&&n(e)){var h=e.getLine(s.line),u=h.indexOf(i.lineComment);u>-1&&(c=h.slice(0,u),/\S/.test(c)?c=null:c+=i.lineComment+h.slice(u+i.lineComment.length).match(/^\s*/)[0])}if(null==c)return t.Pass;o[a]="\n"+c}e.operation(function(){for(var t=r.length-1;t>=0;t--)e.replaceRange(o[t],r[t].from(),r[t].to(),"+insert")})}function n(t){var e=t.getOption("continueComments");return!e||"object"!=typeof e||!1!==e.continueLineComment}t.defineOption("continueComments",null,function(n,i,r){if(r&&r!=t.Init&&n.removeKeyMap("continueComment"),i){var o="Enter";"string"==typeof i?o=i:"object"==typeof i&&i.key&&(o=i.key);var a={name:"continueComment"};a[o]=e,n.addKeyMap(a)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/comment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){var e=t.search(o);return-1==e?0:e}function n(t,e,n){return/\bstring\b/.test(t.getTokenTypeAt(a(e.line,0)))&&!/^[\'\"\`]/.test(n)}function i(t,e){var n=t.getMode();return!1!==n.useInnerComments&&n.innerMode?t.getModeAt(e):n}var r={},o=/[^\s\u00a0]/,a=t.Pos;t.commands.toggleComment=function(t){t.toggleComment()},t.defineExtension("toggleComment",function(t){t||(t=r);for(var e=this,n=1/0,i=this.listSelections(),o=null,s=i.length-1;s>=0;s--){var l=i[s].from(),c=i[s].to();l.line>=n||(c.line>=n&&(c=a(n,0)),n=l.line,null==o?e.uncomment(l,c,t)?o="un":(e.lineComment(l,c,t),o="line"):"un"==o?e.uncomment(l,c,t):e.lineComment(l,c,t))}}),t.defineExtension("lineComment",function(t,s,l){l||(l=r);var c=this,u=i(c,t),h=c.getLine(t.line);if(null!=h&&!n(c,t,h)){var d=l.lineComment||u.lineComment;if(!d)return void((l.blockCommentStart||u.blockCommentStart)&&(l.fullLines=!0,c.blockComment(t,s,l)));var f=Math.min(0!=s.ch||s.line==t.line?s.line+1:s.line,c.lastLine()+1),p=null==l.padding?" ":l.padding,g=l.commentBlankLines||t.line==s.line;c.operation(function(){if(l.indent){for(var n=null,i=t.line;i<f;++i){var r=c.getLine(i),s=r.slice(0,e(r));(null==n||n.length>s.length)&&(n=s)}for(var i=t.line;i<f;++i){var r=c.getLine(i),u=n.length;(g||o.test(r))&&(r.slice(0,u)!=n&&(u=e(r)),c.replaceRange(n+d+p,a(i,0),a(i,u)))}}else for(var i=t.line;i<f;++i)(g||o.test(c.getLine(i)))&&c.replaceRange(d+p,a(i,0))})}}),t.defineExtension("blockComment",function(t,e,n){n||(n=r);var s=this,l=i(s,t),c=n.blockCommentStart||l.blockCommentStart,u=n.blockCommentEnd||l.blockCommentEnd;if(!c||!u)return void((n.lineComment||l.lineComment)&&0!=n.fullLines&&s.lineComment(t,e,n));if(!/\bcomment\b/.test(s.getTokenTypeAt(a(t.line,0)))){var h=Math.min(e.line,s.lastLine());h!=t.line&&0==e.ch&&o.test(s.getLine(h))&&--h;var d=null==n.padding?" ":n.padding;t.line>h||s.operation(function(){if(0!=n.fullLines){var i=o.test(s.getLine(h));s.replaceRange(d+u,a(h)),s.replaceRange(c+d,a(t.line,0));var r=n.blockCommentLead||l.blockCommentLead;if(null!=r)for(var f=t.line+1;f<=h;++f)(f!=h||i)&&s.replaceRange(r+d,a(f,0))}else s.replaceRange(u,e),s.replaceRange(c,t)})}}),t.defineExtension("uncomment",function(t,e,n){n||(n=r);var s,l=this,c=i(l,t),u=Math.min(0!=e.ch||e.line==t.line?e.line:e.line-1,l.lastLine()),h=Math.min(t.line,u),d=n.lineComment||c.lineComment,f=[],p=null==n.padding?" ":n.padding;t:if(d){for(var g=h;g<=u;++g){var m=l.getLine(g),v=m.indexOf(d);if(v>-1&&!/comment/.test(l.getTokenTypeAt(a(g,v+1)))&&(v=-1),-1==v&&o.test(m))break t;if(v>-1&&o.test(m.slice(0,v)))break t;f.push(m)}if(l.operation(function(){for(var t=h;t<=u;++t){var e=f[t-h],n=e.indexOf(d),i=n+d.length;n<0||(e.slice(i,i+p.length)==p&&(i+=p.length),s=!0,l.replaceRange("",a(t,n),a(t,i)))}}),s)return!0}var y=n.blockCommentStart||c.blockCommentStart,x=n.blockCommentEnd||c.blockCommentEnd;if(!y||!x)return!1;var b=n.blockCommentLead||c.blockCommentLead,w=l.getLine(h),_=w.indexOf(y);if(-1==_)return!1;var S=u==h?w:l.getLine(u),C=S.indexOf(x,u==h?_+y.length:0),T=a(h,_+1),k=a(u,C+1);if(-1==C||!/comment/.test(l.getTokenTypeAt(T))||!/comment/.test(l.getTokenTypeAt(k))||l.getRange(T,k,"\n").indexOf(x)>-1)return!1;var A=w.lastIndexOf(y,t.ch),M=-1==A?-1:w.slice(0,t.ch).indexOf(x,A+y.length);if(-1!=A&&-1!=M&&M+x.length!=t.ch)return!1;M=S.indexOf(x,e.ch);var E=S.slice(e.ch).lastIndexOf(y,M-e.ch);return A=-1==M||-1==E?-1:e.ch+E,(-1==M||-1==A||A==e.ch)&&(l.operation(function(){l.replaceRange("",a(u,C-(p&&S.slice(C-p.length,C)==p?p.length:0)),a(u,C+x.length));var t=_+y.length;if(p&&w.slice(t,t+p.length)==p&&(t+=p.length),l.replaceRange("",a(h,_),a(h,t)),b)for(var e=h+1;e<=u;++e){var n=l.getLine(e),i=n.indexOf(b);if(-1!=i&&!o.test(n.slice(0,i))){var r=i+b.length;p&&n.slice(r,r+p.length)==p&&(r+=p.length),l.replaceRange("",a(e,i),a(e,r))}}}),!0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;t.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function n(t,e,n){var i=t.options.hintOptions,r={};for(var o in p)r[o]=p[o];if(i)for(var o in i)void 0!==i[o]&&(r[o]=i[o]);if(n)for(var o in n)void 0!==n[o]&&(r[o]=n[o]);return r.hint.resolve&&(r.hint=r.hint.resolve(t,e)),r}function i(t){return"string"==typeof t?t:t.text}function r(t,e){function n(t,n){var r;r="string"!=typeof n?function(t){return n(t,e)}:i.hasOwnProperty(n)?i[n]:n,o[t]=r}var i={Up:function(){e.moveFocus(-1)},Down:function(){e.moveFocus(1)},PageUp:function(){e.moveFocus(1-e.menuSize(),!0)},PageDown:function(){e.moveFocus(e.menuSize()-1,!0)},Home:function(){e.setFocus(0)},End:function(){e.setFocus(e.length-1)},Enter:e.pick,Tab:e.pick,Esc:e.close},r=t.options.customKeys,o=r?{}:i;if(r)for(var a in r)r.hasOwnProperty(a)&&n(a,r[a]);var s=t.options.extraKeys;if(s)for(var a in s)s.hasOwnProperty(a)&&n(a,s[a]);return o}function o(t,e){for(;e&&e!=t;){if("LI"===e.nodeName.toUpperCase()&&e.parentNode==t)return e;e=e.parentNode}}function a(e,n){this.completion=e,this.data=n,this.picked=!1;var a=this,s=e.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=n.selectedHint||0;for(var c=n.list,d=0;d<c.length;++d){var f=l.appendChild(document.createElement("li")),p=c[d],g=u+(d!=this.selectedHint?"":" "+h);null!=p.className&&(g=p.className+" "+g),f.className=g,p.render?p.render(f,n,p):f.appendChild(document.createTextNode(p.displayText||i(p))),f.hintId=d}var m=s.cursorCoords(e.options.alignWithWord?n.from:null),v=m.left,y=m.bottom,x=!0;l.style.left=v+"px",l.style.top=y+"px";var b=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),w=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(e.options.container||document.body).appendChild(l);var _=l.getBoundingClientRect(),S=_.bottom-w,C=l.scrollHeight>l.clientHeight+1,T=s.getScrollInfo();if(S>0){var k=_.bottom-_.top;if(m.top-(m.bottom-_.top)-k>0)l.style.top=(y=m.top-k)+"px",x=!1;else if(k>w){l.style.height=w-5+"px",l.style.top=(y=m.bottom-_.top)+"px";var A=s.getCursor();n.from.ch!=A.ch&&(m=s.cursorCoords(A),l.style.left=(v=m.left)+"px",_=l.getBoundingClientRect())}}var M=_.right-b;if(M>0&&(_.right-_.left>b&&(l.style.width=b-5+"px",M-=_.right-_.left-b),l.style.left=(v=m.left-M)+"px"),C)for(var E=l.firstChild;E;E=E.nextSibling)E.style.paddingRight=s.display.nativeBarWidth+"px";if(s.addKeyMap(this.keyMap=r(e,{moveFocus:function(t,e){a.changeActive(a.selectedHint+t,e)},setFocus:function(t){a.changeActive(t)},menuSize:function(){return a.screenAmount()},length:c.length,close:function(){e.close()},pick:function(){a.pick()},data:n})),e.options.closeOnUnfocus){var L;s.on("blur",this.onBlur=function(){L=setTimeout(function(){e.close()},100)}),s.on("focus",this.onFocus=function(){clearTimeout(L)})}return s.on("scroll",this.onScroll=function(){var t=s.getScrollInfo(),n=s.getWrapperElement().getBoundingClientRect(),i=y+T.top-t.top,r=i-(window.pageYOffset||(document.documentElement||document.body).scrollTop);if(x||(r+=l.offsetHeight),r<=n.top||r>=n.bottom)return e.close();l.style.top=i+"px",l.style.left=v+T.left-t.left+"px"}),t.on(l,"dblclick",function(t){var e=o(l,t.target||t.srcElement);e&&null!=e.hintId&&(a.changeActive(e.hintId),a.pick())}),t.on(l,"click",function(t){var n=o(l,t.target||t.srcElement);n&&null!=n.hintId&&(a.changeActive(n.hintId),e.options.completeOnSingleClick&&a.pick())}),t.on(l,"mousedown",function(){setTimeout(function(){s.focus()},20)}),t.signal(n,"select",c[this.selectedHint],l.childNodes[this.selectedHint]),!0}function s(t,e){if(!t.somethingSelected())return e;for(var n=[],i=0;i<e.length;i++)e[i].supportsSelection&&n.push(e[i]);return n}function l(t,e,n,i){if(t.async)t(e,i,n);else{var r=t(e,n);r&&r.then?r.then(i):i(r)}}function c(e,n){var i,r=e.getHelpers(n,"hint");if(r.length){var o=function(t,e,n){function i(r){if(r==o.length)return e(null);l(o[r],t,n,function(t){t&&t.list.length>0?e(t):i(r+1)})}var o=s(t,r);i(0)};return o.async=!0,o.supportsSelection=!0,o}return(i=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:i})}:t.hint.anyword?function(e,n){return t.hint.anyword(e,n)}:function(){}}var u="CodeMirror-hint",h="CodeMirror-hint-active";t.showHint=function(t,e,n){if(!e)return t.showHint(n);n&&n.async&&(e.async=!0);var i={hint:e};if(n)for(var r in n)i[r]=n[r];return t.showHint(i)},t.defineExtension("showHint",function(i){i=n(this,this.getCursor("start"),i);var r=this.listSelections();if(!(r.length>1)){if(this.somethingSelected()){if(!i.hint.supportsSelection)return;for(var o=0;o<r.length;o++)if(r[o].head.line!=r[o].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var a=this.state.completionActive=new e(this,i);a.options.hint&&(t.signal(this,"startCompletion",this),a.update(!0))}});var d=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},f=window.cancelAnimationFrame||clearTimeout;e.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,n){var r=e.list[n];r.hint?r.hint(this.cm,e,r):this.cm.replaceRange(i(r),r.from||e.from,r.to||e.to,"complete"),t.signal(e,"pick",r),this.close()},cursorActivity:function(){this.debounce&&(f(this.debounce),this.debounce=0);var t=this.cm.getCursor(),e=this.cm.getLine(t.line);if(t.line!=this.startPos.line||e.length-t.ch!=this.startLen-this.startPos.ch||t.ch<this.startPos.ch||this.cm.somethingSelected()||t.ch&&this.options.closeCharacters.test(e.charAt(t.ch-1)))this.close();else{var n=this;this.debounce=d(function(){n.update()}),this.widget&&this.widget.disable()}},update:function(t){if(null!=this.tick){var e=this,n=++this.tick;l(this.options.hint,this.cm,this.options,function(i){e.tick==n&&e.finishUpdate(i,t)})}},finishUpdate:function(e,n){this.data&&t.signal(this.data,"update");var i=this.widget&&this.widget.picked||n&&this.options.completeSingle;this.widget&&this.widget.close(),this.data=e,e&&e.list.length&&(i&&1==e.list.length?this.pick(e,0):(this.widget=new a(this,e),t.signal(e,"shown")))}},a.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var t=this.completion.cm;this.completion.options.closeOnUnfocus&&(t.off("blur",this.onBlur),t.off("focus",this.onFocus)),t.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(e,n){if(e>=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+h,""),i=this.hints.childNodes[this.selectedHint=e],i.className+=" "+h,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],i)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",{resolve:c}),t.registerHelper("hint","fromList",function(e,n){var i,r=e.getCursor(),o=e.getTokenAt(r),a=t.Pos(r.line,o.start),s=r;o.start<r.ch&&/\w/.test(o.string.charAt(r.ch-o.start-1))?i=o.string.substr(0,r.ch-o.start):(i="",a=r);for(var l=[],c=0;c<n.words.length;c++){var u=n.words[c];u.slice(0,i.length)==i&&l.push(u)}if(l.length)return{list:l,from:a,to:s}}),t.commands.autocomplete=t.showHint;var p={hint:t.hint.auto,
+completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/anyword-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=/[\w$]+/;t.registerHelper("hint","anyword",function(n,i){for(var r=i&&i.word||e,o=i&&i.range||500,a=n.getCursor(),s=n.getLine(a.line),l=a.ch,c=l;c&&r.test(s.charAt(c-1));)--c;for(var u=c!=l&&s.slice(c,l),h=i&&i.list||[],d={},f=new RegExp(r.source,"g"),p=-1;p<=1;p+=2)for(var g=a.line,m=Math.min(Math.max(g+p*o,n.firstLine()),n.lastLine())+p;g!=m;g+=p)for(var v,y=n.getLine(g);v=f.exec(y);)g==a.line&&v[0]===u||u&&0!=v[0].lastIndexOf(u,0)||Object.prototype.hasOwnProperty.call(d,v[0])||(d[v[0]]=!0,h.push(v[0]));return{list:h,from:t.Pos(a.line,c),to:t.Pos(a.line,l)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/display/placeholder",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t){t.state.placeholder&&(t.state.placeholder.parentNode.removeChild(t.state.placeholder),t.state.placeholder=null)}function n(t){e(t);var n=t.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.style.direction=t.getOption("direction"),n.className="CodeMirror-placeholder";var i=t.getOption("placeholder");"string"==typeof i&&(i=document.createTextNode(i)),n.appendChild(i),t.display.lineSpace.insertBefore(n,t.display.lineSpace.firstChild)}function i(t){o(t)&&n(t)}function r(t){var i=t.getWrapperElement(),r=o(t);i.className=i.className.replace(" CodeMirror-empty","")+(r?" CodeMirror-empty":""),r?n(t):e(t)}function o(t){return 1===t.lineCount()&&""===t.getLine(0)}t.defineOption("placeholder","",function(n,o,a){var s=a&&a!=t.Init;if(o&&!s)n.on("blur",i),n.on("change",r),n.on("swapDoc",r),r(n);else if(!o&&s){n.off("blur",i),n.off("change",r),n.off("swapDoc",r),e(n);var l=n.getWrapperElement();l.className=l.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&i(n)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/runmode/runmode",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.runMode=function(e,n,i,r){var o=t.getMode(t.defaults,n),a=/MSIE \d/.test(navigator.userAgent),s=a&&(null==document.documentMode||document.documentMode<9);if(i.appendChild){var l=r&&r.tabSize||t.defaults.tabSize,c=i,u=0;c.innerHTML="",i=function(t,e){if("\n"==t)return c.appendChild(document.createTextNode(s?"\r":t)),void(u=0);for(var n="",i=0;;){var r=t.indexOf("\t",i);if(-1==r){n+=t.slice(i),u+=t.length-i;break}u+=r-i,n+=t.slice(i,r);var o=l-u%l;u+=o;for(var a=0;a<o;++a)n+=" ";i=r+1}if(e){var h=c.appendChild(document.createElement("span"));h.className="cm-"+e.replace(/ +/g," cm-"),h.appendChild(document.createTextNode(n))}else c.appendChild(document.createTextNode(n))}}for(var h=t.splitLines(e),d=r&&r.state||t.startState(o),f=0,p=h.length;f<p;++f){f&&i("\n");var g=new t.StringStream(h[f]);for(!g.string&&o.blankLine&&o.blankLine(d);!g.eol();){var m=o.token(g,d);i(g.current(),m,f,g.start,d),g.start=g.pos}}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/search/searchcursor",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){var e=t.flags;return null!=e?e:(t.ignoreCase?"i":"")+(t.global?"g":"")+(t.multiline?"m":"")}function n(t,n){for(var i=e(t),r=i,o=0;o<n.length;o++)-1==r.indexOf(n.charAt(o))&&(r+=n.charAt(o));return i==r?t:new RegExp(t.source,r)}function i(t){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(t.source)}function r(t,e,i){e=n(e,"g");for(var r=i.line,o=i.ch,a=t.lastLine();r<=a;r++,o=0){e.lastIndex=o;var s=t.getLine(r),l=e.exec(s);if(l)return{from:g(r,l.index),to:g(r,l.index+l[0].length),match:l}}}function o(t,e,o){if(!i(e))return r(t,e,o);e=n(e,"gm");for(var a,s=1,l=o.line,c=t.lastLine();l<=c;){for(var u=0;u<s&&!(l>c);u++){var h=t.getLine(l++);a=null==a?h:a+"\n"+h}s*=2,e.lastIndex=o.ch;var d=e.exec(a);if(d){var f=a.slice(0,d.index).split("\n"),p=d[0].split("\n"),m=o.line+f.length-1,v=f[f.length-1].length;return{from:g(m,v),to:g(m+p.length-1,1==p.length?v+p[0].length:p[p.length-1].length),match:d}}}}function a(t,e){for(var n,i=0;;){e.lastIndex=i;var r=e.exec(t);if(!r)return n;if(n=r,(i=n.index+(n[0].length||1))==t.length)return n}}function s(t,e,i){e=n(e,"g");for(var r=i.line,o=i.ch,s=t.firstLine();r>=s;r--,o=-1){var l=t.getLine(r);o>-1&&(l=l.slice(0,o));var c=a(l,e);if(c)return{from:g(r,c.index),to:g(r,c.index+c[0].length),match:c}}}function l(t,e,i){e=n(e,"gm");for(var r,o=1,s=i.line,l=t.firstLine();s>=l;){for(var c=0;c<o;c++){var u=t.getLine(s--);r=null==r?u.slice(0,i.ch):u+"\n"+r}o*=2;var h=a(r,e);if(h){var d=r.slice(0,h.index).split("\n"),f=h[0].split("\n"),p=s+d.length,m=d[d.length-1].length;return{from:g(p,m),to:g(p+f.length-1,1==f.length?m+f[0].length:f[f.length-1].length),match:h}}}}function c(t,e,n,i){if(t.length==e.length)return n;for(var r=0,o=n+Math.max(0,t.length-e.length);;){if(r==o)return r;var a=r+o>>1,s=i(t.slice(0,a)).length;if(s==n)return a;s>n?o=a:r=a+1}}function u(t,e,n,i){if(!e.length)return null;var r=i?f:p,o=r(e).split(/\r|\n\r?/);t:for(var a=n.line,s=n.ch,l=t.lastLine()+1-o.length;a<=l;a++,s=0){var u=t.getLine(a).slice(s),h=r(u);if(1==o.length){var d=h.indexOf(o[0]);if(-1==d)continue t;var n=c(u,h,d,r)+s;return{from:g(a,c(u,h,d,r)+s),to:g(a,c(u,h,d+o[0].length,r)+s)}}var m=h.length-o[0].length;if(h.slice(m)==o[0]){for(var v=1;v<o.length-1;v++)if(r(t.getLine(a+v))!=o[v])continue t;var y=t.getLine(a+o.length-1),x=r(y),b=o[o.length-1];if(x.slice(0,b.length)==b)return{from:g(a,c(u,h,m,r)+s),to:g(a+o.length-1,c(y,x,b.length,r))}}}}function h(t,e,n,i){if(!e.length)return null;var r=i?f:p,o=r(e).split(/\r|\n\r?/);t:for(var a=n.line,s=n.ch,l=t.firstLine()-1+o.length;a>=l;a--,s=-1){var u=t.getLine(a);s>-1&&(u=u.slice(0,s));var h=r(u);if(1==o.length){var d=h.lastIndexOf(o[0]);if(-1==d)continue t;return{from:g(a,c(u,h,d,r)),to:g(a,c(u,h,d+o[0].length,r))}}var m=o[o.length-1];if(h.slice(0,m.length)==m){for(var v=1,n=a-o.length+1;v<o.length-1;v++)if(r(t.getLine(n+v))!=o[v])continue t;var y=t.getLine(a+1-o.length),x=r(y);if(x.slice(x.length-o[0].length)==o[0])return{from:g(a+1-o.length,c(y,x,y.length-o[0].length,r)),to:g(a,c(u,h,m.length,r))}}}}function d(t,e,i,a){this.atOccurrence=!1,this.doc=t,i=i?t.clipPos(i):g(0,0),this.pos={from:i,to:i};var c;"object"==typeof a?c=a.caseFold:(c=a,a=null),"string"==typeof e?(null==c&&(c=!1),this.matches=function(n,i){return(n?h:u)(t,e,i,c)}):(e=n(e,"gm"),a&&!1===a.multiline?this.matches=function(n,i){return(n?s:r)(t,e,i)}:this.matches=function(n,i){return(n?l:o)(t,e,i)})}var f,p,g=t.Pos;String.prototype.normalize?(f=function(t){return t.normalize("NFD").toLowerCase()},p=function(t){return t.normalize("NFD")}):(f=function(t){return t.toLowerCase()},p=function(t){return t}),d.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){for(var n=this.matches(e,this.doc.clipPos(e?this.pos.from:this.pos.to));n&&0==t.cmpPos(n.from,n.to);)e?n.from.ch?n.from=g(n.from.line,n.from.ch-1):n=n.from.line==this.doc.firstLine()?null:this.matches(e,this.doc.clipPos(g(n.from.line-1))):n.to.ch<this.doc.getLine(n.to.line).length?n.to=g(n.to.line,n.to.ch+1):n=n.to.line==this.doc.lastLine()?null:this.matches(e,g(n.to.line+1,0));if(n)return this.pos=n,this.atOccurrence=!0,this.pos.match||!0;var i=g(e?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:i,to:i},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var i=t.splitLines(e);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=g(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",function(t,e,n){return new d(this.doc,t,e,n)}),t.defineDocExtension("getSearchCursor",function(t,e,n){return new d(this,t,e,n)}),t.defineExtension("selectMatches",function(e,n){for(var i=[],r=this.getSearchCursor(e,this.getCursor("from"),n);r.findNext()&&!(t.cmpPos(r.to(),this.getCursor("to"))>0);)i.push({anchor:r.from(),head:r.to()});i.length&&this.setSelections(i,0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/dialog/dialog",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,n){var i,r=t.getWrapperElement();return i=r.appendChild(document.createElement("div")),i.className=n?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof e?i.innerHTML=e:i.appendChild(e),i}function n(t,e){t.state.currentNotificationClose&&t.state.currentNotificationClose(),t.state.currentNotificationClose=e}t.defineExtension("openDialog",function(i,r,o){function a(t){if("string"==typeof t)h.value=t;else{if(c)return;c=!0,l.parentNode.removeChild(l),u.focus(),o.onClose&&o.onClose(l)}}o||(o={}),n(this,null);var s,l=e(this,i,o.bottom),c=!1,u=this,h=l.getElementsByTagName("input")[0];return h?(h.focus(),o.value&&(h.value=o.value,!1!==o.selectValueOnOpen&&h.select()),o.onInput&&t.on(h,"input",function(t){o.onInput(t,h.value,a)}),o.onKeyUp&&t.on(h,"keyup",function(t){o.onKeyUp(t,h.value,a)}),t.on(h,"keydown",function(e){o&&o.onKeyDown&&o.onKeyDown(e,h.value,a)||((27==e.keyCode||!1!==o.closeOnEnter&&13==e.keyCode)&&(h.blur(),t.e_stop(e),a()),13==e.keyCode&&r(h.value,e))}),!1!==o.closeOnBlur&&t.on(h,"blur",a)):(s=l.getElementsByTagName("button")[0])&&(t.on(s,"click",function(){a(),u.focus()}),!1!==o.closeOnBlur&&t.on(s,"blur",a),s.focus()),a}),t.defineExtension("openConfirm",function(i,r,o){function a(){c||(c=!0,s.parentNode.removeChild(s),u.focus())}n(this,null);var s=e(this,i,o&&o.bottom),l=s.getElementsByTagName("button"),c=!1,u=this,h=1;l[0].focus();for(var d=0;d<l.length;++d){var f=l[d];!function(e){t.on(f,"click",function(n){t.e_preventDefault(n),a(),e&&e(u)})}(r[d]),t.on(f,"blur",function(){--h,setTimeout(function(){h<=0&&a()},200)}),t.on(f,"focus",function(){++h})}}),t.defineExtension("openNotification",function(i,r){function o(){l||(l=!0,clearTimeout(a),s.parentNode.removeChild(s))}n(this,o);var a,s=e(this,i,r&&r.bottom),l=!1,c=r&&void 0!==r.duration?r.duration:5e3;return t.on(s,"click",function(e){t.e_preventDefault(e),o()}),c&&(a=setTimeout(o,c)),o})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/search",["../../lib/codemirror","./searchcursor","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return"string"==typeof t?t=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e?"gi":"g"):t.global||(t=new RegExp(t.source,t.ignoreCase?"gi":"g")),{token:function(e){t.lastIndex=e.pos;var n=t.exec(e.string);if(n&&n.index==e.pos)return e.pos+=n[0].length||1,"searching";n?e.pos=n.index:e.skipToEnd()}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function i(t){return t.state.search||(t.state.search=new n)}function r(t){return"string"==typeof t&&t==t.toLowerCase()}function o(t,e,n){return t.getSearchCursor(e,n,{caseFold:r(e),multiline:!0})}function a(t,e,n,i,r){t.openDialog(e,i,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){p(t)},onKeyDown:r})}function s(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function l(t,e,n,i){t.openConfirm?t.openConfirm(e,i):confirm(n)&&i[0]()}function c(t){return t.replace(/\\(.)/g,function(t,e){return"n"==e?"\n":"r"==e?"\r":e})}function u(t){var e=t.match(/^\/(.*)\/([a-z]*)$/);if(e)try{t=new RegExp(e[1],-1==e[2].indexOf("i")?"":"i")}catch(t){}else t=c(t);return("string"==typeof t?""==t:t.test(""))&&(t=/x^/),t}function h(t,n,i){n.queryText=i,n.query=u(i),t.removeOverlay(n.overlay,r(n.query)),n.overlay=e(n.query,r(n.query)),t.addOverlay(n.overlay),t.showMatchesOnScrollbar&&(n.annotate&&(n.annotate.clear(),n.annotate=null),n.annotate=t.showMatchesOnScrollbar(n.query,r(n.query)))}function d(e,n,r,o){var l=i(e);if(l.query)return f(e,n);var c=e.getSelection()||l.lastQuery;if(c instanceof RegExp&&"x^"==c.source&&(c=null),r&&e.openDialog){var u=null,d=function(n,i){t.e_stop(i),n&&(n!=l.queryText&&(h(e,l,n),l.posFrom=l.posTo=e.getCursor()),u&&(u.style.opacity=1),f(e,i.shiftKey,function(t,n){var i;n.line<3&&document.querySelector&&(i=e.display.wrapper.querySelector(".CodeMirror-dialog"))&&i.getBoundingClientRect().bottom-4>e.cursorCoords(n,"window").top&&((u=i).style.opacity=.4)}))};a(e,v,c,d,function(n,r){var o=t.keyName(n),a=e.getOption("extraKeys"),s=a&&a[o]||t.keyMap[e.getOption("keyMap")][o];"findNext"==s||"findPrev"==s||"findPersistentNext"==s||"findPersistentPrev"==s?(t.e_stop(n),h(e,i(e),r),e.execCommand(s)):"find"!=s&&"findPersistent"!=s||(t.e_stop(n),d(r,n))}),o&&c&&(h(e,l,c),f(e,n))}else s(e,v,"Search for:",c,function(t){t&&!l.query&&e.operation(function(){h(e,l,t),l.posFrom=l.posTo=e.getCursor(),f(e,n)})})}function f(e,n,r){e.operation(function(){var a=i(e),s=o(e,a.query,n?a.posFrom:a.posTo);(s.find(n)||(s=o(e,a.query,n?t.Pos(e.lastLine()):t.Pos(e.firstLine(),0)),s.find(n)))&&(e.setSelection(s.from(),s.to()),e.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),r&&r(s.from(),s.to()))})}function p(t){t.operation(function(){var e=i(t);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,t.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function g(t,e,n){t.operation(function(){for(var i=o(t,e);i.findNext();)if("string"!=typeof e){var r=t.getRange(i.from(),i.to()).match(e);i.replace(n.replace(/\$(\d)/g,function(t,e){return r[e]}))}else i.replace(n)})}function m(t,e){if(!t.getOption("readOnly")){var n=t.getSelection()||i(t).lastQuery,r='<span class="CodeMirror-search-label">'+(e?"Replace all:":"Replace:")+"</span>";s(t,r+y,r,n,function(n){n&&(n=u(n),s(t,x,"Replace with:","",function(i){if(i=c(i),e)g(t,n,i);else{p(t);var r=o(t,n,t.getCursor("from")),a=function(){var e,c=r.from();!(e=r.findNext())&&(r=o(t,n),!(e=r.findNext())||c&&r.from().line==c.line&&r.from().ch==c.ch)||(t.setSelection(r.from(),r.to()),t.scrollIntoView({from:r.from(),to:r.to()}),l(t,b,"Replace?",[function(){s(e)},a,function(){g(t,n,i)}]))},s=function(t){r.replace("string"==typeof n?i:i.replace(/\$(\d)/g,function(e,n){return t[n]})),a()};a()}}))})}}var v='<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',y=' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',x='<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',b='<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';t.commands.find=function(t){p(t),d(t)},t.commands.findPersistent=function(t){p(t),d(t,!1,!0)},t.commands.findPersistentNext=function(t){d(t,!1,!0,!0)},t.commands.findPersistentPrev=function(t){d(t,!0,!0,!0)},t.commands.findNext=d,t.commands.findPrev=function(t){d(t,!0)},t.commands.clearSearch=p,t.commands.replace=m,t.commands.replaceAll=function(t){m(t,!0)}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/jump-to-line",["../../lib/codemirror","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function n(t,e){var n=Number(e);return/^[-+]/.test(e)?t.getCursor().line+n:n-1}t.commands.jumpToLine=function(t){var i=t.getCursor();e(t,'Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>',"Jump to line:",i.line+1+":"+i.ch,function(e){if(e){var r;if(r=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(e))t.setCursor(n(t,r[1]),Number(r[2]));else if(r=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(e)){var o=Math.round(t.lineCount()*Number(r[1])/100);/^[-+]/.test(r[1])&&(o=i.line+o+1),t.setCursor(o-1,i.ch)}else(r=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(e))&&t.setCursor(n(t,r[1]),i.ch)}})},t.keyMap.default["Alt-G"]="jumpToLine"}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hover/text-hover",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";!function(){function e(e,n){function i(e){if(!r.parentNode)return t.off(document,"mousemove",i);r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",r.style.left=e.clientX+5+"px"}var r=document.createElement("div");return r.className="CodeMirror-hover-tooltip","string"==typeof n&&(n=document.createTextNode(n)),r.appendChild(n),document.body.appendChild(r),t.on(document,"mousemove",i),i(e),null!=r.style.opacity&&(r.style.opacity=1),r}function n(t){t.parentNode&&t.parentNode.removeChild(t)}function i(t){t.parentNode&&(null==t.style.opacity&&n(t),t.style.opacity=0,setTimeout(function(){n(t)},600))}function r(n,r,o,a,s){function l(){t.off(o,"mouseout",l),t.off(o,"click",l),o.className=o.className.replace(h,""),c&&(i(c),c=null),s.removeKeyMap(a.keyMap)}var c=e(n,r),u=setInterval(function(){if(c)for(var t=o;;t=t.parentNode){if(t==document.body)return;if(!t){l();break}}if(!c)return clearInterval(u)},400);t.on(o,"mouseout",l),t.on(o,"click",l),a.keyMap={Esc:l},s.addKeyMap(a.keyMap)}function o(t,e){this.options=e,this.timeout=null,e.delay?this.onMouseOver=function(e){s(t,e)}:this.onMouseOver=function(e){l(t,e)},this.keyMap=null}function a(e,n){if(n instanceof Function)return{getTextHover:n};if(n&&!0!==n||(n={}),n.getTextHover||(n.getTextHover=e.getHelper(t.Pos(0,0),"textHover")),!n.getTextHover)throw new Error("Required option 'getTextHover' missing (text-hover addon)");return n}function s(t,e){var n=t.state.textHover,i=n.options.delay;if(clearTimeout(n.timeout),e.srcElement){var r={srcElement:e.srcElement,clientX:e.clientX,clientY:e.clientY};e=r}n.timeout=setTimeout(function(){l(t,e)},i)}function l(t,e){var n=e.target||e.srcElement;if(n){var i=t.state.textHover,o=u(t,e),a=i.options.getTextHover(t,o,e);a&&(n.className+=h,"function"==typeof a?a(r,o,e,n,i,t):r(e,a,n,i,t))}}function c(e,n,i){if(i&&i!=t.Init&&(t.off(e.getWrapperElement(),"mouseover",e.state.textHover.onMouseOver),delete e.state.textHover),n){var r=e.state.textHover=new o(e,a(e,n));t.on(e.getWrapperElement(),"mouseover",r.onMouseOver)}}function u(t,e){for(var n=e.target||e.srcElement,i=n.innerText||n.textContent,r=0;r<d.length;r+=2){var o=t.coordsChar({left:e.clientX+d[r],top:e.clientY+d[r+1]}),a=t.getTokenAt(o);if(a&&a.string===i)return{token:a,pos:o}}}var h=" CodeMirror-hover",d=[0,0,0,5,0,-5,5,0,-5,0];t.defineOption("textHover",!1,c)}()}),define("cm/addon/hover/prolog-hover",["../../lib/codemirror","jquery","laconic"],function(t,e){"use strict";function n(t){return e.el.span({class:"pred-name"},t.text+"/"+t.arity)}function i(t,e,n){s[n]=e}function r(t,e){var n;return s[t.file]?s[t.file]:(n=t.file.lastIndexOf("/"))?t.file.substring(n+1):t.file}function o(t,n,i){return n&&n.file?e.el.div(a(t)+" included from ",e.el.span({class:"file-path"},n.file)):n&&n.line?a(t)+" defined in line "+n.line:"Locally defined "+t}function a(t){return t[0].toUpperCase()+t.slice(1)}var s={},l={goal_built_in:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Built-in predicate"},goal_global:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Global predicate"},goal_autoload:function(t,i){return t?e.el.div(n(t)," (autoload from ",r(t,i),"): ",i.tokenInfo(t)):"Autoloaded predicate"},goal_imported:function(t,i){return t?e.el.div(n(t)," (imported from ",r(t,i),"): ",i.tokenInfo(t)):"Imported predicate"},goal_recursion:"Recursive call",goal_dynamic:"Dynamic predicate",goal_undefined:"Undefined predicate",goal_local:function(t,e){return o("predicate",t,e)},goal_constraint:function(t,e){return o("CHR constraint",t,e)},head_unreferenced:"Predicate is not called",unused_import:"Imported predicate is not used",undefined_import:"Imported predicate is not defined",head_constraint:"CHR constraint",file:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path))):"File name"},file_no_depends:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path),e.el.div({class:"hover-remark"},"does not resolve any dependencies"))):"File name (does not resolve any dependencies)"},error:function(t,n){return t&&t.expected?e.el.div("error: ",e.el.strong(t.expected)," expected"):"error"},singleton:"Variable appearing only once",codes:"List of Unicode code points (integers)",chars:"List of one-character atoms",string:"Packed string (SWI7, use `text` for a list of codes)",qatom:"Quoted atom",uatom:"Uppercase atom due to var_prefix flag",tag:"Tag of a SWI7 dict",ext_quant:"Existential quantification operator",instantiation_error:"No variable allowed here",string_terminal:"Terminal (DCG)",head:null,control:null,fullstop:null,var:null,int:null,float:null,number:null,atom:null,functor:null,comment:null,neck:null,operator:null,sep:null,list_open:null,list_close:null,dict_open:null,dict_close:null};t.registerHelper("textHover","prolog",function(t,n,i){if(n){var r,o=n.token,a=l[o.type];if(void 0===a)return(r=t.getEnrichedToken(o))?r.summary&&"ask"===r.info?e.el.div(r.summary,t.tokenInfo(r)):r.summary?e.el.div(r.summary):e.el.div(o.type):e.el.div(o.type);if("function"==typeof a){var s=a(t.getEnrichedToken(o),t);return"string"==typeof s?e.el.div(s):s}if("string"==typeof a)return e.el.div(a)}return null})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-context-info",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=null;t.attachContextInfo=function(n){t.on(n,"select",function(t,n){n=n.parentNode;var i=null;if(t.info&&(i=t.info(t)),i){var r=n.getBoundingClientRect();null==e&&(e=document.createElement("div"),e.className="CodeMirror-hints-contextInfo",document.body.appendChild(e)),e.innerHTML="",e.style.top=n.style.top,e.style.left=r.right+"px","string"==typeof i?e.innerHTML=i:e.appendChild(i),e.style.display="block"}else null!=e&&(e.innerHTML="",e.style.display="none")}),t.on(n,"close",function(){null!=e&&e.parentNode.removeChild(e),e=null})},t.showContextInfo=function(e){return function(n,i,r){r||(r=i);var o=e(n,r);return t.attachContextInfo(o),o}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/keymap/emacs",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return t.line==e.line&&t.ch==e.ch}function n(t){R.push(t),R.length>50&&R.shift()}function i(t){if(!R.length)return n(t);R[R.length-1]+=t}function r(t){return R[R.length-(t?Math.min(t,1):1)]||""}function o(){return R.length>1&&R.pop(),r()}function a(t,r,o,a,s){null==s&&(s=t.getRange(r,o)),"grow"==a&&D&&D.cm==t&&e(r,D.pos)&&t.isClean(D.gen)?i(s):!1!==a&&n(s),t.replaceRange("",r,o,"+delete"),D="grow"==a?{cm:t,pos:r,gen:t.changeGeneration()}:null}function s(t,e,n){return t.findPosH(e,n,"char",!0)}function l(t,e,n){return t.findPosH(e,n,"word",!0)}function c(t,e,n){return t.findPosV(e,n,"line",t.doc.sel.goalColumn)}function u(t,e,n){return t.findPosV(e,n,"page",t.doc.sel.goalColumn)}function h(t,e,n){for(var i=e.line,r=t.getLine(i),o=/\S/.test(n<0?r.slice(0,e.ch):r.slice(e.ch)),a=t.firstLine(),s=t.lastLine();;){if((i+=n)<a||i>s)return t.clipPos(O(i-n,n<0?0:null));r=t.getLine(i);if(/\S/.test(r))o=!0;else if(o)return O(i,0)}}function d(t,e,n){for(var i=e.line,r=e.ch,o=t.getLine(e.line),a=!1;;){var s=o.charAt(r+(n<0?-1:0));if(s){if(a&&/[!?.]/.test(s))return O(i,r+(n>0?1:0));a||(a=/\w/.test(s)),r+=n}else{if(i==(n<0?t.firstLine():t.lastLine()))return O(i,r);if(o=t.getLine(i+n),!/\S/.test(o))return O(i,r);i+=n,r=n<0?o.length:0}}}function f(t,n,i){var r;if(t.findMatchingBracket&&(r=t.findMatchingBracket(n,{strict:!0}))&&r.match&&(r.forward?1:-1)==i)return i>0?O(r.to.line,r.to.ch+1):r.to;for(var o=!0;;o=!1){var a=t.getTokenAt(n),s=O(n.line,i<0?a.start:a.end);if(!(o&&i>0&&a.end==n.ch)&&/\w/.test(a.string))return s;var l=t.findPosH(s,i,"char");if(e(s,l))return n;n=l}}function p(t,e){var n=t.state.emacsPrefix;return n?(_(t),"-"==n?-1:Number(n)):e?null:1}function g(t){var e="string"==typeof t?function(e){e.execCommand(t)}:t;return function(t){var n=p(t);e(t);for(var i=1;i<n;++i)e(t)}}function m(t,n,i,r){var o=p(t);o<0&&(r=-r,o=-o);for(var a=0;a<o;++a){var s=i(t,n,r);if(e(s,n))break;n=s}return n}function v(t,e){var n=function(n){n.extendSelection(m(n,n.getCursor(),t,e))};return n.motion=!0,n}function y(t,e,n,i){for(var r,o=t.listSelections(),s=o.length;s--;)r=o[s].head,a(t,r,m(t,r,e,n),i)}function x(t,e){if(t.somethingSelected()){for(var n,i=t.listSelections(),r=i.length;r--;)n=i[r],a(t,n.anchor,n.head,e);return!0}}function b(t,e){if(t.state.emacsPrefix)return void("-"!=e&&(t.state.emacsPrefix+=e));t.state.emacsPrefix=e,t.on("keyHandled",w),t.on("inputRead",S)}function w(t,e){t.state.emacsPrefixMap||I.hasOwnProperty(e)||_(t)}function _(t){t.state.emacsPrefix=null,t.off("keyHandled",w),t.off("inputRead",S)}function S(t,e){var n=p(t);if(n>1&&"+input"==e.origin){for(var i=e.text.join("\n"),r="",o=1;o<n;++o)r+=i;t.replaceSelection(r)}}function C(t){t.state.emacsPrefixMap=!0,t.addKeyMap(j),t.on("keyHandled",T),t.on("inputRead",T)}function T(t,e){("string"!=typeof e||!/^\d$/.test(e)&&"Ctrl-U"!=e)&&(t.removeKeyMap(j),t.state.emacsPrefixMap=!1,t.off("keyHandled",T),t.off("inputRead",T))}function k(t){t.setCursor(t.getCursor()),t.setExtending(!t.getExtending()),t.on("change",function(){t.setExtending(!1)})}function A(t){t.setExtending(!1),t.setCursor(t.getCursor())}function M(t,e,n){t.openDialog?t.openDialog(e+': <input type="text" style="width: 10em"/>',n,{bottom:!0}):n(prompt(e,""))}function E(t,e){var n=t.getCursor(),i=t.findPosH(n,1,"word");t.replaceRange(e(t.getRange(n,i)),n,i),t.setCursor(i)}function L(t){for(var e=t.getCursor(),n=e.line,i=e.ch,r=[];n>=t.firstLine();){for(var o=t.getLine(n),a=null==i?o.length:i;a>0;){var i=o.charAt(--a);if(")"==i)r.push("(");else if("]"==i)r.push("[");else if("}"==i)r.push("{");else if(/[\(\{\[]/.test(i)&&(!r.length||r.pop()!=i))return t.extendSelection(O(n,a))}--n,i=null}}function P(t){t.execCommand("clearSearch"),A(t)}function N(t){j[t]=function(e){b(e,t)},H["Ctrl-"+t]=function(e){b(e,t)},I["Ctrl-"+t]=!0}var O=t.Pos,R=[],D=null,I={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};t.emacs={kill:a,killRegion:x,repeated:g};for(var H=t.keyMap.emacs=t.normalizeKeyMap({"Ctrl-W":function(t){a(t,t.getCursor("start"),t.getCursor("end"),!0)},"Ctrl-K":g(function(t){var e=t.getCursor(),n=t.clipPos(O(e.line)),i=t.getRange(e,n);/\S/.test(i)||(i+="\n",n=O(e.line+1,0)),a(t,e,n,"grow",i)}),"Alt-W":function(t){n(t.getSelection()),A(t)},"Ctrl-Y":function(t){var e=t.getCursor();t.replaceRange(r(p(t)),e,e,"paste"),t.setSelection(e,t.getCursor())},"Alt-Y":function(t){t.replaceSelection(o(),"around","paste")},"Ctrl-Space":k,"Ctrl-Shift-2":k,"Ctrl-F":v(s,1),"Ctrl-B":v(s,-1),Right:v(s,1),Left:v(s,-1),"Ctrl-D":function(t){y(t,s,1,!1)},Delete:function(t){x(t,!1)||y(t,s,1,!1)},"Ctrl-H":function(t){y(t,s,-1,!1)},Backspace:function(t){x(t,!1)||y(t,s,-1,!1)},"Alt-F":v(l,1),"Alt-B":v(l,-1),"Alt-Right":v(l,1),"Alt-Left":v(l,-1),"Alt-D":function(t){y(t,l,1,"grow")},"Alt-Backspace":function(t){y(t,l,-1,"grow")},"Ctrl-N":v(c,1),"Ctrl-P":v(c,-1),Down:v(c,1),Up:v(c,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":v(u,-1),"Ctrl-V":v(u,1),PageUp:v(u,-1),PageDown:v(u,1),"Ctrl-Up":v(h,-1),"Ctrl-Down":v(h,1),"Alt-A":v(d,-1),"Alt-E":v(d,1),"Alt-K":function(t){y(t,d,1,"grow")},"Ctrl-Alt-K":function(t){y(t,f,1,"grow")},"Ctrl-Alt-Backspace":function(t){y(t,f,-1,"grow")},"Ctrl-Alt-F":v(f,1),"Ctrl-Alt-B":v(f,-1),"Shift-Ctrl-Alt-2":function(t){var e=t.getCursor();t.setSelection(m(t,e,f,1),e)},"Ctrl-Alt-T":function(t){var e=f(t,t.getCursor(),-1),n=f(t,e,1),i=f(t,n,1),r=f(t,i,-1);t.replaceRange(t.getRange(r,i)+t.getRange(n,r)+t.getRange(e,n),e,i)},"Ctrl-Alt-U":g(L),"Alt-Space":function(t){for(var e=t.getCursor(),n=e.ch,i=e.ch,r=t.getLine(e.line);n&&/\s/.test(r.charAt(n-1));)--n;for(;i<r.length&&/\s/.test(r.charAt(i));)++i;t.replaceRange(" ",O(e.line,n),O(e.line,i))},"Ctrl-O":g(function(t){t.replaceSelection("\n","start")}),"Ctrl-T":g(function(t){t.execCommand("transposeChars")}),"Alt-C":g(function(t){E(t,function(t){var e=t.search(/\w/);return-1==e?t:t.slice(0,e)+t.charAt(e).toUpperCase()+t.slice(e+1).toLowerCase()})}),"Alt-U":g(function(t){E(t,function(t){return t.toUpperCase()})}),"Alt-L":g(function(t){E(t,function(t){return t.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":g("undo"),"Shift-Ctrl--":g("undo"),"Ctrl-Z":g("undo"),"Cmd-Z":g("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findPersistentNext","Ctrl-R":"findPersistentPrev","Ctrl-G":P,"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":g(function(t){t.replaceSelection("\n","end")}),Tab:"indentAuto","Alt-G G":function(t){var e=p(t,!0);if(null!=e&&e>0)return t.setCursor(e-1);M(t,"Goto line",function(e){var n;e&&!isNaN(n=Number(e))&&n==(0|n)&&n>0&&t.setCursor(n-1)})},"Ctrl-X Tab":function(t){t.indentSelection(p(t,!0)||t.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(t){t.setSelection(t.getCursor("head"),t.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":g("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(t){a(t,t.getCursor(),d(t,t.getCursor(),1),"grow")},"Ctrl-X H":"selectAll","Ctrl-Q Tab":g("insertTab"),"Ctrl-U":C}),j={"Ctrl-G":_},V=0;V<10;++V)N(String(V));N("-")}),define("editor",["cm/lib/codemirror","config","preferences","form","cm/mode/prolog/prolog-template-hint","modal","tabbed","prolog","storage","cm/mode/prolog/prolog","cm/mode/prolog/prolog_keys","cm/mode/prolog/prolog_query","cm/mode/prolog/prolog_server","cm/mode/markdown/markdown","cm/addon/edit/matchbrackets","cm/addon/comment/continuecomment","cm/addon/comment/comment","cm/addon/hint/show-hint","cm/addon/hint/anyword-hint","cm/addon/display/placeholder","cm/addon/runmode/runmode","cm/addon/search/search","cm/addon/search/searchcursor","cm/addon/search/jump-to-line","cm/addon/dialog/dialog","cm/addon/hover/text-hover","cm/addon/hover/prolog-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","jquery","laconic","cm/keymap/emacs"],function(t,e,n,i,r,o,a,s){function l(t,e){var n=[];e=e||"",n.push("<style>\n");for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];n.push(e,i,"{");for(var o in r)r.hasOwnProperty(o)&&n.push(o,":",r[o],";");n.push("}\n")}n.push("</style>\n"),$("body").append(n.join(""))}!function(i){var l,c="prologEditor",u={prolog:{mode:"prolog",role:"source",placeholder:"Your Prolog rules and facts go here ...",lineNumbers:!0,autoCurrent:!0,save:!1,theme:"prolog",matchBrackets:!0,
+textHover:!0,prologKeys:!0,extraKeys:{"Ctrl-Space":"autocomplete","Alt-/":"autocomplete"},hintOptions:{hint:r.getHints,completeSingle:!1}},markdown:{mode:"markdown",placeholder:"Your markdown block goes here ...",lineWrapping:!0,save:!1}},h={query:{mode:"prolog",role:"query",placeholder:"Your query goes here ...",lineNumbers:!1,lineWrapping:!0,save:!1}},d={_init:function(r){return this.each(function(){function o(t){var e=p.long_click,n=t.clientX-e.clientX,i=t.clientY-e.clientY;Math.sqrt(n*n+i*i)>5&&a()}function a(){d.off("mousemove",o);var t=p.long_click;t.timeout&&(clearTimeout(t.timeout),t.target=void 0,t.timeout=void 0)}function s(t){var e=i(l).data(t);e&&(f[t]=e)}var l,d=i(this),f={},p={};r=r||{},r.mode=r.mode||"prolog";var g=i.extend({},u[r.mode]);r.role&&h[r.role]&&(g=i.extend(g,h[r.role])),g=i.extend(g,r),n.getVal("emacs-keybinding")&&(g.keyMap="emacs"),"prolog"==g.mode&&(p.role=g.role,g.getSource&&(p.getSource=g.getSource),e.http.locations.cm_highlight&&(g.prologHighlightServer={url:e.http.locations.cm_highlight,role:g.role,enabled:n.getVal("semantic-highlighting")},g.sourceID&&(g.prologHighlightServer.sourceID=g.sourceID),g.extraKeys["Ctrl-R"]="refreshHighlight"),"source"==g.role&&(g.continueComments="Enter",g.gutters=["Prolog-breakpoints"]),p.long_click={},d.on("mousedown",".CodeMirror-code",function(t){var e=p.long_click;e.clientX=t.clientX,e.clientY=t.clientY,d.on("mousemove",o),p.long_click.timeout=setTimeout(function(){a(),d.prologEditor("contextAction")},500)}),d.on("mouseup",function(t){a()})),(l=d.children("textarea")[0])?(s("file"),s("url"),s("title"),s("meta"),s("st_type"),s("chats"),p.cm=t.fromTextArea(l,g)):(g.value||(g.value=d.text()),p.cm=t(d[0],g)),d.data(c,p),d.prologEditor("loadMode",g.mode),d.addClass("swish-event-receiver"),d.addClass("prolog-editor"),d.on("preference",function(t,e){d.prologEditor("preference",e)}),d.on("print",function(){"query"!=p.role&&d.prologEditor("print")}),d.on("clearMessages",function(t){d.prologEditor("clearMessages")}),d.on("edit-command",function(t,e){d.prologEditor("execCommand",e)}),p.cm.on("blur",function(t){d.prologEditor("execCommand","prepare")}),g.save&&(f.typeName=g.typeName||"program",d.prologEditor("setupStorage",f)),"prolog"==g.mode&&"source"==p.role&&(d.on("activate-tab",function(t){g.autoCurrent&&d.prologEditor("makeCurrent"),p.cm.refresh()}),d.on("source-error",function(t,e){d.prologEditor("highlightError",e)}),d.on("pengine-died",function(t,e){if(p.pengines){var n=p.pengines.indexOf(e);n>=0&&p.pengines.splice(n,1)}p.traceMark&&p.traceMark.pengine==e&&(p.traceMark.clear(),p.traceMark=null)}),d.on("addExample",function(t,e){d.prologEditor("addExample",e)}),p.cm.on("gutterClick",function(t,e){t.lineInfo(e).gutterMarkers?t.setGutterMarker(e,"Prolog-breakpoints",null):t.setGutterMarker(e,"Prolog-breakpoints",function(){return i('<span class="breakpoint-marker">&#9679;</span>')[0]}())})),p.cm.on("change",function(t,e){var n;if("setValue"==e.origin)n=!0;else{var i=d.data("storage"),r=i?i.cleanGeneration:p.cleanGeneration;n=p.cm.isClean(r)}d.prologEditor("markClean",n)})})},getOption:function(t){return this.data(c)[t]},setKeybinding:function(t){t=t||"default",this.data(c).cm.options.keyMap=t},loadMode:function(e){var n=this.data(c);return t.modes[e]?e!=n.mode&&n.cm.setOption("mode",e):require(["cm/mode/"+e+"/"+e],function(){n.cm.setOption("mode",e)}),this},isPengineSource:function(){var t=i(this).data(c);if(t&&"source"==t.role){var e=i(this).data("storage");if(e&&e.meta&&(e.meta.loaded||e.meta.module))return!1}return this},getBreakpoints:function(t){var e=[];return this.each(function(){for(var n=i(this).data(c),r=[],o=n.cm,a=o.firstLine(),s=o.lastLine();a<s;a++){o.lineInfo(a).gutterMarkers&&r.push(0+a+1)}if(r.length>0){var l;if(n.pengines&&n.pengines.indexOf(t)>=0)l="pengine://"+t+"/src";else{var u=i(this).data("storage");u&&(l="swish://"+u.file)}l&&e.push({file:l,breakpoints:r})}}),e},getSource:function(t,e){var n=[];return this.each(function(){if(i(this).prologEditor("isPengineSource")){var r=i(this).data(c);if(r&&(!t||t==r.role)){var o;o="function"!=typeof r.getSource||e?r.cm.getValue():r.getSource(),n.push(o)}}}),n.join("\n\n")},getSourceEx:function(){var t={value:this.data(c).cm.getValue()},e=this.prologEditor("getBreakpoints");return e.length>0&&(t.breakpoints=e),t},docid:function(){var t;return this.hasClass("storage")?this.storage("docid"):(t=this.closest(".storage"))&&t.length>0&&(stdoc=t.storage("docid"),stdoc)?stdoc+"#"+this.closest(".nb-cell").attr("name"):void 0},getSourceID:function(){var t=[];return this.each(function(){var e=i(this).data(c);e&&e.cm&&e.cm.state.prologHighlightServer?t.push(e.cm.state.prologHighlightServer.uuid):t.push(null)}),t},setSource:function(t,e){if("string"==typeof t&&(t={data:t}),this.data("storage")&&1!=e)this.storage("setSource",t);else{var n=this.data(c);n.cm.setValue(t.data),(t.line||t.prompt)&&(n.cm.refresh(),t.line?this.prologEditor("gotoLine",t.line,t):this.prologEditor("showTracePort",t.prompt)),"source"==n.role&&i(".swish-event-receiver").trigger("program-loaded",{editor:this,query:t.query})}return this},makeCurrent:function(){return i(".swish-event-receiver").trigger("current-program",this),this},markClean:function(t){var e=this.data(c);e.clean_signalled!=t&&(e.clean_signalled=t,this.trigger("data-is-clean",t))},setIsClean:function(){return this.each(function(){var t=i(this),e=t.data(c);e.cleanGeneration=e.cm.changeGeneration(),e.clean_signalled=!0})},pengine:function(t){var e=this.data(c);if(e){if(t.add)return e.pengines=e.pengines||[],e.pengines.indexOf(t.add)<0&&e.pengines.push(t.add),this;if(t.has)return e.pengines&&e.pengines.indexOf(t.has)>=0}},print:function(n){function r(t){var e=i.el.iframe({src:"about:blank"});i("body").append(e),i("body",e.contentWindow.document).append(t),e.contentWindow.print()}var a=i.el.pre({class:"cm-s-prolog"});return n||(n=this.prologEditor("getSource")),t.runMode(n,"prolog",a),i.ajax({url:e.http.locations.swish+"js/codemirror/theme/prolog.css",dataType:"text",success:function(t){r(i.el.div(i.el.style(t),a))},error:function(t){o.ajaxError(t)}}),this},preference:function(t){var e=this.data(c);return"semantic-highlighting"==t.name&&e.cm.setOption("prologHighlightServer",{enabled:t.value}),"emacs-keybinding"==t.name&&(1==t.value?e.cm.setOption("keyMap","emacs"):e.cm.setOption("keyMap","default")),this},highlightError:function(t){if(t.location.file&&(1==t.location.file||this.prologEditor("isMyFile",t.location.file))){var e,n=this.data(c);t.location.ch&&(left=n.cm.charCoords({line:t.location.line-1,ch:t.location.ch-1},"local").left,e=i.el.div({class:"source-msg-charmark"},i.el.span({class:"glyphicon glyphicon-chevron-up"})),i(e).css("padding-left",left+"px"));var r=i.el.div({class:"source-msg error error-context",title:"Error message.  Click to remove"},e,i(t.data)[0],i.el.span({class:"glyphicon glyphicon-remove-circle"})),o=n.cm.addLineWidget(t.location.line-1,r);t.error_context&&i(r).data("error_context",t.error_context),i(r).on("click",function(e){t.error_handler&&0==t.error_handler(e)||o.clear()}),i(r).data("cm-widget",o)}return this},refreshHighlight:function(){return this.data(c).cm.serverAssistedHighlight(!0),this},refresh:function(){var t=this.data(c);return t&&t.cm.refresh(),this},clearMessages:function(){return this.find(".source-msg").each(function(){i(this).data("cm-widget").clear()}),this.prologEditor("showTracePort",null),this},execCommand:function(t){if("prepare"==t)l=this[0];else if(l==this[0]){elem=i(l);var e=elem.data(c);e.cm.execCommand(t),elem.find(".Codemirror-dialog input").focus()}return this},isMyFile:function(t){if(t.startsWith("pengine://")){var e=this.data(c);if(e.pengines&&(id=t.split("/")[2])&&e.pengines.indexOf(id)>=0)return!0}if(t.startsWith("swish://")){var n=this.data("storage");if(n&&t.slice("swish://".length)==n.file)return!0}return!1},showTracePort:function(t){if(0==this.length)return this;var e=this.data(c);if(e.traceMark&&(e.traceMark.clear(),e.traceMark=null),!(t&&t.source&&t.source.file))return this;var n=t.source.file;if(this.prologEditor("isMyFile",n)){if(t.source.from&&t.source.to){var i=e.cm.charOffsetToPos(t.source.from),r=e.cm.charOffsetToPos(t.source.to);this.is(":visible")||this.storage("expose","trace"),i&&r&&(e.traceMark=e.cm.markText(i,r,{className:"trace "+t.port}),e.traceMark.pengine=t.pengine,e.cm.scrollIntoView(i,50))}return this}},getSelection:function(){var t=[];return this.each(function(){function e(t){return{line:t.line,ch:t.ch}}var n=i(this),r=n.data(c);if(1==r.cm.somethingSelected()){var o=r.cm.listSelections(),a={selections:[]},s=n.closest(".nb-cell").attr("name");s&&(a.cell=s);for(var l=0;l<o.length;l++){var u=o[l],h={};switch(function(t,e){return t.line<e.line?-1:t.line>e.line?1:t.ch<e.ch?-1:t.ch>e.ch?1:0}(u.anchor,u.head)){case-1:h.from=e(u.anchor),h.to=e(u.head);break;case 1:h.to=e(u.anchor),h.from=e(u.head);break;case 0:continue}h.string=r.cm.getRange(h.from,h.to),h.context=r.cm.getRange(function(t){return{line:t.line,ch:0}}(h.from),function(t){return{line:t.line,ch:r.cm.getLine(t.line).length}}(h.to)),a.selections.push(h)}t.push(a)}}),t.length>0?t:null},restoreSelection:function(t){function e(t,e){for(var n=t.data(c),i=n.cm,r=[],a="",s=0;s<e.length;s++){var l=function(t){function e(t,e,n){return n=n||0,{line:t.line+e,ch:t.ch+n}}if(i.getRange(t.from,t.to)==t.string)return{anchor:t.from,head:t.to};for(var n=i.firstLine(),r=i.lastLine(),o=0,a=1;t.from.line+o>=n&&t.to.line+o<=r;){var s;if(function(t,e){for(var n=e.split("\n"),r=0;r<n.length;r++)if(i.getLine(t+r)!=n[r])return!1;return!0}(t.from.line+o,t.context))return{anchor:e(t.from,o),head:e(t.to,o),offset:o};if((s=function(t,e){for(var n=e.split("\n"),r=0;r<n.length;r++){var o,a=i.getLine(t),s=n[r];if(0==r){if(r==n.length-1)return a.indexOf(s);if(!((o=a.indexOf(s))>=0&&s.length+o==a.length))return-1}else if(r==n.length-1){if(0!=a.indexOf(s))return-1}else if(i.getLine(t+r)!=n[r])return-1}return o}(t.from.line+o,t.string))>=0){var l=s-t.from.ch,c=t.to.line!=t.from.line?0:l;return{anchor:e(t.from,o,l),head:e(t.to,o,c),offset:o}}a++,o=Math.floor(a/2),a%2==1&&(o=-o)}}(e[s]);l&&(r.push(l),l.offset&&(""!=a&&(a+=";"),a+=l.offset))}if(r.length>0&&i.setSelections(r,0),""!=a||r.length<e.length){var u;u=r.length==e.length?"Found selections at offset "+a:""==a?"Could not restore all selections":"Only found some selections at offsets "+a,o.feedback({html:u,owner:t})}}if(t[0].cell)for(var n=this,r=0;r<t.length;r++){var a=t[r],s=function(t){for(var e=0;e<n.length;e++)if(i(n[e]).closest(".nb-cell").attr("name")==t)return i(n[e])}(a.cell);s&&e(s,a.selections)}else e(this,t);return this},getExamples:function(t,e){var n,r=t||this.prologEditor("getSource"),o=[];if(""==i.trim(r))return null;if(n=0==e?[t]:r.match(/\/\*\* *<?examples>?[\s\S]*?\*\//gim))for(var a=0;a<n.length;a++){var s=n[a].match(/^ *\?-[\s\S]*?[^-#$&*+.\/:<=>?@\\^~]\.\s/gm);if(s)for(var l=0;l<s.length;l++){var c=s[l].replace(/^ *\?-\s*/,"").replace(/\s*$/,"");o.push(c)}}return o},addExample:function(t){var e=this.data(c).cm,n=this.prologEditor("getSource"),i=this.prologEditor("search",/\/\*\* *<?examples>?/gim,{dir:-1,max:1}),r=this.prologEditor("search",/\*\//,{start:i.line,max:1});if(1==i.length){var r=this.prologEditor("search",/\*\//,{start:i[0].line,max:1}),a=this.prologEditor("getExamples",n);if(a&&-1!=a.indexOf(t))return o.alert("Query is already in examples"),this;if(1!=r.length)return o.alert("/** <examples> block is not terminated with */"),this;t=t.split("\n").join("\n   "),e.setSelection({line:r[0].line-1,ch:0}),e.replaceSelection("?- "+t+"\n")}else e.setSelection({line:e.lastLine(),ch:0}),e.replaceSelection("/** <examples>\n?- "+t+"\n*/\n");return this},search:function(t,e){var n=this.data(c).cm,i=e.dir||1,r=void 0==e.start?n.firstLine():e.start,o=void 0==e.end?n.lastLine():e.end,a=[];if(-1==i&&o>r||1==i&&r>o){var s=r;r=o,o=s}if(i>0&&r>o||i<0&&r<o)return a;o+=i;for(var l=r;l!=o;l+=i){var u=n.getLine(l);if(u.search(t)>=0&&(a.push({line:l+1,text:u}),e.max&&e.max===a.length))return a}return a},gotoLine:function(t,e){function n(t){if(void 0!==t._searchMarkers){for(var e=0;e<t._searchMarkers.length;e++)t._searchMarkers[e].clear();t.off("cursorActivity",n)}t._searchMarkers=[]}function i(t,e){for(var n;n=r.exec(a.getLine(t));)a._searchMarkers.push(a.markText({line:t,ch:n.index},{line:t,ch:n.index+n[0].length},{className:e,clearOnEnter:!0,clearWhenEmpty:!0,title:"Search match"}))}var r,o=this.data(c),a=o.cm,s=0;n(a),e=e||{},r=e.regex,t-=1,r&&(s=a.getLine(t).search(r))<0&&(s=0),a.setCursor({line:t,ch:s});var l=a.getScrollInfo().clientHeight,u=a.charCoords({line:t,ch:0},"local");if(a.scrollTo(null,(u.top+u.bottom-l)/2),r){if(i(t,"CodeMirror-search-match"),e.showAllMatches)for(var h=a.getViewport(),d=h.from;d<h.to;d++)d!=t&&i(d,"CodeMirror-search-alt-match");a._searchMarkers.length>0&&a.on("cursorActivity",n)}else a._searchMarkers.push(a.markText({line:t,ch:0},{line:t,ch:a.getLine(t).length},{className:"CodeMirror-search-match",clearOnEnter:!0,clearWhenEmpty:!0,title:"Target line"}));return this},changeGen:function(){return this.data(c).cm.changeGeneration()},isClean:function(t){return this.data(c).cm.isClean(t)},setupStorage:function(t){var e=this.data(c),n=this;return t.setValue=function(t){n.prologEditor("setSource",t,!0)},t.getValue=function(){return e.cm.getValue()},t.changeGen=function(){return e.cm.changeGeneration()},t.isClean=function(t){return e.cm.isClean(t)},t.markClean=function(t){n.prologEditor("markClean",t)},t.cleanGeneration=e.cm.changeGeneration(),t.cleanData=e.cm.getValue(),t.cleanCheckpoint="load",this.storage(t),this},contextAction:function(){var t=this,e=this.data(c),n=e.cm.getCursor(),r=e.cm.getTokenAt(n,!0),a=e.cm.getEnrichedToken(r),s=e.cm.getTokenReferences(a);if(s&&s.length>0){for(var l=i.el.ul(),u=i.el.div({class:"goto-source"},i.el.div("Go to"),l),h=i.el.div({class:"edit-modal"},i.el.div({class:"mask"}),u),d=0;d<s.length;d++){var f=s[d];i(l).append(i.el.li(i.el.a({"data-locindex":d},f.title)))}var p=e.cm.cursorCoords(!0);i(u).css({top:p.bottom,left:p.left}),i("body").append(h),i(h).on("click",function(n){var r=i(n.target).data("locindex");if(i(h).remove(),void 0!==r){var a=s[r];if(a.file)t.closest(".swish").swish("playFile",a);else{var l;"query"==e.role?(l=t.closest(".prolog-query-editor").queryEditor("getProgramEditor"),l[0]||o.alert("No related program editor")):l=t,l&&l[0]&&l.prologEditor("gotoLine",a.line,a).focus()}}}),i(h).show()}return this},variables:function(e,n){function r(t){i(o).find(t).each(function(){var t=i(this).text();a.indexOf(t)<0&&a.push(t)})}var o=i.el.span({class:"query cm-s-prolog"}),a=[];return t.runMode(e,"prolog",o),r("span.cm-var"),n&&r("span.cm-var-2"),a},wrapSolution:function(t){function e(t,e){return i.prologEditor("setSource",t+"("+n+")"+e+".").focus(),i}var n=s.trimFullStop(this.prologEditor("getSource","query")),i=this,r=this.prologEditor("variables",n);switch(t){case"Aggregate (count all)":return e("aggregate_all(count, ",", Count)");case"Projection":return function(t){return i.prologEditor("setSource",t+n+".").focus(),i}("projection(["+r.join(",")+"]),\n");case"Order by":return e("order_by(["+function(t){for(var e=[],n=0;n<r.length;n++)e.push("asc("+r[n]+")");return e.join(",")}(r)+"], ",")");case"Distinct":return e("distinct(["+r.join(",")+"], ",")");case"Limit":return e("limit(10, ",")");case"Time":return e("time(",")");case"Debug (trace)":return e("trace, ","");default:alert('Unknown wrapper: "'+t+'"')}}};if(a.tabTypes.program={dataType:"pl",typeName:"program",label:"Program",contentType:"text/x-prolog",order:100,create:function(t,e){i(t).addClass("prolog-editor").prologEditor(i.extend({save:!0},e)).prologEditor("makeCurrent")}},e.swish.tab_types)for(var f={save:!0,lineNumbers:!0},p=0;p<e.swish.tab_types.length;p++){var g=e.swish.tab_types[p];if(g.editor){var m=i.extend({typeName:g.typeName},f,g.editor);g.create=function(t){i(t).addClass("prolog-editor").prologEditor(m)},a.tabTypes[g.typeName]=g}}i.fn.prologEditor=function(t){return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void i.error("Method "+t+" does not exist on jQuery."+c):d._init.apply(this,arguments)}}(jQuery),t.prototype.charOffsetToPos=function(t){for(var e=this.firstLine(),n=this.lastLine(),i=0;e<n;e++){var r=this.getLine(e);if(i<=t&&i+r.length>=t)return{line:e,ch:t-i};i+=r.length+1}},t.keyMap.emacs.Enter="newlineAndIndent",e.swish.cm_style&&l(e.swish.cm_style,".cm-s-prolog span.cm-"),e.swish.cm_hover_style&&l(e.swish.cm_hover_style,".CodeMirror-hover-tooltip ")}),define("query",["jquery","config","preferences","cm/lib/codemirror","modal","utils","laconic","editor"],function(t,e,n,i,r,o){!function(t){function i(e){return t(e).closest(".prolog-query-editor")}function a(e,n,r){var o=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+e,"data-toggle":"dropdown"},n,t.el.span({class:"caret"})),t.el.ul({class:"dropdown-menu "+e}));return t(o).on("click","a",function(){t(this).closest("li").hasClass("add-example")?i(this).queryEditor("addExample"):i(this).queryEditor("setQuery",t(this).text())}),o}function s(e){function n(e){var n=e.examples();t.isArray(n)&&i(r).queryEditor("setExamples",n,!0)}var r=a("examples","Examples",e),o=t(r).find("ul");if("function"==typeof e.examples){var s=t.extend({},e);t(r).mousedown(function(t){1==t.which&&n(s)})}else if(e.examples)for(var l=e.examples,c=0;c<l.length;c++)o.append(t.el.li(t.el.a(l[c])));return r}function l(e){var n=a("history","History",e);return t(n).on("mouseenter","li",function(e){var n=t(e.target).closest("li").find("a");n.attr("title",o.ago(n.data("time")))}),n}function c(e){for(var n,r=e.aggregates||["Aggregate (count all)","--","Projection","Order by","Distinct","Limit","--","Time","Debug (trace)"],o=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle aggregate","data-toggle":"dropdown"},"Solutions",t.el.span({class:"caret"})),n=t.el.ul({class:"dropdown-menu aggregate"})),a=0;a<r.length;a++){var s=r[a];"--"==s?t(n).append(t.el.li({class:"divider"})):t(n).append(t.el.li(t.el.a(s)))}return t(o).on("click","a",function(){i(this).find(".query").prologEditor("wrapSolution",t(this).text())}),o}function u(e){var n=t.el.button({class:"run-btn-query",class:"btn btn-default btn-primary btn-xs"},"Run!");return t(n).on("click",function(){i(this).queryEditor("run",void 0,h(this))}),n}function h(e){return t(e).parent().find("input").prop("checked")}function d(i){var r=n.getVal("tabled_results"),o={type:"checkbox",name:"table"};void 0===r&&(r=e.swish.tabled_results),r&&(o.checked="checked");var a=t.el.input(o),s=t.el.span({class:"run-chk-table"},a," table results");return t(a).on("change",function(e){n.setVal("tabled_results",t(e.target).prop("checked"))}),s}var f="queryEditor",p={maxHistoryLength:50},g={_init:function(e){return this.each(function(){function n(){return t(a).find("input").prop("checked")}var i=t(this),r=t.extend({},p,e),o=t.el.div({class:"query"}),a=d(r);i.addClass("prolog-query-editor swish-event-receiver reactive-size unloadable"),i.append(o,t.el.div({class:"prolog-prompt"},"?-"),t.el.div({class:"query-buttons"},t.el.span({class:"buttons-left"},s(r),l(r),c(r)),t.el.span({class:"buttons-right"},a,u(r)))),t(o).append(i.children("textarea")).prologEditor({role:"query",sourceID:function(){return r.sourceID()},prologQuery:function(t){i.queryEditor("run",t,n())}}),i.data(f,r),t(o).prologEditor("getSource","query")||("object"==typeof r.examples?r.examples[0]&&t(o).prologEditor("setSource",r.examples[0]):i[f]("setProgramEditor",t(r.editor),!0)),i.on("current-program",function(e,n){i[f]("setProgramEditor",t(n))}),i.on("program-loaded",function(e,n){var o=n.query;if(null!=o){if(void 0==o&&t(r.editor).data("prologEditor")==t(n.editor).data("prologEditor")){var a=r.examples();o=a&&a[0]?a[0]:""}i.queryEditor("setQuery",o)}}),i.on("unload",function(t,e){if(i.closest(".swish").swish("preserve_state")){var n=i[f]("getState");n&&localStorage.setItem("query",JSON.stringify(n))}}),i.on("restore",function(t,e){if(""==i[f]("getQuery")){var n;try{var r=localStorage.getItem("query");n=JSON.parse(r)}catch(t){}"object"==typeof n&&i[f]("setState",n)}}),i.on("preference",function(t,e){"preserve-state"==e.name&&0==e.value&&localStorage.removeItem("query")})})},setProgramEditor:function(e,n){var i=this.data(f);if(i.editor==e[0]&&!n)return this;if(i.editor=e[0],i.editor){i.examples=function(){var n=e.prologEditor("getExamples")||[],i=e.parents(".swish").swish("examples",!0)||[];return t.isArray(i)&&n.concat(i),n},e.prologEditor("isPengineSource")?i.source=function(){var n=e.prologEditor("getSource","source"),i=t(".background.prolog.source").text();return i&&(n+="\n%@background@\n"+i),n}:i.source="",i.sourceID=function(){return e.prologEditor("getSourceID")};var r=i.examples();r&&r[0]&&this.queryEditor("isClean")?this.queryEditor("setQuery",r[0]):e.prologEditor("refreshHighlight")}else i.examples=""},getProgramEditor:function(){var e=this.data(f);return e.editor?t(e.editor):t()},setExamples:function(e,n){var i=this.find("ul.examples");if(e||(e=[]),void 0===n&&(n=!0),n&&function(t){var e;if((e=i.data("examples"))&&e.length==t.length){for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}return!1}(e))return this;!0===n&&i.html(""),i.find("li.add-example, li.divider").remove();for(var r=0;r<e.length;r++)i.append(t.el.li(t.el.a(e[r])));return i.data("examples",e.slice(0)),i.append(t.el.li({class:"divider"})),i.append(t.el.li({class:"add-example"},t.el.a("Add current query to examples"))),this},addExample:function(){return""!=this.find(".query").prologEditor("getSource").trim()?t(".swish-event-receiver:visible").trigger("addExample",this.find(".query").prologEditor("getSource")):r.alert("The query window is empty"),this},addHistory:function(e){var n=this.find("ul.history"),i=this.data("queryEditor");if(e){var r,o;(r=function(){return n.children().filter(function(){return t(this).text()==e})}())&&r.remove(),n.children().length>=i.maxHistoryLength&&n.children().first().remove(),n.append(t.el.li(o=t.el.a(e))),t(o).data("time",(new Date).getTime()/1e3)}return this},getHistory:function(){var e=this.find("ul.history"),n=[];return e.children().each(function(){var e=t(this).find("a");n.push({query:e.text(),time:e.data("time")})}),n},restoreHistory:function(e){var n=this.find("ul.history");n.html("");for(var i=0;i<e.length;i++){var r;n.append(t.el.li(r=t.el.a(e[i].query))),t(r).data("time",e[i].time)}},setQuery:function(t){return this.data(f).cleanGen=this.find(".query").prologEditor("setSource",t).focus().prologEditor("changeGen"),this},isClean:function(){var t=this.data(f);return!this.queryEditor("getQuery")||t.cleanGen&&this.find(".query").prologEditor("isClean",t.cleanGen)},getQuery:function(){return this.find(".query").prologEditor("getSource","query")},getState:function(){return{query:this[f]("getQuery"),history:this[f]("getHistory")}},setState:function(t){this[f]("restoreHistory",t.history||[]),this[f]("setQuery",t.query||"")},run:function(e,n){var i=this.data("queryEditor");if(void 0===e&&(e=this.queryEditor("getQuery")),!(e=t.trim(e)))return t(".swish-event-receiver").trigger("help",{file:"query.html"}),this;t(".swish-event-receiver").trigger("clearMessages");var r={query:e,editor:i.editor,query_editor:this.find(".query")};return"function"==typeof i.source?r.source=i.source(e):"string"==typeof i.source&&(r.source=i.source),n&&(r.tabled=!0),this.queryEditor("addHistory",e),i.runner.prologRunners("run",r),this}};t.fn.queryEditor=function(e){return g[e]?g[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+f):g._init.apply(this,arguments)}}(jQuery)}),define("term",["jquery"],function(){function t(){$(this).next().toggleClass("fold"),$(this).remove()}$(document).on("click",".pl-functor, .pl-infix",function(){var e=$(this).parent();$(e).toggleClass("fold"),$(e).before('<span class="pl-ellipsis">...</span>').prev().click(t)})}),define("login",["jquery","modal","config","form","laconic"],function(t,e,n,i){var r=["display_name","email","avatar"];!function(t){function o(t,e,n){t||(t=".force_logout");try{var i=navigator.userAgent.toLowerCase();if(-1!=i.indexOf("msie"))document.execCommand("ClearAuthenticationCache");else if(-1!=i.indexOf("webkit")&&"basic"==e){var r=a(n);r&&(r.open("GET",t,!0),r.setRequestHeader("Authorization","Basic logout"),r.send())}else{var r=a(n);r&&(r.open("GET",t,!0,"logout","logout"),r.send(""),r.abort())}}catch(t){return}}function a(t){var e;try{window.XMLHttpRequest?e=new XMLHttpRequest:window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),t&&(e.addEventListener("load",t),e.addEventListener("error",t),e.addEventListener("abort",t))}catch(t){}return e}function s(t,e,n,i){var r=window.open(t,e,n),o=window.setInterval(function(){try{(null==r||r.closed)&&(window.clearInterval(o),i(r))}catch(t){}},1e3);return window.focus&&r.focus(),r}var l={_init:function(e){return this.each(function(){var e=t(this),n={};n.url=e.attr("href"),e.removeAttr("href"),e.on("click",function(t){e.hasClass("login")&&e.login("login",t)}),e.data("login",n),e.login("update","startup")})},update:function(r){var o=t(this);t.get(n.http.locations.user_info,{reason:r},function(a){if(a){n.swish.user=a,o.removeClass("login").addClass("logout");var s,l=o.find("span.logout span.value");s=a.avatar?t.el.img({class:"profile-picture",src:a.avatar}):t.el.span({class:"glyphicon glyphicon-user"}),s=t.el.span(s,t.el.b({class:"caret"})),l.html(""),l.append(i.widgets.dropdownButton(s,{divClass:"user-menu btn-transparent",ulClass:"pull-right",client:o,actions:{Logout:o.hasClass("no-logout")?void 0:function(){this.login("logout")},Profile:function(){this.login("profile")}}})),"logout_by_http"==r&&e.alert("Failed to logout from HTTP login.  Logout from HTTP is known not to work for Chrome.  For some browsers there is a plugin to logout.  Otherwise stopping your browser completely (all pages) and restarting is the only way to logout.  HTTP logout does work for FireFox and IE.")}else delete n.swish.user,o.removeClass("logout").addClass("login");t(".sourcelist").trigger("login")},"json")},login:function(n){var i=t(this),r=this.data("login"),o=t(n.target),a=r.url,l=o.closest("[data-server]").data("server"),c=o.closest("[data-frame]").data("frame")||"iframe";l&&(a+="?server="+encodeURIComponent(l)),"popup"==c?s(a,"_blank","location=true,status=true,height=400,width=800",function(){i.login("logged_in")}):e.show({title:"Login",body:function(){var e=t.el.button({name:"ok",class:"btn btn-primary login-cont","data-dismiss":"modal"},"Continue");this.append(t.el.iframe({class:"login",src:a}),e)},onclose:function(){i.login("logged_in")}})},logged_in:function(){this.login("update","login")},profile:function(){var i=t(this);e.server_form({title:"User profile",url:n.swish.user.swish_profile_url||n.http.locations.user_profile,onreply:function(){i.login("update","profile")}})},get_profile:function(e){function i(e,n){var i=t("#chat");if(1==i.length){var r=i.chat("self",[n]);r[n]&&(o[e]=r[n])}}var o={},a=n.swish.user||{};e=e||r;for(var s=0;s<e.length;s++){var l=e[s];a[l]?o[l]=a[l]:"display_name"==l?a.name?o.display_name=a.name:a.given_name&&a.family_name?o.display_name=a.given_name+" "+a.family_name:a.family_name?o.display_name=a.family_name:a.given_name?o.display_name=a.given_name:a.nick_name?o.display_name=a.nick_name:i("display_name","name"):"identity"==l?a.external_identity&&a.identity_provider&&(o.identity=a.identity_provider+":"+a.external_identity):"avatar"==l&&i("avatar","avatar")}return o},logout:function(){var i=n.swish.user,r=t(this);i&&(i.logout_url?t.ajax({url:i.logout_url,success:function(){r.login("update","logout_by_url")},error:function(t){e.ajaxError(t)}}):"basic"==i.auth_method||"digest"==i.auth_method?o(n.http.locations.http_logout,n.swish.user.auth_method,function(){r.login("update","logout_by_http")}):alert("Don't know how to logout"))}};t.fn.login=function(e){return l[e]?l[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.login"):l._init.apply(this,arguments)}}(jQuery)}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define("d3",["exports"],e):e(t.d3=t.d3||{})}(this,function(t){"use strict";function e(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function n(t){return 1===t.length&&(t=i(t)),{left:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)<0?i=o+1:r=o}return i},right:function(e,n,i,r){for(null==i&&(i=0),null==r&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)>0?r=o:i=o+1}return i}}}function i(t){return function(n,i){return e(t(n),i)}}function r(t,e){null==e&&(e=o);for(var n=0,i=t.length-1,r=t[0],a=new Array(i<0?0:i);n<i;)a[n]=e(r,r=t[++n]);return a}function o(t,e){return[t,e]}function a(t,e,n){var i,r,a,s,l=t.length,c=e.length,u=new Array(l*c);for(null==n&&(n=o),i=a=0;i<l;++i)for(s=t[i],r=0;r<c;++r,++a)u[a]=n(s,e[r]);return u}function s(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function l(t){return null===t?NaN:+t}function c(t,e){var n,i,r=t.length,o=0,a=-1,s=0,c=0;if(null==e)for(;++a<r;)isNaN(n=l(t[a]))||(i=n-s,s+=i/++o,c+=i*(n-s));else for(;++a<r;)isNaN(n=l(e(t[a],a,t)))||(i=n-s,s+=i/++o,c+=i*(n-s));if(o>1)return c/(o-1)}function u(t,e){var n=c(t,e);return n?Math.sqrt(n):n}function h(t,e){var n,i,r,o=t.length,a=-1;if(null==e){for(;++a<o;)if(null!=(n=t[a])&&n>=n)for(i=r=n;++a<o;)null!=(n=t[a])&&(i>n&&(i=n),r<n&&(r=n))}else for(;++a<o;)if(null!=(n=e(t[a],a,t))&&n>=n)for(i=r=n;++a<o;)null!=(n=e(t[a],a,t))&&(i>n&&(i=n),r<n&&(r=n));return[i,r]}function d(t){return function(){return t}}function f(t){return t}function p(t,e,n){t=+t,e=+e,n=(r=arguments.length)<2?(e=t,t=0,1):r<3?1:+n;for(var i=-1,r=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(r);++i<r;)o[i]=t+i*n;return o}function g(t,e,n){var i,r,o,a,s=-1;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((i=e<t)&&(r=t,t=e,e=r),0===(a=m(t,e,n))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(r=Math.ceil(e-t+1));++s<r;)o[s]=(t+s)*a;else for(t=Math.floor(t*a),e=Math.ceil(e*a),o=new Array(r=Math.ceil(t-e+1));++s<r;)o[s]=(t-s)/a;return i&&o.reverse(),o}function m(t,e,n){var i=(e-t)/Math.max(0,n),r=Math.floor(Math.log(i)/Math.LN10),o=i/Math.pow(10,r);return r>=0?(o>=jg?10:o>=Vg?5:o>=Fg?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(o>=jg?10:o>=Vg?5:o>=Fg?2:1)}function v(t,e,n){var i=Math.abs(e-t)/Math.max(0,n),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),o=i/r;return o>=jg?r*=10:o>=Vg?r*=5:o>=Fg&&(r*=2),e<t?-r:r}function y(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function x(){function t(t){var r,o,a=t.length,s=new Array(a);for(r=0;r<a;++r)s[r]=e(t[r],r,t);var l=n(s),c=l[0],u=l[1],h=i(s,c,u);Array.isArray(h)||(h=v(c,u,h),h=p(Math.ceil(c/h)*h,Math.floor(u/h)*h,h));for(var d=h.length;h[0]<=c;)h.shift(),--d;for(;h[d-1]>u;)h.pop(),--d;var f,g=new Array(d+1);for(r=0;r<=d;++r)f=g[r]=[],f.x0=r>0?h[r-1]:c,f.x1=r<d?h[r]:u;for(r=0;r<a;++r)o=s[r],c<=o&&o<=u&&g[Og(h,o,0,d)].push(t[r]);return g}var e=f,n=h,i=y;return t.value=function(n){return arguments.length?(e="function"==typeof n?n:d(n),t):e},t.domain=function(e){return arguments.length?(n="function"==typeof e?e:d([e[0],e[1]]),t):n},t.thresholds=function(e){return arguments.length?(i="function"==typeof e?e:d(Array.isArray(e)?Ig.call(e):e),t):i},t}function b(t,e,n){if(null==n&&(n=l),i=t.length){if((e=+e)<=0||i<2)return+n(t[0],0,t);if(e>=1)return+n(t[i-1],i-1,t);var i,r=(i-1)*e,o=Math.floor(r),a=+n(t[o],o,t);return a+(+n(t[o+1],o+1,t)-a)*(r-o)}}function w(t,n,i){return t=Hg.call(t,l).sort(e),Math.ceil((i-n)/(2*(b(t,.75)-b(t,.25))*Math.pow(t.length,-1/3)))}function _(t,e,n){return Math.ceil((n-e)/(3.5*u(t)*Math.pow(t.length,-1/3)))}function S(t,e){var n,i,r=t.length,o=-1;if(null==e){for(;++o<r;)if(null!=(n=t[o])&&n>=n)for(i=n;++o<r;)null!=(n=t[o])&&n>i&&(i=n)
+}else for(;++o<r;)if(null!=(n=e(t[o],o,t))&&n>=n)for(i=n;++o<r;)null!=(n=e(t[o],o,t))&&n>i&&(i=n);return i}function C(t,e){var n,i=t.length,r=i,o=-1,a=0;if(null==e)for(;++o<i;)isNaN(n=l(t[o]))?--r:a+=n;else for(;++o<i;)isNaN(n=l(e(t[o],o,t)))?--r:a+=n;if(r)return a/r}function T(t,n){var i,r=t.length,o=-1,a=[];if(null==n)for(;++o<r;)isNaN(i=l(t[o]))||a.push(i);else for(;++o<r;)isNaN(i=l(n(t[o],o,t)))||a.push(i);return b(a.sort(e),.5)}function k(t){for(var e,n,i,r=t.length,o=-1,a=0;++o<r;)a+=t[o].length;for(n=new Array(a);--r>=0;)for(i=t[r],e=i.length;--e>=0;)n[--a]=i[e];return n}function A(t,e){var n,i,r=t.length,o=-1;if(null==e){for(;++o<r;)if(null!=(n=t[o])&&n>=n)for(i=n;++o<r;)null!=(n=t[o])&&i>n&&(i=n)}else for(;++o<r;)if(null!=(n=e(t[o],o,t))&&n>=n)for(i=n;++o<r;)null!=(n=e(t[o],o,t))&&i>n&&(i=n);return i}function M(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i}function E(t,n){if(i=t.length){var i,r,o=0,a=0,s=t[a];for(null==n&&(n=e);++o<i;)(n(r=t[o],s)<0||0!==n(s,s))&&(s=r,a=o);return 0===n(s,s)?a:void 0}}function L(t,e,n){for(var i,r,o=(null==n?t.length:n)-(e=null==e?0:+e);o;)r=Math.random()*o--|0,i=t[o+e],t[o+e]=t[r+e],t[r+e]=i;return t}function P(t,e){var n,i=t.length,r=-1,o=0;if(null==e)for(;++r<i;)(n=+t[r])&&(o+=n);else for(;++r<i;)(n=+e(t[r],r,t))&&(o+=n);return o}function N(t){if(!(r=t.length))return[];for(var e=-1,n=A(t,O),i=new Array(n);++e<n;)for(var r,o=-1,a=i[e]=new Array(r);++o<r;)a[o]=t[o][e];return i}function O(t){return t.length}function R(){return N(arguments)}function D(t){return t}function I(t){return"translate("+(t+.5)+",0)"}function H(t){return"translate(0,"+(t+.5)+")"}function j(t){return function(e){return+t(e)}}function V(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function F(){return!this.__axis}function z(t,e){function n(n){var d=null==r?e.ticks?e.ticks.apply(e,i):e.domain():r,f=null==o?e.tickFormat?e.tickFormat.apply(e,i):D:o,p=Math.max(a,0)+l,g=e.range(),m=+g[0]+.5,v=+g[g.length-1]+.5,y=(e.bandwidth?V:j)(e.copy()),x=n.selection?n.selection():n,b=x.selectAll(".domain").data([null]),w=x.selectAll(".tick").data(d,e).order(),_=w.exit(),S=w.enter().append("g").attr("class","tick"),C=w.select("line"),T=w.select("text");b=b.merge(b.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),w=w.merge(S),C=C.merge(S.append("line").attr("stroke","#000").attr(u+"2",c*a)),T=T.merge(S.append("text").attr("fill","#000").attr(u,c*p).attr("dy",t===qg?"0em":t===Bg?"0.71em":"0.32em")),n!==x&&(b=b.transition(n),w=w.transition(n),C=C.transition(n),T=T.transition(n),_=_.transition(n).attr("opacity",Wg).attr("transform",function(t){return isFinite(t=y(t))?h(t):this.getAttribute("transform")}),S.attr("opacity",Wg).attr("transform",function(t){var e=this.parentNode.__axis;return h(e&&isFinite(e=e(t))?e:y(t))})),_.remove(),b.attr("d",t===$g||t==Gg?"M"+c*s+","+m+"H0.5V"+v+"H"+c*s:"M"+m+","+c*s+"V0.5H"+v+"V"+c*s),w.attr("opacity",1).attr("transform",function(t){return h(y(t))}),C.attr(u+"2",c*a),T.attr(u,c*p).text(f),x.filter(F).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Gg?"start":t===$g?"end":"middle"),x.each(function(){this.__axis=y})}var i=[],r=null,o=null,a=6,s=6,l=3,c=t===qg||t===$g?-1:1,u=t===$g||t===Gg?"x":"y",h=t===qg||t===Bg?I:H;return n.scale=function(t){return arguments.length?(e=t,n):e},n.ticks=function(){return i=zg.call(arguments),n},n.tickArguments=function(t){return arguments.length?(i=null==t?[]:zg.call(t),n):i.slice()},n.tickValues=function(t){return arguments.length?(r=null==t?null:zg.call(t),n):r&&r.slice()},n.tickFormat=function(t){return arguments.length?(o=t,n):o},n.tickSize=function(t){return arguments.length?(a=s=+t,n):a},n.tickSizeInner=function(t){return arguments.length?(a=+t,n):a},n.tickSizeOuter=function(t){return arguments.length?(s=+t,n):s},n.tickPadding=function(t){return arguments.length?(l=+t,n):l},n}function q(t){return z(qg,t)}function G(t){return z(Gg,t)}function B(t){return z(Bg,t)}function $(t){return z($g,t)}function W(){for(var t,e=0,n=arguments.length,i={};e<n;++e){if(!(t=arguments[e]+"")||t in i)throw new Error("illegal type: "+t);i[t]=[]}return new U(i)}function U(t){this._=t}function X(t,e){return t.trim().split(/^|\s+/).map(function(t){var n="",i=t.indexOf(".");if(i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})}function Y(t,e){for(var n,i=0,r=t.length;i<r;++i)if((n=t[i]).name===e)return n.value}function Q(t,e,n){for(var i=0,r=t.length;i<r;++i)if(t[i].name===e){t[i]=Ug,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=n&&t.push({name:e,value:n}),t}function Z(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Yg.hasOwnProperty(e)?{space:Yg[e],local:t}:t}function K(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Xg&&e.documentElement.namespaceURI===Xg?e.createElement(t):e.createElementNS(n,t)}}function J(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function tt(t){var e=Z(t);return(e.local?J:K)(e)}function et(){}function nt(t){return null==t?et:function(){return this.querySelector(t)}}function it(t){"function"!=typeof t&&(t=nt(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var o,a,s=e[r],l=s.length,c=i[r]=new Array(l),u=0;u<l;++u)(o=s[u])&&(a=t.call(o,o.__data__,u,s))&&("__data__"in o&&(a.__data__=o.__data__),c[u]=a);return new Le(i,this._parents)}function rt(){return[]}function ot(t){return null==t?rt:function(){return this.querySelectorAll(t)}}function at(t){"function"!=typeof t&&(t=ot(t));for(var e=this._groups,n=e.length,i=[],r=[],o=0;o<n;++o)for(var a,s=e[o],l=s.length,c=0;c<l;++c)(a=s[c])&&(i.push(t.call(a,a.__data__,c,s)),r.push(a));return new Le(i,r)}function st(t){"function"!=typeof t&&(t=Jg(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var o,a=e[r],s=a.length,l=i[r]=[],c=0;c<s;++c)(o=a[c])&&t.call(o,o.__data__,c,a)&&l.push(o);return new Le(i,this._parents)}function lt(t){return new Array(t.length)}function ct(){return new Le(this._enter||this._groups.map(lt),this._parents)}function ut(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function ht(t){return function(){return t}}function dt(t,e,n,i,r,o){for(var a,s=0,l=e.length,c=o.length;s<c;++s)(a=e[s])?(a.__data__=o[s],i[s]=a):n[s]=new ut(t,o[s]);for(;s<l;++s)(a=e[s])&&(r[s]=a)}function ft(t,e,n,i,r,o,a){var s,l,c,u={},h=e.length,d=o.length,f=new Array(h);for(s=0;s<h;++s)(l=e[s])&&(f[s]=c=tm+a.call(l,l.__data__,s,e),c in u?r[s]=l:u[c]=l);for(s=0;s<d;++s)c=tm+a.call(t,o[s],s,o),(l=u[c])?(i[s]=l,l.__data__=o[s],u[c]=null):n[s]=new ut(t,o[s]);for(s=0;s<h;++s)(l=e[s])&&u[f[s]]===l&&(r[s]=l)}function pt(t,e){if(!t)return f=new Array(this.size()),c=-1,this.each(function(t){f[++c]=t}),f;var n=e?ft:dt,i=this._parents,r=this._groups;"function"!=typeof t&&(t=ht(t));for(var o=r.length,a=new Array(o),s=new Array(o),l=new Array(o),c=0;c<o;++c){var u=i[c],h=r[c],d=h.length,f=t.call(u,u&&u.__data__,c,i),p=f.length,g=s[c]=new Array(p),m=a[c]=new Array(p);n(u,h,g,m,l[c]=new Array(d),f,e);for(var v,y,x=0,b=0;x<p;++x)if(v=g[x]){for(x>=b&&(b=x+1);!(y=m[b])&&++b<p;);v._next=y||null}}return a=new Le(a,i),a._enter=s,a._exit=l,a}function gt(){return new Le(this._exit||this._groups.map(lt),this._parents)}function mt(t){for(var e=this._groups,n=t._groups,i=e.length,r=n.length,o=Math.min(i,r),a=new Array(i),s=0;s<o;++s)for(var l,c=e[s],u=n[s],h=c.length,d=a[s]=new Array(h),f=0;f<h;++f)(l=c[f]||u[f])&&(d[f]=l);for(;s<i;++s)a[s]=e[s];return new Le(a,this._parents)}function vt(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var i,r=t[e],o=r.length-1,a=r[o];--o>=0;)(i=r[o])&&(a&&a!==i.nextSibling&&a.parentNode.insertBefore(i,a),a=i);return this}function yt(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,i=n.length,r=new Array(i),o=0;o<i;++o){for(var a,s=n[o],l=s.length,c=r[o]=new Array(l),u=0;u<l;++u)(a=s[u])&&(c[u]=a);c.sort(e)}return new Le(r,this._parents).order()}function xt(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function bt(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function wt(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t}function _t(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var i=t[e],r=0,o=i.length;r<o;++r){var a=i[r];if(a)return a}return null}function St(){var t=0;return this.each(function(){++t}),t}function Ct(){return!this.node()}function Tt(t){for(var e=this._groups,n=0,i=e.length;n<i;++n)for(var r,o=e[n],a=0,s=o.length;a<s;++a)(r=o[a])&&t.call(r,r.__data__,a,o);return this}function kt(t){return function(){this.removeAttribute(t)}}function At(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Mt(t,e){return function(){this.setAttribute(t,e)}}function Et(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Lt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Pt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Nt(t,e){var n=Z(t);if(arguments.length<2){var i=this.node();return n.local?i.getAttributeNS(n.space,n.local):i.getAttribute(n)}return this.each((null==e?n.local?At:kt:"function"==typeof e?n.local?Pt:Lt:n.local?Et:Mt)(n,e))}function Ot(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Rt(t){return function(){this.style.removeProperty(t)}}function Dt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function It(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function Ht(t,e,n){return arguments.length>1?this.each((null==e?Rt:"function"==typeof e?It:Dt)(t,e,null==n?"":n)):jt(this.node(),t)}function jt(t,e){return t.style.getPropertyValue(e)||Ot(t).getComputedStyle(t,null).getPropertyValue(e)}function Vt(t){return function(){delete this[t]}}function Ft(t,e){return function(){this[t]=e}}function zt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function qt(t,e){return arguments.length>1?this.each((null==e?Vt:"function"==typeof e?zt:Ft)(t,e)):this.node()[t]}function Gt(t){return t.trim().split(/^|\s+/)}function Bt(t){return t.classList||new $t(t)}function $t(t){this._node=t,this._names=Gt(t.getAttribute("class")||"")}function Wt(t,e){for(var n=Bt(t),i=-1,r=e.length;++i<r;)n.add(e[i])}function Ut(t,e){for(var n=Bt(t),i=-1,r=e.length;++i<r;)n.remove(e[i])}function Xt(t){return function(){Wt(this,t)}}function Yt(t){return function(){Ut(this,t)}}function Qt(t,e){return function(){(e.apply(this,arguments)?Wt:Ut)(this,t)}}function Zt(t,e){var n=Gt(t+"");if(arguments.length<2){for(var i=Bt(this.node()),r=-1,o=n.length;++r<o;)if(!i.contains(n[r]))return!1;return!0}return this.each(("function"==typeof e?Qt:e?Xt:Yt)(n,e))}function Kt(){this.textContent=""}function Jt(t){return function(){this.textContent=t}}function te(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ee(t){return arguments.length?this.each(null==t?Kt:("function"==typeof t?te:Jt)(t)):this.node().textContent}function ne(){this.innerHTML=""}function ie(t){return function(){this.innerHTML=t}}function re(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function oe(t){return arguments.length?this.each(null==t?ne:("function"==typeof t?re:ie)(t)):this.node().innerHTML}function ae(){this.nextSibling&&this.parentNode.appendChild(this)}function se(){return this.each(ae)}function le(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ce(){return this.each(le)}function ue(t){var e="function"==typeof t?t:tt(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function he(){return null}function de(t,e){var n="function"==typeof t?t:tt(t),i=null==e?he:"function"==typeof e?e:nt(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),i.apply(this,arguments)||null)})}function fe(){var t=this.parentNode;t&&t.removeChild(this)}function pe(){return this.each(fe)}function ge(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function me(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}function ve(t){return this.select(t?me:ge)}function ye(t){return arguments.length?this.property("__data__",t):this.node().__data__}function xe(t,e,n){return t=be(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function be(e,n,i){return function(r){var o=t.event;t.event=r;try{e.call(this,this.__data__,n,i)}finally{t.event=o}}}function we(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}function _e(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,o=e.length;i<o;++i)n=e[i],t.type&&n.type!==t.type||n.name!==t.name?e[++r]=n:this.removeEventListener(n.type,n.listener,n.capture);++r?e.length=r:delete this.__on}}}function Se(t,e,n){var i=em.hasOwnProperty(t.type)?xe:be;return function(r,o,a){var s,l=this.__on,c=i(e,o,a);if(l)for(var u=0,h=l.length;u<h;++u)if((s=l[u]).type===t.type&&s.name===t.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=c,s.capture=n),void(s.value=e);this.addEventListener(t.type,c,n),s={type:t.type,name:t.name,value:e,listener:c,capture:n},l?l.push(s):this.__on=[s]}}function Ce(t,e,n){var i,r,o=we(t+""),a=o.length;{if(!(arguments.length<2)){for(s=e?Se:_e,null==n&&(n=!1),i=0;i<a;++i)this.each(s(o[i],e,n));return this}var s=this.node().__on;if(s)for(var l,c=0,u=s.length;c<u;++c)for(i=0,l=s[c];i<a;++i)if((r=o[i]).type===l.type&&r.name===l.name)return l.value}}function Te(e,n,i,r){var o=t.event;e.sourceEvent=t.event,t.event=e;try{return n.apply(i,r)}finally{t.event=o}}function ke(t,e,n){var i=Ot(t),r=i.CustomEvent;"function"==typeof r?r=new r(e,n):(r=i.document.createEvent("Event"),n?(r.initEvent(e,n.bubbles,n.cancelable),r.detail=n.detail):r.initEvent(e,!1,!1)),t.dispatchEvent(r)}function Ae(t,e){return function(){return ke(this,t,e)}}function Me(t,e){return function(){return ke(this,t,e.apply(this,arguments))}}function Ee(t,e){return this.each(("function"==typeof e?Me:Ae)(t,e))}function Le(t,e){this._groups=t,this._parents=e}function Pe(){return new Le([[document.documentElement]],nm)}function Ne(t){return"string"==typeof t?new Le([[document.querySelector(t)]],[document.documentElement]):new Le([[t]],nm)}function Oe(t){return Ne(tt(t).call(document.documentElement))}function Re(){return new De}function De(){this._="@"+(++im).toString(36)}function Ie(){for(var e,n=t.event;e=n.sourceEvent;)n=e;return n}function He(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var i=n.createSVGPoint();return i.x=e.clientX,i.y=e.clientY,i=i.matrixTransform(t.getScreenCTM().inverse()),[i.x,i.y]}var r=t.getBoundingClientRect();return[e.clientX-r.left-t.clientLeft,e.clientY-r.top-t.clientTop]}function je(t){var e=Ie();return e.changedTouches&&(e=e.changedTouches[0]),He(t,e)}function Ve(t){return"string"==typeof t?new Le([document.querySelectorAll(t)],[document.documentElement]):new Le([null==t?[]:t],nm)}function Fe(t,e,n){arguments.length<3&&(n=e,e=Ie().changedTouches);for(var i,r=0,o=e?e.length:0;r<o;++r)if((i=e[r]).identifier===n)return He(t,i);return null}function ze(t,e){null==e&&(e=Ie().touches);for(var n=0,i=e?e.length:0,r=new Array(i);n<i;++n)r[n]=He(t,e[n]);return r}function qe(){t.event.stopImmediatePropagation()}function Ge(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Be(t){var e=t.document.documentElement,n=Ne(t).on("dragstart.drag",Ge,!0);"onselectstart"in e?n.on("selectstart.drag",Ge,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function $e(t,e){var n=t.document.documentElement,i=Ne(t).on("dragstart.drag",null);e&&(i.on("click.drag",Ge,!0),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in n?i.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function We(t){return function(){return t}}function Ue(t,e,n,i,r,o,a,s,l,c){this.target=t,this.type=e,this.subject=n,this.identifier=i,this.active=r,this.x=o,this.y=a,this.dx=s,this.dy=l,this._=c}function Xe(){return!t.event.button}function Ye(){return this.parentNode}function Qe(e){return null==e?{x:t.event.x,y:t.event.y}:e}function Ze(){return"ontouchstart"in this}function Ke(){function e(t){t.on("mousedown.drag",n).filter(m).on("touchstart.drag",o).on("touchmove.drag",a).on("touchend.drag touchcancel.drag",s).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function n(){if(!d&&f.apply(this,arguments)){var e=l("mouse",p.apply(this,arguments),je,this,arguments);e&&(Ne(t.event.view).on("mousemove.drag",i,!0).on("mouseup.drag",r,!0),Be(t.event.view),qe(),h=!1,c=t.event.clientX,u=t.event.clientY,e("start"))}}function i(){if(Ge(),!h){var e=t.event.clientX-c,n=t.event.clientY-u;h=e*e+n*n>b}v.mouse("drag")}function r(){Ne(t.event.view).on("mousemove.drag mouseup.drag",null),$e(t.event.view,h),Ge(),v.mouse("end")}function o(){if(f.apply(this,arguments)){var e,n,i=t.event.changedTouches,r=p.apply(this,arguments),o=i.length;for(e=0;e<o;++e)(n=l(i[e].identifier,r,Fe,this,arguments))&&(qe(),n("start"))}}function a(){var e,n,i=t.event.changedTouches,r=i.length;for(e=0;e<r;++e)(n=v[i[e].identifier])&&(Ge(),n("drag"))}function s(){var e,n,i=t.event.changedTouches,r=i.length;for(d&&clearTimeout(d),d=setTimeout(function(){d=null},500),e=0;e<r;++e)(n=v[i[e].identifier])&&(qe(),n("end"))}function l(n,i,r,o,a){var s,l,c,u=r(i,n),h=y.copy();if(Te(new Ue(e,"beforestart",s,n,x,u[0],u[1],0,0,h),function(){return null!=(t.event.subject=s=g.apply(o,a))&&(l=s.x-u[0]||0,c=s.y-u[1]||0,!0)}))return function t(d){var f,p=u;switch(d){case"start":v[n]=t,f=x++;break;case"end":delete v[n],--x;case"drag":u=r(i,n),f=x}Te(new Ue(e,d,s,n,f,u[0]+l,u[1]+c,u[0]-p[0],u[1]-p[1],h),h.apply,h,[d,o,a])}}var c,u,h,d,f=Xe,p=Ye,g=Qe,m=Ze,v={},y=W("start","drag","end"),x=0,b=0;return e.filter=function(t){return arguments.length?(f="function"==typeof t?t:We(!!t),e):f},e.container=function(t){return arguments.length?(p="function"==typeof t?t:We(t),e):p},e.subject=function(t){return arguments.length?(g="function"==typeof t?t:We(t),e):g},e.touchable=function(t){return arguments.length?(m="function"==typeof t?t:We(!!t),e):m},e.on=function(){var t=y.on.apply(y,arguments);return t===y?e:t},e.clickDistance=function(t){return arguments.length?(b=(t=+t)*t,e):Math.sqrt(b)},e}function Je(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function tn(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function en(){}function nn(t){var e;return t=(t+"").trim().toLowerCase(),(e=sm.exec(t))?(e=parseInt(e[1],16),new ln(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1)):(e=lm.exec(t))?rn(parseInt(e[1],16)):(e=cm.exec(t))?new ln(e[1],e[2],e[3],1):(e=um.exec(t))?new ln(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=hm.exec(t))?on(e[1],e[2],e[3],e[4]):(e=dm.exec(t))?on(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=fm.exec(t))?cn(e[1],e[2]/100,e[3]/100,1):(e=pm.exec(t))?cn(e[1],e[2]/100,e[3]/100,e[4]):gm.hasOwnProperty(t)?rn(gm[t]):"transparent"===t?new ln(NaN,NaN,NaN,0):null}function rn(t){return new ln(t>>16&255,t>>8&255,255&t,1)}function on(t,e,n,i){return i<=0&&(t=e=n=NaN),new ln(t,e,n,i)}function an(t){return t instanceof en||(t=nn(t)),t?(t=t.rgb(),new ln(t.r,t.g,t.b,t.opacity)):new ln}function sn(t,e,n,i){return 1===arguments.length?an(t):new ln(t,e,n,null==i?1:i)}function ln(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function cn(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new dn(t,e,n,i)}function un(t){if(t instanceof dn)return new dn(t.h,t.s,t.l,t.opacity);if(t instanceof en||(t=nn(t)),!t)return new dn;if(t instanceof dn)return t;t=t.rgb();var e=t.r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),o=Math.max(e,n,i),a=NaN,s=o-r,l=(o+r)/2;return s?(a=e===o?(n-i)/s+6*(n<i):n===o?(i-e)/s+2:(e-n)/s+4,s/=l<.5?o+r:2-o-r,a*=60):s=l>0&&l<1?0:a,new dn(a,s,l,t.opacity)}function hn(t,e,n,i){return 1===arguments.length?un(t):new dn(t,e,n,null==i?1:i)}function dn(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function fn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function pn(t){if(t instanceof mn)return new mn(t.l,t.a,t.b,t.opacity);if(t instanceof Sn){var e=t.h*mm;return new mn(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof ln||(t=an(t));var n=bn(t.r),i=bn(t.g),r=bn(t.b),o=vn((.4124564*n+.3575761*i+.1804375*r)/ym),a=vn((.2126729*n+.7151522*i+.072175*r)/xm);return new mn(116*a-16,500*(o-a),200*(a-vn((.0193339*n+.119192*i+.9503041*r)/bm)),t.opacity)}function gn(t,e,n,i){return 1===arguments.length?pn(t):new mn(t,e,n,null==i?1:i)}function mn(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function vn(t){return t>Cm?Math.pow(t,1/3):t/Sm+wm}function yn(t){return t>_m?t*t*t:Sm*(t-wm)}function xn(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function bn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function wn(t){if(t instanceof Sn)return new Sn(t.h,t.c,t.l,t.opacity);t instanceof mn||(t=pn(t));var e=Math.atan2(t.b,t.a)*vm;return new Sn(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function _n(t,e,n,i){return 1===arguments.length?wn(t):new Sn(t,e,n,null==i?1:i)}function Sn(t,e,n,i){this.h=+t,this.c=+e,this.l=+n,this.opacity=+i}function Cn(t){if(t instanceof kn)return new kn(t.h,t.s,t.l,t.opacity);t instanceof ln||(t=an(t));var e=t.r/255,n=t.g/255,i=t.b/255,r=(Nm*i+Lm*e-Pm*n)/(Nm+Lm-Pm),o=i-r,a=(Em*(n-r)-Am*o)/Mm,s=Math.sqrt(a*a+o*o)/(Em*r*(1-r)),l=s?Math.atan2(a,o)*vm-120:NaN;return new kn(l<0?l+360:l,s,r,t.opacity)}function Tn(t,e,n,i){return 1===arguments.length?Cn(t):new kn(t,e,n,null==i?1:i)}function kn(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function An(t,e,n,i,r){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*i+a*r)/6}function Mn(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),r=t[i],o=t[i+1],a=i>0?t[i-1]:2*r-o,s=i<e-1?t[i+2]:2*o-r;return An((n-i/e)*e,a,r,o,s)}}function En(t){var e=t.length;return function(n){var i=Math.floor(((n%=1)<0?++n:n)*e),r=t[(i+e-1)%e],o=t[i%e],a=t[(i+1)%e],s=t[(i+2)%e];return An((n-i/e)*e,r,o,a,s)}}function Ln(t){return function(){return t}}function Pn(t,e){return function(n){return t+n*e}}function Nn(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}function On(t,e){var n=e-t;return n?Pn(t,n>180||n<-180?n-360*Math.round(n/360):n):Ln(isNaN(t)?e:t)}function Rn(t){return 1==(t=+t)?Dn:function(e,n){return n-e?Nn(e,n,t):Ln(isNaN(e)?n:e)}}function Dn(t,e){var n=e-t;return n?Pn(t,n):Ln(isNaN(t)?e:t)}function In(t){return function(e){var n,i,r=e.length,o=new Array(r),a=new Array(r),s=new Array(r);for(n=0;n<r;++n)i=sn(e[n]),o[n]=i.r||0,a[n]=i.g||0,s[n]=i.b||0;return o=t(o),a=t(a),s=t(s),i.opacity=1,function(t){return i.r=o(t),i.g=a(t),i.b=s(t),i+""}}}function Hn(t,e){var n,i=e?e.length:0,r=t?Math.min(i,t.length):0,o=new Array(r),a=new Array(i);for(n=0;n<r;++n)o[n]=Bn(t[n],e[n]);for(;n<i;++n)a[n]=e[n];return function(t){for(n=0;n<r;++n)a[n]=o[n](t);return a}}function jn(t,e){var n=new Date;return t=+t,e-=t,function(i){return n.setTime(t+e*i),n}}function Vn(t,e){return t=+t,e-=t,function(n){return t+e*n}}function Fn(t,e){var n,i={},r={};null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={});for(n in e)n in t?i[n]=Bn(t[n],e[n]):r[n]=e[n];return function(t){for(n in i)r[n]=i[n](t);return r}}function zn(t){return function(){return t}}function qn(t){return function(e){return t(e)+""}}function Gn(t,e){var n,i,r,o=qm.lastIndex=Gm.lastIndex=0,a=-1,s=[],l=[];for(t+="",e+="";(n=qm.exec(t))&&(i=Gm.exec(e));)(r=i.index)>o&&(r=e.slice(o,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:Vn(n,i)})),o=Gm.lastIndex;return o<e.length&&(r=e.slice(o),s[a]?s[a]+=r:s[++a]=r),s.length<2?l[0]?qn(l[0].x):zn(e):(e=l.length,function(t){for(var n,i=0;i<e;++i)s[(n=l[i]).i]=n.x(t);return s.join("")})}function Bn(t,e){var n,i=typeof e;return null==e||"boolean"===i?Ln(e):("number"===i?Vn:"string"===i?(n=nn(e))?(e=n,Vm):Gn:e instanceof nn?Vm:e instanceof Date?jn:Array.isArray(e)?Hn:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Fn:Vn)(t,e)}function $n(t,e){return t=+t,e-=t,function(n){return Math.round(t+e*n)}}function Wn(t,e,n,i,r,o){var a,s,l;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(l=t*n+e*i)&&(n-=t*l,i-=e*l),(s=Math.sqrt(n*n+i*i))&&(n/=s,i/=s,l/=s),t*i<e*n&&(t=-t,e=-e,l=-l,a=-a),{translateX:r,translateY:o,rotate:Math.atan2(e,t)*Bm,skewX:Math.atan(l)*Bm,scaleX:a,scaleY:s}}function Un(t){return"none"===t?$m:(Om||(Om=document.createElement("DIV"),Rm=document.documentElement,Dm=document.defaultView),Om.style.transform=t,t=Dm.getComputedStyle(Rm.appendChild(Om),null).getPropertyValue("transform"),Rm.removeChild(Om),t=t.slice(7,-1).split(","),Wn(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function Xn(t){return null==t?$m:(Im||(Im=document.createElementNS("http://www.w3.org/2000/svg","g")),Im.setAttribute("transform",t),(t=Im.transform.baseVal.consolidate())?(t=t.matrix,Wn(t.a,t.b,t.c,t.d,t.e,t.f)):$m)}function Yn(t,e,n,i){function r(t){return t.length?t.pop()+" ":""}function o(t,i,r,o,a,s){if(t!==r||i!==o){var l=a.push("translate(",null,e,null,n);s.push({i:l-4,x:Vn(t,r)},{i:l-2,x:Vn(i,o)})}else(r||o)&&a.push("translate("+r+e+o+n)}function a(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(r(n)+"rotate(",null,i)-2,x:Vn(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}function s(t,e,n,o){t!==e?o.push({i:n.push(r(n)+"skewX(",null,i)-2,x:Vn(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}function l(t,e,n,i,o,a){if(t!==n||e!==i){var s=o.push(r(o)+"scale(",null,",",null,")");a.push({i:s-4,x:Vn(t,n)},{i:s-2,x:Vn(e,i)})}else 1===n&&1===i||o.push(r(o)+"scale("+n+","+i+")")}return function(e,n){var i=[],r=[];return e=t(e),n=t(n),o(e.translateX,e.translateY,n.translateX,n.translateY,i,r),a(e.rotate,n.rotate,i,r),s(e.skewX,n.skewX,i,r),l(e.scaleX,e.scaleY,n.scaleX,n.scaleY,i,r),e=n=null,function(t){for(var e,n=-1,o=r.length;++n<o;)i[(e=r[n]).i]=e.x(t);return i.join("")}}}function Qn(t){return((t=Math.exp(t))+1/t)/2}function Zn(t){return((t=Math.exp(t))-1/t)/2}function Kn(t){return((t=Math.exp(2*t))-1)/(t+1)}function Jn(t,e){var n,i,r=t[0],o=t[1],a=t[2],s=e[0],l=e[1],c=e[2],u=s-r,h=l-o,d=u*u+h*h;if(d<Zm)i=Math.log(c/a)/Xm,n=function(t){return[r+t*u,o+t*h,a*Math.exp(Xm*t*i)]};else{var f=Math.sqrt(d),p=(c*c-a*a+Qm*d)/(2*a*Ym*f),g=(c*c-a*a-Qm*d)/(2*c*Ym*f),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);i=(v-m)/Xm,n=function(t){var e=t*i,n=Qn(m),s=a/(Ym*f)*(n*Kn(Xm*e+m)-Zn(m));return[r+s*u,o+s*h,a*n/Qn(Xm*e+m)]}}return n.duration=1e3*i,n}function ti(t){return function(e,n){var i=t((e=hn(e)).h,(n=hn(n)).h),r=Dn(e.s,n.s),o=Dn(e.l,n.l),a=Dn(e.opacity,n.opacity);return function(t){return e.h=i(t),e.s=r(t),e.l=o(t),e.opacity=a(t),e+""}}}function ei(t,e){var n=Dn((t=gn(t)).l,(e=gn(e)).l),i=Dn(t.a,e.a),r=Dn(t.b,e.b),o=Dn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=i(e),t.b=r(e),t.opacity=o(e),t+""}}function ni(t){return function(e,n){var i=t((e=_n(e)).h,(n=_n(n)).h),r=Dn(e.c,n.c),o=Dn(e.l,n.l),a=Dn(e.opacity,n.opacity);return function(t){return e.h=i(t),e.c=r(t),e.l=o(t),e.opacity=a(t),e+""}}}function ii(t){return function e(n){function i(e,i){var r=t((e=Tn(e)).h,(i=Tn(i)).h),o=Dn(e.s,i.s),a=Dn(e.l,i.l),s=Dn(e.opacity,i.opacity);return function(t){return e.h=r(t),e.s=o(t),e.l=a(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,i.gamma=e,i}(1)}function ri(t,e){for(var n=new Array(e),i=0;i<e;++i)n[i]=t(i/(e-1));return n}function oi(){return cv||(dv(ai),cv=hv.now()+uv)}function ai(){cv=0}function si(){this._call=this._time=this._next=null}function li(t,e,n){var i=new si;return i.restart(t,e,n),i}function ci(){oi(),++rv;for(var t,e=Hm;e;)(t=cv-e._time)>=0&&e._call.call(null,t),e=e._next;--rv}function ui(){cv=(lv=hv.now())+uv,rv=ov=0;try{ci()}finally{rv=0,di(),cv=0}}function hi(){var t=hv.now(),e=t-lv;e>sv&&(uv-=e,lv=t)}function di(){for(var t,e,n=Hm,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Hm=e);jm=t,fi(i)}function fi(t){if(!rv){ov&&(ov=clearTimeout(ov));t-cv>24?(t<1/0&&(ov=setTimeout(ui,t-hv.now()-uv)),av&&(av=clearInterval(av))):(av||(lv=hv.now(),av=setInterval(hi,sv)),rv=1,dv(ui))}}function pi(t,e,n){var i=new si;return e=null==e?0:+e,i.restart(function(n){i.stop(),t(n+e)},e,n),i}function gi(t,e,n){var i=new si,r=e;return null==e?(i.restart(t,e,n),i):(e=+e,n=null==n?oi():+n,i.restart(function o(a){a+=r,i.restart(o,r+=e,n),t(a)},e,n),i)}function mi(t,e,n,i,r,o){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};bi(t,n,{name:e,index:i,group:r,on:fv,tween:pv,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:gv})}function vi(t,e){var n=xi(t,e);if(n.state>gv)throw new Error("too late; already scheduled");return n}function yi(t,e){var n=xi(t,e);if(n.state>vv)throw new Error("too late; already started");return n}function xi(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function bi(t,e,n){function i(t){n.state=mv,n.timer.restart(r,n.delay,n.time),n.delay<=t&&r(t-n.delay)}function r(i){var c,u,h,d;if(n.state!==mv)return a();for(c in l)if(d=l[c],d.name===n.name){if(d.state===yv)return pi(r);d.state===xv?(d.state=wv,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete l[c]):+c<e&&(d.state=wv,d.timer.stop(),delete l[c])}if(pi(function(){n.state===yv&&(n.state=xv,n.timer.restart(o,n.delay,n.time),o(i))}),n.state=vv,n.on.call("start",t,t.__data__,n.index,n.group),n.state===vv){for(n.state=yv,s=new Array(h=n.tween.length),c=0,u=-1;c<h;++c)(d=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(s[++u]=d);s.length=u+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(a),n.state=bv,1),r=-1,o=s.length;++r<o;)s[r].call(null,i);n.state===bv&&(n.on.call("end",t,t.__data__,n.index,n.group),a())}function a(){n.state=wv,n.timer.stop(),delete l[e];for(var i in l)return;delete t.__transition}var s,l=t.__transition;l[e]=n,n.timer=li(i,0,n.time)}function wi(t,e){var n,i,r,o=t.__transition,a=!0;if(o){e=null==e?null:e+"";for(r in o)(n=o[r]).name===e?(i=n.state>vv&&n.state<bv,n.state=wv,n.timer.stop(),i&&n.on.call("interrupt",t,t.__data__,n.index,n.group),delete o[r]):a=!1;a&&delete t.__transition}}function _i(t){return this.each(function(){wi(this,t)})}function Si(t,e){var n,i;return function(){var r=yi(this,t),o=r.tween;if(o!==n){i=n=o;for(var a=0,s=i.length;a<s;++a)if(i[a].name===e){i=i.slice(),i.splice(a,1);break}}r.tween=i}}function Ci(t,e,n){var i,r;if("function"!=typeof n)throw new Error;return function(){var o=yi(this,t),a=o.tween;if(a!==i){r=(i=a).slice();for(var s={name:e,value:n},l=0,c=r.length;l<c;++l)if(r[l].name===e){r[l]=s;break}l===c&&r.push(s)}o.tween=r}}function Ti(t,e){var n=this._id;if(t+="",arguments.length<2){for(var i,r=xi(this.node(),n).tween,o=0,a=r.length;o<a;++o)if((i=r[o]).name===t)return i.value;return null}return this.each((null==e?Si:Ci)(n,t,e))}function ki(t,e,n){var i=t._id;return t.each(function(){var t=yi(this,i);(t.value||(t.value={}))[e]=n.apply(this,arguments)}),function(t){return xi(t,i).value[e]}}function Ai(t,e){var n;return("number"==typeof e?Vn:e instanceof nn?Vm:(n=nn(e))?(e=n,Vm):Gn)(t,e)}function Mi(t){return function(){this.removeAttribute(t)}}function Ei(t){return function(){
+this.removeAttributeNS(t.space,t.local)}}function Li(t,e,n){var i,r;return function(){var o=this.getAttribute(t);return o===n?null:o===i?r:r=e(i=o,n)}}function Pi(t,e,n){var i,r;return function(){var o=this.getAttributeNS(t.space,t.local);return o===n?null:o===i?r:r=e(i=o,n)}}function Ni(t,e,n){var i,r,o;return function(){var a,s=n(this);return null==s?void this.removeAttribute(t):(a=this.getAttribute(t),a===s?null:a===i&&s===r?o:o=e(i=a,r=s))}}function Oi(t,e,n){var i,r,o;return function(){var a,s=n(this);return null==s?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local),a===s?null:a===i&&s===r?o:o=e(i=a,r=s))}}function Ri(t,e){var n=Z(t),i="transform"===n?Um:Ai;return this.attrTween(t,"function"==typeof e?(n.local?Oi:Ni)(n,i,ki(this,"attr."+t,e)):null==e?(n.local?Ei:Mi)(n):(n.local?Pi:Li)(n,i,e+""))}function Di(t,e){function n(){var n=this,i=e.apply(n,arguments);return i&&function(e){n.setAttributeNS(t.space,t.local,i(e))}}return n._value=e,n}function Ii(t,e){function n(){var n=this,i=e.apply(n,arguments);return i&&function(e){n.setAttribute(t,i(e))}}return n._value=e,n}function Hi(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var i=Z(t);return this.tween(n,(i.local?Di:Ii)(i,e))}function ji(t,e){return function(){vi(this,t).delay=+e.apply(this,arguments)}}function Vi(t,e){return e=+e,function(){vi(this,t).delay=e}}function Fi(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?ji:Vi)(e,t)):xi(this.node(),e).delay}function zi(t,e){return function(){yi(this,t).duration=+e.apply(this,arguments)}}function qi(t,e){return e=+e,function(){yi(this,t).duration=e}}function Gi(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?zi:qi)(e,t)):xi(this.node(),e).duration}function Bi(t,e){if("function"!=typeof e)throw new Error;return function(){yi(this,t).ease=e}}function $i(t){var e=this._id;return arguments.length?this.each(Bi(e,t)):xi(this.node(),e).ease}function Wi(t){"function"!=typeof t&&(t=Jg(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var o,a=e[r],s=a.length,l=i[r]=[],c=0;c<s;++c)(o=a[c])&&t.call(o,o.__data__,c,a)&&l.push(o);return new fr(i,this._parents,this._name,this._id)}function Ui(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,i=e.length,r=n.length,o=Math.min(i,r),a=new Array(i),s=0;s<o;++s)for(var l,c=e[s],u=n[s],h=c.length,d=a[s]=new Array(h),f=0;f<h;++f)(l=c[f]||u[f])&&(d[f]=l);for(;s<i;++s)a[s]=e[s];return new fr(a,this._parents,this._name,this._id)}function Xi(t){return(t+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t})}function Yi(t,e,n){var i,r,o=Xi(e)?vi:yi;return function(){var a=o(this,t),s=a.on;s!==i&&(r=(i=s).copy()).on(e,n),a.on=r}}function Qi(t,e){var n=this._id;return arguments.length<2?xi(this.node(),n).on.on(t):this.each(Yi(n,t,e))}function Zi(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Ki(){return this.on("end.remove",Zi(this._id))}function Ji(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=nt(t));for(var i=this._groups,r=i.length,o=new Array(r),a=0;a<r;++a)for(var s,l,c=i[a],u=c.length,h=o[a]=new Array(u),d=0;d<u;++d)(s=c[d])&&(l=t.call(s,s.__data__,d,c))&&("__data__"in s&&(l.__data__=s.__data__),h[d]=l,mi(h[d],e,n,d,h,xi(s,n)));return new fr(o,this._parents,e,n)}function tr(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ot(t));for(var i=this._groups,r=i.length,o=[],a=[],s=0;s<r;++s)for(var l,c=i[s],u=c.length,h=0;h<u;++h)if(l=c[h]){for(var d,f=t.call(l,l.__data__,h,c),p=xi(l,n),g=0,m=f.length;g<m;++g)(d=f[g])&&mi(d,e,n,g,f,p);o.push(f),a.push(l)}return new fr(o,a,e,n)}function er(){return new _v(this._groups,this._parents)}function nr(t,e){var n,i,r;return function(){var o=jt(this,t),a=(this.style.removeProperty(t),jt(this,t));return o===a?null:o===n&&a===i?r:r=e(n=o,i=a)}}function ir(t){return function(){this.style.removeProperty(t)}}function rr(t,e,n){var i,r;return function(){var o=jt(this,t);return o===n?null:o===i?r:r=e(i=o,n)}}function or(t,e,n){var i,r,o;return function(){var a=jt(this,t),s=n(this);return null==s&&(this.style.removeProperty(t),s=jt(this,t)),a===s?null:a===i&&s===r?o:o=e(i=a,r=s)}}function ar(t,e,n){var i="transform"==(t+="")?Wm:Ai;return null==e?this.styleTween(t,nr(t,i)).on("end.style."+t,ir(t)):this.styleTween(t,"function"==typeof e?or(t,i,ki(this,"style."+t,e)):rr(t,i,e+""),n)}function sr(t,e,n){function i(){var i=this,r=e.apply(i,arguments);return r&&function(e){i.style.setProperty(t,r(e),n)}}return i._value=e,i}function lr(t,e,n){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,sr(t,e,null==n?"":n))}function cr(t){return function(){this.textContent=t}}function ur(t){return function(){var e=t(this);this.textContent=null==e?"":e}}function hr(t){return this.tween("text","function"==typeof t?ur(ki(this,"text",t)):cr(null==t?"":t+""))}function dr(){for(var t=this._name,e=this._id,n=gr(),i=this._groups,r=i.length,o=0;o<r;++o)for(var a,s=i[o],l=s.length,c=0;c<l;++c)if(a=s[c]){var u=xi(a,e);mi(a,t,n,c,s,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new fr(i,this._parents,t,n)}function fr(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function pr(t){return Pe().transition(t)}function gr(){return++Sv}function mr(t){return+t}function vr(t){return t*t}function yr(t){return t*(2-t)}function xr(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function br(t){return t*t*t}function wr(t){return--t*t*t+1}function _r(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function Sr(t){return 1-Math.cos(t*Ev)}function Cr(t){return Math.sin(t*Ev)}function Tr(t){return(1-Math.cos(Mv*t))/2}function kr(t){return Math.pow(2,10*t-10)}function Ar(t){return 1-Math.pow(2,-10*t)}function Mr(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function Er(t){return 1-Math.sqrt(1-t*t)}function Lr(t){return Math.sqrt(1- --t*t)}function Pr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function Nr(t){return 1-Or(1-t)}function Or(t){return(t=+t)<Lv?Vv*t*t:t<Nv?Vv*(t-=Pv)*t+Ov:t<Dv?Vv*(t-=Rv)*t+Iv:Vv*(t-=Hv)*t+jv}function Rr(t){return((t*=2)<=1?1-Or(1-t):Or(t-1)+1)/2}function Dr(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))return Uv.time=oi(),Uv;return n}function Ir(t){var e,n;t instanceof fr?(e=t._id,t=t._name):(e=gr(),(n=Uv).time=oi(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,o=0;o<r;++o)for(var a,s=i[o],l=s.length,c=0;c<l;++c)(a=s[c])&&mi(a,t,e,c,s,n||Dr(a,e));return new fr(i,this._parents,t,e)}function Hr(t,e){var n,i,r=t.__transition;if(r){e=null==e?null:e+"";for(i in r)if((n=r[i]).state>mv&&n.name===e)return new fr([[t]],Xv,e,+i)}return null}function jr(t){return function(){return t}}function Vr(t,e,n){this.target=t,this.type=e,this.selection=n}function Fr(){t.event.stopImmediatePropagation()}function zr(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function qr(t){return{type:t}}function Gr(){return!t.event.button}function Br(){var t=this.ownerSVGElement||this;return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function $r(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Wr(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function Ur(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function Xr(){return Zr(Jv)}function Yr(){return Zr(ty)}function Qr(){return Zr(ey)}function Zr(e){function n(t){var n=t.property("__brush",s).selectAll(".overlay").data([qr("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ny.overlay).merge(n).each(function(){var t=$r(this).extent;Ne(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),t.selectAll(".selection").data([qr("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ny.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=t.selectAll(".handle").data(e.handles,function(t){return t.type});r.exit().remove(),r.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return ny[t.type]}),t.each(i).attr("fill","none").attr("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush touchstart.brush",a)}function i(){var t=Ne(this),e=$r(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?e[1][0]-d/2:e[0][0]-d/2}).attr("y",function(t){return"s"===t.type[0]?e[1][1]-d/2:e[0][1]-d/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+d:d}).attr("height",function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+d:d})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function r(t,e){return t.__brush.emitter||new o(t,e)}function o(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function a(){function n(){var t=je(C);!I||_||S||(Math.abs(t[0]-j[0])>Math.abs(t[1]-j[1])?S=!0:_=!0),j=t,w=!0,zr(),o()}function o(){var t;switch(x=j[0]-H[0],b=j[1]-H[1],k){case Qv:case Yv:A&&(x=Math.max(N-h,Math.min(R-g,x)),d=h+x,m=g+x),M&&(b=Math.max(O-f,Math.min(D-v,b)),p=f+b,y=v+b);break;case Zv:A<0?(x=Math.max(N-h,Math.min(R-h,x)),d=h+x,m=g):A>0&&(x=Math.max(N-g,Math.min(R-g,x)),d=h,m=g+x),M<0?(b=Math.max(O-f,Math.min(D-f,b)),p=f+b,y=v):M>0&&(b=Math.max(O-v,Math.min(D-v,b)),p=f,y=v+b);break;case Kv:A&&(d=Math.max(N,Math.min(R,h-x*A)),m=Math.max(N,Math.min(R,g+x*A))),M&&(p=Math.max(O,Math.min(D,f-b*M)),y=Math.max(O,Math.min(D,v+b*M)))}m<d&&(A*=-1,t=h,h=g,g=t,t=d,d=m,m=t,T in iy&&z.attr("cursor",ny[T=iy[T]])),y<p&&(M*=-1,t=f,f=v,v=t,t=p,p=y,y=t,T in ry&&z.attr("cursor",ny[T=ry[T]])),E.selection&&(P=E.selection),_&&(d=P[0][0],m=P[1][0]),S&&(p=P[0][1],y=P[1][1]),P[0][0]===d&&P[0][1]===p&&P[1][0]===m&&P[1][1]===y||(E.selection=[[d,p],[m,y]],i.call(C),V.brush())}function a(){if(Fr(),t.event.touches){if(t.event.touches.length)return;l&&clearTimeout(l),l=setTimeout(function(){l=null},500),F.on("touchmove.brush touchend.brush touchcancel.brush",null)}else $e(t.event.view,w),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);F.attr("pointer-events","all"),z.attr("cursor",ny.overlay),E.selection&&(P=E.selection),Wr(P)&&(E.selection=null,i.call(C)),V.end()}function s(){switch(t.event.keyCode){case 16:I=A&&M;break;case 18:k===Zv&&(A&&(g=m-x*A,h=d+x*A),M&&(v=y-b*M,f=p+b*M),k=Kv,o());break;case 32:k!==Zv&&k!==Kv||(A<0?g=m-x:A>0&&(h=d-x),M<0?v=y-b:M>0&&(f=p-b),k=Qv,z.attr("cursor",ny.selection),o());break;default:return}zr()}function c(){switch(t.event.keyCode){case 16:I&&(_=S=I=!1,o());break;case 18:k===Kv&&(A<0?g=m:A>0&&(h=d),M<0?v=y:M>0&&(f=p),k=Zv,o());break;case 32:k===Qv&&(t.event.altKey?(A&&(g=m-x*A,h=d+x*A),M&&(v=y-b*M,f=p+b*M),k=Kv):(A<0?g=m:A>0&&(h=d),M<0?v=y:M>0&&(f=p),k=Zv),z.attr("cursor",ny[T]),o());break;default:return}zr()}if(t.event.touches){if(t.event.changedTouches.length<t.event.touches.length)return zr()}else if(l)return;if(u.apply(this,arguments)){var h,d,f,p,g,m,v,y,x,b,w,_,S,C=this,T=t.event.target.__data__.type,k="selection"===(t.event.metaKey?T="overlay":T)?Yv:t.event.altKey?Kv:Zv,A=e===ty?null:oy[T],M=e===Jv?null:ay[T],E=$r(C),L=E.extent,P=E.selection,N=L[0][0],O=L[0][1],R=L[1][0],D=L[1][1],I=A&&M&&t.event.shiftKey,H=je(C),j=H,V=r(C,arguments).beforestart();"overlay"===T?E.selection=P=[[h=e===ty?N:H[0],f=e===Jv?O:H[1]],[g=e===ty?R:h,v=e===Jv?D:f]]:(h=P[0][0],f=P[0][1],g=P[1][0],v=P[1][1]),d=h,p=f,m=g,y=v;var F=Ne(C).attr("pointer-events","none"),z=F.selectAll(".overlay").attr("cursor",ny[T]);if(t.event.touches)F.on("touchmove.brush",n,!0).on("touchend.brush touchcancel.brush",a,!0);else{var q=Ne(t.event.view).on("keydown.brush",s,!0).on("keyup.brush",c,!0).on("mousemove.brush",n,!0).on("mouseup.brush",a,!0);Be(t.event.view)}Fr(),wi(C),i.call(C),V.start()}}function s(){var t=this.__brush||{selection:null};return t.extent=c.apply(this,arguments),t.dim=e,t}var l,c=Br,u=Gr,h=W(n,"start","brush","end"),d=6;return n.move=function(t,n){t.selection?t.on("start.brush",function(){r(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){r(this,arguments).end()}).tween("brush",function(){function t(t){a.selection=1===t&&Wr(c)?null:u(t),i.call(o),s.brush()}var o=this,a=o.__brush,s=r(o,arguments),l=a.selection,c=e.input("function"==typeof n?n.apply(this,arguments):n,a.extent),u=Bn(l,c);return l&&c?t:t(1)}):t.each(function(){var t=this,o=arguments,a=t.__brush,s=e.input("function"==typeof n?n.apply(t,o):n,a.extent),l=r(t,o).beforestart();wi(t),a.selection=null==s||Wr(s)?null:s,i.call(t),l.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){Te(new Vr(n,t,e.output(this.state.selection)),h.apply,h,[t,this.that,this.args])}},n.extent=function(t){return arguments.length?(c="function"==typeof t?t:jr([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),n):c},n.filter=function(t){return arguments.length?(u="function"==typeof t?t:jr(!!t),n):u},n.handleSize=function(t){return arguments.length?(d=+t,n):d},n.on=function(){var t=h.on.apply(h,arguments);return t===h?n:t},n}function Kr(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}function Jr(){function t(t){var o,a,s,l,c,u,h=t.length,d=[],f=p(h),g=[],m=[],v=m.groups=new Array(h),y=new Array(h*h);for(o=0,c=-1;++c<h;){for(a=0,u=-1;++u<h;)a+=t[c][u];d.push(a),g.push(p(h)),o+=a}for(n&&f.sort(function(t,e){return n(d[t],d[e])}),i&&g.forEach(function(e,n){e.sort(function(e,r){return i(t[n][e],t[n][r])})}),o=dy(0,hy-e*h)/o,l=o?e:hy/h,a=0,c=-1;++c<h;){for(s=a,u=-1;++u<h;){var x=f[c],b=g[x][u],w=t[x][b],_=a,S=a+=w*o;y[b*h+x]={index:x,subindex:b,startAngle:_,endAngle:S,value:w}}v[x]={index:x,startAngle:s,endAngle:a,value:d[x]},a+=l}for(c=-1;++c<h;)for(u=c-1;++u<h;){var C=y[u*h+c],T=y[c*h+u];(C.value||T.value)&&m.push(C.value<T.value?{source:T,target:C}:{source:C,target:T})}return r?m.sort(r):m}var e=0,n=null,i=null,r=null;return t.padAngle=function(n){return arguments.length?(e=dy(0,n),t):e},t.sortGroups=function(e){return arguments.length?(n=e,t):n},t.sortSubgroups=function(e){return arguments.length?(i=e,t):i},t.sortChords=function(e){return arguments.length?(null==e?r=null:(r=Kr(e))._=e,t):r&&r._},t}function to(t){return function(){return t}}function eo(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function no(){return new eo}function io(t){return t.source}function ro(t){return t.target}function oo(t){return t.radius}function ao(t){return t.startAngle}function so(t){return t.endAngle}function lo(){function t(){var t,s=fy.call(arguments),l=e.apply(this,s),c=n.apply(this,s),u=+i.apply(this,(s[0]=l,s)),h=r.apply(this,s)-uy,d=o.apply(this,s)-uy,f=u*sy(h),p=u*ly(h),g=+i.apply(this,(s[0]=c,s)),m=r.apply(this,s)-uy,v=o.apply(this,s)-uy;if(a||(a=t=no()),a.moveTo(f,p),a.arc(0,0,u,h,d),h===m&&d===v||(a.quadraticCurveTo(0,0,g*sy(m),g*ly(m)),a.arc(0,0,g,m,v)),a.quadraticCurveTo(0,0,f,p),a.closePath(),t)return a=null,t+""||null}var e=io,n=ro,i=oo,r=ao,o=so,a=null;return t.radius=function(e){return arguments.length?(i="function"==typeof e?e:to(+e),t):i},t.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:to(+e),t):r},t.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:to(+e),t):o},t.source=function(n){return arguments.length?(e=n,t):e},t.target=function(e){return arguments.length?(n=e,t):n},t.context=function(e){return arguments.length?(a=null==e?null:e,t):a},t}function co(){}function uo(t,e){var n=new co;if(t instanceof co)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,r=-1,o=t.length;if(null==e)for(;++r<o;)n.set(r,t[r]);else for(;++r<o;)n.set(e(i=t[r],r,t),i)}else if(t)for(var a in t)n.set(a,t[a]);return n}function ho(){function t(e,r,a,s){if(r>=o.length)return null!=n&&e.sort(n),null!=i?i(e):e;for(var l,c,u,h=-1,d=e.length,f=o[r++],p=uo(),g=a();++h<d;)(u=p.get(l=f(c=e[h])+""))?u.push(c):p.set(l,[c]);return p.each(function(e,n){s(g,n,t(e,r,a,s))}),g}function e(t,n){if(++n>o.length)return t;var r,s=a[n-1];return null!=i&&n>=o.length?r=t.entries():(r=[],t.each(function(t,i){r.push({key:i,values:e(t,n)})})),null!=s?r.sort(function(t,e){return s(t.key,e.key)}):r}var n,i,r,o=[],a=[];return r={object:function(e){return t(e,0,fo,po)},map:function(e){return t(e,0,go,mo)},entries:function(n){return e(t(n,0,go,mo),0)},key:function(t){return o.push(t),r},sortKeys:function(t){return a[o.length-1]=t,r},sortValues:function(t){return n=t,r},rollup:function(t){return i=t,r}}}function fo(){return{}}function po(t,e,n){t[e]=n}function go(){return uo()}function mo(t,e,n){t.set(e,n)}function vo(){}function yo(t,e){var n=new vo;if(t instanceof vo)t.each(function(t){n.add(t)});else if(t){var i=-1,r=t.length;if(null==e)for(;++i<r;)n.add(t[i]);else for(;++i<r;)n.add(e(t[i],i,t))}return n}function xo(t){var e=[];for(var n in t)e.push(n);return e}function bo(t){var e=[];for(var n in t)e.push(t[n]);return e}function wo(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e}function _o(t){return new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}")}function So(t,e){var n=_o(t);return function(i,r){return e(n(i),r,t)}}function Co(t){var e=Object.create(null),n=[];return t.forEach(function(t){for(var i in t)i in e||n.push(e[i]=i)}),n}function To(t){function e(t,e){var i,r,o=n(t,function(t,n){if(i)return i(t,n-1);r=t,i=e?So(t,e):_o(t)});return o.columns=r||[],o}function n(t,e){function n(){if(c)return xy;if(u)return u=!1,yy;var e,n,i=a;if(t.charCodeAt(i)===by){for(;a++<o&&t.charCodeAt(a)!==by||t.charCodeAt(++a)===by;);return(e=a)>=o?c=!0:(n=t.charCodeAt(a++))===wy?u=!0:n===_y&&(u=!0,t.charCodeAt(a)===wy&&++a),t.slice(i+1,e-1).replace(/""/g,'"')}for(;a<o;){if((n=t.charCodeAt(e=a++))===wy)u=!0;else if(n===_y)u=!0,t.charCodeAt(a)===wy&&++a;else if(n!==l)continue;return t.slice(i,e)}return c=!0,t.slice(i,o)}var i,r=[],o=t.length,a=0,s=0,c=o<=0,u=!1;for(t.charCodeAt(o-1)===wy&&--o,t.charCodeAt(o-1)===_y&&--o;(i=n())!==xy;){for(var h=[];i!==yy&&i!==xy;)h.push(i),i=n();e&&null==(h=e(h,s++))||r.push(h)}return r}function i(e,n){return null==n&&(n=Co(e)),[n.map(a).join(t)].concat(e.map(function(e){return n.map(function(t){return a(e[t])}).join(t)})).join("\n")}function r(t){return t.map(o).join("\n")}function o(e){return e.map(a).join(t)}function a(t){return null==t?"":s.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}var s=new RegExp('["'+t+"\n\r]"),l=t.charCodeAt(0);return{parse:e,parseRows:n,format:i,formatRows:r}}function ko(t,e){function n(){var n,r,o=i.length,a=0,s=0;for(n=0;n<o;++n)r=i[n],a+=r.x,s+=r.y;for(a=a/o-t,s=s/o-e,n=0;n<o;++n)r=i[n],r.x-=a,r.y-=s}var i;return null==t&&(t=0),null==e&&(e=0),n.initialize=function(t){i=t},n.x=function(e){return arguments.length?(t=+e,n):t},n.y=function(t){return arguments.length?(e=+t,n):e},n}function Ao(t){return function(){return t}}function Mo(){return 1e-6*(Math.random()-.5)}function Eo(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return Lo(this.cover(e,n),e,n,t)}function Lo(t,e,n,i){if(isNaN(e)||isNaN(n))return t;var r,o,a,s,l,c,u,h,d,f=t._root,p={data:i},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!f)return t._root=p,t;for(;f.length;)if((c=e>=(o=(g+v)/2))?g=o:v=o,(u=n>=(a=(m+y)/2))?m=a:y=a,r=f,!(f=f[h=u<<1|c]))return r[h]=p,t;if(s=+t._x.call(null,f.data),l=+t._y.call(null,f.data),e===s&&n===l)return p.next=f,r?r[h]=p:t._root=p,t;do{r=r?r[h]=new Array(4):t._root=new Array(4),(c=e>=(o=(g+v)/2))?g=o:v=o,(u=n>=(a=(m+y)/2))?m=a:y=a}while((h=u<<1|c)==(d=(l>=a)<<1|s>=o));return r[d]=f,r[h]=p,t}function Po(t){var e,n,i,r,o=t.length,a=new Array(o),s=new Array(o),l=1/0,c=1/0,u=-1/0,h=-1/0;for(n=0;n<o;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(r=+this._y.call(null,e))||(a[n]=i,s[n]=r,i<l&&(l=i),i>u&&(u=i),r<c&&(c=r),r>h&&(h=r));for(u<l&&(l=this._x0,u=this._x1),h<c&&(c=this._y0,h=this._y1),this.cover(l,c).cover(u,h),n=0;n<o;++n)Lo(this,a[n],s[n],t[n]);return this}function No(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,i=this._y0,r=this._x1,o=this._y1;if(isNaN(n))r=(n=Math.floor(t))+1,o=(i=Math.floor(e))+1;else{if(!(n>t||t>r||i>e||e>o))return this;var a,s,l=r-n,c=this._root;switch(s=(e<(i+o)/2)<<1|t<(n+r)/2){case 0:do{a=new Array(4),a[s]=c,c=a}while(l*=2,r=n+l,o=i+l,t>r||e>o);break;case 1:do{a=new Array(4),a[s]=c,c=a}while(l*=2,n=r-l,o=i+l,n>t||e>o);break;case 2:do{a=new Array(4),a[s]=c,c=a}while(l*=2,r=n+l,i=o-l,t>r||i>e);break;case 3:do{a=new Array(4),a[s]=c,c=a}while(l*=2,n=r-l,i=o-l,n>t||i>e)}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=i,this._x1=r,this._y1=o,this}function Oo(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t}function Ro(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function Do(t,e,n,i,r){this.node=t,this.x0=e,this.y0=n,this.x1=i,this.y1=r}function Io(t,e,n){var i,r,o,a,s,l,c,u=this._x0,h=this._y0,d=this._x1,f=this._y1,p=[],g=this._root;for(g&&p.push(new Do(g,u,h,d,f)),null==n?n=1/0:(u=t-n,h=e-n,d=t+n,f=e+n,n*=n);l=p.pop();)if(!(!(g=l.node)||(r=l.x0)>d||(o=l.y0)>f||(a=l.x1)<u||(s=l.y1)<h))if(g.length){var m=(r+a)/2,v=(o+s)/2;p.push(new Do(g[3],m,v,a,s),new Do(g[2],r,v,m,s),new Do(g[1],m,o,a,v),new Do(g[0],r,o,m,v)),(c=(e>=v)<<1|t>=m)&&(l=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=l)}else{var y=t-+this._x.call(null,g.data),x=e-+this._y.call(null,g.data),b=y*y+x*x;if(b<n){var w=Math.sqrt(n=b);u=t-w,h=e-w,d=t+w,f=e+w,i=g.data}}return i}function Ho(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var e,n,i,r,o,a,s,l,c,u,h,d,f=this._root,p=this._x0,g=this._y0,m=this._x1,v=this._y1;if(!f)return this;if(f.length)for(;;){if((c=o>=(s=(p+m)/2))?p=s:m=s,(u=a>=(l=(g+v)/2))?g=l:v=l,e=f,!(f=f[h=u<<1|c]))return this;if(!f.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(n=e,d=h)}for(;f.data!==t;)if(i=f,!(f=f.next))return this;return(r=f.next)&&delete f.next,i?(r?i.next=r:delete i.next,this):e?(r?e[h]=r:delete e[h],(f=e[0]||e[1]||e[2]||e[3])&&f===(e[3]||e[2]||e[1]||e[0])&&!f.length&&(n?n[d]=f:this._root=f),this):(this._root=r,this)}function jo(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function Vo(){return this._root}function Fo(){var t=0;return this.visit(function(e){if(!e.length)do{++t}while(e=e.next)}),t}function zo(t){var e,n,i,r,o,a,s=[],l=this._root;for(l&&s.push(new Do(l,this._x0,this._y0,this._x1,this._y1));e=s.pop();)if(!t(l=e.node,i=e.x0,r=e.y0,o=e.x1,a=e.y1)&&l.length){var c=(i+o)/2,u=(r+a)/2;(n=l[3])&&s.push(new Do(n,c,u,o,a)),(n=l[2])&&s.push(new Do(n,i,u,c,a)),(n=l[1])&&s.push(new Do(n,c,r,o,u)),(n=l[0])&&s.push(new Do(n,i,r,c,u))}return this}function qo(t){var e,n=[],i=[];for(this._root&&n.push(new Do(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var r=e.node;if(r.length){var o,a=e.x0,s=e.y0,l=e.x1,c=e.y1,u=(a+l)/2,h=(s+c)/2;(o=r[0])&&n.push(new Do(o,a,s,u,h)),(o=r[1])&&n.push(new Do(o,u,s,l,h)),(o=r[2])&&n.push(new Do(o,a,h,u,c)),(o=r[3])&&n.push(new Do(o,u,h,l,c))}i.push(e)}for(;e=i.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this}function Go(t){return t[0]}function Bo(t){return arguments.length?(this._x=t,this):this._x}function $o(t){return t[1]}function Wo(t){return arguments.length?(this._y=t,this):this._y}function Uo(t,e,n){var i=new Xo(null==e?Go:e,null==n?$o:n,NaN,NaN,NaN,NaN);return null==t?i:i.addAll(t)}function Xo(t,e,n,i,r,o){this._x=t,this._y=e,this._x0=n,this._y0=i,this._x1=r,this._y1=o,this._root=void 0}function Yo(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}function Qo(t){return t.x+t.vx}function Zo(t){return t.y+t.vy}function Ko(t){function e(){function t(t,e,n,i,r){var o=t.data,s=t.r,f=h+s;{if(!o)return e>c+f||i<c-f||n>u+f||r<u-f;if(o.index>l.index){var p=c-o.x-o.vx,g=u-o.y-o.vy,m=p*p+g*g;m<f*f&&(0===p&&(p=Mo(),m+=p*p),0===g&&(g=Mo(),m+=g*g),m=(f-(m=Math.sqrt(m)))/m*a,l.vx+=(p*=m)*(f=(s*=s)/(d+s)),l.vy+=(g*=m)*f,o.vx-=p*(f=1-f),o.vy-=g*f)}}}for(var e,i,l,c,u,h,d,f=r.length,p=0;p<s;++p)for(i=Uo(r,Qo,Zo).visitAfter(n),e=0;e<f;++e)l=r[e],h=o[l.index],d=h*h,c=l.x+l.vx,u=l.y+l.vy,i.visit(t)}function n(t){if(t.data)return t.r=o[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function i(){if(r){var e,n,i=r.length;for(o=new Array(i),e=0;e<i;++e)n=r[e],o[n.index]=+t(n,e,r)}}var r,o,a=1,s=1;return"function"!=typeof t&&(t=Ao(null==t?1:+t)),e.initialize=function(t){r=t,i()},e.iterations=function(t){return arguments.length?(s=+t,e):s},e.strength=function(t){return arguments.length?(a=+t,e):a},e.radius=function(n){return arguments.length?(t="function"==typeof n?n:Ao(+n),i(),e):t},e}function Jo(t){return t.index}function ta(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}function ea(t){function e(t){return 1/Math.min(c[t.source.index],c[t.target.index])}function n(e){for(var n=0,i=t.length;n<p;++n)for(var r,o,l,c,h,d,f,g=0;g<i;++g)r=t[g],o=r.source,l=r.target,c=l.x+l.vx-o.x-o.vx||Mo(),h=l.y+l.vy-o.y-o.vy||Mo(),d=Math.sqrt(c*c+h*h),d=(d-s[g])/d*e*a[g],c*=d,h*=d,l.vx-=c*(f=u[g]),l.vy-=h*f,o.vx+=c*(f=1-f),o.vy+=h*f}function i(){if(l){var e,n,i=l.length,d=t.length,f=uo(l,h);for(e=0,c=new Array(i);e<d;++e)n=t[e],n.index=e,"object"!=typeof n.source&&(n.source=ta(f,n.source)),"object"!=typeof n.target&&(n.target=ta(f,n.target)),c[n.source.index]=(c[n.source.index]||0)+1,c[n.target.index]=(c[n.target.index]||0)+1;for(e=0,u=new Array(d);e<d;++e)n=t[e],u[e]=c[n.source.index]/(c[n.source.index]+c[n.target.index]);a=new Array(d),r(),s=new Array(d),o()}}function r(){if(l)for(var e=0,n=t.length;e<n;++e)a[e]=+d(t[e],e,t)}function o(){if(l)for(var e=0,n=t.length;e<n;++e)s[e]=+f(t[e],e,t)}var a,s,l,c,u,h=Jo,d=e,f=Ao(30),p=1;return null==t&&(t=[]),n.initialize=function(t){l=t,i()},n.links=function(e){return arguments.length?(t=e,i(),n):t},n.id=function(t){return arguments.length?(h=t,n):h},n.iterations=function(t){return arguments.length?(p=+t,n):p},n.strength=function(t){return arguments.length?(d="function"==typeof t?t:Ao(+t),r(),n):d},n.distance=function(t){return arguments.length?(f="function"==typeof t?t:Ao(+t),o(),n):f},n}function na(t){return t.x}function ia(t){return t.y}function ra(t){function e(){n(),f.call("tick",o),a<s&&(d.stop(),f.call("end",o))}function n(){var e,n,i=t.length;for(a+=(c-a)*l,h.each(function(t){t(a)}),e=0;e<i;++e)n=t[e],null==n.fx?n.x+=n.vx*=u:(n.x=n.fx,n.vx=0),null==n.fy?n.y+=n.vy*=u:(n.y=n.fy,n.vy=0)}function i(){for(var e,n=0,i=t.length;n<i;++n){if(e=t[n],e.index=n,isNaN(e.x)||isNaN(e.y)){var r=Dy*Math.sqrt(n),o=n*Iy;e.x=r*Math.cos(o),e.y=r*Math.sin(o)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function r(e){return e.initialize&&e.initialize(t),e}var o,a=1,s=.001,l=1-Math.pow(s,1/300),c=0,u=.6,h=uo(),d=li(e),f=W("tick","end");return null==t&&(t=[]),i(),o={tick:n,restart:function(){return d.restart(e),o},stop:function(){return d.stop(),o},nodes:function(e){return arguments.length?(t=e,i(),h.each(r),o):t},alpha:function(t){return arguments.length?(a=+t,o):a},alphaMin:function(t){return arguments.length?(s=+t,o):s},alphaDecay:function(t){return arguments.length?(l=+t,o):+l},alphaTarget:function(t){return arguments.length?(c=+t,o):c},velocityDecay:function(t){return arguments.length?(u=1-t,o):1-u},force:function(t,e){return arguments.length>1?(null==e?h.remove(t):h.set(t,r(e)),o):h.get(t)},find:function(e,n,i){var r,o,a,s,l,c=0,u=t.length;for(null==i?i=1/0:i*=i,c=0;c<u;++c)s=t[c],r=e-s.x,o=n-s.y,(a=r*r+o*o)<i&&(l=s,i=a);return l},on:function(t,e){return arguments.length>1?(f.on(t,e),o):f.on(t)}}}function oa(){function t(t){var e,s=r.length,l=Uo(r,na,ia).visitAfter(n);for(a=t,e=0;e<s;++e)o=r[e],l.visit(i)}function e(){if(r){var t,e,n=r.length;for(s=new Array(n),t=0;t<n;++t)e=r[t],s[e.index]=+l(e,t,r)}}function n(t){var e,n,i,r,o,a=0,l=0;if(t.length){for(i=r=o=0;o<4;++o)(e=t[o])&&(n=Math.abs(e.value))&&(a+=e.value,l+=n,i+=n*e.x,r+=n*e.y);t.x=i/l,t.y=r/l}else{e=t,e.x=e.data.x,e.y=e.data.y;do{a+=s[e.data.index]}while(e=e.next)}t.value=a}function i(t,e,n,i){if(!t.value)return!0;var r=t.x-o.x,l=t.y-o.y,d=i-e,f=r*r+l*l;if(d*d/h<f)return f<u&&(0===r&&(r=Mo(),f+=r*r),0===l&&(l=Mo(),f+=l*l),f<c&&(f=Math.sqrt(c*f)),o.vx+=r*t.value*a/f,o.vy+=l*t.value*a/f),!0;if(!(t.length||f>=u)){(t.data!==o||t.next)&&(0===r&&(r=Mo(),f+=r*r),0===l&&(l=Mo(),f+=l*l),f<c&&(f=Math.sqrt(c*f)));do{t.data!==o&&(d=s[t.data.index]*a/f,o.vx+=r*d,o.vy+=l*d)}while(t=t.next)}}var r,o,a,s,l=Ao(-30),c=1,u=1/0,h=.81;return t.initialize=function(t){r=t,e()},t.strength=function(n){return arguments.length?(l="function"==typeof n?n:Ao(+n),e(),t):l},t.distanceMin=function(e){return arguments.length?(c=e*e,t):Math.sqrt(c)},t.distanceMax=function(e){return arguments.length?(u=e*e,t):Math.sqrt(u)},t.theta=function(e){return arguments.length?(h=e*e,t):Math.sqrt(h)},t}function aa(t,e,n){function i(t){for(var i=0,r=o.length;i<r;++i){var l=o[i],c=l.x-e||1e-6,u=l.y-n||1e-6,h=Math.sqrt(c*c+u*u),d=(s[i]-h)*a[i]*t/h;l.vx+=c*d,l.vy+=u*d}}function r(){if(o){var e,n=o.length;for(a=new Array(n),s=new Array(n),e=0;e<n;++e)s[e]=+t(o[e],e,o),a[e]=isNaN(s[e])?0:+l(o[e],e,o)}}var o,a,s,l=Ao(.1);return"function"!=typeof t&&(t=Ao(+t)),null==e&&(e=0),null==n&&(n=0),i.initialize=function(t){o=t,r()},i.strength=function(t){return arguments.length?(l="function"==typeof t?t:Ao(+t),r(),i):l},i.radius=function(e){return arguments.length?(t="function"==typeof e?e:Ao(+e),r(),i):t},i.x=function(t){return arguments.length?(e=+t,i):e},i.y=function(t){return arguments.length?(n=+t,i):n},i}function sa(t){function e(t){for(var e,n=0,a=i.length;n<a;++n)e=i[n],e.vx+=(o[n]-e.x)*r[n]*t}function n(){if(i){var e,n=i.length;for(r=new Array(n),o=new Array(n),e=0;e<n;++e)r[e]=isNaN(o[e]=+t(i[e],e,i))?0:+a(i[e],e,i)}}var i,r,o,a=Ao(.1);return"function"!=typeof t&&(t=Ao(null==t?0:+t)),e.initialize=function(t){i=t,n()},e.strength=function(t){return arguments.length?(a="function"==typeof t?t:Ao(+t),n(),e):a},e.x=function(i){return arguments.length?(t="function"==typeof i?i:Ao(+i),n(),e):t},e}function la(t){function e(t){for(var e,n=0,a=i.length;n<a;++n)e=i[n],e.vy+=(o[n]-e.y)*r[n]*t}function n(){if(i){var e,n=i.length;for(r=new Array(n),o=new Array(n),e=0;e<n;++e)r[e]=isNaN(o[e]=+t(i[e],e,i))?0:+a(i[e],e,i)}}var i,r,o,a=Ao(.1);return"function"!=typeof t&&(t=Ao(null==t?0:+t)),e.initialize=function(t){i=t,n()},e.strength=function(t){return arguments.length?(a="function"==typeof t?t:Ao(+t),n(),e):a},e.y=function(i){return arguments.length?(t="function"==typeof i?i:Ao(+i),n(),e):t},e}function ca(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}function ua(t){return t=ca(Math.abs(t)),t?t[1]:NaN}function ha(t,e){return function(n,i){for(var r=n.length,o=[],a=0,s=t[0],l=0;r>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),o.push(n.substring(r-=s,r+s)),!((l+=s+1)>i));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function da(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}function fa(t,e){t=t.toPrecision(e);t:for(var n,i=t.length,r=1,o=-1;r<i;++r)switch(t[r]){case".":o=n=r
+;break;case"0":0===o&&(o=r),n=r;break;case"e":break t;default:o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(n+1):t}function pa(t,e){var n=ca(t,e);if(!n)return t+"";var i=n[0],r=n[1],o=r-(Ry=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,a=i.length;return o===a?i:o>a?i+new Array(o-a+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+ca(t,Math.max(0,e+o-1))[0]}function ga(t,e){var n=ca(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}function ma(t){return new va(t)}function va(t){if(!(e=jy.exec(t)))throw new Error("invalid format: "+t);var e,n=e[1]||" ",i=e[2]||">",r=e[3]||"-",o=e[4]||"",a=!!e[5],s=e[6]&&+e[6],l=!!e[7],c=e[8]&&+e[8].slice(1),u=e[9]||"";"n"===u?(l=!0,u="g"):Hy[u]||(u=""),(a||"0"===n&&"="===i)&&(a=!0,n="0",i="="),this.fill=n,this.align=i,this.sign=r,this.symbol=o,this.zero=a,this.width=s,this.comma=l,this.precision=c,this.type=u}function ya(t){return t}function xa(t){function e(t){function e(t){var e,r,s,u=m,b=v;if("c"===g)b=y(t)+b,t="";else{t=+t;var w=t<0;if(t=y(Math.abs(t),p),w&&0==+t&&(w=!1),u=(w?"("===c?c:"-":"-"===c||"("===c?"":c)+u,b=("s"===g?Fy[8+Ry/3]:"")+b+(w&&"("===c?")":""),x)for(e=-1,r=t.length;++e<r;)if(48>(s=t.charCodeAt(e))||s>57){b=(46===s?o+t.slice(e+1):t.slice(e))+b,t=t.slice(0,e);break}}f&&!h&&(t=i(t,1/0));var _=u.length+t.length+b.length,S=_<d?new Array(d-_+1).join(n):"";switch(f&&h&&(t=i(S+t,S.length?d-b.length:1/0),S=""),l){case"<":t=u+t+b+S;break;case"=":t=u+S+t+b;break;case"^":t=S.slice(0,_=S.length>>1)+u+t+b+S.slice(_);break;default:t=S+u+t+b}return a(t)}t=ma(t);var n=t.fill,l=t.align,c=t.sign,u=t.symbol,h=t.zero,d=t.width,f=t.comma,p=t.precision,g=t.type,m="$"===u?r[0]:"#"===u&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===u?r[1]:/[%p]/.test(g)?s:"",y=Hy[g],x=!g||/[defgprs%]/.test(g);return p=null==p?g?6:12:/[gprs]/.test(g)?Math.max(1,Math.min(21,p)):Math.max(0,Math.min(20,p)),e.toString=function(){return t+""},e}function n(t,n){var i=e((t=ma(t),t.type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(ua(n)/3))),o=Math.pow(10,-r),a=Fy[8+r/3];return function(t){return i(o*t)+a}}var i=t.grouping&&t.thousands?ha(t.grouping,t.thousands):ya,r=t.currency,o=t.decimal,a=t.numerals?da(t.numerals):ya,s=t.percent||"%";return{format:e,formatPrefix:n}}function ba(e){return Vy=xa(e),t.format=Vy.format,t.formatPrefix=Vy.formatPrefix,Vy}function wa(t){return Math.max(0,-ua(Math.abs(t)))}function _a(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ua(e)/3)))-ua(Math.abs(t)))}function Sa(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ua(e)-ua(t))+1}function Ca(){return new Ta}function Ta(){this.reset()}function ka(t,e,n){var i=t.s=e+n,r=i-e,o=i-r;t.t=e-o+(n-r)}function Aa(t){return t>1?0:t<-1?wx:Math.acos(t)}function Ma(t){return t>1?_x:t<-1?-_x:Math.asin(t)}function Ea(t){return(t=Dx(t/2))*t}function La(){}function Pa(t,e){t&&Fx.hasOwnProperty(t.type)&&Fx[t.type](t,e)}function Na(t,e,n){var i,r=-1,o=t.length-n;for(e.lineStart();++r<o;)i=t[r],e.point(i[0],i[1],i[2]);e.lineEnd()}function Oa(t,e){var n=-1,i=t.length;for(e.polygonStart();++n<i;)Na(t[n],e,1);e.polygonEnd()}function Ra(t,e){t&&Vx.hasOwnProperty(t.type)?Vx[t.type](t,e):Pa(t,e)}function Da(){Gx.point=Ha}function Ia(){ja(zy,qy)}function Ha(t,e){Gx.point=ja,zy=t,qy=e,t*=kx,e*=kx,Gy=t,By=Lx(e=e/2+Sx),$y=Dx(e)}function ja(t,e){t*=kx,e*=kx,e=e/2+Sx;var n=t-Gy,i=n>=0?1:-1,r=i*n,o=Lx(e),a=Dx(e),s=$y*a,l=By*o+s*Lx(r),c=s*i*Dx(r);zx.add(Ex(c,l)),Gy=t,By=o,$y=a}function Va(t){return qx.reset(),Ra(t,Gx),2*qx}function Fa(t){return[Ex(t[1],t[0]),Ma(t[2])]}function za(t){var e=t[0],n=t[1],i=Lx(n);return[i*Lx(e),i*Dx(e),Dx(n)]}function qa(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ga(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Ba(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function $a(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Wa(t){var e=Hx(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function Ua(t,e){tx.push(ex=[Wy=t,Xy=t]),e<Uy&&(Uy=e),e>Yy&&(Yy=e)}function Xa(t,e){var n=za([t*kx,e*kx]);if(Jy){var i=Ga(Jy,n),r=[i[1],-i[0],0],o=Ga(r,i);Wa(o),o=Fa(o);var a,s=t-Qy,l=s>0?1:-1,c=o[0]*Tx*l,u=Ax(s)>180;u^(l*Qy<c&&c<l*t)?(a=o[1]*Tx)>Yy&&(Yy=a):(c=(c+360)%360-180,u^(l*Qy<c&&c<l*t)?(a=-o[1]*Tx)<Uy&&(Uy=a):(e<Uy&&(Uy=e),e>Yy&&(Yy=e))),u?t<Qy?ts(Wy,t)>ts(Wy,Xy)&&(Xy=t):ts(t,Xy)>ts(Wy,Xy)&&(Wy=t):Xy>=Wy?(t<Wy&&(Wy=t),t>Xy&&(Xy=t)):t>Qy?ts(Wy,t)>ts(Wy,Xy)&&(Xy=t):ts(t,Xy)>ts(Wy,Xy)&&(Wy=t)}else tx.push(ex=[Wy=t,Xy=t]);e<Uy&&(Uy=e),e>Yy&&(Yy=e),Jy=n,Qy=t}function Ya(){$x.point=Xa}function Qa(){ex[0]=Wy,ex[1]=Xy,$x.point=Ua,Jy=null}function Za(t,e){if(Jy){var n=t-Qy;Bx.add(Ax(n)>180?n+(n>0?360:-360):n)}else Zy=t,Ky=e;Gx.point(t,e),Xa(t,e)}function Ka(){Gx.lineStart()}function Ja(){Za(Zy,Ky),Gx.lineEnd(),Ax(Bx)>xx&&(Wy=-(Xy=180)),ex[0]=Wy,ex[1]=Xy,Jy=null}function ts(t,e){return(e-=t)<0?e+360:e}function es(t,e){return t[0]-e[0]}function ns(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}function is(t){var e,n,i,r,o,a,s;if(Yy=Xy=-(Wy=Uy=1/0),tx=[],Ra(t,$x),n=tx.length){for(tx.sort(es),e=1,i=tx[0],o=[i];e<n;++e)r=tx[e],ns(i,r[0])||ns(i,r[1])?(ts(i[0],r[1])>ts(i[0],i[1])&&(i[1]=r[1]),ts(r[0],i[1])>ts(i[0],i[1])&&(i[0]=r[0])):o.push(i=r);for(a=-1/0,n=o.length-1,e=0,i=o[n];e<=n;i=r,++e)r=o[e],(s=ts(i[1],r[0]))>a&&(a=s,Wy=r[0],Xy=i[1])}return tx=ex=null,Wy===1/0||Uy===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wy,Uy],[Xy,Yy]]}function rs(t,e){t*=kx,e*=kx;var n=Lx(e);os(n*Lx(t),n*Dx(t),Dx(e))}function os(t,e,n){++nx,rx+=(t-rx)/nx,ox+=(e-ox)/nx,ax+=(n-ax)/nx}function as(){Wx.point=ss}function ss(t,e){t*=kx,e*=kx;var n=Lx(e);gx=n*Lx(t),mx=n*Dx(t),vx=Dx(e),Wx.point=ls,os(gx,mx,vx)}function ls(t,e){t*=kx,e*=kx;var n=Lx(e),i=n*Lx(t),r=n*Dx(t),o=Dx(e),a=Ex(Hx((a=mx*o-vx*r)*a+(a=vx*i-gx*o)*a+(a=gx*r-mx*i)*a),gx*i+mx*r+vx*o);ix+=a,sx+=a*(gx+(gx=i)),lx+=a*(mx+(mx=r)),cx+=a*(vx+(vx=o)),os(gx,mx,vx)}function cs(){Wx.point=rs}function us(){Wx.point=ds}function hs(){fs(fx,px),Wx.point=rs}function ds(t,e){fx=t,px=e,t*=kx,e*=kx,Wx.point=fs;var n=Lx(e);gx=n*Lx(t),mx=n*Dx(t),vx=Dx(e),os(gx,mx,vx)}function fs(t,e){t*=kx,e*=kx;var n=Lx(e),i=n*Lx(t),r=n*Dx(t),o=Dx(e),a=mx*o-vx*r,s=vx*i-gx*o,l=gx*r-mx*i,c=Hx(a*a+s*s+l*l),u=Ma(c),h=c&&-u/c;ux+=h*a,hx+=h*s,dx+=h*l,ix+=u,sx+=u*(gx+(gx=i)),lx+=u*(mx+(mx=r)),cx+=u*(vx+(vx=o)),os(gx,mx,vx)}function ps(t){nx=ix=rx=ox=ax=sx=lx=cx=ux=hx=dx=0,Ra(t,Wx);var e=ux,n=hx,i=dx,r=e*e+n*n+i*i;return r<bx&&(e=sx,n=lx,i=cx,ix<xx&&(e=rx,n=ox,i=ax),(r=e*e+n*n+i*i)<bx)?[NaN,NaN]:[Ex(n,e)*Tx,Ma(i/Hx(r))*Tx]}function gs(t){return function(){return t}}function ms(t,e){function n(n,i){return n=t(n,i),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,i){return(n=e.invert(n,i))&&t.invert(n[0],n[1])}),n}function vs(t,e){return[t>wx?t-Cx:t<-wx?t+Cx:t,e]}function ys(t,e,n){return(t%=Cx)?e||n?ms(bs(t),ws(e,n)):bs(t):e||n?ws(e,n):vs}function xs(t){return function(e,n){return e+=t,[e>wx?e-Cx:e<-wx?e+Cx:e,n]}}function bs(t){var e=xs(t);return e.invert=xs(-t),e}function ws(t,e){function n(t,e){var n=Lx(e),s=Lx(t)*n,l=Dx(t)*n,c=Dx(e),u=c*i+s*r;return[Ex(l*o-u*a,s*i-c*r),Ma(u*o+l*a)]}var i=Lx(t),r=Dx(t),o=Lx(e),a=Dx(e);return n.invert=function(t,e){var n=Lx(e),s=Lx(t)*n,l=Dx(t)*n,c=Dx(e),u=c*o-l*a;return[Ex(l*o+c*a,s*i+u*r),Ma(u*i-s*r)]},n}function _s(t){function e(e){return e=t(e[0]*kx,e[1]*kx),e[0]*=Tx,e[1]*=Tx,e}return t=ys(t[0]*kx,t[1]*kx,t.length>2?t[2]*kx:0),e.invert=function(e){return e=t.invert(e[0]*kx,e[1]*kx),e[0]*=Tx,e[1]*=Tx,e},e}function Ss(t,e,n,i,r,o){if(n){var a=Lx(e),s=Dx(e),l=i*n;null==r?(r=e+i*Cx,o=e-l/2):(r=Cs(a,r),o=Cs(a,o),(i>0?r<o:r>o)&&(r+=i*Cx));for(var c,u=r;i>0?u>o:u<o;u-=l)c=Fa([a,-s*Lx(u),-s*Dx(u)]),t.point(c[0],c[1])}}function Cs(t,e){e=za(e),e[0]-=t,Wa(e);var n=Aa(-e[1]);return((-e[2]<0?-n:n)+Cx-xx)%Cx}function Ts(){function t(t,e){n.push(t=i(t,e)),t[0]*=Tx,t[1]*=Tx}function e(){var t=r.apply(this,arguments),e=o.apply(this,arguments)*kx,l=a.apply(this,arguments)*kx;return n=[],i=ys(-t[0]*kx,-t[1]*kx,0).invert,Ss(s,e,l,1),t={type:"Polygon",coordinates:[n]},n=i=null,t}var n,i,r=gs([0,0]),o=gs(90),a=gs(6),s={point:t};return e.center=function(t){return arguments.length?(r="function"==typeof t?t:gs([+t[0],+t[1]]),e):r},e.radius=function(t){return arguments.length?(o="function"==typeof t?t:gs(+t),e):o},e.precision=function(t){return arguments.length?(a="function"==typeof t?t:gs(+t),e):a},e}function ks(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:La,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function As(t,e){return Ax(t[0]-e[0])<xx&&Ax(t[1]-e[1])<xx}function Ms(t,e,n,i){this.x=t,this.z=e,this.o=n,this.e=i,this.v=!1,this.n=this.p=null}function Es(t,e,n,i,r){var o,a,s=[],l=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n,i=t[0],a=t[e];if(As(i,a)){for(r.lineStart(),o=0;o<e;++o)r.point((i=t[o])[0],i[1]);return void r.lineEnd()}s.push(n=new Ms(i,t,null,!0)),l.push(n.o=new Ms(i,null,n,!1)),s.push(n=new Ms(a,t,null,!1)),l.push(n.o=new Ms(a,null,n,!0))}}),s.length){for(l.sort(e),Ls(s),Ls(l),o=0,a=l.length;o<a;++o)l[o].e=n=!n;for(var c,u,h=s[0];;){for(var d=h,f=!0;d.v;)if((d=d.n)===h)return;c=d.z,r.lineStart();do{if(d.v=d.o.v=!0,d.e){if(f)for(o=0,a=c.length;o<a;++o)r.point((u=c[o])[0],u[1]);else i(d.x,d.n.x,1,r);d=d.n}else{if(f)for(c=d.p.z,o=c.length-1;o>=0;--o)r.point((u=c[o])[0],u[1]);else i(d.x,d.p.x,-1,r);d=d.p}d=d.o,c=d.z,f=!f}while(!d.v);r.lineEnd()}}}function Ls(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i<e;)r.n=n=t[i],n.p=r,r=n;r.n=n=t[0],n.p=r}}function Ps(t,e){var n=e[0],i=e[1],r=[Dx(n),-Lx(n),0],o=0,a=0;rb.reset();for(var s=0,l=t.length;s<l;++s)if(u=(c=t[s]).length)for(var c,u,h=c[u-1],d=h[0],f=h[1]/2+Sx,p=Dx(f),g=Lx(f),m=0;m<u;++m,d=y,p=b,g=w,h=v){var v=c[m],y=v[0],x=v[1]/2+Sx,b=Dx(x),w=Lx(x),_=y-d,S=_>=0?1:-1,C=S*_,T=C>wx,k=p*b;if(rb.add(Ex(k*S*Dx(C),g*w+k*Lx(C))),o+=T?_+S*Cx:_,T^d>=n^y>=n){var A=Ga(za(h),za(v));Wa(A);var M=Ga(r,A);Wa(M);var E=(T^_>=0?-1:1)*Ma(M[2]);(i>E||i===E&&(A[0]||A[1]))&&(a+=T^_>=0?1:-1)}}return(o<-xx||o<xx&&rb<-xx)^1&a}function Ns(t,e,n,i){return function(r){function o(e,n){t(e,n)&&r.point(e,n)}function a(t,e){g.point(t,e)}function s(){x.point=a,g.lineStart()}function l(){x.point=o,g.lineEnd()}function c(t,e){p.push([t,e]),v.point(t,e)}function u(){v.lineStart(),p=[]}function h(){c(p[0][0],p[0][1]),v.lineEnd();var t,e,n,i,o=v.clean(),a=m.result(),s=a.length;if(p.pop(),d.push(p),p=null,s)if(1&o){if(n=a[0],(e=n.length-1)>0){for(y||(r.polygonStart(),y=!0),r.lineStart(),t=0;t<e;++t)r.point((i=n[t])[0],i[1]);r.lineEnd()}}else s>1&&2&o&&a.push(a.pop().concat(a.shift())),f.push(a.filter(Os))}var d,f,p,g=e(r),m=ks(),v=e(m),y=!1,x={point:o,lineStart:s,lineEnd:l,polygonStart:function(){x.point=c,x.lineStart=u,x.lineEnd=h,f=[],d=[]},polygonEnd:function(){x.point=o,x.lineStart=s,x.lineEnd=l,f=k(f);var t=Ps(d,i);f.length?(y||(r.polygonStart(),y=!0),Es(f,Rs,t,n,r)):t&&(y||(r.polygonStart(),y=!0),r.lineStart(),n(null,null,1,r),r.lineEnd()),y&&(r.polygonEnd(),y=!1),f=d=null},sphere:function(){r.polygonStart(),r.lineStart(),n(null,null,1,r),r.lineEnd(),r.polygonEnd()}};return x}}function Os(t){return t.length>1}function Rs(t,e){return((t=t.x)[0]<0?t[1]-_x-xx:_x-t[1])-((e=e.x)[0]<0?e[1]-_x-xx:_x-e[1])}function Ds(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var s=o>0?wx:-wx,l=Ax(o-n);Ax(l-wx)<xx?(t.point(n,i=(i+a)/2>0?_x:-_x),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(o,i),e=0):r!==s&&l>=wx&&(Ax(n-r)<xx&&(n-=r*xx),Ax(o-s)<xx&&(o-=s*xx),i=Is(n,i,o,a),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=o,i=a),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}}function Is(t,e,n,i){var r,o,a=Dx(t-n);return Ax(a)>xx?Mx((Dx(e)*(o=Lx(i))*Dx(n)-Dx(i)*(r=Lx(e))*Dx(t))/(r*o*a)):(e+i)/2}function Hs(t,e,n,i){var r;if(null==t)r=n*_x,i.point(-wx,r),i.point(0,r),i.point(wx,r),i.point(wx,0),i.point(wx,-r),i.point(0,-r),i.point(-wx,-r),i.point(-wx,0),i.point(-wx,r);else if(Ax(t[0]-e[0])>xx){var o=t[0]<e[0]?wx:-wx;r=n*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(e[0],e[1])}function js(t){function e(e,n,i,r){Ss(r,t,s,i,e,n)}function n(t,e){return Lx(t)*Lx(e)>a}function i(t){var e,i,a,s,u;return{lineStart:function(){s=a=!1,u=1},point:function(h,d){var f,p=[h,d],g=n(h,d),m=l?g?0:o(h,d):g?o(h+(h<0?wx:-wx),d):0;if(!e&&(s=a=g)&&t.lineStart(),g!==a&&(!(f=r(e,p))||As(e,f)||As(p,f))&&(p[0]+=xx,p[1]+=xx,g=n(p[0],p[1])),g!==a)u=0,g?(t.lineStart(),f=r(p,e),t.point(f[0],f[1])):(f=r(e,p),t.point(f[0],f[1]),t.lineEnd()),e=f;else if(c&&e&&l^g){var v;m&i||!(v=r(p,e,!0))||(u=0,l?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&As(e,p)||t.point(p[0],p[1]),e=p,a=g,i=m},lineEnd:function(){a&&t.lineEnd(),e=null},clean:function(){return u|(s&&a)<<1}}}function r(t,e,n){var i=za(t),r=za(e),o=[1,0,0],s=Ga(i,r),l=qa(s,s),c=s[0],u=l-c*c;if(!u)return!n&&t;var h=a*l/u,d=-a*c/u,f=Ga(o,s),p=$a(o,h);Ba(p,$a(s,d));var g=f,m=qa(p,g),v=qa(g,g),y=m*m-v*(qa(p,p)-1);if(!(y<0)){var x=Hx(y),b=$a(g,(-m-x)/v);if(Ba(b,p),b=Fa(b),!n)return b;var w,_=t[0],S=e[0],C=t[1],T=e[1];S<_&&(w=_,_=S,S=w);var k=S-_,A=Ax(k-wx)<xx,M=A||k<xx;if(!A&&T<C&&(w=C,C=T,T=w),M?A?C+T>0^b[1]<(Ax(b[0]-_)<xx?C:T):C<=b[1]&&b[1]<=T:k>wx^(_<=b[0]&&b[0]<=S)){var E=$a(g,(-m+x)/v);return Ba(E,p),[b,Fa(E)]}}}function o(e,n){var i=l?t:wx-t,r=0;return e<-i?r|=1:e>i&&(r|=2),n<-i?r|=4:n>i&&(r|=8),r}var a=Lx(t),s=6*kx,l=a>0,c=Ax(a)>xx;return Ns(n,i,e,l?[0,-t]:[-wx,t-wx])}function Vs(t,e,n,i,r,o){var a,s=t[0],l=t[1],c=e[0],u=e[1],h=0,d=1,f=c-s,p=u-l;if(a=n-s,f||!(a>0)){if(a/=f,f<0){if(a<h)return;a<d&&(d=a)}else if(f>0){if(a>d)return;a>h&&(h=a)}if(a=r-s,f||!(a<0)){if(a/=f,f<0){if(a>d)return;a>h&&(h=a)}else if(f>0){if(a<h)return;a<d&&(d=a)}if(a=i-l,p||!(a>0)){if(a/=p,p<0){if(a<h)return;a<d&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=o-l,p||!(a<0)){if(a/=p,p<0){if(a>d)return;a>h&&(h=a)}else if(p>0){if(a<h)return;a<d&&(d=a)}return h>0&&(t[0]=s+h*f,t[1]=l+h*p),d<1&&(e[0]=s+d*f,e[1]=l+d*p),!0}}}}}function Fs(t,e,n,i){function r(r,o){return t<=r&&r<=n&&e<=o&&o<=i}function o(r,o,s,c){var u=0,h=0;if(null==r||(u=a(r,s))!==(h=a(o,s))||l(r,o)<0^s>0)do{c.point(0===u||3===u?t:n,u>1?i:e)}while((u=(u+s+4)%4)!==h);else c.point(o[0],o[1])}function a(i,r){return Ax(i[0]-t)<xx?r>0?0:3:Ax(i[0]-n)<xx?r>0?2:1:Ax(i[1]-e)<xx?r>0?1:0:r>0?3:2}function s(t,e){return l(t.x,e.x)}function l(t,e){var n=a(t,1),i=a(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(a){function l(t,e){r(t,e)&&A.point(t,e)}function c(){for(var e=0,n=0,r=m.length;n<r;++n)for(var o,a,s=m[n],l=1,c=s.length,u=s[0],h=u[0],d=u[1];l<c;++l)o=h,a=d,u=s[l],h=u[0],d=u[1],a<=i?d>i&&(h-o)*(i-a)>(d-a)*(t-o)&&++e:d<=i&&(h-o)*(i-a)<(d-a)*(t-o)&&--e;return e}function u(){A=M,g=[],m=[],T=!0}function h(){var t=c(),e=T&&t,n=(g=k(g)).length;(e||n)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),n&&Es(g,s,t,o,a),a.polygonEnd()),A=a,g=m=v=null}function d(){E.point=p,m&&m.push(v=[]),C=!0,S=!1,w=_=NaN}function f(){g&&(p(y,x),b&&S&&M.rejoin(),g.push(M.result())),E.point=l,S&&A.lineEnd()}function p(o,a){var s=r(o,a);if(m&&v.push([o,a]),C)y=o,x=a,b=s,C=!1,s&&(A.lineStart(),A.point(o,a));else if(s&&S)A.point(o,a);else{var l=[w=Math.max(sb,Math.min(ab,w)),_=Math.max(sb,Math.min(ab,_))],c=[o=Math.max(sb,Math.min(ab,o)),a=Math.max(sb,Math.min(ab,a))];Vs(l,c,t,e,n,i)?(S||(A.lineStart(),A.point(l[0],l[1])),A.point(c[0],c[1]),s||A.lineEnd(),T=!1):s&&(A.lineStart(),A.point(o,a),T=!1)}w=o,_=a,S=s}var g,m,v,y,x,b,w,_,S,C,T,A=a,M=ks(),E={point:l,lineStart:d,lineEnd:f,polygonStart:u,polygonEnd:h};return E}}function zs(){var t,e,n,i=0,r=0,o=960,a=500;return n={stream:function(n){return t&&e===n?t:t=Fs(i,r,o,a)(e=n)},extent:function(s){return arguments.length?(i=+s[0][0],r=+s[0][1],o=+s[1][0],a=+s[1][1],t=e=null,n):[[i,r],[o,a]]}}}function qs(){cb.point=Bs,cb.lineEnd=Gs}function Gs(){cb.point=cb.lineEnd=La}function Bs(t,e){t*=kx,e*=kx,Ux=t,Xx=Dx(e),Yx=Lx(e),cb.point=$s}function $s(t,e){t*=kx,e*=kx;var n=Dx(e),i=Lx(e),r=Ax(t-Ux),o=Lx(r),a=Dx(r),s=i*a,l=Yx*n-Xx*i*o,c=Xx*n+Yx*i*o;lb.add(Ex(Hx(s*s+l*l),c)),Ux=t,Xx=n,Yx=i}function Ws(t){return lb.reset(),Ra(t,cb),+lb}function Us(t,e){return ub[0]=t,ub[1]=e,Ws(hb)}function Xs(t,e){return!(!t||!fb.hasOwnProperty(t.type))&&fb[t.type](t,e)}function Ys(t,e){return 0===Us(t,e)}function Qs(t,e){var n=Us(t[0],t[1]);return Us(t[0],e)+Us(e,t[1])<=n+xx}function Zs(t,e){return!!Ps(t.map(Ks),Js(e))}function Ks(t){return t=t.map(Js),t.pop(),t}function Js(t){return[t[0]*kx,t[1]*kx]}function tl(t,e){return(t&&db.hasOwnProperty(t.type)?db[t.type]:Xs)(t,e)}function el(t,e,n){var i=p(t,e-xx,n).concat(e);return function(t){return i.map(function(e){return[t,e]})}}function nl(t,e,n){var i=p(t,e-xx,n).concat(e);return function(t){return i.map(function(e){return[e,t]})}}function il(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return p(Px(o/v)*v,r,v).map(d).concat(p(Px(c/y)*y,l,y).map(f)).concat(p(Px(i/g)*g,n,g).filter(function(t){return Ax(t%v)>xx}).map(u)).concat(p(Px(s/m)*m,a,m).filter(function(t){return Ax(t%y)>xx}).map(h))}var n,i,r,o,a,s,l,c,u,h,d,f,g=10,m=g,v=90,y=360,x=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[d(o).concat(f(l).slice(1),d(r).reverse().slice(1),f(c).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.extentMajor(e).extentMinor(e):t.extentMinor()},t.extentMajor=function(e){return arguments.length?(o=+e[0][0],r=+e[1][0],c=+e[0][1],l=+e[1][1],o>r&&(e=o,o=r,r=e),c>l&&(e=c,c=l,l=e),t.precision(x)):[[o,c],[r,l]]},t.extentMinor=function(e){return arguments.length?(i=+e[0][0],n=+e[1][0],s=+e[0][1],a=+e[1][1],i>n&&(e=i,i=n,n=e),s>a&&(e=s,s=a,a=e),t.precision(x)):[[i,s],[n,a]]},t.step=function(e){return arguments.length?t.stepMajor(e).stepMinor(e):t.stepMinor()},t.stepMajor=function(e){return arguments.length?(v=+e[0],y=+e[1],t):[v,y]},t.stepMinor=function(e){return arguments.length?(g=+e[0],m=+e[1],t):[g,m]},t.precision=function(e){return arguments.length?(x=+e,u=el(s,a,90),h=nl(i,n,x),d=el(c,l,90),f=nl(o,r,x),t):x},t.extentMajor([[-180,-90+xx],[180,90-xx]]).extentMinor([[-180,-80-xx],[180,80+xx]])}function rl(){return il()()}function ol(t,e){var n=t[0]*kx,i=t[1]*kx,r=e[0]*kx,o=e[1]*kx,a=Lx(i),s=Dx(i),l=Lx(o),c=Dx(o),u=a*Lx(n),h=a*Dx(n),d=l*Lx(r),f=l*Dx(r),p=2*Ma(Hx(Ea(o-i)+a*l*Ea(r-n))),g=Dx(p),m=p?function(t){var e=Dx(t*=p)/g,n=Dx(p-t)/g,i=n*u+e*d,r=n*h+e*f,o=n*s+e*c;return[Ex(r,i)*Tx,Ex(o,Hx(i*i+r*r))*Tx]}:function(){return[n*Tx,i*Tx]};return m.distance=p,m}function al(t){return t}function sl(){mb.point=ll}function ll(t,e){mb.point=cl,Qx=Kx=t,Zx=Jx=e}function cl(t,e){gb.add(Jx*t-Kx*e),Kx=t,Jx=e}function ul(){cl(Qx,Zx)}function hl(t,e){t<vb&&(vb=t),t>xb&&(xb=t),e<yb&&(yb=e),e>bb&&(bb=e)}function dl(t,e){_b+=t,Sb+=e,++Cb}function fl(){Pb.point=pl}function pl(t,e){Pb.point=gl,dl(nb=t,ib=e)}function gl(t,e){var n=t-nb,i=e-ib,r=Hx(n*n+i*i);Tb+=r*(nb+t)/2,kb+=r*(ib+e)/2,Ab+=r,dl(nb=t,ib=e)}function ml(){Pb.point=dl}function vl(){Pb.point=xl}function yl(){bl(tb,eb)}function xl(t,e){Pb.point=bl,dl(tb=nb=t,eb=ib=e)}function bl(t,e){var n=t-nb,i=e-ib,r=Hx(n*n+i*i);Tb+=r*(nb+t)/2,kb+=r*(ib+e)/2,Ab+=r,r=ib*t-nb*e,Mb+=r*(nb+t),Eb+=r*(ib+e),Lb+=3*r,dl(nb=t,ib=e)}function wl(t){this._context=t}function _l(t,e){jb.point=Sl,Ob=Db=t,Rb=Ib=e}function Sl(t,e){Db-=t,Ib-=e,Hb.add(Hx(Db*Db+Ib*Ib)),Db=t,Ib=e}function Cl(){this._string=[]}function Tl(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function kl(t,e){function n(t){return t&&("function"==typeof o&&r.pointRadius(+o.apply(this,arguments)),Ra(t,i(r))),r.result()}var i,r,o=4.5;return n.area=function(t){return Ra(t,i(mb)),mb.result()},n.measure=function(t){return Ra(t,i(jb)),jb.result()},n.bounds=function(t){return Ra(t,i(wb)),wb.result()},n.centroid=function(t){return Ra(t,i(Pb)),Pb.result()},n.projection=function(e){return arguments.length?(i=null==e?(t=null,al):(t=e).stream,n):t},n.context=function(t){return arguments.length?(r=null==t?(e=null,new Cl):new wl(e=t),"function"!=typeof o&&r.pointRadius(o),n):e},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(r.pointRadius(+t),+t),n):o},n.projection(t).context(e)}function Al(t){return{stream:Ml(t)}}function Ml(t){return function(e){var n=new El;for(var i in t)n[i]=t[i];return n.stream=e,n}}function El(){}function Ll(t,e,n){var i=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=i&&t.clipExtent(null),Ra(n,t.stream(wb)),e(wb.result()),null!=i&&t.clipExtent(i),t}function Pl(t,e,n){return Ll(t,function(n){var i=e[1][0]-e[0][0],r=e[1][1]-e[0][1],o=Math.min(i/(n[1][0]-n[0][0]),r/(n[1][1]-n[0][1])),a=+e[0][0]+(i-o*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(r-o*(n[1][1]+n[0][1]))/2;t.scale(150*o).translate([a,s])},n)}function Nl(t,e,n){return Pl(t,[[0,0],e],n)}function Ol(t,e,n){return Ll(t,function(n){var i=+e,r=i/(n[1][0]-n[0][0]),o=(i-r*(n[1][0]+n[0][0]))/2,a=-r*n[0][1];t.scale(150*r).translate([o,a])},n)}function Rl(t,e,n){return Ll(t,function(n){var i=+e,r=i/(n[1][1]-n[0][1]),o=-r*n[0][0],a=(i-r*(n[1][1]+n[0][1]))/2;t.scale(150*r).translate([o,a])},n)}function Dl(t,e){return+e?Hl(t,e):Il(t)}function Il(t){return Ml({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}function Hl(t,e){function n(i,r,o,a,s,l,c,u,h,d,f,p,g,m){var v=c-i,y=u-r,x=v*v+y*y;if(x>4*e&&g--){var b=a+d,w=s+f,_=l+p,S=Hx(b*b+w*w+_*_),C=Ma(_/=S),T=Ax(Ax(_)-1)<xx||Ax(o-h)<xx?(o+h)/2:Ex(w,b),k=t(T,C),A=k[0],M=k[1],E=A-i,L=M-r,P=y*E-v*L;(P*P/x>e||Ax((v*E+y*L)/x-.5)>.3||a*d+s*f+l*p<Fb)&&(n(i,r,o,a,s,l,A,M,T,b/=S,w/=S,_,g,m),m.point(A,M),n(A,M,T,b,w,_,c,u,h,d,f,p,g,m))}}return function(e){function i(n,i){n=t(n,i),e.point(n[0],n[1])}function r(){v=NaN,_.point=o,e.lineStart()}function o(i,r){var o=za([i,r]),a=t(i,r);n(v,y,m,x,b,w,v=a[0],y=a[1],m=i,x=o[0],b=o[1],w=o[2],Vb,e),e.point(v,y)}function a(){_.point=i,e.lineEnd()}function s(){r(),_.point=l,_.lineEnd=c}function l(t,e){o(u=t,e),h=v,d=y,f=x,p=b,g=w,_.point=o}function c(){n(v,y,m,x,b,w,h,d,u,f,p,g,Vb,e),_.lineEnd=a,a()}var u,h,d,f,p,g,m,v,y,x,b,w,_={point:i,lineStart:r,lineEnd:a,polygonStart:function(){e.polygonStart(),_.lineStart=s},polygonEnd:function(){e.polygonEnd(),_.lineStart=r}};return _}}function jl(t){return Ml({point:function(e,n){var i=t(e,n);return this.stream.point(i[0],i[1])}})}function Vl(t){return Fl(function(){return t})()}function Fl(t){function e(t){return t=u(t[0]*kx,t[1]*kx),[t[0]*m+s,l-t[1]*m]}function n(t){return(t=u.invert((t[0]-s)/m,(l-t[1])/m))&&[t[0]*Tx,t[1]*Tx]}function i(t,e){return t=a(t,e),[t[0]*m+s,l-t[1]*m]}function r(){u=ms(c=ys(w,_,S),a);var t=a(x,b);return s=v-t[0]*m,l=y+t[1]*m,o()}function o(){return p=g=null,e}var a,s,l,c,u,h,d,f,p,g,m=150,v=480,y=250,x=0,b=0,w=0,_=0,S=0,C=null,T=ob,k=null,A=al,M=.5,E=Dl(i,M);return e.stream=function(t){return p&&g===t?p:p=zb(jl(c)(T(E(A(g=t)))))},e.preclip=function(t){return arguments.length?(T=t,C=void 0,o()):T},e.postclip=function(t){return arguments.length?(A=t,k=h=d=f=null,o()):A},e.clipAngle=function(t){return arguments.length?(T=+t?js(C=t*kx):(C=null,ob),o()):C*Tx},e.clipExtent=function(t){return arguments.length?(A=null==t?(k=h=d=f=null,al):Fs(k=+t[0][0],h=+t[0][1],d=+t[1][0],f=+t[1][1]),o()):null==k?null:[[k,h],[d,f]]},e.scale=function(t){return arguments.length?(m=+t,r()):m},e.translate=function(t){return arguments.length?(v=+t[0],y=+t[1],r()):[v,y]},e.center=function(t){return arguments.length?(x=t[0]%360*kx,b=t[1]%360*kx,r()):[x*Tx,b*Tx]},e.rotate=function(t){return arguments.length?(w=t[0]%360*kx,_=t[1]%360*kx,S=t.length>2?t[2]%360*kx:0,r()):[w*Tx,_*Tx,S*Tx]},e.precision=function(t){return arguments.length?(E=Dl(i,M=t*t),o()):Hx(M)},e.fitExtent=function(t,n){return Pl(e,t,n)},e.fitSize=function(t,n){return Nl(e,t,n)},e.fitWidth=function(t,n){return Ol(e,t,n)},e.fitHeight=function(t,n){return Rl(e,t,n)},function(){return a=t.apply(this,arguments),e.invert=a.invert&&n,r()}}function zl(t){var e=0,n=wx/3,i=Fl(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*kx,n=t[1]*kx):[e*Tx,n*Tx]},r}function ql(t){function e(t,e){return[t*n,Dx(e)/n]}var n=Lx(t);return e.invert=function(t,e){return[t/n,Ma(e*n)]},e}function Gl(t,e){function n(t,e){var n=Hx(o-2*r*Dx(e))/r;return[n*Dx(t*=r),a-n*Lx(t)]}var i=Dx(t),r=(i+Dx(e))/2;if(Ax(r)<xx)return ql(t);var o=1+i*(2*r-i),a=Hx(o)/r;return n.invert=function(t,e){var n=a-e;return[Ex(t,Ax(n))/r*Ix(n),Ma((o-(t*t+n*n)*r*r)/(2*r))]},n}function Bl(){return zl(Gl).scale(155.424).center([0,33.6442])}function $l(){return Bl().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Wl(t){var e=t.length;return{point:function(n,i){for(var r=-1;++r<e;)t[r].point(n,i)},sphere:function(){for(var n=-1;++n<e;)t[n].sphere()},lineStart:function(){for(var n=-1;++n<e;)t[n].lineStart()},lineEnd:function(){for(var n=-1;++n<e;)t[n].lineEnd()},polygonStart:function(){for(var n=-1;++n<e;)t[n].polygonStart()},polygonEnd:function(){for(var n=-1;++n<e;)t[n].polygonEnd()}}}function Ul(){function t(t){var e=t[0],n=t[1];return s=null,r.point(e,n),s||(o.point(e,n),s)||(a.point(e,n),s)}function e(){return n=i=null,t}var n,i,r,o,a,s,l=$l(),c=Bl().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=Bl().rotate([157,0]).center([-3,19.9]).parallels([8,18]),h={point:function(t,e){s=[t,e]}};return t.invert=function(t){var e=l.scale(),n=l.translate(),i=(t[0]-n[0])/e,r=(t[1]-n[1])/e;return(r>=.12&&r<.234&&i>=-.425&&i<-.214?c:r>=.166&&r<.234&&i>=-.214&&i<-.115?u:l).invert(t)},t.stream=function(t){return n&&i===t?n:n=Wl([l.stream(i=t),c.stream(t),u.stream(t)])},t.precision=function(t){return arguments.length?(l.precision(t),c.precision(t),u.precision(t),e()):l.precision()},t.scale=function(e){return arguments.length?(l.scale(e),c.scale(.35*e),u.scale(e),t.translate(l.translate())):l.scale()},t.translate=function(t){if(!arguments.length)return l.translate();var n=l.scale(),i=+t[0],s=+t[1];return r=l.translate(t).clipExtent([[i-.455*n,s-.238*n],[i+.455*n,s+.238*n]]).stream(h),o=c.translate([i-.307*n,s+.201*n]).clipExtent([[i-.425*n+xx,s+.12*n+xx],[i-.214*n-xx,s+.234*n-xx]]).stream(h),a=u.translate([i-.205*n,s+.212*n]).clipExtent([[i-.214*n+xx,s+.166*n+xx],[i-.115*n-xx,s+.234*n-xx]]).stream(h),e()},t.fitExtent=function(e,n){return Pl(t,e,n)},t.fitSize=function(e,n){return Nl(t,e,n)},t.fitWidth=function(e,n){return Ol(t,e,n)},t.fitHeight=function(e,n){return Rl(t,e,n)},t.scale(1070)}function Xl(t){return function(e,n){var i=Lx(e),r=Lx(n),o=t(i*r);return[o*r*Dx(e),o*Dx(n)]}}function Yl(t){return function(e,n){var i=Hx(e*e+n*n),r=t(i),o=Dx(r),a=Lx(r);return[Ex(e*o,i*a),Ma(i&&n*o/i)]}}function Ql(){return Vl(qb).scale(124.75).clipAngle(179.999)}function Zl(){return Vl(Gb).scale(79.4188).clipAngle(179.999)}function Kl(t,e){return[t,Ox(jx((_x+e)/2))]}function Jl(){return tc(Kl).scale(961/Cx)}function tc(t){function e(){var e=wx*s(),a=o(_s(o.rotate()).invert([0,0]));return c(null==u?[[a[0]-e,a[1]-e],[a[0]+e,a[1]+e]]:t===Kl?[[Math.max(a[0]-e,u),n],[Math.min(a[0]+e,i),r]]:[[u,Math.max(a[1]-e,n)],[i,Math.min(a[1]+e,r)]])}var n,i,r,o=Vl(t),a=o.center,s=o.scale,l=o.translate,c=o.clipExtent,u=null;return o.scale=function(t){return arguments.length?(s(t),e()):s()},o.translate=function(t){return arguments.length?(l(t),e()):l()},o.center=function(t){return arguments.length?(a(t),e()):a()},o.clipExtent=function(t){return arguments.length?(null==t?u=n=i=r=null:(u=+t[0][0],n=+t[0][1],i=+t[1][0],r=+t[1][1]),e()):null==u?null:[[u,n],[i,r]]},e()}function ec(t){return jx((_x+t)/2)}function nc(t,e){function n(t,e){o>0?e<-_x+xx&&(e=-_x+xx):e>_x-xx&&(e=_x-xx);var n=o/Rx(ec(e),r);return[n*Dx(r*t),o-n*Lx(r*t)]}var i=Lx(t),r=t===e?Dx(t):Ox(i/Lx(e))/Ox(ec(e)/ec(t)),o=i*Rx(ec(t),r)/r;return r?(n.invert=function(t,e){var n=o-e,i=Ix(r)*Hx(t*t+n*n);return[Ex(t,Ax(n))/r*Ix(n),2*Mx(Rx(o/i,1/r))-_x]},n):Kl}function ic(){return zl(nc).scale(109.5).parallels([30,30])}function rc(t,e){return[t,e]}function oc(){return Vl(rc).scale(152.63)}function ac(t,e){function n(t,e){var n=o-e,i=r*t;return[n*Dx(i),o-n*Lx(i)]}var i=Lx(t),r=t===e?Dx(t):(i-Lx(e))/(e-t),o=i/r+t;return Ax(r)<xx?rc:(n.invert=function(t,e){var n=o-e;return[Ex(t,Ax(n))/r*Ix(n),o-Ix(r)*Hx(t*t+n*n)]},n)}function sc(){return zl(ac).scale(131.154).center([0,13.9389])}function lc(t,e){var n=Lx(e),i=Lx(t)*n;return[n*Dx(t)/i,Dx(e)/i]}function cc(){return Vl(lc).scale(144.049).clipAngle(60)}function uc(t,e,n,i){return 1===t&&1===e&&0===n&&0===i?al:Ml({point:function(r,o){this.stream.point(r*t+n,o*e+i)}})}function hc(){function t(){return r=o=null,a}var e,n,i,r,o,a,s=1,l=0,c=0,u=1,h=1,d=al,f=null,p=al;return a={stream:function(t){return r&&o===t?r:r=d(p(o=t))},postclip:function(r){return arguments.length?(p=r,f=e=n=i=null,t()):p},clipExtent:function(r){return arguments.length?(p=null==r?(f=e=n=i=null,al):Fs(f=+r[0][0],e=+r[0][1],n=+r[1][0],i=+r[1][1]),t()):null==f?null:[[f,e],[n,i]]},scale:function(e){return arguments.length?(d=uc((s=+e)*u,s*h,l,c),t()):s},translate:function(e){return arguments.length?(d=uc(s*u,s*h,l=+e[0],c=+e[1]),t()):[l,c]},reflectX:function(e){return arguments.length?(d=uc(s*(u=e?-1:1),s*h,l,c),t()):u<0},reflectY:function(e){return arguments.length?(d=uc(s*u,s*(h=e?-1:1),l,c),t()):h<0},fitExtent:function(t,e){return Pl(a,t,e)},fitSize:function(t,e){return Nl(a,t,e)},fitWidth:function(t,e){return Ol(a,t,e)},fitHeight:function(t,e){return Rl(a,t,e)}}}function dc(t,e){var n=e*e,i=n*n;return[t*(.8707-.131979*n+i*(i*(.003971*n-.001529*i)-.013791)),e*(1.007226+n*(.015085+i*(.028874*n-.044475-.005916*i)))]}function fc(){return Vl(dc).scale(175.295)}function pc(t,e){return[Lx(e)*Dx(t),Dx(e)]}function gc(){return Vl(pc).scale(249.5).clipAngle(90+xx)}function mc(t,e){var n=Lx(e),i=1+Lx(t)*n;return[n*Dx(t)/i,Dx(e)/i]}function vc(){return Vl(mc).scale(250).clipAngle(142)}function yc(t,e){return[Ox(jx((_x+e)/2)),-t]}function xc(){var t=tc(yc),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90]).scale(159.155)}function bc(t,e){return t.parent===e.parent?1:2}function wc(t){return t.reduce(_c,0)/t.length}function _c(t,e){return t+e.x}function Sc(t){return 1+t.reduce(Cc,0)}function Cc(t,e){return Math.max(t,e.y)}function Tc(t){for(var e;e=t.children;)t=e[0];return t}function kc(t){for(var e;e=t.children;)t=e[e.length-1];return t}function Ac(){function t(t){var o,a=0;t.eachAfter(function(t){var n=t.children;n?(t.x=wc(n),t.y=Sc(n)):(t.x=o?a+=e(t,o):0,t.y=0,o=t)});var s=Tc(t),l=kc(t),c=s.x-e(s,l)/2,u=l.x+e(l,s)/2;return t.eachAfter(r?function(e){e.x=(e.x-t.x)*n,e.y=(t.y-e.y)*i}:function(e){e.x=(e.x-c)/(u-c)*n,e.y=(1-(t.y?e.y/t.y:1))*i})}var e=bc,n=1,i=1,r=!1;return t.separation=function(n){return arguments.length?(e=n,t):e},t.size=function(e){return arguments.length?(r=!1,n=+e[0],i=+e[1],t):r?null:[n,i]},t.nodeSize=function(e){return arguments.length?(r=!0,n=+e[0],i=+e[1],t):r?[n,i]:null},t}function Mc(t){var e=0,n=t.children,i=n&&n.length;if(i)for(;--i>=0;)e+=n[i].value;else e=1;t.value=e}function Ec(){return this.eachAfter(Mc)}function Lc(t){var e,n,i,r,o=this,a=[o];do{for(e=a.reverse(),a=[];o=e.pop();)if(t(o),n=o.children)for(i=0,r=n.length;i<r;++i)a.push(n[i])}while(a.length);return this}function Pc(t){for(var e,n,i=this,r=[i];i=r.pop();)if(t(i),e=i.children)for(n=e.length-1;n>=0;--n)r.push(e[n]);return this}function Nc(t){for(var e,n,i,r=this,o=[r],a=[];r=o.pop();)if(a.push(r),e=r.children)for(n=0,i=e.length;n<i;++n)o.push(e[n]);for(;r=a.pop();)t(r);return this}function Oc(t){return this.eachAfter(function(e){
+for(var n=+t(e.data)||0,i=e.children,r=i&&i.length;--r>=0;)n+=i[r].value;e.value=n})}function Rc(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function Dc(t){for(var e=this,n=Ic(e,t),i=[e];e!==n;)e=e.parent,i.push(e);for(var r=i.length;t!==n;)i.splice(r,0,t),t=t.parent;return i}function Ic(t,e){if(t===e)return t;var n=t.ancestors(),i=e.ancestors(),r=null;for(t=n.pop(),e=i.pop();t===e;)r=t,t=n.pop(),e=i.pop();return r}function Hc(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}function jc(){var t=[];return this.each(function(e){t.push(e)}),t}function Vc(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function Fc(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}function zc(t,e){var n,i,r,o,a,s=new Wc(t),l=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=Gc);n=c.pop();)if(l&&(n.value=+n.data.value),(r=e(n.data))&&(a=r.length))for(n.children=new Array(a),o=a-1;o>=0;--o)c.push(i=n.children[o]=new Wc(r[o])),i.parent=n,i.depth=n.depth+1;return s.eachBefore($c)}function qc(){return zc(this).eachBefore(Bc)}function Gc(t){return t.children}function Bc(t){t.data=t.data.data}function $c(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Wc(t){this.data=t,this.depth=this.height=0,this.parent=null}function Uc(t){for(var e,n,i=t.length;i;)n=Math.random()*i--|0,e=t[i],t[i]=t[n],t[n]=e;return t}function Xc(t){for(var e,n,i=0,r=(t=Uc(Bb.call(t))).length,o=[];i<r;)e=t[i],n&&Zc(n,e)?++i:(n=Jc(o=Yc(o,e)),i=0);return n}function Yc(t,e){var n,i;if(Kc(e,t))return[e];for(n=0;n<t.length;++n)if(Qc(e,t[n])&&Kc(eu(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(i=n+1;i<t.length;++i)if(Qc(eu(t[n],t[i]),e)&&Qc(eu(t[n],e),t[i])&&Qc(eu(t[i],e),t[n])&&Kc(nu(t[n],t[i],e),t))return[t[n],t[i],e];throw new Error}function Qc(t,e){var n=t.r-e.r,i=e.x-t.x,r=e.y-t.y;return n<0||n*n<i*i+r*r}function Zc(t,e){var n=t.r-e.r+1e-6,i=e.x-t.x,r=e.y-t.y;return n>0&&n*n>i*i+r*r}function Kc(t,e){for(var n=0;n<e.length;++n)if(!Zc(t,e[n]))return!1;return!0}function Jc(t){switch(t.length){case 1:return tu(t[0]);case 2:return eu(t[0],t[1]);case 3:return nu(t[0],t[1],t[2])}}function tu(t){return{x:t.x,y:t.y,r:t.r}}function eu(t,e){var n=t.x,i=t.y,r=t.r,o=e.x,a=e.y,s=e.r,l=o-n,c=a-i,u=s-r,h=Math.sqrt(l*l+c*c);return{x:(n+o+l/h*u)/2,y:(i+a+c/h*u)/2,r:(h+r+s)/2}}function nu(t,e,n){var i=t.x,r=t.y,o=t.r,a=e.x,s=e.y,l=e.r,c=n.x,u=n.y,h=n.r,d=i-a,f=i-c,p=r-s,g=r-u,m=l-o,v=h-o,y=i*i+r*r-o*o,x=y-a*a-s*s+l*l,b=y-c*c-u*u+h*h,w=f*p-d*g,_=(p*b-g*x)/(2*w)-i,S=(g*m-p*v)/w,C=(f*x-d*b)/(2*w)-r,T=(d*v-f*m)/w,k=S*S+T*T-1,A=2*(o+_*S+C*T),M=_*_+C*C-o*o,E=-(k?(A+Math.sqrt(A*A-4*k*M))/(2*k):M/A);return{x:i+_+S*E,y:r+C+T*E,r:E}}function iu(t,e,n){var i=t.x,r=t.y,o=e.r+n.r,a=t.r+n.r,s=e.x-i,l=e.y-r,c=s*s+l*l;if(c){var u=.5+((a*=a)-(o*=o))/(2*c),h=Math.sqrt(Math.max(0,2*o*(a+c)-(a-=c)*a-o*o))/(2*c);n.x=i+u*s+h*l,n.y=r+u*l-h*s}else n.x=i+a,n.y=r}function ru(t,e){var n=e.x-t.x,i=e.y-t.y,r=t.r+e.r;return r*r-1e-6>n*n+i*i}function ou(t){var e=t._,n=t.next._,i=e.r+n.r,r=(e.x*n.r+n.x*e.r)/i,o=(e.y*n.r+n.y*e.r)/i;return r*r+o*o}function au(t){this._=t,this.next=null,this.previous=null}function su(t){if(!(r=t.length))return 0;var e,n,i,r,o,a,s,l,c,u,h;if(e=t[0],e.x=0,e.y=0,!(r>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(r>2))return e.r+n.r;iu(n,e,i=t[2]),e=new au(e),n=new au(n),i=new au(i),e.next=i.previous=n,n.next=e.previous=i,i.next=n.previous=e;t:for(s=3;s<r;++s){iu(e._,n._,i=t[s]),i=new au(i),l=n.next,c=e.previous,u=n._.r,h=e._.r;do{if(u<=h){if(ru(l._,i._)){n=l,e.next=n,n.previous=e,--s;continue t}u+=l._.r,l=l.next}else{if(ru(c._,i._)){e=c,e.next=n,n.previous=e,--s;continue t}h+=c._.r,c=c.previous}}while(l!==c.next);for(i.previous=e,i.next=n,e.next=n.previous=n=i,o=ou(e);(i=i.next)!==n;)(a=ou(i))<o&&(e=i,o=a);n=e.next}for(e=[n._],i=n;(i=i.next)!==n;)e.push(i._);for(i=Xc(e),s=0;s<r;++s)e=t[s],e.x-=i.x,e.y-=i.y;return i.r}function lu(t){return su(t),t}function cu(t){return null==t?null:uu(t)}function uu(t){if("function"!=typeof t)throw new Error;return t}function hu(){return 0}function du(t){return function(){return t}}function fu(t){return Math.sqrt(t.value)}function pu(){function t(t){return t.x=n/2,t.y=i/2,e?t.eachBefore(gu(e)).eachAfter(mu(r,.5)).eachBefore(vu(1)):t.eachBefore(gu(fu)).eachAfter(mu(hu,1)).eachAfter(mu(r,t.r/Math.min(n,i))).eachBefore(vu(Math.min(n,i)/(2*t.r))),t}var e=null,n=1,i=1,r=hu;return t.radius=function(n){return arguments.length?(e=cu(n),t):e},t.size=function(e){return arguments.length?(n=+e[0],i=+e[1],t):[n,i]},t.padding=function(e){return arguments.length?(r="function"==typeof e?e:du(+e),t):r},t}function gu(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function mu(t,e){return function(n){if(i=n.children){var i,r,o,a=i.length,s=t(n)*e||0;if(s)for(r=0;r<a;++r)i[r].r+=s;if(o=su(i),s)for(r=0;r<a;++r)i[r].r-=s;n.r=o+s}}}function vu(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}function yu(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function xu(t,e,n,i,r){for(var o,a=t.children,s=-1,l=a.length,c=t.value&&(i-e)/t.value;++s<l;)o=a[s],o.y0=n,o.y1=r,o.x0=e,o.x1=e+=o.value*c}function bu(){function t(t){var a=t.height+1;return t.x0=t.y0=r,t.x1=n,t.y1=i/a,t.eachBefore(e(i,a)),o&&t.eachBefore(yu),t}function e(t,e){return function(n){n.children&&xu(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,o=n.y0,a=n.x1-r,s=n.y1-r;a<i&&(i=a=(i+a)/2),s<o&&(o=s=(o+s)/2),n.x0=i,n.y0=o,n.x1=a,n.y1=s}}var n=1,i=1,r=0,o=!1;return t.round=function(e){return arguments.length?(o=!!e,t):o},t.size=function(e){return arguments.length?(n=+e[0],i=+e[1],t):[n,i]},t.padding=function(e){return arguments.length?(r=+e,t):r},t}function wu(t){return t.id}function _u(t){return t.parentId}function Su(){function t(t){var i,r,o,a,s,l,c,u=t.length,h=new Array(u),d={};for(r=0;r<u;++r)i=t[r],s=h[r]=new Wc(i),null!=(l=e(i,r,t))&&(l+="")&&(c=$b+(s.id=l),d[c]=c in d?Ub:s);for(r=0;r<u;++r)if(s=h[r],null!=(l=n(t[r],r,t))&&(l+="")){if(!(a=d[$b+l]))throw new Error("missing: "+l);if(a===Ub)throw new Error("ambiguous: "+l);a.children?a.children.push(s):a.children=[s],s.parent=a}else{if(o)throw new Error("multiple roots");o=s}if(!o)throw new Error("no root");if(o.parent=Wb,o.eachBefore(function(t){t.depth=t.parent.depth+1,--u}).eachBefore($c),o.parent=null,u>0)throw new Error("cycle");return o}var e=wu,n=_u;return t.id=function(n){return arguments.length?(e=uu(n),t):e},t.parentId=function(e){return arguments.length?(n=uu(e),t):n},t}function Cu(t,e){return t.parent===e.parent?1:2}function Tu(t){var e=t.children;return e?e[0]:t.t}function ku(t){var e=t.children;return e?e[e.length-1]:t.t}function Au(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function Mu(t){for(var e,n=0,i=0,r=t.children,o=r.length;--o>=0;)e=r[o],e.z+=n,e.m+=n,n+=e.s+(i+=e.c)}function Eu(t,e,n){return t.a.parent===e.parent?t.a:n}function Lu(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function Pu(t){for(var e,n,i,r,o,a=new Lu(t,0),s=[a];e=s.pop();)if(i=e._.children)for(e.children=new Array(o=i.length),r=o-1;r>=0;--r)s.push(n=e.children[r]=new Lu(i[r],r)),n.parent=e;return(a.parent=new Lu(null,0)).children=[a],a}function Nu(){function t(t){var i=Pu(t);if(i.eachAfter(e),i.parent.m=-i.z,i.eachBefore(n),l)t.eachBefore(r);else{var c=t,u=t,h=t;t.eachBefore(function(t){t.x<c.x&&(c=t),t.x>u.x&&(u=t),t.depth>h.depth&&(h=t)});var d=c===u?1:o(c,u)/2,f=d-c.x,p=a/(u.x+d+f),g=s/(h.depth||1);t.eachBefore(function(t){t.x=(t.x+f)*p,t.y=t.depth*g})}return t}function e(t){var e=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(e){Mu(t);var a=(e[0].z+e[e.length-1].z)/2;r?(t.z=r.z+o(t._,r._),t.m=t.z-a):t.z=a}else r&&(t.z=r.z+o(t._,r._));t.parent.A=i(t,r,t.parent.A||n[0])}function n(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,n){if(e){for(var i,r=t,a=t,s=e,l=r.parent.children[0],c=r.m,u=a.m,h=s.m,d=l.m;s=ku(s),r=Tu(r),s&&r;)l=Tu(l),a=ku(a),a.a=t,i=s.z+h-r.z-c+o(s._,r._),i>0&&(Au(Eu(s,t,n),t,i),c+=i,u+=i),h+=s.m,c+=r.m,d+=l.m,u+=a.m;s&&!ku(a)&&(a.t=s,a.m+=h-u),r&&!Tu(l)&&(l.t=r,l.m+=c-d,n=t)}return n}function r(t){t.x*=a,t.y=t.depth*s}var o=Cu,a=1,s=1,l=null;return t.separation=function(e){return arguments.length?(o=e,t):o},t.size=function(e){return arguments.length?(l=!1,a=+e[0],s=+e[1],t):l?null:[a,s]},t.nodeSize=function(e){return arguments.length?(l=!0,a=+e[0],s=+e[1],t):l?[a,s]:null},t}function Ou(t,e,n,i,r){for(var o,a=t.children,s=-1,l=a.length,c=t.value&&(r-n)/t.value;++s<l;)o=a[s],o.x0=e,o.x1=i,o.y0=n,o.y1=n+=o.value*c}function Ru(t,e,n,i,r,o){for(var a,s,l,c,u,h,d,f,p,g,m,v=[],y=e.children,x=0,b=0,w=y.length,_=e.value;x<w;){l=r-n,c=o-i;do{u=y[b++].value}while(!u&&b<w);for(h=d=u,g=Math.max(c/l,l/c)/(_*t),m=u*u*g,p=Math.max(d/m,m/h);b<w;++b){if(u+=s=y[b].value,s<h&&(h=s),s>d&&(d=s),m=u*u*g,(f=Math.max(d/m,m/h))>p){u-=s;break}p=f}v.push(a={value:u,dice:l<c,children:y.slice(x,b)}),a.dice?xu(a,n,i,r,_?i+=c*u/_:o):Ou(a,n,i,_?n+=l*u/_:r,o),_-=u,x=b}return v}function Du(){function t(t){return t.x0=t.y0=0,t.x1=r,t.y1=o,t.eachBefore(e),a=[0],i&&t.eachBefore(yu),t}function e(t){var e=a[t.depth],i=t.x0+e,r=t.y0+e,o=t.x1-e,d=t.y1-e;o<i&&(i=o=(i+o)/2),d<r&&(r=d=(r+d)/2),t.x0=i,t.y0=r,t.x1=o,t.y1=d,t.children&&(e=a[t.depth+1]=s(t)/2,i+=h(t)-e,r+=l(t)-e,o-=c(t)-e,d-=u(t)-e,o<i&&(i=o=(i+o)/2),d<r&&(r=d=(r+d)/2),n(t,i,r,o,d))}var n=Yb,i=!1,r=1,o=1,a=[0],s=hu,l=hu,c=hu,u=hu,h=hu;return t.round=function(e){return arguments.length?(i=!!e,t):i},t.size=function(e){return arguments.length?(r=+e[0],o=+e[1],t):[r,o]},t.tile=function(e){return arguments.length?(n=uu(e),t):n},t.padding=function(e){return arguments.length?t.paddingInner(e).paddingOuter(e):t.paddingInner()},t.paddingInner=function(e){return arguments.length?(s="function"==typeof e?e:du(+e),t):s},t.paddingOuter=function(e){return arguments.length?t.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):t.paddingTop()},t.paddingTop=function(e){return arguments.length?(l="function"==typeof e?e:du(+e),t):l},t.paddingRight=function(e){return arguments.length?(c="function"==typeof e?e:du(+e),t):c},t.paddingBottom=function(e){return arguments.length?(u="function"==typeof e?e:du(+e),t):u},t.paddingLeft=function(e){return arguments.length?(h="function"==typeof e?e:du(+e),t):h},t}function Iu(t,e,n,i,r){function o(t,e,n,i,r,a,s){if(t>=e-1){var c=l[t];return c.x0=i,c.y0=r,c.x1=a,c.y1=s,void 0}for(var h=u[t],d=n/2+h,f=t+1,p=e-1;f<p;){var g=f+p>>>1;u[g]<d?f=g+1:p=g}d-u[f-1]<u[f]-d&&t+1<f&&--f;var m=u[f]-h,v=n-m;if(a-i>s-r){var y=(i*v+a*m)/n;o(t,f,m,i,r,y,s),o(f,e,v,y,r,a,s)}else{var x=(r*v+s*m)/n;o(t,f,m,i,r,a,x),o(f,e,v,i,x,a,s)}}var a,s,l=t.children,c=l.length,u=new Array(c+1);for(u[0]=s=a=0;a<c;++a)u[a+1]=s+=l[a].value;o(0,c,t.value,e,n,i,r)}function Hu(t,e,n,i,r){(1&t.depth?Ou:xu)(t,e,n,i,r)}function ju(t){for(var e,n=-1,i=t.length,r=t[i-1],o=0;++n<i;)e=r,r=t[n],o+=e[1]*r[0]-e[0]*r[1];return o/2}function Vu(t){for(var e,n,i=-1,r=t.length,o=0,a=0,s=t[r-1],l=0;++i<r;)e=s,s=t[i],l+=n=e[0]*s[1]-s[0]*e[1],o+=(e[0]+s[0])*n,a+=(e[1]+s[1])*n;return l*=3,[o/l,a/l]}function Fu(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function zu(t,e){return t[0]-e[0]||t[1]-e[1]}function qu(t){for(var e=t.length,n=[0,1],i=2,r=2;r<e;++r){for(;i>1&&Fu(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}function Gu(t){if((n=t.length)<3)return null;var e,n,i=new Array(n),r=new Array(n);for(e=0;e<n;++e)i[e]=[+t[e][0],+t[e][1],e];for(i.sort(zu),e=0;e<n;++e)r[e]=[i[e][0],-i[e][1]];var o=qu(i),a=qu(r),s=a[0]===o[0],l=a[a.length-1]===o[o.length-1],c=[];for(e=o.length-1;e>=0;--e)c.push(t[i[o[e]][2]]);for(e=+s;e<a.length-l;++e)c.push(t[i[a[e]][2]]);return c}function Bu(t,e){for(var n,i,r=t.length,o=t[r-1],a=e[0],s=e[1],l=o[0],c=o[1],u=!1,h=0;h<r;++h)o=t[h],n=o[0],i=o[1],i>s!=c>s&&a<(l-n)*(s-i)/(c-i)+n&&(u=!u),l=n,c=i;return u}function $u(t){for(var e,n,i=-1,r=t.length,o=t[r-1],a=o[0],s=o[1],l=0;++i<r;)e=a,n=s,o=t[i],a=o[0],s=o[1],e-=a,n-=s,l+=Math.sqrt(e*e+n*n);return l}function Wu(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function Uu(t){if(!t._start)try{Xu(t)}catch(e){if(t._tasks[t._ended+t._active-1])Qu(t,e);else if(!t._data)throw e}}function Xu(t){for(;t._start=t._waiting&&t._active<t._size;){var e=t._ended+t._active,n=t._tasks[e],i=n.length-1,r=n[i];n[i]=Yu(t,e),--t._waiting,++t._active,n=r.apply(null,n),t._tasks[e]&&(t._tasks[e]=n||Kb)}}function Yu(t,e){return function(n,i){t._tasks[e]&&(--t._active,++t._ended,t._tasks[e]=null,null==t._error&&(null!=n?Qu(t,n):(t._data[e]=i,t._waiting?Uu(t):Zu(t))))}}function Qu(t,e){var n,i=t._tasks.length;for(t._error=e,t._data=void 0,t._waiting=NaN;--i>=0;)if((n=t._tasks[i])&&(t._tasks[i]=null,n.abort))try{n.abort()}catch(e){}t._active=NaN,Zu(t)}function Zu(t){if(!t._active&&t._call){var e=t._data;t._data=void 0,t._call(t._error,e)}}function Ku(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new Wu(t)}function Ju(){return Math.random()}function th(t,e){function n(t){var e,n=c.status;if(!n&&nh(c)||n>=200&&n<300||304===n){if(o)try{e=o.call(i,c)}catch(t){return void s.call("error",i,t)}else e=c;s.call("load",i,e)}else s.call("error",i,t)}var i,r,o,a,s=W("beforesend","progress","load","error"),l=uo(),c=new XMLHttpRequest,u=null,h=null,d=0;if("undefined"==typeof XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(t)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=c.ontimeout=n:c.onreadystatechange=function(t){c.readyState>3&&n(t)},c.onprogress=function(t){s.call("progress",i,t)},i={header:function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?l.get(t):(null==e?l.remove(t):l.set(t,e+""),i)},mimeType:function(t){return arguments.length?(r=null==t?null:t+"",i):r},responseType:function(t){return arguments.length?(a=t,i):a},timeout:function(t){return arguments.length?(d=+t,i):d},user:function(t){return arguments.length<1?u:(u=null==t?null:t+"",i)},password:function(t){return arguments.length<1?h:(h=null==t?null:t+"",i)},response:function(t){return o=t,i},get:function(t,e){return i.send("GET",t,e)},post:function(t,e){return i.send("POST",t,e)},send:function(e,n,o){return c.open(e,t,!0,u,h),null==r||l.has("accept")||l.set("accept",r+",*/*"),c.setRequestHeader&&l.each(function(t,e){c.setRequestHeader(e,t)}),null!=r&&c.overrideMimeType&&c.overrideMimeType(r),null!=a&&(c.responseType=a),d>0&&(c.timeout=d),null==o&&"function"==typeof n&&(o=n,n=null),null!=o&&1===o.length&&(o=eh(o)),null!=o&&i.on("error",o).on("load",function(t){o(null,t)}),s.call("beforesend",i,c),c.send(null==n?null:n),i},abort:function(){return c.abort(),i},on:function(){var t=s.on.apply(s,arguments);return t===s?i:t}},null!=e){if("function"!=typeof e)throw new Error("invalid callback: "+e);return i.get(e)}return i}function eh(t){return function(e,n){t(null==e?n:null)}}function nh(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function ih(t,e){return function(n,i){var r=th(n).mimeType(t).response(e);if(null!=i){if("function"!=typeof i)throw new Error("invalid callback: "+i);return r.get(i)}return r}}function rh(t,e){return function(n,i,r){arguments.length<3&&(r=i,i=null);var o=th(n).mimeType(t);return o.row=function(t){return arguments.length?o.response(oh(e,i=t)):i},o.row(i),r?o.get(r):o}}function oh(t,e){return function(n){return t(n.responseText,e)}}function ah(t){function e(e){var o=e+"",a=n.get(o);if(!a){if(r!==pw)return r;n.set(o,a=i.push(e))}return t[(a-1)%t.length]}var n=uo(),i=[],r=pw;return t=null==t?[]:fw.call(t),e.domain=function(t){if(!arguments.length)return i.slice();i=[],n=uo();for(var r,o,a=-1,s=t.length;++a<s;)n.has(o=(r=t[a])+"")||n.set(o,i.push(r));return e},e.range=function(n){return arguments.length?(t=fw.call(n),e):t.slice()},e.unknown=function(t){return arguments.length?(r=t,e):r},e.copy=function(){return ah().domain(i).range(t).unknown(r)},e}function sh(){function t(){var t=r().length,i=a[1]<a[0],h=a[i-0],d=a[1-i];e=(d-h)/Math.max(1,t-l+2*c),s&&(e=Math.floor(e)),h+=(d-h-e*(t-l))*u,n=e*(1-l),s&&(h=Math.round(h),n=Math.round(n));var f=p(t).map(function(t){return h+e*t});return o(i?f.reverse():f)}var e,n,i=ah().unknown(void 0),r=i.domain,o=i.range,a=[0,1],s=!1,l=0,c=0,u=.5;return delete i.unknown,i.domain=function(e){return arguments.length?(r(e),t()):r()},i.range=function(e){return arguments.length?(a=[+e[0],+e[1]],t()):a.slice()},i.rangeRound=function(e){return a=[+e[0],+e[1]],s=!0,t()},i.bandwidth=function(){return n},i.step=function(){return e},i.round=function(e){return arguments.length?(s=!!e,t()):s},i.padding=function(e){return arguments.length?(l=c=Math.max(0,Math.min(1,e)),t()):l},i.paddingInner=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),t()):l},i.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),t()):c},i.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),t()):u},i.copy=function(){return sh().domain(r()).range(a).round(s).paddingInner(l).paddingOuter(c).align(u)},t()}function lh(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return lh(e())},t}function ch(){return lh(sh().paddingInner(1))}function uh(t){return function(){return t}}function hh(t){return+t}function dh(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:uh(e)}function fh(t){return function(e,n){var i=t(e=+e,n=+n);return function(t){return t<=e?0:t>=n?1:i(t)}}}function ph(t){return function(e,n){var i=t(e=+e,n=+n);return function(t){return t<=0?e:t>=1?n:i(t)}}}function gh(t,e,n,i){var r=t[0],o=t[1],a=e[0],s=e[1];return o<r?(r=n(o,r),a=i(s,a)):(r=n(r,o),a=i(a,s)),function(t){return a(r(t))}}function mh(t,e,n,i){var r=Math.min(t.length,e.length)-1,o=new Array(r),a=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)o[s]=n(t[s],t[s+1]),a[s]=i(e[s],e[s+1]);return function(e){var n=Og(t,e,1,r)-1;return a[n](o[n](e))}}function vh(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp())}function yh(t,e){function n(){return r=Math.min(s.length,l.length)>2?mh:gh,o=a=null,i}function i(e){return(o||(o=r(s,l,u?fh(t):t,c)))(+e)}var r,o,a,s=gw,l=gw,c=Bn,u=!1;return i.invert=function(t){return(a||(a=r(l,s,dh,u?ph(e):e)))(+t)},i.domain=function(t){return arguments.length?(s=dw.call(t,hh),n()):s.slice()},i.range=function(t){return arguments.length?(l=fw.call(t),n()):l.slice()},i.rangeRound=function(t){return l=fw.call(t),c=$n,n()},i.clamp=function(t){return arguments.length?(u=!!t,n()):u},i.interpolate=function(t){return arguments.length?(c=t,n()):c},n()}function xh(e,n,i){var r,o=e[0],a=e[e.length-1],s=v(o,a,null==n?10:n);switch(i=ma(null==i?",f":i),i.type){case"s":var l=Math.max(Math.abs(o),Math.abs(a));return null!=i.precision||isNaN(r=_a(s,l))||(i.precision=r),t.formatPrefix(i,l);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=Sa(s,Math.max(Math.abs(o),Math.abs(a))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=wa(s))||(i.precision=r-2*("%"===i.type))}return t.format(i)}function bh(t){var e=t.domain;return t.ticks=function(t){var n=e();return g(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){return xh(e(),t,n)},t.nice=function(n){null==n&&(n=10);var i,r=e(),o=0,a=r.length-1,s=r[o],l=r[a];return l<s&&(i=s,s=l,l=i,i=o,o=a,a=i),i=m(s,l,n),i>0?(s=Math.floor(s/i)*i,l=Math.ceil(l/i)*i,i=m(s,l,n)):i<0&&(s=Math.ceil(s*i)/i,l=Math.floor(l*i)/i,i=m(s,l,n)),i>0?(r[o]=Math.floor(s/i)*i,r[a]=Math.ceil(l/i)*i,e(r)):i<0&&(r[o]=Math.ceil(s*i)/i,r[a]=Math.floor(l*i)/i,e(r)),t},t}function wh(){var t=yh(dh,Vn);return t.copy=function(){return vh(t,wh())},bh(t)}function _h(){function t(t){return+t}var e=[0,1];return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=dw.call(n,hh),t):e.slice()},t.copy=function(){return _h().domain(e)},bh(t)}function Sh(t,e){t=t.slice();var n,i=0,r=t.length-1,o=t[i],a=t[r];return a<o&&(n=i,i=r,r=n,n=o,o=a,a=n),t[i]=e.floor(o),t[r]=e.ceil(a),t}function Ch(t,e){return(e=Math.log(e/t))?function(n){return Math.log(n/t)/e}:uh(e)}function Th(t,e){return t<0?function(n){return-Math.pow(-e,n)*Math.pow(-t,1-n)}:function(n){return Math.pow(e,n)*Math.pow(t,1-n)}}function kh(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Ah(t){return 10===t?kh:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function Mh(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function Eh(t){return function(e){return-t(-e)}}function Lh(){function e(){return o=Mh(r),a=Ah(r),i()[0]<0&&(o=Eh(o),a=Eh(a)),n}var n=yh(Ch,Th).domain([1,10]),i=n.domain,r=10,o=Mh(10),a=Ah(10);return n.base=function(t){return arguments.length?(r=+t,e()):r},n.domain=function(t){return arguments.length?(i(t),e()):i()},n.ticks=function(t){var e,n=i(),s=n[0],l=n[n.length-1];(e=l<s)&&(d=s,s=l,l=d);var c,u,h,d=o(s),f=o(l),p=null==t?10:+t,m=[];if(!(r%1)&&f-d<p){if(d=Math.round(d)-1,f=Math.round(f)+1,s>0){for(;d<f;++d)for(u=1,c=a(d);u<r;++u)if(!((h=c*u)<s)){if(h>l)break;m.push(h)}}else for(;d<f;++d)for(u=r-1,c=a(d);u>=1;--u)if(!((h=c*u)<s)){if(h>l)break;m.push(h)}}else m=g(d,f,Math.min(f-d,p)).map(a);return e?m.reverse():m},n.tickFormat=function(e,i){if(null==i&&(i=10===r?".0e":","),"function"!=typeof i&&(i=t.format(i)),e===1/0)return i;null==e&&(e=10);var s=Math.max(1,r*e/n.ticks().length);return function(t){var e=t/a(Math.round(o(t)));return e*r<r-.5&&(e*=r),e<=s?i(t):""}},n.nice=function(){return i(Sh(i(),{floor:function(t){return a(Math.floor(o(t)))},ceil:function(t){return a(Math.ceil(o(t)))}}))},n.copy=function(){return vh(n,Lh().base(r))},n}function Ph(t,e){return t<0?-Math.pow(-t,e):Math.pow(t,e)}function Nh(){function t(t,e){return(e=Ph(e,n)-(t=Ph(t,n)))?function(i){return(Ph(i,n)-t)/e}:uh(e)}function e(t,e){return e=Ph(e,n)-(t=Ph(t,n)),function(i){return Ph(t+e*i,1/n)}}var n=1,i=yh(t,e),r=i.domain;return i.exponent=function(t){return arguments.length?(n=+t,r(r())):n},i.copy=function(){return vh(i,Nh().exponent(n))},bh(i)}function Oh(){return Nh().exponent(.5)}function Rh(){function t(){var t=0,e=Math.max(1,r.length);for(o=new Array(e-1);++t<e;)o[t-1]=b(i,t/e);return n}function n(t){if(!isNaN(t=+t))return r[Og(o,t)]}var i=[],r=[],o=[];return n.invertExtent=function(t){var e=r.indexOf(t);return e<0?[NaN,NaN]:[e>0?o[e-1]:i[0],e<o.length?o[e]:i[i.length-1]]},n.domain=function(n){if(!arguments.length)return i.slice();i=[];for(var r,o=0,a=n.length;o<a;++o)null==(r=n[o])||isNaN(r=+r)||i.push(r);return i.sort(e),t()},n.range=function(e){return arguments.length?(r=fw.call(e),t()):r.slice()},n.quantiles=function(){return o.slice()},n.copy=function(){return Rh().domain(i).range(r)},n}function Dh(){function t(t){if(t<=t)return a[Og(o,t,0,r)]}function e(){var e=-1;for(o=new Array(r);++e<r;)o[e]=((e+1)*i-(e-r)*n)/(r+1);return t}var n=0,i=1,r=1,o=[.5],a=[0,1];return t.domain=function(t){return arguments.length?(n=+t[0],i=+t[1],e()):[n,i]},t.range=function(t){return arguments.length?(r=(a=fw.call(t)).length-1,e()):a.slice()},t.invertExtent=function(t){var e=a.indexOf(t);return e<0?[NaN,NaN]:e<1?[n,o[0]]:e>=r?[o[r-1],i]:[o[e-1],o[e]]},t.copy=function(){return Dh().domain([n,i]).range(a)},bh(t)}function Ih(){function t(t){if(t<=t)return n[Og(e,t,0,i)]}var e=[.5],n=[0,1],i=1;return t.domain=function(r){return arguments.length?(e=fw.call(r),i=Math.min(e.length,n.length-1),t):e.slice()},t.range=function(r){return arguments.length?(n=fw.call(r),i=Math.min(e.length,n.length-1),t):n.slice()},t.invertExtent=function(t){var i=n.indexOf(t);return[e[i-1],e[i]]},t.copy=function(){return Ih().domain(e).range(n)},t}function Hh(t,e,n,i){function r(e){return t(e=new Date(+e)),e}return r.floor=r,r.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},r.round=function(t){var e=r(t),n=r.ceil(t);return t-e<n-t?e:n},r.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},r.range=function(n,i,o){var a,s=[];if(n=r.ceil(n),o=null==o?1:Math.floor(o),!(n<i&&o>0))return s;do{s.push(a=new Date(+n)),e(n,o),t(n)}while(a<n&&n<i);return s},r.filter=function(n){return Hh(function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})},n&&(r.count=function(e,i){return mw.setTime(+e),vw.setTime(+i),t(mw),t(vw),Math.floor(n(mw,vw))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(e){return i(e)%t==0}:function(e){return r.count(0,e)%t==0}):r:null}),r}function jh(t){return Hh(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bw)/ww})}function Vh(t){return Hh(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/ww})}function Fh(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function zh(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function qh(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Gh(t){function e(t,e){return function(n){var i,r,o,a=[],s=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s<c;)37===t.charCodeAt(s)&&(a.push(t.slice(l,s)),null!=(r=x_[i=t.charAt(++s)])?i=t.charAt(++s):r="e"===i?" ":"0",(o=e[i])&&(i=o(n,r)),a.push(i),l=s+1);return a.push(t.slice(l,s)),a.join("")}}function n(t,e){return function(n){var r,o,a=qh(1900),s=i(a,t,n+="",0);if(s!=n.length)return null;if("Q"in a)return new Date(a.Q);if("p"in a&&(a.H=a.H%12+12*a.p),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(r=zh(qh(a.y)),o=r.getUTCDay(),r=o>4||0===o?e_.ceil(r):e_(r),r=Kw.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(r=e(qh(a.y)),o=r.getDay(),r=o>4||0===o?Pw.ceil(r):Pw(r),r=Mw.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),o="Z"in a?zh(qh(a.y)).getUTCDay():e(qh(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(o+5)%7:a.w+7*a.U-(o+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,zh(a)):e(a)}}function i(t,e,n,i){for(var r,o,a=0,s=e.length,l=n.length;a<s;){if(i>=l)return-1;if(37===(r=e.charCodeAt(a++))){if(r=e.charAt(a++),!(o=q[r in x_?e.charAt(a++):r])||(i=o(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}function r(t,e,n){var i=L.exec(e.slice(n));return i?(t.p=P[i[0].toLowerCase()],n+i[0].length):-1}function o(t,e,n){var i=R.exec(e.slice(n));return i?(t.w=D[i[0].toLowerCase()],n+i[0].length):-1}function a(t,e,n){var i=N.exec(e.slice(n));return i?(t.w=O[i[0].toLowerCase()],n+i[0].length):-1}function s(t,e,n){var i=j.exec(e.slice(n));return i?(t.m=V[i[0].toLowerCase()],n+i[0].length):-1}function l(t,e,n){var i=I.exec(e.slice(n));return i?(t.m=H[i[0].toLowerCase()],n+i[0].length):-1}function c(t,e,n){return i(t,_,e,n)}function u(t,e,n){return i(t,S,e,n)}function h(t,e,n){return i(t,C,e,n)}function d(t){return A[t.getDay()]}function f(t){return k[t.getDay()]}function p(t){return E[t.getMonth()]}function g(t){return M[t.getMonth()]}function m(t){return T[+(t.getHours()>=12)]}function v(t){return A[t.getUTCDay()]}function y(t){return k[t.getUTCDay()]}function x(t){return E[t.getUTCMonth()]}function b(t){return M[t.getUTCMonth()]}function w(t){return T[+(t.getUTCHours()>=12)]}var _=t.dateTime,S=t.date,C=t.time,T=t.periods,k=t.days,A=t.shortDays,M=t.months,E=t.shortMonths,L=Wh(T),P=Uh(T),N=Wh(k),O=Uh(k),R=Wh(A),D=Uh(A),I=Wh(M),H=Uh(M),j=Wh(E),V=Uh(E),F={a:d,A:f,b:p,B:g,c:null,d:fd,e:fd,f:yd,H:pd,I:gd,j:md,L:vd,m:xd,M:bd,p:m,Q:Xd,s:Yd,S:wd,u:_d,U:Sd,V:Cd,w:Td,W:kd,x:null,X:null,y:Ad,Y:Md,Z:Ed,"%":Ud},z={a:v,A:y,b:x,B:b,c:null,d:Ld,e:Ld,f:Dd,H:Pd,I:Nd,j:Od,L:Rd,m:Id,M:Hd,p:w,Q:Xd,s:Yd,S:jd,u:Vd,U:Fd,V:zd,w:qd,W:Gd,x:null,X:null,y:Bd,Y:$d,Z:Wd,"%":Ud},q={a:o,A:a,b:s,B:l,c:c,d:id,e:id,f:cd,H:od,I:od,j:rd,L:ld,m:nd,M:ad,p:r,Q:hd,s:dd,S:sd,u:Yh,U:Qh,V:Zh,w:Xh,W:Kh,x:u,X:h,y:td,Y:Jh,Z:ed,"%":ud};return F.x=e(S,F),F.X=e(C,F),F.c=e(_,F),z.x=e(S,z),z.X=e(C,z),z.c=e(_,z),{format:function(t){var n=e(t+="",F);return n.toString=function(){return t},n},parse:function(t){var e=n(t+="",Fh);return e.toString=function(){return t},e},utcFormat:function(t){var n=e(t+="",z);return n.toString=function(){return t},n},utcParse:function(t){var e=n(t,zh);return e.toString=function(){return t},e}}}function Bh(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",o=r.length;return i+(o<n?new Array(n-o+1).join(e)+r:r)}function $h(t){return t.replace(__,"\\$&")}function Wh(t){return new RegExp("^(?:"+t.map($h).join("|")+")","i")}function Uh(t){for(var e={},n=-1,i=t.length;++n<i;)e[t[n].toLowerCase()]=n;return e}function Xh(t,e,n){var i=b_.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function Yh(t,e,n){var i=b_.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function Qh(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function Zh(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function Kh(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function Jh(t,e,n){var i=b_.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function td(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function ed(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function nd(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function id(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function rd(t,e,n){var i=b_.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function od(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function ad(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function sd(t,e,n){var i=b_.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function ld(t,e,n){var i=b_.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function cd(t,e,n){var i=b_.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function ud(t,e,n){var i=w_.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function hd(t,e,n){var i=b_.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function dd(t,e,n){var i=b_.exec(e.slice(n));return i?(t.Q=1e3*+i[0],n+i[0].length):-1}function fd(t,e){return Bh(t.getDate(),e,2)}function pd(t,e){return Bh(t.getHours(),e,2)}function gd(t,e){return Bh(t.getHours()%12||12,e,2)}function md(t,e){return Bh(1+Mw.count(Ww(t),t),e,3)}function vd(t,e){return Bh(t.getMilliseconds(),e,3)}function yd(t,e){return vd(t,e)+"000"}function xd(t,e){return Bh(t.getMonth()+1,e,2)}function bd(t,e){return Bh(t.getMinutes(),e,2)}function wd(t,e){return Bh(t.getSeconds(),e,2)}function _d(t){var e=t.getDay();return 0===e?7:e}function Sd(t,e){return Bh(Lw.count(Ww(t),t),e,2)}function Cd(t,e){var n=t.getDay();return t=n>=4||0===n?Rw(t):Rw.ceil(t),Bh(Rw.count(Ww(t),t)+(4===Ww(t).getDay()),e,2)}function Td(t){return t.getDay()}function kd(t,e){return Bh(Pw.count(Ww(t),t),e,2)}function Ad(t,e){return Bh(t.getFullYear()%100,e,2)}function Md(t,e){return Bh(t.getFullYear()%1e4,e,4)}function Ed(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Bh(e/60|0,"0",2)+Bh(e%60,"0",2)}function Ld(t,e){return Bh(t.getUTCDate(),e,2)}function Pd(t,e){return Bh(t.getUTCHours(),e,2)}function Nd(t,e){return Bh(t.getUTCHours()%12||12,e,2)}function Od(t,e){return Bh(1+Kw.count(m_(t),t),e,3)}function Rd(t,e){return Bh(t.getUTCMilliseconds(),e,3)}
+function Dd(t,e){return Rd(t,e)+"000"}function Id(t,e){return Bh(t.getUTCMonth()+1,e,2)}function Hd(t,e){return Bh(t.getUTCMinutes(),e,2)}function jd(t,e){return Bh(t.getUTCSeconds(),e,2)}function Vd(t){var e=t.getUTCDay();return 0===e?7:e}function Fd(t,e){return Bh(t_.count(m_(t),t),e,2)}function zd(t,e){var n=t.getUTCDay();return t=n>=4||0===n?r_(t):r_.ceil(t),Bh(r_.count(m_(t),t)+(4===m_(t).getUTCDay()),e,2)}function qd(t){return t.getUTCDay()}function Gd(t,e){return Bh(e_.count(m_(t),t),e,2)}function Bd(t,e){return Bh(t.getUTCFullYear()%100,e,2)}function $d(t,e){return Bh(t.getUTCFullYear()%1e4,e,4)}function Wd(){return"+0000"}function Ud(){return"%"}function Xd(t){return+t}function Yd(t){return Math.floor(+t/1e3)}function Qd(e){return v_=Gh(e),t.timeFormat=v_.format,t.timeParse=v_.parse,t.utcFormat=v_.utcFormat,t.utcParse=v_.utcParse,v_}function Zd(t){return t.toISOString()}function Kd(t){var e=new Date(t);return isNaN(e)?null:e}function Jd(t){return new Date(t)}function tf(t){return t instanceof Date?+t:+new Date(+t)}function ef(t,e,i,r,o,a,s,l,c){function u(n){return(s(n)<n?g:a(n)<n?m:o(n)<n?y:r(n)<n?x:e(n)<n?i(n)<n?b:w:t(n)<n?_:S)(n)}function h(e,i,r,o){if(null==e&&(e=10),"number"==typeof e){var a=Math.abs(r-i)/e,s=n(function(t){return t[2]}).right(C,a);s===C.length?(o=v(i/P_,r/P_,e),e=t):s?(s=C[a/C[s-1][2]<C[s][2]/a?s-1:s],o=s[1],e=s[0]):(o=Math.max(v(i,r,e),1),e=l)}return null==o?e:e.every(o)}var d=yh(dh,Vn),f=d.invert,p=d.domain,g=c(".%L"),m=c(":%S"),y=c("%I:%M"),x=c("%I %p"),b=c("%a %d"),w=c("%b %d"),_=c("%B"),S=c("%Y"),C=[[s,1,T_],[s,5,5*T_],[s,15,15*T_],[s,30,30*T_],[a,1,k_],[a,5,5*k_],[a,15,15*k_],[a,30,30*k_],[o,1,A_],[o,3,3*A_],[o,6,6*A_],[o,12,12*A_],[r,1,M_],[r,2,2*M_],[i,1,E_],[e,1,L_],[e,3,3*L_],[t,1,P_]];return d.invert=function(t){return new Date(f(t))},d.domain=function(t){return arguments.length?p(dw.call(t,tf)):p().map(Jd)},d.ticks=function(t,e){var n,i=p(),r=i[0],o=i[i.length-1],a=o<r;return a&&(n=r,r=o,o=n),n=h(t,r,o,e),n=n?n.range(r,o+1):[],a?n.reverse():n},d.tickFormat=function(t,e){return null==e?u:c(e)},d.nice=function(t,e){var n=p();return(t=h(t,n[0],n[n.length-1],e))?p(Sh(n,t)):d},d.copy=function(){return vh(d,ef(t,e,i,r,o,a,s,l,c))},d}function nf(){return ef(Ww,Bw,Lw,Mw,kw,Cw,_w,yw,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)])}function rf(){return ef(m_,p_,t_,Kw,Qw,Xw,_w,yw,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])}function of(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}function af(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return V_.h=360*t-100,V_.s=1.5-1.5*e,V_.l=.8-.9*e,V_+""}function sf(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function lf(t){function e(e){var o=(e-n)/(i-n);return t(r?Math.max(0,Math.min(1,o)):o)}var n=0,i=1,r=!1;return e.domain=function(t){return arguments.length?(n=+t[0],i=+t[1],e):[n,i]},e.clamp=function(t){return arguments.length?(r=!!t,e):r},e.interpolator=function(n){return arguments.length?(t=n,e):t},e.copy=function(){return lf(t).domain([n,i]).clamp(r)},bh(e)}function cf(t){return function(){return t}}function uf(t){return t>1?0:t<-1?K_:Math.acos(t)}function hf(t){return t>=1?J_:t<=-1?-J_:Math.asin(t)}function df(t){return t.innerRadius}function ff(t){return t.outerRadius}function pf(t){return t.startAngle}function gf(t){return t.endAngle}function mf(t){return t&&t.padAngle}function vf(t,e,n,i,r,o,a,s){var l=n-t,c=i-e,u=a-r,h=s-o,d=(u*(e-o)-h*(t-r))/(h*l-u*c);return[t+d*l,e+d*c]}function yf(t,e,n,i,r,o,a){var s=t-n,l=e-i,c=(a?o:-o)/Q_(s*s+l*l),u=c*l,h=-c*s,d=t+u,f=e+h,p=n+u,g=i+h,m=(d+p)/2,v=(f+g)/2,y=p-d,x=g-f,b=y*y+x*x,w=r-o,_=d*g-p*f,S=(x<0?-1:1)*Q_(U_(0,w*w*b-_*_)),C=(_*x-y*S)/b,T=(-_*y-x*S)/b,k=(_*x+y*S)/b,A=(-_*y+x*S)/b,M=C-m,E=T-v,L=k-m,P=A-v;return M*M+E*E>L*L+P*P&&(C=k,T=A),{cx:C,cy:T,x01:-u,y01:-h,x11:C*(r/w-1),y11:T*(r/w-1)}}function xf(){function t(){var t,c,u=+e.apply(this,arguments),h=+n.apply(this,arguments),d=o.apply(this,arguments)-J_,f=a.apply(this,arguments)-J_,p=B_(f-d),g=f>d;if(l||(l=t=no()),h<u&&(c=h,h=u,u=c),h>Z_)if(p>tS-Z_)l.moveTo(h*W_(d),h*Y_(d)),l.arc(0,0,h,d,f,!g),u>Z_&&(l.moveTo(u*W_(f),u*Y_(f)),l.arc(0,0,u,f,d,g));else{var m,v,y=d,x=f,b=d,w=f,_=p,S=p,C=s.apply(this,arguments)/2,T=C>Z_&&(r?+r.apply(this,arguments):Q_(u*u+h*h)),k=X_(B_(h-u)/2,+i.apply(this,arguments)),A=k,M=k;if(T>Z_){var E=hf(T/u*Y_(C)),L=hf(T/h*Y_(C));(_-=2*E)>Z_?(E*=g?1:-1,b+=E,w-=E):(_=0,b=w=(d+f)/2),(S-=2*L)>Z_?(L*=g?1:-1,y+=L,x-=L):(S=0,y=x=(d+f)/2)}var P=h*W_(y),N=h*Y_(y),O=u*W_(w),R=u*Y_(w);if(k>Z_){var D=h*W_(x),I=h*Y_(x),H=u*W_(b),j=u*Y_(b);if(p<K_){var V=_>Z_?vf(P,N,H,j,D,I,O,R):[O,R],F=P-V[0],z=N-V[1],q=D-V[0],G=I-V[1],B=1/Y_(uf((F*q+z*G)/(Q_(F*F+z*z)*Q_(q*q+G*G)))/2),$=Q_(V[0]*V[0]+V[1]*V[1]);A=X_(k,(u-$)/(B-1)),M=X_(k,(h-$)/(B+1))}}S>Z_?M>Z_?(m=yf(H,j,P,N,h,M,g),v=yf(D,I,O,R,h,M,g),l.moveTo(m.cx+m.x01,m.cy+m.y01),M<k?l.arc(m.cx,m.cy,M,$_(m.y01,m.x01),$_(v.y01,v.x01),!g):(l.arc(m.cx,m.cy,M,$_(m.y01,m.x01),$_(m.y11,m.x11),!g),l.arc(0,0,h,$_(m.cy+m.y11,m.cx+m.x11),$_(v.cy+v.y11,v.cx+v.x11),!g),l.arc(v.cx,v.cy,M,$_(v.y11,v.x11),$_(v.y01,v.x01),!g))):(l.moveTo(P,N),l.arc(0,0,h,y,x,!g)):l.moveTo(P,N),u>Z_&&_>Z_?A>Z_?(m=yf(O,R,D,I,u,-A,g),v=yf(P,N,H,j,u,-A,g),l.lineTo(m.cx+m.x01,m.cy+m.y01),A<k?l.arc(m.cx,m.cy,A,$_(m.y01,m.x01),$_(v.y01,v.x01),!g):(l.arc(m.cx,m.cy,A,$_(m.y01,m.x01),$_(m.y11,m.x11),!g),l.arc(0,0,u,$_(m.cy+m.y11,m.cx+m.x11),$_(v.cy+v.y11,v.cx+v.x11),g),l.arc(v.cx,v.cy,A,$_(v.y11,v.x11),$_(v.y01,v.x01),!g))):l.arc(0,0,u,w,b,g):l.lineTo(O,R)}else l.moveTo(0,0);if(l.closePath(),t)return l=null,t+""||null}var e=df,n=ff,i=cf(0),r=null,o=pf,a=gf,s=mf,l=null;return t.centroid=function(){var t=(+e.apply(this,arguments)+ +n.apply(this,arguments))/2,i=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-K_/2;return[W_(i)*t,Y_(i)*t]},t.innerRadius=function(n){return arguments.length?(e="function"==typeof n?n:cf(+n),t):e},t.outerRadius=function(e){return arguments.length?(n="function"==typeof e?e:cf(+e),t):n},t.cornerRadius=function(e){return arguments.length?(i="function"==typeof e?e:cf(+e),t):i},t.padRadius=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:cf(+e),t):r},t.startAngle=function(e){return arguments.length?(o="function"==typeof e?e:cf(+e),t):o},t.endAngle=function(e){return arguments.length?(a="function"==typeof e?e:cf(+e),t):a},t.padAngle=function(e){return arguments.length?(s="function"==typeof e?e:cf(+e),t):s},t.context=function(e){return arguments.length?(l=null==e?null:e,t):l},t}function bf(t){this._context=t}function wf(t){return new bf(t)}function _f(t){return t[0]}function Sf(t){return t[1]}function Cf(){function t(t){var s,l,c,u=t.length,h=!1;for(null==r&&(a=o(c=no())),s=0;s<=u;++s)!(s<u&&i(l=t[s],s,t))===h&&((h=!h)?a.lineStart():a.lineEnd()),h&&a.point(+e(l,s,t),+n(l,s,t));if(c)return a=null,c+""||null}var e=_f,n=Sf,i=cf(!0),r=null,o=wf,a=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:cf(+n),t):e},t.y=function(e){return arguments.length?(n="function"==typeof e?e:cf(+e),t):n},t.defined=function(e){return arguments.length?(i="function"==typeof e?e:cf(!!e),t):i},t.curve=function(e){return arguments.length?(o=e,null!=r&&(a=o(r)),t):o},t.context=function(e){return arguments.length?(null==e?r=a=null:a=o(r=e),t):r},t}function Tf(){function t(t){var e,u,h,d,f,p=t.length,g=!1,m=new Array(p),v=new Array(p);for(null==s&&(c=l(f=no())),e=0;e<=p;++e){if(!(e<p&&a(d=t[e],e,t))===g)if(g=!g)u=e,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),h=e-1;h>=u;--h)c.point(m[h],v[h]);c.lineEnd(),c.areaEnd()}g&&(m[e]=+n(d,e,t),v[e]=+r(d,e,t),c.point(i?+i(d,e,t):m[e],o?+o(d,e,t):v[e]))}if(f)return c=null,f+""||null}function e(){return Cf().defined(a).curve(l).context(s)}var n=_f,i=null,r=cf(0),o=Sf,a=cf(!0),s=null,l=wf,c=null;return t.x=function(e){return arguments.length?(n="function"==typeof e?e:cf(+e),i=null,t):n},t.x0=function(e){return arguments.length?(n="function"==typeof e?e:cf(+e),t):n},t.x1=function(e){return arguments.length?(i=null==e?null:"function"==typeof e?e:cf(+e),t):i},t.y=function(e){return arguments.length?(r="function"==typeof e?e:cf(+e),o=null,t):r},t.y0=function(e){return arguments.length?(r="function"==typeof e?e:cf(+e),t):r},t.y1=function(e){return arguments.length?(o=null==e?null:"function"==typeof e?e:cf(+e),t):o},t.lineX0=t.lineY0=function(){return e().x(n).y(r)},t.lineY1=function(){return e().x(n).y(o)},t.lineX1=function(){return e().x(i).y(r)},t.defined=function(e){return arguments.length?(a="function"==typeof e?e:cf(!!e),t):a},t.curve=function(e){return arguments.length?(l=e,null!=s&&(c=l(s)),t):l},t.context=function(e){return arguments.length?(null==e?s=c=null:c=l(s=e),t):s},t}function kf(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function Af(t){return t}function Mf(){function t(t){var s,l,c,u,h,d=t.length,f=0,p=new Array(d),g=new Array(d),m=+r.apply(this,arguments),v=Math.min(tS,Math.max(-tS,o.apply(this,arguments)-m)),y=Math.min(Math.abs(v)/d,a.apply(this,arguments)),x=y*(v<0?-1:1);for(s=0;s<d;++s)(h=g[p[s]=s]=+e(t[s],s,t))>0&&(f+=h);for(null!=n?p.sort(function(t,e){return n(g[t],g[e])}):null!=i&&p.sort(function(e,n){return i(t[e],t[n])}),s=0,c=f?(v-d*x)/f:0;s<d;++s,m=u)l=p[s],h=g[l],u=m+(h>0?h*c:0)+x,g[l]={data:t[l],index:s,value:h,startAngle:m,endAngle:u,padAngle:y};return g}var e=Af,n=kf,i=null,r=cf(0),o=cf(tS),a=cf(0);return t.value=function(n){return arguments.length?(e="function"==typeof n?n:cf(+n),t):e},t.sortValues=function(e){return arguments.length?(n=e,i=null,t):n},t.sort=function(e){return arguments.length?(i=e,n=null,t):i},t.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:cf(+e),t):r},t.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:cf(+e),t):o},t.padAngle=function(e){return arguments.length?(a="function"==typeof e?e:cf(+e),t):a},t}function Ef(t){this._curve=t}function Lf(t){function e(e){return new Ef(t(e))}return e._curve=t,e}function Pf(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Lf(t)):e()._curve},t}function Nf(){return Pf(Cf().curve(eS))}function Of(){var t=Tf().curve(eS),e=t.curve,n=t.lineX0,i=t.lineX1,r=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Pf(n())},delete t.lineX0,t.lineEndAngle=function(){return Pf(i())},delete t.lineX1,t.lineInnerRadius=function(){return Pf(r())},delete t.lineY0,t.lineOuterRadius=function(){return Pf(o())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Lf(t)):e()._curve},t}function Rf(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}function Df(t){return t.source}function If(t){return t.target}function Hf(t){function e(){var e,s=nS.call(arguments),l=n.apply(this,s),c=i.apply(this,s);if(a||(a=e=no()),t(a,+r.apply(this,(s[0]=l,s)),+o.apply(this,s),+r.apply(this,(s[0]=c,s)),+o.apply(this,s)),e)return a=null,e+""||null}var n=Df,i=If,r=_f,o=Sf,a=null;return e.source=function(t){return arguments.length?(n=t,e):n},e.target=function(t){return arguments.length?(i=t,e):i},e.x=function(t){return arguments.length?(r="function"==typeof t?t:cf(+t),e):r},e.y=function(t){return arguments.length?(o="function"==typeof t?t:cf(+t),e):o},e.context=function(t){return arguments.length?(a=null==t?null:t,e):a},e}function jf(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e=(e+i)/2,n,e,r,i,r)}function Vf(t,e,n,i,r){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+r)/2,i,n,i,r)}function Ff(t,e,n,i,r){var o=Rf(e,n),a=Rf(e,n=(n+r)/2),s=Rf(i,n),l=Rf(i,r);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],s[0],s[1],l[0],l[1])}function zf(){return Hf(jf)}function qf(){return Hf(Vf)}function Gf(){var t=Hf(Ff);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}function Bf(){function t(){var t;if(i||(i=t=no()),e.apply(this,arguments).draw(i,+n.apply(this,arguments)),t)return i=null,t+""||null}var e=cf(iS),n=cf(64),i=null;return t.type=function(n){return arguments.length?(e="function"==typeof n?n:cf(n),t):e},t.size=function(e){return arguments.length?(n="function"==typeof e?e:cf(+e),t):n},t.context=function(e){return arguments.length?(i=null==e?null:e,t):i},t}function $f(){}function Wf(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Uf(t){this._context=t}function Xf(t){return new Uf(t)}function Yf(t){this._context=t}function Qf(t){return new Yf(t)}function Zf(t){this._context=t}function Kf(t){return new Zf(t)}function Jf(t,e){this._basis=new Uf(t),this._beta=e}function tp(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function ep(t,e){this._context=t,this._k=(1-e)/6}function np(t,e){this._context=t,this._k=(1-e)/6}function ip(t,e){this._context=t,this._k=(1-e)/6}function rp(t,e,n){var i=t._x1,r=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Z_){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,r=(r*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Z_){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*c+t._x1*t._l23_2a-e*t._l12_2a)/u,a=(a*c+t._y1*t._l23_2a-n*t._l12_2a)/u}t._context.bezierCurveTo(i,r,o,a,t._x2,t._y2)}function op(t,e){this._context=t,this._alpha=e}function ap(t,e){this._context=t,this._alpha=e}function sp(t,e){this._context=t,this._alpha=e}function lp(t){this._context=t}function cp(t){return new lp(t)}function up(t){return t<0?-1:1}function hp(t,e,n){var i=t._x1-t._x0,r=e-t._x1,o=(t._y1-t._y0)/(i||r<0&&-0),a=(n-t._y1)/(r||i<0&&-0),s=(o*r+a*i)/(i+r);return(up(o)+up(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function dp(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function fp(t,e,n){var i=t._x0,r=t._y0,o=t._x1,a=t._y1,s=(o-i)/3;t._context.bezierCurveTo(i+s,r+s*e,o-s,a-s*n,o,a)}function pp(t){this._context=t}function gp(t){this._context=new mp(t)}function mp(t){this._context=t}function vp(t){return new pp(t)}function yp(t){return new gp(t)}function xp(t){this._context=t}function bp(t){var e,n,i=t.length-1,r=new Array(i),o=new Array(i),a=new Array(i);for(r[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e<i-1;++e)r[e]=1,o[e]=4,a[e]=4*t[e]+2*t[e+1];for(r[i-1]=2,o[i-1]=7,a[i-1]=8*t[i-1]+t[i],e=1;e<i;++e)n=r[e]/o[e-1],o[e]-=n,a[e]-=n*a[e-1];for(r[i-1]=a[i-1]/o[i-1],e=i-2;e>=0;--e)r[e]=(a[e]-r[e+1])/o[e];for(o[i-1]=(t[i]+r[i-1])/2,e=0;e<i-1;++e)o[e]=2*t[e+1]-r[e+1];return[r,o]}function wp(t){return new xp(t)}function _p(t,e){this._context=t,this._t=e}function Sp(t){return new _p(t,.5)}function Cp(t){return new _p(t,0)}function Tp(t){return new _p(t,1)}function kp(t,e){if((r=t.length)>1)for(var n,i,r,o=1,a=t[e[0]],s=a.length;o<r;++o)for(i=a,a=t[e[o]],n=0;n<s;++n)a[n][1]+=a[n][0]=isNaN(i[n][1])?i[n][0]:i[n][1]}function Ap(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}function Mp(t,e){return t[e]}function Ep(){function t(t){var o,a,s=e.apply(this,arguments),l=t.length,c=s.length,u=new Array(c);for(o=0;o<c;++o){for(var h,d=s[o],f=u[o]=new Array(l),p=0;p<l;++p)f[p]=h=[0,+r(t[p],d,p,t)],h.data=t[p];f.key=d}for(o=0,a=n(u);o<c;++o)u[a[o]].index=o;return i(u,a),u}var e=cf([]),n=Ap,i=kp,r=Mp;return t.keys=function(n){return arguments.length?(e="function"==typeof n?n:cf(nS.call(n)),t):e},t.value=function(e){return arguments.length?(r="function"==typeof e?e:cf(+e),t):r},t.order=function(e){return arguments.length?(n=null==e?Ap:"function"==typeof e?e:cf(nS.call(e)),t):n},t.offset=function(e){return arguments.length?(i=null==e?kp:e,t):i},t}function Lp(t,e){if((i=t.length)>0){for(var n,i,r,o=0,a=t[0].length;o<a;++o){for(r=n=0;n<i;++n)r+=t[n][o][1]||0;if(r)for(n=0;n<i;++n)t[n][o][1]/=r}kp(t,e)}}function Pp(t,e){if((s=t.length)>1)for(var n,i,r,o,a,s,l=0,c=t[e[0]].length;l<c;++l)for(o=a=0,n=0;n<s;++n)(r=(i=t[e[n]][l])[1]-i[0])>=0?(i[0]=o,i[1]=o+=r):r<0?(i[1]=a,i[0]=a+=r):i[0]=o}function Np(t,e){if((n=t.length)>0){for(var n,i=0,r=t[e[0]],o=r.length;i<o;++i){for(var a=0,s=0;a<n;++a)s+=t[a][i][1]||0;r[i][1]+=r[i][0]=-s/2}kp(t,e)}}function Op(t,e){if((r=t.length)>0&&(i=(n=t[e[0]]).length)>0){for(var n,i,r,o=0,a=1;a<i;++a){for(var s=0,l=0,c=0;s<r;++s){for(var u=t[e[s]],h=u[a][1]||0,d=u[a-1][1]||0,f=(h-d)/2,p=0;p<s;++p){var g=t[e[p]];f+=(g[a][1]||0)-(g[a-1][1]||0)}l+=h,c+=f*h}n[a-1][1]+=n[a-1][0]=o,l&&(o-=c/l)}n[a-1][1]+=n[a-1][0]=o,kp(t,e)}}function Rp(t){var e=t.map(Dp);return Ap(t).sort(function(t,n){return e[t]-e[n]})}function Dp(t){for(var e,n=0,i=-1,r=t.length;++i<r;)(e=+t[i][1])&&(n+=e);return n}function Ip(t){return Rp(t).reverse()}function Hp(t){var e,n,i=t.length,r=t.map(Dp),o=Ap(t).sort(function(t,e){return r[e]-r[t]}),a=0,s=0,l=[],c=[];for(e=0;e<i;++e)n=o[e],a<s?(a+=r[n],l.push(n)):(s+=r[n],c.push(n));return c.reverse().concat(l)}function jp(t){return Ap(t).reverse()}function Vp(t){return function(){return t}}function Fp(t){return t[0]}function zp(t){return t[1]}function qp(){this._=null}function Gp(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function Bp(t,e){var n=e,i=e.R,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.R=i.L,n.R&&(n.R.U=n),i.L=n}function $p(t,e){var n=e,i=e.L,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.L=i.R,n.L&&(n.L.U=n),i.R=n}function Wp(t){for(;t.L;)t=t.L;return t}function Up(t,e,n,i){var r=[null,null],o=NS.push(r)-1;return r.left=t,r.right=e,n&&Yp(r,t,e,n),i&&Yp(r,e,t,i),LS[t.index].halfedges.push(o),LS[e.index].halfedges.push(o),r}function Xp(t,e,n){var i=[e,n];return i.left=t,i}function Yp(t,e,n,i){t[0]||t[1]?t.left===n?t[1]=i:t[0]=i:(t[0]=i,t.left=e,t.right=n)}function Qp(t,e,n,i,r){var o,a=t[0],s=t[1],l=a[0],c=a[1],u=s[0],h=s[1],d=0,f=1,p=u-l,g=h-c;if(o=e-l,p||!(o>0)){if(o/=p,p<0){if(o<d)return;o<f&&(f=o)}else if(p>0){if(o>f)return;o>d&&(d=o)}if(o=i-l,p||!(o<0)){if(o/=p,p<0){if(o>f)return;o>d&&(d=o)}else if(p>0){if(o<d)return;o<f&&(f=o)}if(o=n-c,g||!(o>0)){if(o/=g,g<0){if(o<d)return;o<f&&(f=o)}else if(g>0){if(o>f)return;o>d&&(d=o)}if(o=r-c,g||!(o<0)){if(o/=g,g<0){if(o>f)return;o>d&&(d=o)}else if(g>0){if(o<d)return;o<f&&(f=o)}return!(d>0||f<1)||(d>0&&(t[0]=[l+d*p,c+d*g]),f<1&&(t[1]=[l+f*p,c+f*g]),!0)}}}}}function Zp(t,e,n,i,r){var o=t[1];if(o)return!0;var a,s,l=t[0],c=t.left,u=t.right,h=c[0],d=c[1],f=u[0],p=u[1],g=(h+f)/2,m=(d+p)/2;if(p===d){if(g<e||g>=i)return;if(h>f){if(l){if(l[1]>=r)return}else l=[g,n];o=[g,r]}else{if(l){if(l[1]<n)return}else l=[g,r];o=[g,n]}}else if(a=(h-f)/(p-d),s=m-a*g,a<-1||a>1)if(h>f){if(l){if(l[1]>=r)return}else l=[(n-s)/a,n];o=[(r-s)/a,r]}else{if(l){if(l[1]<n)return}else l=[(r-s)/a,r];o=[(n-s)/a,n]}else if(d<p){if(l){if(l[0]>=i)return}else l=[e,a*e+s];o=[i,a*i+s]}else{if(l){if(l[0]<e)return}else l=[i,a*i+s];o=[e,a*e+s]}return t[0]=l,t[1]=o,!0}function Kp(t,e,n,i){for(var r,o=NS.length;o--;)Zp(r=NS[o],t,e,n,i)&&Qp(r,t,e,n,i)&&(Math.abs(r[0][0]-r[1][0])>DS||Math.abs(r[0][1]-r[1][1])>DS)||delete NS[o]}function Jp(t){return LS[t.index]={site:t,halfedges:[]}}function tg(t,e){var n=t.site,i=e.left,r=e.right;return n===r&&(r=i,i=n),r?Math.atan2(r[1]-i[1],r[0]-i[0]):(n===i?(i=e[1],r=e[0]):(i=e[0],r=e[1]),Math.atan2(i[0]-r[0],r[1]-i[1]))}function eg(t,e){return e[+(e.left!==t.site)]}function ng(t,e){return e[+(e.left===t.site)]}function ig(){for(var t,e,n,i,r=0,o=LS.length;r<o;++r)if((t=LS[r])&&(i=(e=t.halfedges).length)){var a=new Array(i),s=new Array(i);for(n=0;n<i;++n)a[n]=n,s[n]=tg(t,NS[e[n]]);for(a.sort(function(t,e){return s[e]-s[t]}),n=0;n<i;++n)s[n]=e[a[n]];for(n=0;n<i;++n)e[n]=s[n]}}function rg(t,e,n,i){var r,o,a,s,l,c,u,h,d,f,p,g,m=LS.length,v=!0;for(r=0;r<m;++r)if(o=LS[r]){for(a=o.site,l=o.halfedges,s=l.length;s--;)NS[l[s]]||l.splice(s,1);for(s=0,c=l.length;s<c;)f=ng(o,NS[l[s]]),p=f[0],g=f[1],u=eg(o,NS[l[++s%c]]),h=u[0],d=u[1],(Math.abs(p-h)>DS||Math.abs(g-d)>DS)&&(l.splice(s,0,NS.push(Xp(a,f,Math.abs(p-t)<DS&&i-g>DS?[t,Math.abs(h-t)<DS?d:i]:Math.abs(g-i)<DS&&n-p>DS?[Math.abs(d-i)<DS?h:n,i]:Math.abs(p-n)<DS&&g-e>DS?[n,Math.abs(h-n)<DS?d:e]:Math.abs(g-e)<DS&&p-t>DS?[Math.abs(d-e)<DS?h:t,e]:null))-1),++c);c&&(v=!1)}if(v){var y,x,b,w=1/0;for(r=0,v=null;r<m;++r)(o=LS[r])&&(a=o.site,y=a[0]-t,x=a[1]-e,(b=y*y+x*x)<w&&(w=b,v=o));if(v){var _=[t,e],S=[t,i],C=[n,i],T=[n,e];v.halfedges.push(NS.push(Xp(a=v.site,_,S))-1,NS.push(Xp(a,S,C))-1,NS.push(Xp(a,C,T))-1,NS.push(Xp(a,T,_))-1)}}for(r=0;r<m;++r)(o=LS[r])&&(o.halfedges.length||delete LS[r])}function og(){Gp(this),this.x=this.y=this.arc=this.site=this.cy=null}function ag(t){var e=t.P,n=t.N;if(e&&n){var i=e.site,r=t.site,o=n.site;if(i!==o){var a=r[0],s=r[1],l=i[0]-a,c=i[1]-s,u=o[0]-a,h=o[1]-s,d=2*(l*h-c*u);if(!(d>=-IS)){var f=l*l+c*c,p=u*u+h*h,g=(h*f-c*p)/d,m=(l*p-u*f)/d,v=OS.pop()||new og;v.arc=t,v.site=r,v.x=g+a,v.y=(v.cy=m+s)+Math.sqrt(g*g+m*m),t.circle=v;for(var y=null,x=PS._;x;)if(v.y<x.y||v.y===x.y&&v.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}PS.insert(y,v),y||(MS=v)}}}}function sg(t){var e=t.circle;e&&(e.P||(MS=e.N),PS.remove(e),OS.push(e),Gp(e),t.circle=null)}function lg(){Gp(this),this.edge=this.site=this.circle=null}function cg(t){var e=RS.pop()||new lg;return e.site=t,e}function ug(t){sg(t),ES.remove(t),RS.push(t),Gp(t)}function hg(t){var e=t.circle,n=e.x,i=e.cy,r=[n,i],o=t.P,a=t.N,s=[t];ug(t);for(var l=o;l.circle&&Math.abs(n-l.circle.x)<DS&&Math.abs(i-l.circle.cy)<DS;)o=l.P,s.unshift(l),ug(l),l=o;s.unshift(l),sg(l);for(var c=a;c.circle&&Math.abs(n-c.circle.x)<DS&&Math.abs(i-c.circle.cy)<DS;)a=c.N,s.push(c),ug(c),c=a;s.push(c),sg(c);var u,h=s.length;for(u=1;u<h;++u)c=s[u],l=s[u-1],Yp(c.edge,l.site,c.site,r);l=s[0],c=s[h-1],c.edge=Up(l.site,c.site,null,r),ag(l),ag(c)}function dg(t){for(var e,n,i,r,o=t[0],a=t[1],s=ES._;s;)if((i=fg(s,a)-o)>DS)s=s.L;else{if(!((r=o-pg(s,a))>DS)){i>-DS?(e=s.P,n=s):r>-DS?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}Jp(t);var l=cg(t);if(ES.insert(e,l),e||n){if(e===n)return sg(e),n=cg(e.site),ES.insert(l,n),l.edge=n.edge=Up(e.site,l.site),ag(e),void ag(n);if(!n)return void(l.edge=Up(e.site,l.site));sg(e),sg(n);var c=e.site,u=c[0],h=c[1],d=t[0]-u,f=t[1]-h,p=n.site,g=p[0]-u,m=p[1]-h,v=2*(d*m-f*g),y=d*d+f*f,x=g*g+m*m,b=[(m*y-f*x)/v+u,(d*x-g*y)/v+h];Yp(n.edge,c,p,b),l.edge=Up(c,t,null,b),n.edge=Up(t,p,null,b),ag(e),ag(n)}}function fg(t,e){var n=t.site,i=n[0],r=n[1],o=r-e;if(!o)return i;var a=t.P;if(!a)return-1/0;n=a.site;var s=n[0],l=n[1],c=l-e;if(!c)return s;var u=s-i,h=1/o-1/c,d=u/c;return h?(-d+Math.sqrt(d*d-2*h*(u*u/(-2*c)-l+c/2+r-o/2)))/h+i:(i+s)/2}function pg(t,e){var n=t.N;if(n)return fg(n,e);var i=t.site;return i[1]===e?i[0]:1/0}function gg(t,e,n){return(t[0]-n[0])*(e[1]-t[1])-(t[0]-e[0])*(n[1]-t[1])}function mg(t,e){return e[1]-t[1]||e[0]-t[0]}function vg(t,e){var n,i,r,o=t.sort(mg).pop();for(NS=[],LS=new Array(t.length),ES=new qp,PS=new qp;;)if(r=MS,o&&(!r||o[1]<r.y||o[1]===r.y&&o[0]<r.x))o[0]===n&&o[1]===i||(dg(o),n=o[0],i=o[1]),o=t.pop();else{if(!r)break;hg(r.arc)}if(ig(),e){var a=+e[0][0],s=+e[0][1],l=+e[1][0],c=+e[1][1];Kp(a,s,l,c),rg(a,s,l,c)}this.edges=NS,this.cells=LS,ES=PS=NS=LS=null}function yg(){function t(t){return new vg(t.map(function(i,r){var o=[Math.round(e(i,r,t)/DS)*DS,Math.round(n(i,r,t)/DS)*DS];return o.index=r,o.data=i,o}),i)}var e=Fp,n=zp,i=null;return t.polygons=function(e){return t(e).polygons()},t.links=function(e){return t(e).links()},t.triangles=function(e){return t(e).triangles()},t.x=function(n){return arguments.length?(e="function"==typeof n?n:Vp(+n),t):e},t.y=function(e){return arguments.length?(n="function"==typeof e?e:Vp(+e),t):n},t.extent=function(e){return arguments.length?(i=null==e?null:[[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]],t):i&&[[i[0][0],i[0][1]],[i[1][0],i[1][1]]]},t.size=function(e){return arguments.length?(i=null==e?null:[[0,0],[+e[0],+e[1]]],t):i&&[i[1][0]-i[0][0],i[1][1]-i[0][1]]},t}function xg(t){return function(){return t}}function bg(t,e,n){this.target=t,this.type=e,this.transform=n}function wg(t,e,n){this.k=t,this.x=e,this.y=n}function _g(t){return t.__zoom||HS}function Sg(){t.event.stopImmediatePropagation()}function Cg(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Tg(){return!t.event.button}function kg(){var t,e,n=this;return n instanceof SVGElement?(n=n.ownerSVGElement||n,t=n.width.baseVal.value,e=n.height.baseVal.value):(t=n.clientWidth,e=n.clientHeight),[[0,0],[t,e]]}function Ag(){return this.__zoom||HS}function Mg(){return-t.event.deltaY*(t.event.deltaMode?120:1)/500}function Eg(){return"ontouchstart"in this}function Lg(t,e,n){var i=t.invertX(e[0][0])-n[0][0],r=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}function Pg(){function e(t){t.property("__zoom",Ag).on("wheel.zoom",l).on("mousedown.zoom",c).on("dblclick.zoom",u).filter(b).on("touchstart.zoom",h).on("touchmove.zoom",d).on("touchend.zoom touchcancel.zoom",f).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function n(t,e){return e=Math.max(w[0],Math.min(w[1],e)),e===t.k?t:new wg(e,t.x,t.y)}function i(t,e,n){var i=e[0]-n[0]*t.k,r=e[1]-n[1]*t.k;return i===t.x&&r===t.y?t:new wg(t.k,i,r)}function r(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function o(t,e,n){t.on("start.zoom",function(){a(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){a(this,arguments).end()}).tween("zoom",function(){var t=this,i=arguments,o=a(t,i),s=v.apply(t,i),l=n||r(s),c=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),u=t.__zoom,h="function"==typeof e?e.apply(t,i):e,d=C(u.invert(l).concat(c/u.k),h.invert(l).concat(c/h.k));return function(t){if(1===t)t=h;else{var e=d(t),n=c/e[2];t=new wg(n,l[0]-e[0]*n,l[1]-e[1]*n)}o.zoom(null,t)}})}function a(t,e){for(var n,i=0,r=T.length;i<r;++i)if((n=T[i]).that===t)return n;return new s(t,e)}function s(t,e){this.that=t,this.args=e,this.index=-1,this.active=0,this.extent=v.apply(t,e)}function l(){function t(){e.wheel=null,e.end()}if(m.apply(this,arguments)){var e=a(this,arguments),r=this.__zoom,o=Math.max(w[0],Math.min(w[1],r.k*Math.pow(2,x.apply(this,arguments)))),s=je(this);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=r.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(r.k===o)return;e.mouse=[s,r.invert(s)],wi(this),e.start()}Cg(),e.wheel=setTimeout(t,M),e.zoom("mouse",y(i(n(r,o),e.mouse[0],e.mouse[1]),e.extent,_))}}function c(){function e(){if(Cg(),!r.moved){var e=t.event.clientX-l,n=t.event.clientY-c;r.moved=e*e+n*n>E}r.zoom("mouse",y(i(r.that.__zoom,r.mouse[0]=je(r.that),r.mouse[1]),r.extent,_))}function n(){o.on("mousemove.zoom mouseup.zoom",null),$e(t.event.view,r.moved),Cg(),r.end()}if(!g&&m.apply(this,arguments)){var r=a(this,arguments),o=Ne(t.event.view).on("mousemove.zoom",e,!0).on("mouseup.zoom",n,!0),s=je(this),l=t.event.clientX,c=t.event.clientY;Be(t.event.view),Sg(),r.mouse=[s,this.__zoom.invert(s)],wi(this),r.start()}}function u(){if(m.apply(this,arguments)){var r=this.__zoom,a=je(this),s=r.invert(a),l=r.k*(t.event.shiftKey?.5:2),c=y(i(n(r,l),a,s),v.apply(this,arguments),_);Cg(),S>0?Ne(this).transition().duration(S).call(o,c,a):Ne(this).call(e.transform,c)}}function h(){if(m.apply(this,arguments)){var e,n,i,r,o=a(this,arguments),s=t.event.changedTouches,l=s.length;for(Sg(),n=0;n<l;++n)i=s[n],r=Fe(this,s,i.identifier),r=[r,this.__zoom.invert(r),i.identifier],o.touch0?o.touch1||(o.touch1=r):(o.touch0=r,e=!0);if(p&&(p=clearTimeout(p),!o.touch1))return o.end(),void((r=Ne(this).on("dblclick.zoom"))&&r.apply(this,arguments));e&&(p=setTimeout(function(){p=null},A),wi(this),o.start())}}function d(){var e,r,o,s,l=a(this,arguments),c=t.event.changedTouches,u=c.length;for(Cg(),p&&(p=clearTimeout(p)),e=0;e<u;++e)r=c[e],o=Fe(this,c,r.identifier),l.touch0&&l.touch0[2]===r.identifier?l.touch0[0]=o:l.touch1&&l.touch1[2]===r.identifier&&(l.touch1[0]=o);if(r=l.that.__zoom,l.touch1){var h=l.touch0[0],d=l.touch0[1],f=l.touch1[0],g=l.touch1[1],m=(m=f[0]-h[0])*m+(m=f[1]-h[1])*m,v=(v=g[0]-d[0])*v+(v=g[1]-d[1])*v;r=n(r,Math.sqrt(m/v)),o=[(h[0]+f[0])/2,(h[1]+f[1])/2],s=[(d[0]+g[0])/2,(d[1]+g[1])/2]}else{if(!l.touch0)return;o=l.touch0[0],s=l.touch0[1]}l.zoom("touch",y(i(r,o,s),l.extent,_))}function f(){var e,n,i=a(this,arguments),r=t.event.changedTouches,o=r.length;for(Sg(),g&&clearTimeout(g),g=setTimeout(function(){g=null},A),e=0;e<o;++e)n=r[e],i.touch0&&i.touch0[2]===n.identifier?delete i.touch0:i.touch1&&i.touch1[2]===n.identifier&&delete i.touch1;i.touch1&&!i.touch0&&(i.touch0=i.touch1,delete i.touch1),i.touch0?i.touch0[1]=this.__zoom.invert(i.touch0[0]):i.end()}var p,g,m=Tg,v=kg,y=Lg,x=Mg,b=Eg,w=[0,1/0],_=[[-1/0,-1/0],[1/0,1/0]],S=250,C=Jn,T=[],k=W("start","zoom","end"),A=500,M=150,E=0;return e.transform=function(t,e){var n=t.selection?t.selection():t;n.property("__zoom",Ag),t!==n?o(t,e):n.interrupt().each(function(){a(this,arguments).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()})},e.scaleBy=function(t,n){e.scaleTo(t,function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)})},e.scaleTo=function(t,o){e.transform(t,function(){var t=v.apply(this,arguments),e=this.__zoom,a=r(t),s=e.invert(a),l="function"==typeof o?o.apply(this,arguments):o;return y(i(n(e,l),a,s),t,_)})},e.translateBy=function(t,n,i){e.transform(t,function(){return y(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof i?i.apply(this,arguments):i),v.apply(this,arguments),_)})},e.translateTo=function(t,n,i){e.transform(t,function(){var t=v.apply(this,arguments),e=this.__zoom,o=r(t);return y(HS.translate(o[0],o[1]).scale(e.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof i?-i.apply(this,arguments):-i),t,_)})},s.prototype={start:function(){return 1==++this.active&&(this.index=T.push(this)-1,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(T.splice(this.index,1),this.index=-1,this.emit("end")),this},emit:function(t){Te(new bg(e,t,this.that.__zoom),k.apply,k,[t,this.that,this.args])}},e.wheelDelta=function(t){return arguments.length?(x="function"==typeof t?t:xg(+t),e):x},e.filter=function(t){return arguments.length?(m="function"==typeof t?t:xg(!!t),e):m},e.touchable=function(t){return arguments.length?(b="function"==typeof t?t:xg(!!t),e):b},e.extent=function(t){return arguments.length?(v="function"==typeof t?t:xg([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):v},e.scaleExtent=function(t){return arguments.length?(w[0]=+t[0],w[1]=+t[1],e):[w[0],w[1]]},e.translateExtent=function(t){return arguments.length?(_[0][0]=+t[0][0],_[1][0]=+t[1][0],_[0][1]=+t[0][1],_[1][1]=+t[1][1],e):[[_[0][0],_[0][1]],[_[1][0],_[1][1]]]},e.constrain=function(t){return arguments.length?(y=t,e):y},e.duration=function(t){return arguments.length?(S=+t,e):S},e.interpolate=function(t){return arguments.length?(C=t,e):C},e.on=function(){var t=k.on.apply(k,arguments);return t===k?e:t},e.clickDistance=function(t){return arguments.length?(E=(t=+t)*t,e):Math.sqrt(E)},e}var Ng=n(e),Og=Ng.right,Rg=Ng.left,Dg=Array.prototype,Ig=Dg.slice,Hg=Dg.map,jg=Math.sqrt(50),Vg=Math.sqrt(10),Fg=Math.sqrt(2),zg=Array.prototype.slice,qg=1,Gg=2,Bg=3,$g=4,Wg=1e-6,Ug={value:function(){}};U.prototype=W.prototype={constructor:U,on:function(t,e){var n,i=this._,r=X(t+"",i),o=-1,a=r.length;{if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o<a;)if(n=(t=r[o]).type)i[n]=Q(i[n],t.name,e);else if(null==e)for(n in i)i[n]=Q(i[n],t.name,null);return this}for(;++o<a;)if((n=(t=r[o]).type)&&(n=Y(i[n],t.name)))return n}},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new U(t)},call:function(t,e){
+if((n=arguments.length-2)>0)for(var n,i,r=new Array(n),o=0;o<n;++o)r[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=this._[t],o=0,n=i.length;o<n;++o)i[o].value.apply(e,r)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],r=0,o=i.length;r<o;++r)i[r].value.apply(e,n)}};var Xg="http://www.w3.org/1999/xhtml",Yg={svg:"http://www.w3.org/2000/svg",xhtml:Xg,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},Qg=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var Zg=document.documentElement;if(!Zg.matches){var Kg=Zg.webkitMatchesSelector||Zg.msMatchesSelector||Zg.mozMatchesSelector||Zg.oMatchesSelector;Qg=function(t){return function(){return Kg.call(this,t)}}}}var Jg=Qg;ut.prototype={constructor:ut,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var tm="$";$t.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var em={};if(t.event=null,"undefined"!=typeof document){"onmouseenter"in document.documentElement||(em={mouseenter:"mouseover",mouseleave:"mouseout"})}var nm=[null];Le.prototype=Pe.prototype={constructor:Le,select:it,selectAll:at,filter:st,data:pt,enter:ct,exit:gt,merge:mt,order:vt,sort:yt,call:bt,nodes:wt,node:_t,size:St,empty:Ct,each:Tt,attr:Nt,style:Ht,property:qt,classed:Zt,text:ee,html:oe,raise:se,lower:ce,append:ue,insert:de,remove:pe,clone:ve,datum:ye,on:Ce,dispatch:Ee};var im=0;De.prototype=Re.prototype={constructor:De,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},Ue.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var rm="\\s*([+-]?\\d+)\\s*",om="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",am="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",sm=/^#([0-9a-f]{3})$/,lm=/^#([0-9a-f]{6})$/,cm=new RegExp("^rgb\\("+[rm,rm,rm]+"\\)$"),um=new RegExp("^rgb\\("+[am,am,am]+"\\)$"),hm=new RegExp("^rgba\\("+[rm,rm,rm,om]+"\\)$"),dm=new RegExp("^rgba\\("+[am,am,am,om]+"\\)$"),fm=new RegExp("^hsl\\("+[om,am,am]+"\\)$"),pm=new RegExp("^hsla\\("+[om,am,am,om]+"\\)$"),gm={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Je(en,nn,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),Je(ln,sn,tn(en,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new ln(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new ln(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(1===t?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Je(dn,hn,tn(en,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new dn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new dn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new ln(fn(t>=240?t-240:t+120,r,i),fn(t,r,i),fn(t<120?t+240:t-120,r,i),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var mm=Math.PI/180,vm=180/Math.PI,ym=.95047,xm=1,bm=1.08883,wm=4/29,_m=6/29,Sm=3*_m*_m,Cm=_m*_m*_m;Je(mn,gn,tn(en,{brighter:function(t){return new mn(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new mn(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return t=xm*yn(t),e=ym*yn(e),n=bm*yn(n),new ln(xn(3.2404542*e-1.5371385*t-.4985314*n),xn(-.969266*e+1.8760108*t+.041556*n),xn(.0556434*e-.2040259*t+1.0572252*n),this.opacity)}})),Je(Sn,_n,tn(en,{brighter:function(t){return new Sn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Sn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return pn(this).rgb()}}));var Tm=-.14861,km=1.78277,Am=-.29227,Mm=-.90649,Em=1.97294,Lm=Em*Mm,Pm=Em*km,Nm=km*Am-Mm*Tm;Je(kn,Tn,tn(en,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new kn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new kn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*mm,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),i=Math.cos(t),r=Math.sin(t);return new ln(255*(e+n*(Tm*i+km*r)),255*(e+n*(Am*i+Mm*r)),255*(e+n*(Em*i)),this.opacity)}}));var Om,Rm,Dm,Im,Hm,jm,Vm=function t(e){function n(t,e){var n=i((t=sn(t)).r,(e=sn(e)).r),r=i(t.g,e.g),o=i(t.b,e.b),a=Dn(t.opacity,e.opacity);return function(e){return t.r=n(e),t.g=r(e),t.b=o(e),t.opacity=a(e),t+""}}var i=Rn(e);return n.gamma=t,n}(1),Fm=In(Mn),zm=In(En),qm=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Gm=new RegExp(qm.source,"g"),Bm=180/Math.PI,$m={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},Wm=Yn(Un,"px, ","px)","deg)"),Um=Yn(Xn,", ",")",")"),Xm=Math.SQRT2,Ym=2,Qm=4,Zm=1e-12,Km=ti(On),Jm=ti(Dn),tv=ni(On),ev=ni(Dn),nv=ii(On),iv=ii(Dn),rv=0,ov=0,av=0,sv=1e3,lv=0,cv=0,uv=0,hv="object"==typeof performance&&performance.now?performance:Date,dv="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};si.prototype=li.prototype={constructor:si,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?oi():+n)+(null==e?0:+e),this._next||jm===this||(jm?jm._next=this:Hm=this,jm=this),this._call=t,this._time=n,fi()},stop:function(){this._call&&(this._call=null,this._time=1/0,fi())}};var fv=W("start","end","interrupt"),pv=[],gv=0,mv=1,vv=2,yv=3,xv=4,bv=5,wv=6,_v=Pe.prototype.constructor,Sv=0,Cv=Pe.prototype;fr.prototype=pr.prototype={constructor:fr,select:Ji,selectAll:tr,filter:Wi,merge:Ui,selection:er,transition:dr,call:Cv.call,nodes:Cv.nodes,node:Cv.node,size:Cv.size,empty:Cv.empty,each:Cv.each,on:Qi,attr:Ri,attrTween:Hi,style:ar,styleTween:lr,text:hr,remove:Ki,tween:Ti,delay:Fi,duration:Gi,ease:$i};var Tv=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),kv=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),Av=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),Mv=Math.PI,Ev=Mv/2,Lv=4/11,Pv=6/11,Nv=8/11,Ov=.75,Rv=9/11,Dv=10/11,Iv=.9375,Hv=21/22,jv=63/64,Vv=1/Lv/Lv,Fv=function t(e){function n(t){return t*t*((e+1)*t-e)}return e=+e,n.overshoot=t,n}(1.70158),zv=function t(e){function n(t){return--t*t*((e+1)*t+e)+1}return e=+e,n.overshoot=t,n}(1.70158),qv=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(1.70158),Gv=2*Math.PI,Bv=function t(e,n){function i(t){return e*Math.pow(2,10*--t)*Math.sin((r-t)/n)}var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Gv);return i.amplitude=function(e){return t(e,n*Gv)},i.period=function(n){return t(e,n)},i}(1,.3),$v=function t(e,n){function i(t){return 1-e*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/n)}var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Gv);return i.amplitude=function(e){return t(e,n*Gv)},i.period=function(n){return t(e,n)},i}(1,.3),Wv=function t(e,n){function i(t){return((t=2*t-1)<0?e*Math.pow(2,10*t)*Math.sin((r-t)/n):2-e*Math.pow(2,-10*t)*Math.sin((r+t)/n))/2}var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Gv);return i.amplitude=function(e){return t(e,n*Gv)},i.period=function(n){return t(e,n)},i}(1,.3),Uv={time:null,delay:0,duration:250,ease:_r};Pe.prototype.interrupt=_i,Pe.prototype.transition=Ir;var Xv=[null],Yv={name:"drag"},Qv={name:"space"},Zv={name:"handle"},Kv={name:"center"},Jv={name:"x",handles:["e","w"].map(qr),input:function(t,e){return t&&[[t[0],e[0][1]],[t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ty={name:"y",handles:["n","s"].map(qr),input:function(t,e){return t&&[[e[0][0],t[0]],[e[1][0],t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},ey={name:"xy",handles:["n","e","s","w","nw","ne","se","sw"].map(qr),input:function(t){return t},output:function(t){return t}},ny={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},iy={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},ry={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},oy={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ay={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1},sy=Math.cos,ly=Math.sin,cy=Math.PI,uy=cy/2,hy=2*cy,dy=Math.max,fy=Array.prototype.slice,py=Math.PI,gy=2*py,my=gy-1e-6;eo.prototype=no.prototype={constructor:eo,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,i){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+i)},bezierCurveTo:function(t,e,n,i,r,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +i+","+(this._x1=+r)+","+(this._y1=+o)},arcTo:function(t,e,n,i,r){t=+t,e=+e,n=+n,i=+i,r=+r;var o=this._x1,a=this._y1,s=n-t,l=i-e,c=o-t,u=a-e,h=c*c+u*u;if(r<0)throw new Error("negative radius: "+r);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(h>1e-6)if(Math.abs(u*s-l*c)>1e-6&&r){var d=n-o,f=i-a,p=s*s+l*l,g=d*d+f*f,m=Math.sqrt(p),v=Math.sqrt(h),y=r*Math.tan((py-Math.acos((p+h-g)/(2*m*v)))/2),x=y/v,b=y/m;Math.abs(x-1)>1e-6&&(this._+="L"+(t+x*c)+","+(e+x*u)),this._+="A"+r+","+r+",0,0,"+ +(u*d>c*f)+","+(this._x1=t+b*s)+","+(this._y1=e+b*l)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,i,r,o){t=+t,e=+e,n=+n;var a=n*Math.cos(i),s=n*Math.sin(i),l=t+a,c=e+s,u=1^o,h=o?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+l+","+c),n&&(h<0&&(h=h%gy+gy),h>my?this._+="A"+n+","+n+",0,1,"+u+","+(t-a)+","+(e-s)+"A"+n+","+n+",0,1,"+u+","+(this._x1=l)+","+(this._y1=c):h>1e-6&&(this._+="A"+n+","+n+",0,"+ +(h>=py)+","+u+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))))},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};co.prototype=uo.prototype={constructor:co,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,e){return this["$"+t]=e,this},remove:function(t){var e="$"+t;return e in this&&delete this[e]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)"$"===e[0]&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)"$"===e[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var e in this)"$"===e[0]&&t(this[e],e.slice(1),this)}};var vy=uo.prototype;vo.prototype=yo.prototype={constructor:vo,has:vy.has,add:function(t){return t+="",this["$"+t]=t,this},remove:vy.remove,clear:vy.clear,values:vy.keys,size:vy.size,empty:vy.empty,each:vy.each};var yy={},xy={},by=34,wy=10,_y=13,Sy=To(","),Cy=Sy.parse,Ty=Sy.parseRows,ky=Sy.format,Ay=Sy.formatRows,My=To("\t"),Ey=My.parse,Ly=My.parseRows,Py=My.format,Ny=My.formatRows,Oy=Uo.prototype=Xo.prototype;Oy.copy=function(){var t,e,n=new Xo(this._x,this._y,this._x0,this._y0,this._x1,this._y1),i=this._root;if(!i)return n;if(!i.length)return n._root=Yo(i),n;for(t=[{source:i,target:n._root=new Array(4)}];i=t.pop();)for(var r=0;r<4;++r)(e=i.source[r])&&(e.length?t.push({source:e,target:i.target[r]=new Array(4)}):i.target[r]=Yo(e));return n},Oy.add=Eo,Oy.addAll=Po,Oy.cover=No,Oy.data=Oo,Oy.extent=Ro,Oy.find=Io,Oy.remove=Ho,Oy.removeAll=jo,Oy.root=Vo,Oy.size=Fo,Oy.visit=zo,Oy.visitAfter=qo,Oy.x=Bo,Oy.y=Wo;var Ry,Dy=10,Iy=Math.PI*(3-Math.sqrt(5)),Hy={"":fa,"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return ga(100*t,e)},r:ga,s:pa,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},jy=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;ma.prototype=va.prototype,va.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Vy,Fy=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];ba({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),Ta.prototype={constructor:Ta,reset:function(){this.s=this.t=0},add:function(t){ka(yx,t,this.t),ka(this,yx.s,this.s),this.s?this.t+=yx.t:this.s=yx.t},valueOf:function(){return this.s}};var zy,qy,Gy,By,$y,Wy,Uy,Xy,Yy,Qy,Zy,Ky,Jy,tx,ex,nx,ix,rx,ox,ax,sx,lx,cx,ux,hx,dx,fx,px,gx,mx,vx,yx=new Ta,xx=1e-6,bx=1e-12,wx=Math.PI,_x=wx/2,Sx=wx/4,Cx=2*wx,Tx=180/wx,kx=wx/180,Ax=Math.abs,Mx=Math.atan,Ex=Math.atan2,Lx=Math.cos,Px=Math.ceil,Nx=Math.exp,Ox=Math.log,Rx=Math.pow,Dx=Math.sin,Ix=Math.sign||function(t){return t>0?1:t<0?-1:0},Hx=Math.sqrt,jx=Math.tan,Vx={Feature:function(t,e){Pa(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i<r;)Pa(n[i].geometry,e)}},Fx={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)t=n[i],e.point(t[0],t[1],t[2])},LineString:function(t,e){Na(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)Na(n[i],e,0)},Polygon:function(t,e){Oa(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)Oa(n[i],e)},GeometryCollection:function(t,e){for(var n=t.geometries,i=-1,r=n.length;++i<r;)Pa(n[i],e)}},zx=Ca(),qx=Ca(),Gx={point:La,lineStart:La,lineEnd:La,polygonStart:function(){zx.reset(),Gx.lineStart=Da,Gx.lineEnd=Ia},polygonEnd:function(){var t=+zx;qx.add(t<0?Cx+t:t),this.lineStart=this.lineEnd=this.point=La},sphere:function(){qx.add(Cx)}},Bx=Ca(),$x={point:Ua,lineStart:Ya,lineEnd:Qa,polygonStart:function(){$x.point=Za,$x.lineStart=Ka,$x.lineEnd=Ja,Bx.reset(),Gx.polygonStart()},polygonEnd:function(){Gx.polygonEnd(),$x.point=Ua,$x.lineStart=Ya,$x.lineEnd=Qa,zx<0?(Wy=-(Xy=180),Uy=-(Yy=90)):Bx>xx?Yy=90:Bx<-xx&&(Uy=-90),ex[0]=Wy,ex[1]=Xy}},Wx={sphere:La,point:rs,lineStart:as,lineEnd:cs,polygonStart:function(){Wx.lineStart=us,Wx.lineEnd=hs},polygonEnd:function(){Wx.lineStart=as,Wx.lineEnd=cs}};vs.invert=vs;var Ux,Xx,Yx,Qx,Zx,Kx,Jx,tb,eb,nb,ib,rb=Ca(),ob=Ns(function(){return!0},Ds,Hs,[-wx,-_x]),ab=1e9,sb=-ab,lb=Ca(),cb={sphere:La,point:La,lineStart:qs,lineEnd:La,polygonStart:La,polygonEnd:La},ub=[null,null],hb={type:"LineString",coordinates:ub},db={Feature:function(t,e){return Xs(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i<r;)if(Xs(n[i].geometry,e))return!0;return!1}},fb={Sphere:function(){return!0},Point:function(t,e){return Ys(t.coordinates,e)},MultiPoint:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)if(Ys(n[i],e))return!0;return!1},LineString:function(t,e){return Qs(t.coordinates,e)},MultiLineString:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)if(Qs(n[i],e))return!0;return!1},Polygon:function(t,e){return Zs(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)if(Zs(n[i],e))return!0;return!1},GeometryCollection:function(t,e){for(var n=t.geometries,i=-1,r=n.length;++i<r;)if(Xs(n[i],e))return!0;return!1}},pb=Ca(),gb=Ca(),mb={point:La,lineStart:La,lineEnd:La,polygonStart:function(){mb.lineStart=sl,mb.lineEnd=ul},polygonEnd:function(){mb.lineStart=mb.lineEnd=mb.point=La,pb.add(Ax(gb)),gb.reset()},result:function(){var t=pb/2;return pb.reset(),t}},vb=1/0,yb=vb,xb=-vb,bb=xb,wb={point:hl,lineStart:La,lineEnd:La,polygonStart:La,polygonEnd:La,result:function(){var t=[[vb,yb],[xb,bb]];return xb=bb=-(yb=vb=1/0),t}},_b=0,Sb=0,Cb=0,Tb=0,kb=0,Ab=0,Mb=0,Eb=0,Lb=0,Pb={point:dl,lineStart:fl,lineEnd:ml,polygonStart:function(){Pb.lineStart=vl,Pb.lineEnd=yl},polygonEnd:function(){Pb.point=dl,Pb.lineStart=fl,Pb.lineEnd=ml},result:function(){var t=Lb?[Mb/Lb,Eb/Lb]:Ab?[Tb/Ab,kb/Ab]:Cb?[_b/Cb,Sb/Cb]:[NaN,NaN];return _b=Sb=Cb=Tb=kb=Ab=Mb=Eb=Lb=0,t}};wl.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,Cx)}},result:La};var Nb,Ob,Rb,Db,Ib,Hb=Ca(),jb={point:La,lineStart:function(){jb.point=_l},lineEnd:function(){Nb&&Sl(Ob,Rb),jb.point=La},polygonStart:function(){Nb=!0},polygonEnd:function(){Nb=null},result:function(){var t=+Hb;return Hb.reset(),t}};Cl.prototype={_radius:4.5,_circle:Tl(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=Tl(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},El.prototype={constructor:El,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vb=16,Fb=Lx(30*kx),zb=Ml({point:function(t,e){this.stream.point(t*kx,e*kx)}}),qb=Xl(function(t){return Hx(2/(1+t))});qb.invert=Yl(function(t){return 2*Ma(t/2)});var Gb=Xl(function(t){return(t=Aa(t))&&t/Dx(t)});Gb.invert=Yl(function(t){return t}),Kl.invert=function(t,e){return[t,2*Mx(Nx(e))-_x]},rc.invert=rc,lc.invert=Yl(Mx),dc.invert=function(t,e){var n,i=e,r=25;do{var o=i*i,a=o*o;i-=n=(i*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-e)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Ax(n)>xx&&--r>0);return[t/(.8707+(o=i*i)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),i]},pc.invert=Yl(Ma),mc.invert=Yl(function(t){return 2*Mx(t)}),yc.invert=function(t,e){return[-e,2*Mx(Nx(t))-_x]},Wc.prototype=zc.prototype={constructor:Wc,count:Ec,each:Lc,eachAfter:Nc,eachBefore:Pc,sum:Oc,sort:Rc,path:Dc,ancestors:Hc,descendants:jc,leaves:Vc,links:Fc,copy:qc};var Bb=Array.prototype.slice,$b="$",Wb={depth:-1},Ub={};Lu.prototype=Object.create(Wc.prototype);var Xb=(1+Math.sqrt(5))/2,Yb=function t(e){function n(t,n,i,r,o){Ru(e,t,n,i,r,o)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(Xb),Qb=function t(e){function n(t,n,i,r,o){if((a=t._squarify)&&a.ratio===e)for(var a,s,l,c,u,h=-1,d=a.length,f=t.value;++h<d;){for(s=a[h],l=s.children,c=s.value=0,u=l.length;c<u;++c)s.value+=l[c].value;s.dice?xu(s,n,i,r,i+=(o-i)*s.value/f):Ou(s,n,i,n+=(r-n)*s.value/f,o),f-=s.value}else t._squarify=a=Ru(e,t,n,i,r,o),a.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(Xb),Zb=[].slice,Kb={};Wu.prototype=Ku.prototype={constructor:Wu,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var e=Zb.call(arguments,1);return e.push(t),++this._waiting,this._tasks.push(e),Uu(this),this},abort:function(){return null==this._error&&Qu(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(e,n){t.apply(null,[e].concat(n))},Zu(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,Zu(this),this}};var Jb=function t(e){function n(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return e()*n+t}}return n.source=t,n}(Ju),tw=function t(e){function n(t,n){var i,r;return t=null==t?0:+t,n=null==n?1:+n,function(){var o;if(null!=i)o=i,i=null;else do{i=2*e()-1,o=2*e()-1,r=i*i+o*o}while(!r||r>1);return t+n*o*Math.sqrt(-2*Math.log(r)/r)}}return n.source=t,n}(Ju),ew=function t(e){function n(){var t=tw.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Ju),nw=function t(e){function n(t){return function(){for(var n=0,i=0;i<t;++i)n+=e();return n}}return n.source=t,n}(Ju),iw=function t(e){function n(t){var n=nw.source(e)(t);return function(){return n()/t}}return n.source=t,n}(Ju),rw=function t(e){function n(t){return function(){return-Math.log(1-e())/t}}return n.source=t,n}(Ju),ow=ih("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),aw=ih("application/json",function(t){return JSON.parse(t.responseText)}),sw=ih("text/plain",function(t){return t.responseText}),lw=ih("application/xml",function(t){var e=t.responseXML;if(!e)throw new Error("parse error");return e}),cw=rh("text/csv",Cy),uw=rh("text/tab-separated-values",Ey),hw=Array.prototype,dw=hw.map,fw=hw.slice,pw={name:"implicit"},gw=[0,1],mw=new Date,vw=new Date,yw=Hh(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});yw.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Hh(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):yw:null};var xw=yw.range,bw=6e4,ww=6048e5,_w=Hh(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),Sw=_w.range,Cw=Hh(function(t){t.setTime(Math.floor(t/bw)*bw)},function(t,e){t.setTime(+t+e*bw)},function(t,e){return(e-t)/bw},function(t){return t.getMinutes()}),Tw=Cw.range,kw=Hh(function(t){var e=t.getTimezoneOffset()*bw%36e5;e<0&&(e+=36e5),t.setTime(36e5*Math.floor((+t-e)/36e5)+e)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),Aw=kw.range,Mw=Hh(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*bw)/864e5},function(t){return t.getDate()-1}),Ew=Mw.range,Lw=jh(0),Pw=jh(1),Nw=jh(2),Ow=jh(3),Rw=jh(4),Dw=jh(5),Iw=jh(6),Hw=Lw.range,jw=Pw.range,Vw=Nw.range,Fw=Ow.range,zw=Rw.range,qw=Dw.range,Gw=Iw.range,Bw=Hh(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),$w=Bw.range,Ww=Hh(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Ww.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Hh(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var Uw=Ww.range,Xw=Hh(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*bw)},function(t,e){return(e-t)/bw},function(t){return t.getUTCMinutes()}),Yw=Xw.range,Qw=Hh(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()}),Zw=Qw.range,Kw=Hh(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1}),Jw=Kw.range,t_=Vh(0),e_=Vh(1),n_=Vh(2),i_=Vh(3),r_=Vh(4),o_=Vh(5),a_=Vh(6),s_=t_.range,l_=e_.range,c_=n_.range,u_=i_.range,h_=r_.range,d_=o_.range,f_=a_.range,p_=Hh(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),g_=p_.range,m_=Hh(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});m_.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Hh(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var v_,y_=m_.range,x_={"-":"",_:" ",0:"0"},b_=/^\s*\d+/,w_=/^%/,__=/[\\^$*+?|[\]().{}]/g;Qd({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})
+;var S_=Date.prototype.toISOString?Zd:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ"),C_=+new Date("2000-01-01T00:00:00.000Z")?Kd:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),T_=1e3,k_=60*T_,A_=60*k_,M_=24*A_,E_=7*M_,L_=30*M_,P_=365*M_,N_=of("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),O_=of("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),R_=of("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),D_=of("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),I_=iv(Tn(300,.5,0),Tn(-240,.5,1)),H_=iv(Tn(-100,.75,.35),Tn(80,1.5,.8)),j_=iv(Tn(260,.75,.35),Tn(80,1.5,.8)),V_=Tn(),F_=sf(of("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),z_=sf(of("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),q_=sf(of("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),G_=sf(of("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),B_=Math.abs,$_=Math.atan2,W_=Math.cos,U_=Math.max,X_=Math.min,Y_=Math.sin,Q_=Math.sqrt,Z_=1e-12,K_=Math.PI,J_=K_/2,tS=2*K_;bf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var eS=Lf(wf);Ef.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var nS=Array.prototype.slice,iS={draw:function(t,e){var n=Math.sqrt(e/K_);t.moveTo(n,0),t.arc(0,0,n,0,tS)}},rS={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},oS=Math.sqrt(1/3),aS=2*oS,sS={draw:function(t,e){var n=Math.sqrt(e/aS),i=n*oS;t.moveTo(0,-n),t.lineTo(i,0),t.lineTo(0,n),t.lineTo(-i,0),t.closePath()}},lS=Math.sin(K_/10)/Math.sin(7*K_/10),cS=Math.sin(tS/10)*lS,uS=-Math.cos(tS/10)*lS,hS={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),i=cS*n,r=uS*n;t.moveTo(0,-n),t.lineTo(i,r);for(var o=1;o<5;++o){var a=tS*o/5,s=Math.cos(a),l=Math.sin(a);t.lineTo(l*n,-s*n),t.lineTo(s*i-l*r,l*i+s*r)}t.closePath()}},dS={draw:function(t,e){var n=Math.sqrt(e),i=-n/2;t.rect(i,i,n,n)}},fS=Math.sqrt(3),pS={draw:function(t,e){var n=-Math.sqrt(e/(3*fS));t.moveTo(0,2*n),t.lineTo(-fS*n,-n),t.lineTo(fS*n,-n),t.closePath()}},gS=-.5,mS=Math.sqrt(3)/2,vS=1/Math.sqrt(12),yS=3*(vS/2+1),xS={draw:function(t,e){var n=Math.sqrt(e/yS),i=n/2,r=n*vS,o=i,a=n*vS+n,s=-o,l=a;t.moveTo(i,r),t.lineTo(o,a),t.lineTo(s,l),t.lineTo(gS*i-mS*r,mS*i+gS*r),t.lineTo(gS*o-mS*a,mS*o+gS*a),t.lineTo(gS*s-mS*l,mS*s+gS*l),t.lineTo(gS*i+mS*r,gS*r-mS*i),t.lineTo(gS*o+mS*a,gS*a-mS*o),t.lineTo(gS*s+mS*l,gS*l-mS*s),t.closePath()}},bS=[iS,rS,sS,dS,hS,pS,xS];Uf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Wf(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Wf(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Yf.prototype={areaStart:$f,areaEnd:$f,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Wf(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Zf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:Wf(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Jf.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i,r=t[0],o=e[0],a=t[n]-r,s=e[n]-o,l=-1;++l<=n;)i=l/n,this._basis.point(this._beta*t[l]+(1-this._beta)*(r+i*a),this._beta*e[l]+(1-this._beta)*(o+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var wS=function t(e){function n(t){return 1===e?new Uf(t):new Jf(t,e)}return n.beta=function(e){return t(+e)},n}(.85);ep.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:tp(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:tp(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _S=function t(e){function n(t){return new ep(t,e)}return n.tension=function(e){return t(+e)},n}(0);np.prototype={areaStart:$f,areaEnd:$f,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:tp(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var SS=function t(e){function n(t){return new np(t,e)}return n.tension=function(e){return t(+e)},n}(0);ip.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:tp(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var CS=function t(e){function n(t){return new ip(t,e)}return n.tension=function(e){return t(+e)},n}(0);op.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:rp(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var TS=function t(e){function n(t){return e?new op(t,e):new ep(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);ap.prototype={areaStart:$f,areaEnd:$f,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:rp(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kS=function t(e){function n(t){return e?new ap(t,e):new np(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);sp.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:rp(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var AS=function t(e){function n(t){return e?new sp(t,e):new ip(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);lp.prototype={areaStart:$f,areaEnd:$f,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},pp.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:fp(this,this._t0,dp(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,t!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,fp(this,dp(this,n=hp(this,t,e)),n);break;default:fp(this,this._t0,n=hp(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(gp.prototype=Object.create(pp.prototype)).point=function(t,e){pp.prototype.point.call(this,e,t)},mp.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,i,r,o){this._context.bezierCurveTo(e,t,i,n,o,r)}},xp.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var i=bp(t),r=bp(e),o=0,a=1;a<n;++o,++a)this._context.bezierCurveTo(i[0][o],r[0][o],i[1][o],r[1][o],t[a],e[a]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},_p.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},qp.prototype={constructor:qp,insert:function(t,e){var n,i,r;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=Wp(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)i=n.U,n===i.L?(r=i.R,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.R&&(Bp(this,n),t=n,n=t.U),n.C=!1,i.C=!0,$p(this,i))):(r=i.L,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.L&&($p(this,n),t=n,n=t.U),n.C=!1,i.C=!0,Bp(this,i))),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,i,r=t.U,o=t.L,a=t.R;if(n=o?a?Wp(a):o:a,r?r.L===t?r.L=n:r.R=n:this._=n,o&&a?(i=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(r=n.U,n.U=t.U,t=n.R,r.L=t,n.R=a,a.U=n):(n.U=r,r=n,t=n.R)):(i=t.C,t=n),t&&(t.U=r),!i){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===r.L){if(e=r.R,e.C&&(e.C=!1,r.C=!0,Bp(this,r),e=r.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,$p(this,e),e=r.R),e.C=r.C,r.C=e.R.C=!1,Bp(this,r),t=this._;break}}else if(e=r.L,e.C&&(e.C=!1,r.C=!0,$p(this,r),e=r.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,Bp(this,e),e=r.L),e.C=r.C,r.C=e.L.C=!1,$p(this,r),t=this._;break}e.C=!0,t=r,r=r.U}while(!t.C);t&&(t.C=!1)}}};var MS,ES,LS,PS,NS,OS=[],RS=[],DS=1e-6,IS=1e-12;vg.prototype={constructor:vg,polygons:function(){var t=this.edges;return this.cells.map(function(e){var n=e.halfedges.map(function(n){return eg(e,t[n])});return n.data=e.site.data,n})},triangles:function(){var t=[],e=this.edges;return this.cells.forEach(function(n,i){if(o=(r=n.halfedges).length)for(var r,o,a,s=n.site,l=-1,c=e[r[o-1]],u=c.left===s?c.right:c.left;++l<o;)a=u,c=e[r[l]],u=c.left===s?c.right:c.left,a&&u&&i<a.index&&i<u.index&&gg(s,a,u)<0&&t.push([s.data,a.data,u.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,e,n){for(var i,r,o=this,a=o._found||0,s=o.cells.length;!(r=o.cells[a]);)if(++a>=s)return null;var l=t-r.site[0],c=e-r.site[1],u=l*l+c*c;do{r=o.cells[i=a],a=null,r.halfedges.forEach(function(n){var i=o.edges[n],s=i.left;if(s!==r.site&&s||(s=i.right)){var l=t-s[0],c=e-s[1],h=l*l+c*c;h<u&&(u=h,a=s.index)}})}while(null!==a);return o._found=i,null==n||u<=n*n?r.site:null}},wg.prototype={constructor:wg,scale:function(t){return 1===t?this:new wg(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new wg(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var HS=new wg(1,0,0);_g.prototype=wg.prototype,t.version="4.13.0",t.bisect=Og,t.bisectRight=Og,t.bisectLeft=Rg,t.ascending=e,t.bisector=n,t.cross=a,t.descending=s,t.deviation=u,t.extent=h,t.histogram=x,t.thresholdFreedmanDiaconis=w,t.thresholdScott=_,t.thresholdSturges=y,t.max=S,t.mean=C,t.median=T,t.merge=k,t.min=A,t.pairs=r,t.permute=M,t.quantile=b,t.range=p,t.scan=E,t.shuffle=L,t.sum=P,t.ticks=g,t.tickIncrement=m,t.tickStep=v,t.transpose=N,t.variance=c,t.zip=R,t.axisTop=q,t.axisRight=G,t.axisBottom=B,t.axisLeft=$,t.brush=Qr,t.brushX=Xr,t.brushY=Yr,t.brushSelection=Ur,t.chord=Jr,t.ribbon=lo,t.nest=ho,t.set=yo,t.map=uo,t.keys=xo,t.values=bo,t.entries=wo,t.color=nn,t.rgb=sn,t.hsl=hn,t.lab=gn,t.hcl=_n,t.cubehelix=Tn,t.dispatch=W,t.drag=Ke,t.dragDisable=Be,t.dragEnable=$e,t.dsvFormat=To,t.csvParse=Cy,t.csvParseRows=Ty,t.csvFormat=ky,t.csvFormatRows=Ay,t.tsvParse=Ey,t.tsvParseRows=Ly,t.tsvFormat=Py,t.tsvFormatRows=Ny,t.easeLinear=mr,t.easeQuad=xr,t.easeQuadIn=vr,t.easeQuadOut=yr,t.easeQuadInOut=xr,t.easeCubic=_r,t.easeCubicIn=br,t.easeCubicOut=wr,t.easeCubicInOut=_r,t.easePoly=Av,t.easePolyIn=Tv,t.easePolyOut=kv,t.easePolyInOut=Av,t.easeSin=Tr,t.easeSinIn=Sr,t.easeSinOut=Cr,t.easeSinInOut=Tr,t.easeExp=Mr,t.easeExpIn=kr,t.easeExpOut=Ar,t.easeExpInOut=Mr,t.easeCircle=Pr,t.easeCircleIn=Er,t.easeCircleOut=Lr,t.easeCircleInOut=Pr,t.easeBounce=Or,t.easeBounceIn=Nr,t.easeBounceOut=Or,t.easeBounceInOut=Rr,t.easeBack=qv,t.easeBackIn=Fv,t.easeBackOut=zv,t.easeBackInOut=qv,t.easeElastic=$v,t.easeElasticIn=Bv,t.easeElasticOut=$v,t.easeElasticInOut=Wv,t.forceCenter=ko,t.forceCollide=Ko,t.forceLink=ea,t.forceManyBody=oa,t.forceRadial=aa,t.forceSimulation=ra,t.forceX=sa,t.forceY=la,t.formatDefaultLocale=ba,t.formatLocale=xa,t.formatSpecifier=ma,t.precisionFixed=wa,t.precisionPrefix=_a,t.precisionRound=Sa,t.geoArea=Va,t.geoBounds=is,t.geoCentroid=ps,t.geoCircle=Ts,t.geoClipAntimeridian=ob,t.geoClipCircle=js,t.geoClipExtent=zs,t.geoClipRectangle=Fs,t.geoContains=tl,t.geoDistance=Us,t.geoGraticule=il,t.geoGraticule10=rl,t.geoInterpolate=ol,t.geoLength=Ws,t.geoPath=kl,t.geoAlbers=$l,t.geoAlbersUsa=Ul,t.geoAzimuthalEqualArea=Ql,t.geoAzimuthalEqualAreaRaw=qb,t.geoAzimuthalEquidistant=Zl,t.geoAzimuthalEquidistantRaw=Gb,t.geoConicConformal=ic,t.geoConicConformalRaw=nc,t.geoConicEqualArea=Bl,t.geoConicEqualAreaRaw=Gl,t.geoConicEquidistant=sc,t.geoConicEquidistantRaw=ac,t.geoEquirectangular=oc,t.geoEquirectangularRaw=rc,t.geoGnomonic=cc,t.geoGnomonicRaw=lc,t.geoIdentity=hc,t.geoProjection=Vl,t.geoProjectionMutator=Fl,t.geoMercator=Jl,t.geoMercatorRaw=Kl,t.geoNaturalEarth1=fc,t.geoNaturalEarth1Raw=dc,t.geoOrthographic=gc,t.geoOrthographicRaw=pc,t.geoStereographic=vc,t.geoStereographicRaw=mc,t.geoTransverseMercator=xc,t.geoTransverseMercatorRaw=yc,t.geoRotation=_s,t.geoStream=Ra,t.geoTransform=Al,t.cluster=Ac,t.hierarchy=zc,t.pack=pu,t.packSiblings=lu,t.packEnclose=Xc,t.partition=bu,t.stratify=Su,t.tree=Nu,t.treemap=Du,t.treemapBinary=Iu,t.treemapDice=xu,t.treemapSlice=Ou,t.treemapSliceDice=Hu,t.treemapSquarify=Yb,t.treemapResquarify=Qb,t.interpolate=Bn,t.interpolateArray=Hn,t.interpolateBasis=Mn,t.interpolateBasisClosed=En,t.interpolateDate=jn,t.interpolateNumber=Vn,t.interpolateObject=Fn,t.interpolateRound=$n,t.interpolateString=Gn,t.interpolateTransformCss=Wm,t.interpolateTransformSvg=Um,t.interpolateZoom=Jn,t.interpolateRgb=Vm,t.interpolateRgbBasis=Fm,t.interpolateRgbBasisClosed=zm,t.interpolateHsl=Km,t.interpolateHslLong=Jm,t.interpolateLab=ei,t.interpolateHcl=tv;t.interpolateHclLong=ev,t.interpolateCubehelix=nv,t.interpolateCubehelixLong=iv,t.quantize=ri,t.path=no,t.polygonArea=ju,t.polygonCentroid=Vu,t.polygonHull=Gu,t.polygonContains=Bu,t.polygonLength=$u,t.quadtree=Uo,t.queue=Ku,t.randomUniform=Jb,t.randomNormal=tw,t.randomLogNormal=ew,t.randomBates=iw,t.randomIrwinHall=nw,t.randomExponential=rw,t.request=th,t.html=ow,t.json=aw,t.text=sw,t.xml=lw,t.csv=cw,t.tsv=uw,t.scaleBand=sh,t.scalePoint=ch,t.scaleIdentity=_h,t.scaleLinear=wh,t.scaleLog=Lh,t.scaleOrdinal=ah,t.scaleImplicit=pw,t.scalePow=Nh,t.scaleSqrt=Oh,t.scaleQuantile=Rh,t.scaleQuantize=Dh,t.scaleThreshold=Ih,t.scaleTime=nf,t.scaleUtc=rf,t.schemeCategory10=N_,t.schemeCategory20b=O_,t.schemeCategory20c=R_,t.schemeCategory20=D_,t.interpolateCubehelixDefault=I_,t.interpolateRainbow=af,t.interpolateWarm=H_,t.interpolateCool=j_,t.interpolateViridis=F_,t.interpolateMagma=z_,t.interpolateInferno=q_,t.interpolatePlasma=G_,t.scaleSequential=lf,t.create=Oe,t.creator=tt,t.local=Re,t.matcher=Jg,t.mouse=je,t.namespace=Z,t.namespaces=Yg,t.clientPoint=He,t.select=Ne,t.selectAll=Ve,t.selection=Pe,t.selector=nt,t.selectorAll=ot,t.style=jt,t.touch=Fe,t.touches=ze,t.window=Ot,t.customEvent=Te,t.arc=xf,t.area=Tf,t.line=Cf,t.pie=Mf,t.areaRadial=Of,t.radialArea=Of,t.lineRadial=Nf,t.radialLine=Nf,t.pointRadial=Rf,t.linkHorizontal=zf,t.linkVertical=qf,t.linkRadial=Gf,t.symbol=Bf,t.symbols=bS,t.symbolCircle=iS,t.symbolCross=rS,t.symbolDiamond=sS,t.symbolSquare=dS,t.symbolStar=hS,t.symbolTriangle=pS,t.symbolWye=xS,t.curveBasisClosed=Qf,t.curveBasisOpen=Kf,t.curveBasis=Xf,t.curveBundle=wS,t.curveCardinalClosed=SS,t.curveCardinalOpen=CS,t.curveCardinal=_S,t.curveCatmullRomClosed=kS,t.curveCatmullRomOpen=AS,t.curveCatmullRom=TS,t.curveLinearClosed=cp,t.curveLinear=wf,t.curveMonotoneX=vp,t.curveMonotoneY=yp,t.curveNatural=wp,t.curveStep=Sp,t.curveStepAfter=Tp,t.curveStepBefore=Cp,t.stack=Ep,t.stackOffsetExpand=Lp,t.stackOffsetDiverging=Pp,t.stackOffsetNone=kp,t.stackOffsetSilhouette=Np,t.stackOffsetWiggle=Op,t.stackOrderAscending=Rp,t.stackOrderDescending=Ip,t.stackOrderInsideOut=Hp,t.stackOrderNone=Ap,t.stackOrderReverse=jp,t.timeInterval=Hh,t.timeMillisecond=yw,t.timeMilliseconds=xw,t.utcMillisecond=yw,t.utcMilliseconds=xw,t.timeSecond=_w,t.timeSeconds=Sw,t.utcSecond=_w,t.utcSeconds=Sw,t.timeMinute=Cw,t.timeMinutes=Tw,t.timeHour=kw,t.timeHours=Aw,t.timeDay=Mw,t.timeDays=Ew,t.timeWeek=Lw,t.timeWeeks=Hw,t.timeSunday=Lw,t.timeSundays=Hw,t.timeMonday=Pw,t.timeMondays=jw,t.timeTuesday=Nw,t.timeTuesdays=Vw,t.timeWednesday=Ow,t.timeWednesdays=Fw,t.timeThursday=Rw,t.timeThursdays=zw,t.timeFriday=Dw,t.timeFridays=qw,t.timeSaturday=Iw,t.timeSaturdays=Gw,t.timeMonth=Bw,t.timeMonths=$w,t.timeYear=Ww,t.timeYears=Uw,t.utcMinute=Xw,t.utcMinutes=Yw,t.utcHour=Qw,t.utcHours=Zw,t.utcDay=Kw,t.utcDays=Jw,t.utcWeek=t_,t.utcWeeks=s_,t.utcSunday=t_,t.utcSundays=s_,t.utcMonday=e_,t.utcMondays=l_,t.utcTuesday=n_,t.utcTuesdays=c_,t.utcWednesday=i_,t.utcWednesdays=u_,t.utcThursday=r_,t.utcThursdays=h_,t.utcFriday=o_,t.utcFridays=d_,t.utcSaturday=a_,t.utcSaturdays=f_,t.utcMonth=p_,t.utcMonths=g_,t.utcYear=m_,t.utcYears=y_,t.timeFormatDefaultLocale=Qd,t.timeFormatLocale=Gh,t.isoFormat=S_,t.isoParse=C_,t.now=oi,t.timer=li,t.timerFlush=ci,t.timeout=pi,t.interval=gi,t.transition=pr,t.active=Hr,t.interrupt=wi,t.voronoi=yg,t.zoom=Pg,t.zoomTransform=_g,t.zoomIdentity=HS,Object.defineProperty(t,"__esModule",{value:!0})}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("c3",e):t.c3=e()}(this,function(){"use strict";function t(t,e){var n=this;n.component=t,n.params=e||{},n.d3=t.d3,n.scale=n.d3.scaleLinear(),n.range,n.orient="bottom",n.innerTickSize=6,n.outerTickSize=this.params.withOuterTick?6:0,n.tickPadding=3,n.tickValues=null,n.tickFormat,n.tickArguments,n.tickOffset=0,n.tickCulling=!0,n.tickCentered,n.tickTextCharSize,n.tickTextRotate=n.params.tickTextRotate,n.tickLength,n.axis=n.generateAxis()}function e(t,e,n){this.owner=t,P.chart.internal[e]=n}function n(t){var e=this.internal=new i(this);e.loadConfig(t),e.beforeInit(t),e.init(),e.afterInit(t),function t(e,n,i){Object.keys(e).forEach(function(r){n[r]=e[r].bind(i),Object.keys(e[r]).length>0&&t(e[r],n[r],i)})}(E,this,this)}function i(t){var e=this;e.d3=window.d3?window.d3:"undefined"!=typeof require?require("d3"):void 0,e.api=t,e.config=e.getDefaultConfig(),e.data={},e.cache={},e.axes={}}var r,o,a={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",
+chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcLabelLine:"c3-arc-label-line",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"},s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},c=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},u=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)},h=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},d=function(t){return Array.isArray(t)?t:Array.from(t)},f=function(t){return t||0===t},p=function(t){return"function"==typeof t},g=function(t){return Array.isArray(t)},m=function(t){return"string"==typeof t},v=function(t){return void 0===t},y=function(t){return void 0!==t},x=function(t){return 10*Math.ceil(t/10)},b=function(t){return Math.ceil(t)+.5},w=function(t){return t[1]-t[0]},_=function(t){return void 0===t||null===t||m(t)&&0===t.length||"object"===(void 0===t?"undefined":s(t))&&0===Object.keys(t).length},S=function(t){return!L.isEmpty(t)},C=function(t,e,n){return y(t[e])?t[e]:n},T=function(t,e){var n=!1;return Object.keys(t).forEach(function(i){t[i]===e&&(n=!0)}),n},k=function(t){return"string"==typeof t?t.replace(/</g,"&lt;").replace(/>/g,"&gt;"):t},A=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)];return{x:n[0].x,y:Math.min(n[0].y,n[1].y),width:e.width,height:e.height}};o=t.prototype,o.axisX=function(t,e,n){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+n)+", 0)"})},o.axisY=function(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})},o.scaleExtent=function(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]},o.generateTicks=function(t){var e,n,i=this,r=[];if(t.ticks)return t.ticks.apply(t,i.tickArguments);for(n=t.domain(),e=Math.ceil(n[0]);e<n[1];e++)r.push(e);return r.length>0&&r[0]>0&&r.unshift(r[0]-(r[1]-r[0])),r},o.copyScale=function(){var t,e=this,n=e.scale.copy();return e.params.isCategory&&(t=e.scale.domain(),n.domain([t[0],t[1]-1])),n},o.textFormatted=function(t){var e=this,n=e.tickFormat?e.tickFormat(t):t;return void 0!==n?n:""},o.updateRange=function(){var t=this;return t.range=t.scale.rangeExtent?t.scale.rangeExtent():t.scaleExtent(t.scale.range()),t.range},o.updateTickTextCharSize=function(t){var e=this;if(e.tickTextCharSize)return e.tickTextCharSize;var n={h:11.5,w:5.5};return t.select("text").text(function(t){return e.textFormatted(t)}).each(function(t){var i=this.getBoundingClientRect(),r=e.textFormatted(t),o=i.height,a=r?i.width/r.length:void 0;o&&a&&(n.h=o,n.w=a)}).text(""),e.tickTextCharSize=n,n},o.isVertical=function(){return"left"===this.orient||"right"===this.orient},o.tspanData=function(t,e,n){var i=this,r=i.params.tickMultiline?i.splitTickText(t,n):[].concat(i.textFormatted(t));return r.map(function(t){return{index:e,splitted:t,length:r.length}})},o.splitTickText=function(t,e){function n(t,e){r=void 0;for(var s=1;s<e.length;s++)if(" "===e.charAt(s)&&(r=s),i=e.substr(0,s+1),o=a.tickTextCharSize.w*i.length,l<o)return n(t.concat(e.substr(0,r||s)),e.slice(r?r+1:s));return t.concat(e)}var i,r,o,a=this,s=a.textFormatted(t),l=a.params.tickWidth,c=[];return"[object Array]"===Object.prototype.toString.call(s)?s:((!l||l<=0)&&(l=a.isVertical()?95:a.params.isCategory?Math.ceil(e(1)-e(0))-12:110),n(c,s+""))},o.updateTickLength=function(){var t=this;t.tickLength=Math.max(t.innerTickSize,0)+t.tickPadding},o.lineY2=function(t){var e=this,n=e.scale(t)+(e.tickCentered?0:e.tickOffset);return e.range[0]<n&&n<e.range[1]?e.innerTickSize:0},o.textY=function(){var t=this,e=t.tickTextRotate;return e?11.5-e/15*2.5*(e>0?1:-1):t.tickLength},o.textTransform=function(){var t=this,e=t.tickTextRotate;return e?"rotate("+e+")":""},o.textTextAnchor=function(){var t=this,e=t.tickTextRotate;return e?e>0?"start":"end":"middle"},o.tspanDx=function(){var t=this,e=t.tickTextRotate;return e?8*Math.sin(Math.PI*(e/180)):0},o.tspanDy=function(t,e){var n=this,i=n.tickTextCharSize.h;return 0===e&&(i=n.isVertical()?-((t.length-1)*(n.tickTextCharSize.h/2)-3):".71em"),i},o.generateAxis=function(){function t(r,o){var a;return r.each(function(){var r,s,l,c=t.g=n.select(this),u=this.__chart__||e.scale,h=this.__chart__=e.copyScale(),d=e.tickValues?e.tickValues:e.generateTicks(h),f=c.selectAll(".tick").data(d,h),p=f.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),g=f.exit().remove(),m=f.merge(p);i.isCategory?(e.tickOffset=Math.ceil((h(1)-h(0))/2),s=e.tickCentered?0:e.tickOffset,l=e.tickCentered?e.tickOffset:0):e.tickOffset=s=0,e.updateRange(),e.updateTickLength(),e.updateTickTextCharSize(c.select(".tick"));var v=m.select("line").merge(p.append("line")),y=m.select("text").merge(p.append("text")),x=m.selectAll("text").selectAll("tspan").data(function(t,n){return e.tspanData(t,n,h)}),b=x.enter().append("tspan"),w=b.merge(x).text(function(t){return t.splitted});x.exit().remove();var _=c.selectAll(".domain").data([0]),S=_.enter().append("path").merge(_).attr("class","domain");switch(e.orient){case"bottom":r=e.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(t,n){return e.lineY2(t,n)}),y.attr("x",0).attr("y",function(t,n){return e.textY(t,n)}).attr("transform",function(t,n){return e.textTransform(t,n)}).style("text-anchor",function(t,n){return e.textTextAnchor(t,n)}),w.attr("x",0).attr("dy",function(t,n){return e.tspanDy(t,n)}).attr("dx",function(t,n){return e.tspanDx(t,n)}),S.attr("d","M"+e.range[0]+","+e.outerTickSize+"V0H"+e.range[1]+"V"+e.outerTickSize);break;case"top":r=e.axisX,v.attr("x1",s).attr("x2",s).attr("y2",function(t,n){return-1*e.lineY2(t,n)}),y.attr("x",0).attr("y",function(t,n){return-1*e.textY(t,n)-(i.isCategory?2:e.tickLength-2)}).attr("transform",function(t,n){return e.textTransform(t,n)}).style("text-anchor",function(t,n){return e.textTextAnchor(t,n)}),w.attr("x",0).attr("dy",function(t,n){return e.tspanDy(t,n)}).attr("dx",function(t,n){return e.tspanDx(t,n)}),S.attr("d","M"+e.range[0]+","+-e.outerTickSize+"V0H"+e.range[1]+"V"+-e.outerTickSize);break;case"left":r=e.axisY,v.attr("x2",-e.innerTickSize).attr("y1",l).attr("y2",l),y.attr("x",-e.tickLength).attr("y",e.tickOffset).style("text-anchor","end"),w.attr("x",-e.tickLength).attr("dy",function(t,n){return e.tspanDy(t,n)}),S.attr("d","M"+-e.outerTickSize+","+e.range[0]+"H0V"+e.range[1]+"H"+-e.outerTickSize);break;case"right":r=e.axisY,v.attr("x2",e.innerTickSize).attr("y1",l).attr("y2",l),y.attr("x",e.tickLength).attr("y",e.tickOffset).style("text-anchor","start"),w.attr("x",e.tickLength).attr("dy",function(t,n){return e.tspanDy(t,n)}),S.attr("d","M"+e.outerTickSize+","+e.range[0]+"H0V"+e.range[1]+"H"+e.outerTickSize)}if(h.rangeBand){var C=h,T=C.rangeBand()/2;u=h=function(t){return C(t)+T}}else u.rangeBand?u=h:g.call(r,h,e.tickOffset);p.call(r,u,e.tickOffset),a=(o?m.transition(o):m).style("opacity",1).call(r,h,e.tickOffset)}),a}var e=this,n=e.d3,i=e.params;return t.scale=function(n){return arguments.length?(e.scale=n,t):e.scale},t.orient=function(n){return arguments.length?(e.orient=n in{top:1,right:1,bottom:1,left:1}?n+"":"bottom",t):e.orient},t.tickFormat=function(n){return arguments.length?(e.tickFormat=n,t):e.tickFormat},t.tickCentered=function(n){return arguments.length?(e.tickCentered=n,t):e.tickCentered},t.tickOffset=function(){return e.tickOffset},t.tickInterval=function(){var n,r;return i.isCategory?n=2*e.tickOffset:(r=t.g.select("path.domain").node().getTotalLength()-2*e.outerTickSize,n=r/t.g.selectAll("line").size()),n===1/0?0:n},t.ticks=function(){return arguments.length?(e.tickArguments=arguments,t):e.tickArguments},t.tickCulling=function(n){return arguments.length?(e.tickCulling=n,t):e.tickCulling},t.tickValues=function(n){if("function"==typeof n)e.tickValues=function(){return n(e.scale.domain())};else{if(!arguments.length)return e.tickValues;e.tickValues=n}return t},t};var M=function(e){function n(e){l(this,n);var i={fn:r,internal:{fn:o}},a=h(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,"axis",i));return a.d3=e.d3,a.internal=t,a}return u(n,e),n}(e);r=M.prototype,r.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",a.axis+" "+a.axisX).attr("clip-path",e.axis_x_inner?"":t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",a.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",a.axis+" "+a.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",a.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",a.axis+" "+a.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",a.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},r.getXAxis=function(t,e,n,i,r,o,a){var s=this.owner,l=s.config,c={isCategory:s.isCategorized(),withOuterTick:r,tickMultiline:l.axis_x_tick_multiline,tickWidth:l.axis_x_tick_width,tickTextRotate:a?0:l.axis_x_tick_rotate,withoutTransition:o},u=new this.internal(this,c).axis.scale(t).orient(e);return s.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return s.parseDate(t)})),u.tickFormat(n).tickValues(i),s.isCategorized()&&(u.tickCentered(l.axis_x_tick_centered),_(l.axis_x_tick_culling)&&(l.axis_x_tick_culling=!1)),u},r.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},r.getYAxis=function(t,e,n,i,r,o,a){var s=this.owner,l=s.config,c={withOuterTick:r,withoutTransition:o,tickTextRotate:a?0:l.axis_y_tick_rotate},u=new this.internal(this,c).axis.scale(t).orient(e).tickFormat(n);return s.isTimeSeriesY()?u.ticks(l.axis_y_tick_time_type,l.axis_y_tick_time_interval):u.tickValues(i),u},r.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},r.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t};return e.axis_x_tick_format&&(p(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),p(n)?function(e){return n.call(t,e)}:n},r.getTickValues=function(t,e){return t||(e?e.tickValues():void 0)},r.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},r.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},r.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},r.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},r.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return m(e)?e:e?e.text:null},r.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);m(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},r.getLabelPosition=function(t,e){var n=this.getLabelOptionByAxisId(t),i=n&&"object"===(void 0===n?"undefined":s(n))&&n.position?n.position:e;return{isInner:i.indexOf("inner")>=0,isOuter:i.indexOf("outer")>=0,isLeft:i.indexOf("left")>=0,isCenter:i.indexOf("center")>=0,isRight:i.indexOf("right")>=0,isTop:i.indexOf("top")>=0,isMiddle:i.indexOf("middle")>=0,isBottom:i.indexOf("bottom")>=0}},r.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},r.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},r.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},r.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},r.textForXAxisLabel=function(){return this.getLabelText("x")},r.textForYAxisLabel=function(){return this.getLabelText("y")},r.textForY2AxisLabel=function(){return this.getLabelText("y2")},r.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0},r.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},r.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},r.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},r.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},r.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},r.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},r.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},r.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},r.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-(t.config.axis_x_inner?0:this.getMaxTickWidth("x")):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},r.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},r.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},r.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},r.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},r.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},r.getMaxTickWidth=function(t,e){var n,i,r,o,a,s=this.owner,l=s.config,c=0;return e&&s.currentMaxTickWidths[t]?s.currentMaxTickWidths[t]:(s.svg&&(n=s.filterTargetsToShow(s.data.targets),"y"===t?(i=s.y.copy().domain(s.getYDomain(n,"y")),r=this.getYAxis(i,s.yOrient,l.axis_y_tick_format,s.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=s.y2.copy().domain(s.getYDomain(n,"y2")),r=this.getYAxis(i,s.y2Orient,l.axis_y2_tick_format,s.y2AxisTickValues,!1,!0,!0)):(i=s.x.copy().domain(s.getXDomain(n)),r=this.getXAxis(i,s.xOrient,s.xAxisTickFormat,s.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),o=s.d3.select("body").append("div").classed("c3",!0),a=o.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a.append("g").call(r).each(function(){s.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();c<t.width&&(c=t.width)}),o.remove()})),s.currentMaxTickWidths[t]=c<=0?s.currentMaxTickWidths[t]:c,s.currentMaxTickWidths[t])},r.updateLabels=function(t){var e=this.owner,n=e.main.select("."+a.axisX+" ."+a.axisXLabel),i=e.main.select("."+a.axisY+" ."+a.axisYLabel),r=e.main.select("."+a.axisY2+" ."+a.axisY2Label);(t?n.transition():n).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(t?i.transition():i).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(t?r.transition():r).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},r.getPadding=function(t,e,n,i){var r="number"==typeof t?t:t[e];return f(r)?"ratio"===t.unit?t[e]*i:this.convertPixelsToAxisPadding(r,i):n},r.convertPixelsToAxisPadding=function(t,e){var n=this.owner;return e*(t/(n.config.axis_rotated?n.width:n.height))},r.generateTickValues=function(t,e,n){var i,r,o,a,s,l,c,u=t;if(e)if(1===(i=p(e)?e():e))u=[t[0]];else if(2===i)u=[t[0],t[t.length-1]];else if(i>2){for(a=i-2,r=t[0],o=t[t.length-1],s=(o-r)/(a+1),u=[r],l=0;l<a;l++)c=+r+s*(l+1),u.push(n?new Date(c):c);u.push(o)}return n||(u=u.sort(function(t,e){return t-e})),u},r.generateTransitions=function(t){var e=this.owner,n=e.axes;return{axisX:t?n.x.transition().duration(t):n.x,axisY:t?n.y.transition().duration(t):n.y,axisY2:t?n.y2.transition().duration(t):n.y2,axisSubX:t?n.subx.transition().duration(t):n.subx}},r.redraw=function(t,e){var n=this.owner,i=t?n.d3.transition().duration(t):null;n.axes.x.style("opacity",e?0:1).call(n.xAxis,i),n.axes.y.style("opacity",e?0:1).call(n.yAxis,i),n.axes.y2.style("opacity",e?0:1).call(n.y2Axis,i),n.axes.subx.style("opacity",e?0:1).call(n.subXAxis,i)};var E,L,P={version:"0.5.4"};return P.generate=function(t){return new n(t)},P.chart={fn:n.prototype,internal:{fn:i.prototype}},E=P.chart.fn,L=P.chart.internal.fn,L.beforeInit=function(){},L.afterInit=function(){},L.init=function(){var t=this,e=t.config;if(t.initParams(),e.data_url)t.convertUrlToData(e.data_url,e.data_mimeType,e.data_headers,e.data_keys,t.initWithData);else if(e.data_json)t.initWithData(t.convertJsonToData(e.data_json,e.data_keys));else if(e.data_rows)t.initWithData(t.convertRowsToData(e.data_rows));else{if(!e.data_columns)throw Error("url or json or rows or columns is required.");t.initWithData(t.convertColumnsToData(e.data_columns))}},L.initParams=function(){var t=this,e=t.d3,n=t.config;t.clipId="c3-"+ +new Date+"-clip",t.clipIdForXAxis=t.clipId+"-xaxis",t.clipIdForYAxis=t.clipId+"-yaxis",t.clipIdForGrid=t.clipId+"-grid",t.clipIdForSubchart=t.clipId+"-subchart",t.clipPath=t.getClipPath(t.clipId),t.clipPathForXAxis=t.getClipPath(t.clipIdForXAxis),t.clipPathForYAxis=t.getClipPath(t.clipIdForYAxis),t.clipPathForGrid=t.getClipPath(t.clipIdForGrid),t.clipPathForSubchart=t.getClipPath(t.clipIdForSubchart),t.dragStart=null,t.dragging=!1,t.flowing=!1,t.cancelClick=!1,t.mouseover=!1,t.transiting=!1,t.color=t.generateColor(),t.levelColor=t.generateLevelColor(),t.dataTimeParse=(n.data_xLocaltime?e.timeParse:e.utcParse)(t.config.data_xFormat),t.axisTimeFormat=n.axis_x_localtime?e.timeFormat:e.utcFormat,t.defaultAxisTimeFormat=function(t){return t.getMilliseconds()?e.timeFormat(".%L")(t):t.getSeconds()?e.timeFormat(":%S")(t):t.getMinutes()?e.timeFormat("%I:%M")(t):t.getHours()?e.timeFormat("%I %p")(t):t.getDay()&&1!==t.getDate()?e.timeFormat("%-m/%-d")(t):1!==t.getDate()?e.timeFormat("%-m/%-d")(t):t.getMonth()?e.timeFormat("%-m/%-d")(t):e.timeFormat("%Y/%-m/%-d")(t)},t.hiddenTargetIds=[],t.hiddenLegendIds=[],t.focusedTargetIds=[],t.defocusedTargetIds=[],t.xOrient=n.axis_rotated?n.axis_x_inner?"right":"left":n.axis_x_inner?"top":"bottom",t.yOrient=n.axis_rotated?n.axis_y_inner?"top":"bottom":n.axis_y_inner?"right":"left",t.y2Orient=n.axis_rotated?n.axis_y2_inner?"bottom":"top":n.axis_y2_inner?"left":"right",t.subXOrient=n.axis_rotated?"left":"bottom",t.isLegendRight="right"===n.legend_position,t.isLegendInset="inset"===n.legend_position,t.isLegendTop="top-left"===n.legend_inset_anchor||"top-right"===n.legend_inset_anchor,t.isLegendLeft="top-left"===n.legend_inset_anchor||"bottom-left"===n.legend_inset_anchor,t.legendStep=0,t.legendItemWidth=0,t.legendItemHeight=0,t.currentMaxTickWidths={x:0,y:0,y2:0},t.rotated_padding_left=30,t.rotated_padding_right=n.axis_rotated&&!n.axis_x_show?0:30,t.rotated_padding_top=5,t.withoutFadeIn={},t.intervalForObserveInserted=void 0,t.axes.subx=e.selectAll([])},L.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},L.initWithData=function(t){var e,n,i=this,r=i.d3,o=i.config,s=!0;i.axis=new M(i),o.bindto?"function"==typeof o.bindto.node?i.selectChart=o.bindto:i.selectChart=r.select(o.bindto):i.selectChart=r.selectAll([]),i.selectChart.empty()&&(i.selectChart=r.select(document.createElement("div")).style("opacity",0),i.observeInserted(i.selectChart),s=!1),i.selectChart.html("").classed("c3",!0),i.data.xs={},i.data.targets=i.convertDataToTargets(t),o.data_filter&&(i.data.targets=i.data.targets.filter(o.data_filter)),o.data_hide&&i.addHiddenTargetIds(!0===o.data_hide?i.mapToIds(i.data.targets):o.data_hide),o.legend_hide&&i.addHiddenLegendIds(!0===o.legend_hide?i.mapToIds(i.data.targets):o.legend_hide),i.updateSizes(),i.updateScales(),i.x.domain(r.extent(i.getXDomain(i.data.targets))),i.y.domain(i.getYDomain(i.data.targets,"y")),i.y2.domain(i.getYDomain(i.data.targets,"y2")),i.subX.domain(i.x.domain()),i.subY.domain(i.y.domain()),i.subY2.domain(i.y2.domain()),i.orgXDomain=i.x.domain(),i.svg=i.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return o.onmouseover.call(i)}).on("mouseleave",function(){return o.onmouseout.call(i)}),i.config.svg_classname&&i.svg.attr("class",i.config.svg_classname),e=i.svg.append("defs"),i.clipChart=i.appendClip(e,i.clipId),i.clipXAxis=i.appendClip(e,i.clipIdForXAxis),i.clipYAxis=i.appendClip(e,i.clipIdForYAxis),i.clipGrid=i.appendClip(e,i.clipIdForGrid),i.clipSubchart=i.appendClip(e,i.clipIdForSubchart),i.updateSvgSize(),n=i.main=i.svg.append("g").attr("transform",i.getTranslate("main")),i.initPie&&i.initPie(),i.initSubchart&&i.initSubchart(),i.initTooltip&&i.initTooltip(),i.initLegend&&i.initLegend(),i.initTitle&&i.initTitle(),i.initZoom&&i.initZoom(),i.initSubchartBrush&&i.initSubchartBrush(),n.append("text").attr("class",a.text+" "+a.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),i.initRegion(),i.initGrid(),n.append("g").attr("clip-path",i.clipPath).attr("class",a.chart),o.grid_lines_front&&i.initGridLines(),i.initChartElements(),i.axis.init(),i.updateTargets(i.data.targets),i.initEventRect(),o.axis_x_selection&&i.brush.selectionAsValue(i.getDefaultSelection()),s&&(i.updateDimension(),i.config.oninit.call(i),i.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),i.bindResize(),i.api.element=i.selectChart.node()},L.smoothLines=function(t,e){var n=this;"grid"===e&&t.each(function(){var t=n.d3.select(this),e=t.attr("x1"),i=t.attr("x2"),r=t.attr("y1"),o=t.attr("y2");t.attr({x1:Math.ceil(e),x2:Math.ceil(i),y1:Math.ceil(r),y2:Math.ceil(o)})})},L.updateSizes=function(){var t=this,e=t.config,n=t.legend?t.getLegendHeight():0,i=t.legend?t.getLegendWidth():0,r=t.isLegendRight||t.isLegendInset?0:n,o=t.hasArcType(),a=e.axis_rotated||o?0:t.getHorizontalAxisHeight("x"),s=e.subchart_show&&!o?e.subchart_size_height+a:0;t.currentWidth=t.getCurrentWidth(),t.currentHeight=t.getCurrentHeight(),t.margin=e.axis_rotated?{top:t.getHorizontalAxisHeight("y2")+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:t.getHorizontalAxisHeight("y")+r+t.getCurrentPaddingBottom(),left:s+(o?0:t.getCurrentPaddingLeft())}:{top:4+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:a+s+r+t.getCurrentPaddingBottom(),left:o?0:t.getCurrentPaddingLeft()},t.margin2=e.axis_rotated?{top:t.margin.top,right:NaN,bottom:20+r,left:t.rotated_padding_left}:{top:t.currentHeight-s-r,right:NaN,bottom:a+r,left:t.margin.left},t.margin3={top:0,right:NaN,bottom:0,left:0},t.updateSizeForLegend&&t.updateSizeForLegend(n,i),t.width=t.currentWidth-t.margin.left-t.margin.right,t.height=t.currentHeight-t.margin.top-t.margin.bottom,t.width<0&&(t.width=0),t.height<0&&(t.height=0),t.width2=e.axis_rotated?t.margin.left-t.rotated_padding_left-t.rotated_padding_right:t.width,t.height2=e.axis_rotated?t.height:t.currentHeight-t.margin2.top-t.margin2.bottom,t.width2<0&&(t.width2=0),t.height2<0&&(t.height2=0),t.arcWidth=t.width-(t.isLegendRight?i+10:0),t.arcHeight=t.height-(t.isLegendRight?0:10),t.hasType("gauge")&&!e.gauge_fullCircle&&(t.arcHeight+=t.height-t.getGaugeLabelHeight()),t.updateRadius&&t.updateRadius(),t.isLegendRight&&o&&(t.margin3.left=t.arcWidth/2+1.1*t.radiusExpanded)},L.updateTargets=function(t){var e=this;e.updateTargetsForText(t),e.updateTargetsForBar(t),e.updateTargetsForLine(t),e.hasArcType()&&e.updateTargetsForArc&&e.updateTargetsForArc(t),e.updateTargetsForSubchart&&e.updateTargetsForSubchart(t),e.showTargets()},L.showTargets=function(){var t=this;t.svg.selectAll("."+a.target).filter(function(e){return t.isTargetToShow(e.id)}).transition().duration(t.config.transition_duration).style("opacity",1)},L.redraw=function(t,e){var n,i,r,o,s,l,c,u,h,d,f,p,g,m,v,y,x,b,w,_,S,T,k,A,M,E,L,P,N,O,R,D=this,I=D.main,H=D.d3,j=D.config,V=D.getShapeIndices(D.isAreaType),F=D.getShapeIndices(D.isBarType),z=D.getShapeIndices(D.isLineType),q=D.hasArcType(),G=D.filterTargetsToShow(D.data.targets),B=D.xv.bind(D);if(t=t||{},n=C(t,"withY",!0),i=C(t,"withSubchart",!0),r=C(t,"withTransition",!0),l=C(t,"withTransform",!1),c=C(t,"withUpdateXDomain",!1),u=C(t,"withUpdateOrgXDomain",!1),h=C(t,"withTrimXDomain",!0),g=C(t,"withUpdateXAxis",c),d=C(t,"withLegend",!1),f=C(t,"withEventRect",!0),p=C(t,"withDimension",!0),o=C(t,"withTransitionForExit",r),s=C(t,"withTransitionForAxis",r),w=r?j.transition_duration:0,_=o?w:0,S=s?w:0,e=e||D.axis.generateTransitions(S),d&&j.legend_show?D.updateLegend(D.mapToIds(D.data.targets),t,e):p&&D.updateDimension(!0),D.isCategorized()&&0===G.length&&D.x.domain([0,D.axes.x.selectAll(".tick").size()]),G.length?(D.updateXDomain(G,c,u,h),j.axis_x_tick_values||(E=D.axis.updateXAxisTickValues(G))):(D.xAxis.tickValues([]),D.subXAxis.tickValues([])),j.zoom_rescale&&!t.flow&&(N=D.x.orgDomain()),D.y.domain(D.getYDomain(G,"y",N)),D.y2.domain(D.getYDomain(G,"y2",N)),!j.axis_y_tick_values&&j.axis_y_tick_count&&D.yAxis.tickValues(D.axis.generateTickValues(D.y.domain(),j.axis_y_tick_count)),!j.axis_y2_tick_values&&j.axis_y2_tick_count&&D.y2Axis.tickValues(D.axis.generateTickValues(D.y2.domain(),j.axis_y2_tick_count)),D.axis.redraw(S,q),D.axis.updateLabels(r),(c||g)&&G.length)if(j.axis_x_tick_culling&&E){for(L=1;L<E.length;L++)if(E.length/L<j.axis_x_tick_culling_max){P=L;break}D.svg.selectAll("."+a.axisX+" .tick text").each(function(t){var e=E.indexOf(t);e>=0&&H.select(this).style("display",e%P?"none":"block")})}else D.svg.selectAll("."+a.axisX+" .tick text").style("display","block");m=D.generateDrawArea?D.generateDrawArea(V,!1):void 0,v=D.generateDrawBar?D.generateDrawBar(F):void 0,y=D.generateDrawLine?D.generateDrawLine(z,!1):void 0,x=D.generateXYForText(V,F,z,!0),b=D.generateXYForText(V,F,z,!1),D.updateCircleY(),O=(D.config.axis_rotated?D.circleY:D.circleX).bind(D),R=(D.config.axis_rotated?D.circleX:D.circleY).bind(D),n&&(D.subY.domain(D.getYDomain(G,"y")),D.subY2.domain(D.getYDomain(G,"y2"))),D.updateXgridFocus(),I.select("text."+a.text+"."+a.empty).attr("x",D.width/2).attr("y",D.height/2).text(j.data_empty_label_text).transition().style("opacity",G.length?0:1),f&&D.redrawEventRect(),D.updateGrid(w),D.updateRegion(w),D.updateBar(_),D.updateLine(_),D.updateArea(_),D.updateCircle(O,R),D.hasDataLabel()&&D.updateText(x,b,_),D.redrawTitle&&D.redrawTitle(),D.redrawArc&&D.redrawArc(w,_,l),D.redrawSubchart&&D.redrawSubchart(i,e,w,_,V,F,z),I.selectAll("."+a.selectedCircles).filter(D.isBarType.bind(D)).selectAll("circle").remove(),t.flow&&(A=D.generateFlow({targets:G,flow:t.flow,duration:t.flow.duration,drawBar:v,drawLine:y,drawArea:m,cx:O,cy:R,xv:B,xForText:x,yForText:b})),D.isTabVisible()&&(w?(M=H.transition().duration(w),T=[],[D.redrawBar(v,!0,M),D.redrawLine(y,!0,M),D.redrawArea(m,!0,M),D.redrawCircle(O,R,!0,M),D.redrawText(x,b,t.flow,!0,M),D.redrawRegion(!0,M),D.redrawGrid(!0,M)].forEach(function(t){t.forEach(function(t){T.push(t)})}),k=D.generateWait(),T.forEach(function(t){k.add(t)}),k(function(){A&&A(),j.onrendered&&j.onrendered.call(D)})):(D.redrawBar(v),D.redrawLine(y),D.redrawArea(m),D.redrawCircle(O,R),D.redrawText(x,b,t.flow),D.redrawRegion(),D.redrawGrid(),A&&A(),j.onrendered&&j.onrendered.call(D))),D.mapToIds(D.data.targets).forEach(function(t){D.withoutFadeIn[t]=!0})},L.updateAndRedraw=function(t){var e,n=this,i=n.config;t=t||{},t.withTransition=C(t,"withTransition",!0),t.withTransform=C(t,"withTransform",!1),t.withLegend=C(t,"withLegend",!1),t.withUpdateXDomain=C(t,"withUpdateXDomain",!0),t.withUpdateOrgXDomain=C(t,"withUpdateOrgXDomain",!0),t.withTransitionForExit=!1,t.withTransitionForTransform=C(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},L.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},L.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},L.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},L.isCustomX=function(){var t=this,e=t.config;return!t.isTimeSeries()&&(e.data_x||S(e.data_xs))},L.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type
+},L.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=b(i.margin.left),n=b(i.margin.top)):"context"===t?(e=b(i.margin2.left),n=b(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2-(i.hasType("gauge")?6:0)),"translate("+e+","+n+")"},L.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},L.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},L.opacityForCircle=function(t){var e=p(this.config.point_show)?this.config.point_show(t):this.config.point_show,n=e?1:0;return f(t.value)?this.isScatterType(t)?.5:n:0},L.opacityForText=function(){return this.hasDataLabel()?1:0},L.xx=function(t){return t?this.x(t.x):null},L.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},L.yv=function(t){var e=this,n=t.axis&&"y2"===t.axis?e.y2:e.y;return Math.ceil(n(t.value))},L.subxx=function(t){return t?this.subX(t.x):null},L.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+a.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+a.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+a.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+a.chartArcs).attr("transform",o.getTranslate("arc"))},L.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},L.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .overlay");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.selectChart.style("max-height",t.currentHeight+"px")},L.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},L.observeInserted=function(t){var e,n=this;if("undefined"==typeof MutationObserver)return void window.console.error("MutationObserver not defined.");e=new MutationObserver(function(i){i.forEach(function(i){"childList"===i.type&&i.previousSibling&&(e.disconnect(),n.intervalForObserveInserted=window.setInterval(function(){t.node().parentNode&&(window.clearInterval(n.intervalForObserveInserted),n.updateDimension(),n.brush&&n.brush.update(),n.config.oninit.call(n),n.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.transition().style("opacity",1))},10))})}),e.observe(t.node(),{attributes:!0,childList:!0,characterData:!0})},L.bindResize=function(){var t=this,e=t.config;if(t.resizeFunction=t.generateResize(),t.resizeFunction.add(function(){e.onresize.call(t)}),e.resize_auto&&t.resizeFunction.add(function(){void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),t.resizeTimeout=window.setTimeout(function(){delete t.resizeTimeout,t.updateAndRedraw({withUpdateXDomain:!1,withUpdateOrgXDomain:!1,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),t.brush&&t.brush.update()},100)}),t.resizeFunction.add(function(){e.onresized.call(t)}),t.resizeIfElementDisplayed=function(){null!=t.api&&t.api.element.offsetParent&&t.resizeFunction()},window.attachEvent)window.attachEvent("onresize",t.resizeIfElementDisplayed);else if(window.addEventListener)window.addEventListener("resize",t.resizeIfElementDisplayed,!1);else{var n=window.onresize;n?n.add&&n.remove||(n=t.generateResize(),n.add(window.onresize)):n=t.generateResize(),n.add(t.resizeFunction),window.onresize=function(){t.api.element.offsetParent&&n()}}},L.generateResize=function(){function t(){e.forEach(function(t){t()})}var e=[];return t.add=function(t){e.push(t)},t.remove=function(t){for(var n=0;n<e.length;n++)if(e[n]===t){e.splice(n,1);break}},t},L.endall=function(t,e){var n=0;t.each(function(){++n}).on("end",function(){--n||e.apply(this,arguments)})},L.generateWait=function(){var t=[],e=function(e){var n=setInterval(function(){var i=0;t.forEach(function(t){if(t.empty())return void(i+=1);try{t.transition()}catch(t){i+=1}}),i===t.length&&(clearInterval(n),e&&e())},50)};return e.add=function(e){t.push(e)},e},L.parseDate=function(t){var e,n=this;return t instanceof Date?e=t:"string"==typeof t?e=n.dataTimeParse(t):"object"===(void 0===t?"undefined":s(t))?e=new Date(+t):"number"!=typeof t||isNaN(t)||(e=new Date(+t)),e&&!isNaN(+e)||window.console.error("Failed to parse x '"+t+"' to Date object"),e},L.isTabVisible=function(){var t;return void 0!==document.hidden?t="hidden":void 0!==document.mozHidden?t="mozHidden":void 0!==document.msHidden?t="msHidden":void 0!==document.webkitHidden&&(t="webkitHidden"),!document[t]},L.isValue=f,L.isFunction=p,L.isString=m,L.isUndefined=v,L.isDefined=y,L.ceil10=x,L.asHalfPixel=b,L.diffDomain=w,L.isEmpty=_,L.notEmpty=S,L.notEmpty=S,L.getOption=C,L.hasValue=T,L.sanitise=k,L.getPathBox=A,L.CLASS=a,Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,i=function(){},r=function(){return n.apply(this instanceof i?this:t,e.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,r.prototype=new i,r}),function(){"SVGPathSeg"in window||(window.SVGPathSeg=function(t,e,n){this.pathSegType=t,this.pathSegTypeAsLetter=e,this._owningPathSegList=n},window.SVGPathSeg.prototype.classname="SVGPathSeg",window.SVGPathSeg.PATHSEG_UNKNOWN=0,window.SVGPathSeg.PATHSEG_CLOSEPATH=1,window.SVGPathSeg.PATHSEG_MOVETO_ABS=2,window.SVGPathSeg.PATHSEG_MOVETO_REL=3,window.SVGPathSeg.PATHSEG_LINETO_ABS=4,window.SVGPathSeg.PATHSEG_LINETO_REL=5,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,window.SVGPathSeg.PATHSEG_ARC_ABS=10,window.SVGPathSeg.PATHSEG_ARC_REL=11,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,window.SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},window.SVGPathSegClosePath=function(t){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CLOSEPATH,"z",t)},window.SVGPathSegClosePath.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},window.SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},window.SVGPathSegClosePath.prototype.clone=function(){return new window.SVGPathSegClosePath(void 0)},window.SVGPathSegMovetoAbs=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_MOVETO_ABS,"M",t),this._x=e,this._y=n},window.SVGPathSegMovetoAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},window.SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegMovetoAbs.prototype.clone=function(){return new window.SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegMovetoRel=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_MOVETO_REL,"m",t),this._x=e,this._y=n},window.SVGPathSegMovetoRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},window.SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegMovetoRel.prototype.clone=function(){return new window.SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoAbs=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_ABS,"L",t),this._x=e,this._y=n},window.SVGPathSegLinetoAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},window.SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegLinetoAbs.prototype.clone=function(){return new window.SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoRel=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_REL,"l",t),this._x=e,this._y=n},window.SVGPathSegLinetoRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},window.SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegLinetoRel.prototype.clone=function(){return new window.SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o,a){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},window.SVGPathSegCurvetoCubicAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},window.SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},window.SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o,a){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},window.SVGPathSegCurvetoCubicRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},window.SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},window.SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticAbs=function(t,e,n,i,r){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},window.SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},window.SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticRel=function(t,e,n,i,r){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},window.SVGPathSegCurvetoQuadraticRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},window.SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegArcAbs=function(t,e,n,i,r,o,a,s){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_ARC_ABS,"A",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},window.SVGPathSegArcAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},window.SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},window.SVGPathSegArcAbs.prototype.clone=function(){return new window.SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(window.SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegArcRel=function(t,e,n,i,r,o,a,s){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_ARC_REL,"a",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},window.SVGPathSegArcRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},window.SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},window.SVGPathSegArcRel.prototype.clone=function(){return new window.SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(window.SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoHorizontalAbs=function(t,e){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",t),this._x=e},window.SVGPathSegLinetoHorizontalAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},window.SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new window.SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoHorizontalRel=function(t,e){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",t),this._x=e},window.SVGPathSegLinetoHorizontalRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},window.SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},window.SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new window.SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoVerticalAbs=function(t,e){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",t),this._y=e},window.SVGPathSegLinetoVerticalAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},window.SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},window.SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new window.SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoVerticalRel=function(t,e){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",t),this._y=e},window.SVGPathSegLinetoVerticalRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},window.SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},window.SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new window.SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i,r){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",t),this._x=e,this._y=n,this._x2=i,this._y2=r},window.SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i,r){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",t),this._x=e,this._y=n,this._x2=i,this._y2=r},window.SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticSmoothAbs=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",t),this._x=e,this._y=n},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticSmoothRel=function(t,e,n){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",t),this._x=e,this._y=n},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),window.SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new window.SVGPathSegClosePath(void 0)},window.SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(t,e){return new window.SVGPathSegMovetoAbs(void 0,t,e)},window.SVGPathElement.prototype.createSVGPathSegMovetoRel=function(t,e){return new window.SVGPathSegMovetoRel(void 0,t,e)},window.SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(t,e){return new window.SVGPathSegLinetoAbs(void 0,t,e)},window.SVGPathElement.prototype.createSVGPathSegLinetoRel=function(t,e){return new window.SVGPathSegLinetoRel(void 0,t,e)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o){return new window.SVGPathSegCurvetoCubicAbs(void 0,t,e,n,i,r,o)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o){return new window.SVGPathSegCurvetoCubicRel(void 0,t,e,n,i,r,o)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(t,e,n,i){return new window.SVGPathSegCurvetoQuadraticAbs(void 0,t,e,n,i)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(t,e,n,i){return new window.SVGPathSegCurvetoQuadraticRel(void 0,t,e,n,i)},window.SVGPathElement.prototype.createSVGPathSegArcAbs=function(t,e,n,i,r,o,a){return new window.SVGPathSegArcAbs(void 0,t,e,n,i,r,o,a)},window.SVGPathElement.prototype.createSVGPathSegArcRel=function(t,e,n,i,r,o,a){return new window.SVGPathSegArcRel(void 0,t,e,n,i,r,o,a)},window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(t){return new window.SVGPathSegLinetoHorizontalAbs(void 0,t)},window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(t){return new window.SVGPathSegLinetoHorizontalRel(void 0,t)},window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(t){return new window.SVGPathSegLinetoVerticalAbs(void 0,t)},window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(t){return new window.SVGPathSegLinetoVerticalRel(void 0,t)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i){return new window.SVGPathSegCurvetoCubicSmoothAbs(void 0,t,e,n,i)},
+window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i){return new window.SVGPathSegCurvetoCubicSmoothRel(void 0,t,e,n,i)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(t,e){return new window.SVGPathSegCurvetoQuadraticSmoothAbs(void 0,t,e)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(t,e){return new window.SVGPathSegCurvetoQuadraticSmoothRel(void 0,t,e)},"getPathSegAtLength"in window.SVGPathElement.prototype||(window.SVGPathElement.prototype.getPathSegAtLength=function(t){if(void 0===t||!isFinite(t))throw"Invalid arguments.";var e=document.createElementNS("http://www.w3.org/2000/svg","path");e.setAttribute("d",this.getAttribute("d"));var n=e.pathSegList.numberOfItems-1;if(n<=0)return 0;do{if(e.pathSegList.removeItem(n),t>e.getTotalLength())break;n--}while(n>0);return n})),"SVGPathSegList"in window||(window.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.classname="SVGPathSegList",Object.defineProperty(window.SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new window.SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),window.SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},window.SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},window.SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",window.SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},window.SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},window.SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},window.SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},window.SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},window.SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},window.SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},window.SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=window.SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},i.prototype._skipOptionalSpacesOrDelimiter=function(){return!(this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex))&&(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},i.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},i.prototype.peekSegmentType=function(){var t=this._string[this._currentIndex];return this._pathSegTypeFromChar(t)},i.prototype._pathSegTypeFromChar=function(t){switch(t){case"Z":case"z":return window.SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return window.SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return window.SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return window.SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return window.SVGPathSeg.PATHSEG_LINETO_REL;case"C":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return window.SVGPathSeg.PATHSEG_ARC_ABS;case"a":return window.SVGPathSeg.PATHSEG_ARC_REL;case"H":return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return window.SVGPathSeg.PATHSEG_UNKNOWN}},i.prototype._nextCommandHelper=function(t,e){return("+"==t||"-"==t||"."==t||t>="0"&&t<="9")&&e!=window.SVGPathSeg.PATHSEG_CLOSEPATH?e==window.SVGPathSeg.PATHSEG_MOVETO_ABS?window.SVGPathSeg.PATHSEG_LINETO_ABS:e==window.SVGPathSeg.PATHSEG_MOVETO_REL?window.SVGPathSeg.PATHSEG_LINETO_REL:e:window.SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==window.SVGPathSeg.PATHSEG_MOVETO_ABS||t==window.SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,o=1,a=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,r=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var l=this._currentIndex-1,c=1;l>=s;)e+=c*(this._string.charAt(l--)-"0"),c*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(++this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)n*=10,i+=(this._string.charAt(this._currentIndex)-"0")/n,this._currentIndex+=1}if(this._currentIndex!=a&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,o=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var u=e+i;if(u*=r,t&&(u*=Math.pow(10,o*t)),a!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),u}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==window.SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==window.SVGPathSeg.PATHSEG_UNKNOWN)return null;if((n=this._nextCommandHelper(t,this._previousCommand))==window.SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case window.SVGPathSeg.PATHSEG_MOVETO_REL:return new window.SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_MOVETO_ABS:return new window.SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_REL:return new window.SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_ABS:return new window.SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new window.SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new window.SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new window.SVGPathSegLinetoVerticalRel(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new window.SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case window.SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new window.SVGPathSegClosePath(e);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new window.SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new window.SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_ARC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case window.SVGPathSeg.PATHSEG_ARC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,o=new i(t);if(!o.initialCommandIsMoveTo())return[];for(;o.hasMoreData();){var a=o.parseSegment();if(!a)return[];r.appendSegment(a)}return r.pathSegList})}(),E.axis=function(){},E.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},E.axis.max=function(t){var e=this.internal,n=e.config;if(!arguments.length)return{x:n.axis_x_max,y:n.axis_y_max,y2:n.axis_y2_max};"object"===(void 0===t?"undefined":s(t))?(f(t.x)&&(n.axis_x_max=t.x),f(t.y)&&(n.axis_y_max=t.y),f(t.y2)&&(n.axis_y2_max=t.y2)):n.axis_y_max=n.axis_y2_max=t,e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},E.axis.min=function(t){var e=this.internal,n=e.config;if(!arguments.length)return{x:n.axis_x_min,y:n.axis_y_min,y2:n.axis_y2_min};"object"===(void 0===t?"undefined":s(t))?(f(t.x)&&(n.axis_x_min=t.x),f(t.y)&&(n.axis_y_min=t.y),f(t.y2)&&(n.axis_y2_min=t.y2)):n.axis_y_min=n.axis_y2_min=t,e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})},E.axis.range=function(t){if(!arguments.length)return{max:this.axis.max(),min:this.axis.min()};y(t.max)&&this.axis.max(t.max),y(t.min)&&this.axis.min(t.min)},E.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},E.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},E.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},E.flush=function(){this.internal.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},E.destroy=function(){var t=this.internal;if(window.clearInterval(t.intervalForObserveInserted),void 0!==t.resizeTimeout&&window.clearTimeout(t.resizeTimeout),window.detachEvent)window.detachEvent("onresize",t.resizeIfElementDisplayed);else if(window.removeEventListener)window.removeEventListener("resize",t.resizeIfElementDisplayed);else{var e=window.onresize;e&&e.add&&e.remove&&e.remove(t.resizeFunction)}return t.resizeFunction.remove(),t.selectChart.classed("c3",!1).html(""),Object.keys(t).forEach(function(e){t[e]=null}),null},E.color=function(t){return this.internal.color(t)},E.data=function(t){var e=this.internal.data.targets;return void 0===t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},E.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},E.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},E.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},E.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},E.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},E.flow=function(t){var e,n,i,r,o,a,s,l=this.internal,c=[],u=l.getMaxDataCount(),h=0,d=0;if(t.json)n=l.convertJsonToData(t.json,t.keys);else if(t.rows)n=l.convertRowsToData(t.rows);else{if(!t.columns)return;n=l.convertColumnsToData(t.columns)}e=l.convertDataToTargets(n,!0),l.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n<e.length;n++)if(t.id===e[n].id){for(r=!0,t.values[t.values.length-1]&&(d=t.values[t.values.length-1].index+1),h=e[n].values.length,i=0;i<h;i++)e[n].values[i].index=d+i,l.isTimeSeries()||(e[n].values[i].x=d+i);t.values=t.values.concat(e[n].values),e.splice(n,1);break}r||c.push(t.id)}),l.data.targets.forEach(function(t){var e,n;for(e=0;e<c.length;e++)if(t.id===c[e])for(d=t.values[t.values.length-1].index+1,n=0;n<h;n++)t.values.push({id:t.id,index:d+n,x:l.isTimeSeries()?l.getOtherTargetX(d+n):d+n,value:null})}),l.data.targets.length&&e.forEach(function(t){var e,n=[];for(e=l.data.targets[0].values[0].index;e<d;e++)n.push({id:t.id,index:e,x:l.isTimeSeries()?l.getOtherTargetX(e):e,value:null});t.values.forEach(function(t){t.index+=d,l.isTimeSeries()||(t.x+=d)}),t.values=n.concat(t.values)}),l.data.targets=l.data.targets.concat(e),l.getMaxDataCount(),r=l.data.targets[0],o=r.values[0],y(t.to)?(h=0,s=l.isTimeSeries()?l.parseDate(t.to):t.to,r.values.forEach(function(t){t.x<s&&h++})):y(t.length)&&(h=t.length),u?1===u&&l.isTimeSeries()&&(a=(r.values[r.values.length-1].x-o.x)/2,i=[new Date(+o.x-a),new Date(+o.x+a)],l.updateXDomain(null,!0,!0,!1,i)):(a=l.isTimeSeries()?r.values.length>1?r.values[r.values.length-1].x-o.x:o.x-l.getXDomain(l.data.targets)[0]:1,i=[o.x-a,o.x],l.updateXDomain(null,!0,!0,!1,i)),l.updateTargets(l.data.targets),l.redraw({flow:{index:o.index,length:h,duration:f(t.duration)?t.duration:l.config.transition_duration,done:t.done,orgDataCount:u},withLegend:!0,withTransition:u>1,withTrimXDomain:!1,withUpdateXAxis:!0})},L.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,s,l,c,u,h,d,f,p,g,m=t.targets,v=t.flow,y=t.drawBar,x=t.drawLine,b=t.drawArea,_=t.cx,S=t.cy,C=t.xv,T=t.xForText,k=t.yForText,A=t.duration,M=1,E=v.index,L=v.length,P=e.getValueOnIndex(e.data.targets[0].values,E),N=e.getValueOnIndex(e.data.targets[0].values,E+L),O=e.x.domain(),R=v.duration||A,D=v.done||function(){},I=e.generateWait();e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,L)}),s=e.updateXDomain(m,!0,!0),e.updateXGrid&&e.updateXGrid(!0),l=e.xgrid||i.selectAll([]),c=e.xgridLines||i.selectAll([]),u=e.mainRegion||i.selectAll([]),h=e.mainText||i.selectAll([]),d=e.mainBar||i.selectAll([]),f=e.mainLine||i.selectAll([]),p=e.mainArea||i.selectAll([]),g=e.mainCircle||i.selectAll([]),v.orgDataCount?r=1===v.orgDataCount||(P&&P.x)===(N&&N.x)?e.x(O[0])-e.x(s[0]):e.isTimeSeries()?e.x(O[0])-e.x(s[0]):e.x(P.x)-e.x(N.x):1!==e.data.targets[0].values.length?r=e.x(O[0])-e.x(s[0]):e.isTimeSeries()?(P=e.getValueOnIndex(e.data.targets[0].values,0),N=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(P.x)-e.x(N.x)):r=w(s)/2,M=w(O)/w(s),o="translate("+r+",0) scale("+M+",1)",e.hideXGridFocus();var H=i.transition().ease(i.easeLinear).duration(R);I.add(e.xAxis(e.axes.x,H)),I.add(d.transition(H).attr("transform",o)),I.add(f.transition(H).attr("transform",o)),I.add(p.transition(H).attr("transform",o)),I.add(g.transition(H).attr("transform",o)),I.add(h.transition(H).attr("transform",o)),I.add(u.filter(e.isRegionOnX).transition(H).attr("transform",o)),I.add(l.transition(H).attr("transform",o)),I.add(c.transition(H).attr("transform",o)),I(function(){var t,i=[],r=[];if(L){for(t=0;t<L;t++)i.push("."+a.shape+"-"+(E+t)),r.push("."+a.text+"-"+(E+t));e.svg.selectAll("."+a.shapes).selectAll(i).remove(),e.svg.selectAll("."+a.texts).selectAll(r).remove(),e.svg.select("."+a.xgrid).remove()}l.attr("transform",null).attr("x1",e.xgridAttr.x1).attr("x2",e.xgridAttr.x2).attr("y1",e.xgridAttr.y1).attr("y2",e.xgridAttr.y2).style("opacity",e.xgridAttr.opacity),c.attr("transform",null),c.select("line").attr("x1",n.axis_rotated?0:C).attr("x2",n.axis_rotated?e.width:C),c.select("text").attr("x",n.axis_rotated?e.width:0).attr("y",C),d.attr("transform",null).attr("d",y),f.attr("transform",null).attr("d",x),p.attr("transform",null).attr("d",b),g.attr("transform",null).attr("cx",_).attr("cy",S),h.attr("transform",null).attr("x",T).attr("y",k).style("fill-opacity",e.opacityForText.bind(e)),u.attr("transform",null),u.filter(e.isRegionOnX).attr("x",e.regionX.bind(e)).attr("width",e.regionWidth.bind(e)),D(),e.flowing=!1})}},E.focus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),this.revert(),this.defocus(),e.classed(a.focused,!0).classed(a.defocused,!1),n.hasArcType()&&n.expandArc(t),n.toggleFocusLegend(t,!0),n.focusedTargetIds=t,n.defocusedTargetIds=n.defocusedTargetIds.filter(function(e){return t.indexOf(e)<0})},E.defocus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),e.classed(a.focused,!1).classed(a.defocused,!0),n.hasArcType()&&n.unexpandArc(t),n.toggleFocusLegend(t,!1),n.focusedTargetIds=n.focusedTargetIds.filter(function(e){return t.indexOf(e)<0}),n.defocusedTargetIds=t},E.revert=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t)),e.classed(a.focused,!1).classed(a.defocused,!1),n.hasArcType()&&n.unexpandArc(t),n.config.legend_show&&(n.showLegend(t.filter(n.isLegendToShow.bind(n))),n.legend.selectAll(n.selectorLegends(t)).filter(function(){return n.d3.select(this).classed(a.legendItemFocused)}).classed(a.legendItemFocused,!1)),n.focusedTargetIds=[],n.defocusedTargetIds=[]},E.xgrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_x_lines=t,e.redrawWithoutRescale(),n.grid_x_lines):n.grid_x_lines},E.xgrids.add=function(t){var e=this.internal;return this.xgrids(e.config.grid_x_lines.concat(t||[]))},E.xgrids.remove=function(t){this.internal.removeGridLines(t,!0)},E.ygrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_y_lines=t,e.redrawWithoutRescale(),n.grid_y_lines):n.grid_y_lines},E.ygrids.add=function(t){var e=this.internal;return this.ygrids(e.config.grid_y_lines.concat(t||[]))},E.ygrids.remove=function(t){this.internal.removeGridLines(t,!1)},E.groups=function(t){var e=this.internal,n=e.config;return v(t)?n.data_groups:(n.data_groups=t,e.redraw(),n.data_groups)},E.legend=function(){},E.legend.show=function(t){var e=this.internal;e.showLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},E.legend.hide=function(t){var e=this.internal;e.hideLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},E.load=function(t){var e=this.internal,n=e.config;if(t.xs&&e.addXs(t.xs),"names"in t&&E.data.names.bind(this)(t.names),"classes"in t&&Object.keys(t.classes).forEach(function(e){n.data_classes[e]=t.classes[e]}),"categories"in t&&e.isCategorized()&&(n.axis_x_categories=t.categories),"axes"in t&&Object.keys(t.axes).forEach(function(e){n.data_axes[e]=t.axes[e]}),"colors"in t&&Object.keys(t.colors).forEach(function(e){n.data_colors[e]=t.colors[e]}),"cacheIds"in t&&e.hasCaches(t.cacheIds))return void e.load(e.getCaches(t.cacheIds),t.done);"unload"in t?e.unload(e.mapToTargetIds("boolean"==typeof t.unload&&t.unload?null:t.unload),function(){e.loadFromArgs(t)}):e.loadFromArgs(t)},E.unload=function(t){var e=this.internal;t=t||{},t instanceof Array?t={ids:t}:"string"==typeof t&&(t={ids:[t]}),e.unload(e.mapToTargetIds(t.ids),function(){e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),t.done&&t.done()})},E.regions=function(t){var e=this.internal,n=e.config;return t?(n.regions=t,e.redrawWithoutRescale(),n.regions):n.regions},E.regions.add=function(t){var e=this.internal,n=e.config;return t?(n.regions=n.regions.concat(t),e.redrawWithoutRescale(),n.regions):n.regions},E.regions.remove=function(t){var e,n,i,r=this.internal,o=r.config;return t=t||{},e=r.getOption(t,"duration",o.transition_duration),n=r.getOption(t,"classes",[a.region]),i=r.main.select("."+a.regions).selectAll(n.map(function(t){return"."+t})),(e?i.transition().duration(e):i).style("opacity",0).remove(),o.regions=o.regions.filter(function(t){var e=!1;return!t.class||(t.class.split(" ").forEach(function(t){n.indexOf(t)>=0&&(e=!0)}),!e)}),o.regions},E.selected=function(t){var e=this.internal,n=e.d3;return n.merge(e.main.selectAll("."+a.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+a.shape).filter(function(){return n.select(this).classed(a.SELECTED)}).map(function(t){return t.map(function(t){var e=t.__data__;return e.data?e.data:e})}))},E.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(s,l){var c=r.select(this),u=s.data?s.data.id:s.id,h=i.getToggle(this,s).bind(i),d=o.data_selection_grouped||!t||t.indexOf(u)>=0,f=!e||e.indexOf(l)>=0,p=c.classed(a.SELECTED);c.classed(a.line)||c.classed(a.area)||(d&&f?o.data_selection_isselectable(s)&&!p&&h(!0,c.classed(a.SELECTED,!0),s,l):y(n)&&n&&p&&h(!1,c.classed(a.SELECTED,!1),s,l))})},E.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+a.shapes).selectAll("."+a.shape).each(function(o,s){var l=i.select(this),c=o.data?o.data.id:o.id,u=n.getToggle(this,o).bind(n),h=r.data_selection_grouped||!t||t.indexOf(c)>=0,d=!e||e.indexOf(s)>=0,f=l.classed(a.SELECTED);l.classed(a.line)||l.classed(a.area)||h&&d&&r.data_selection_isselectable(o)&&f&&u(!1,l.classed(a.SELECTED,!1),o,s)})},E.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("display","initial","important").style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},E.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0),n.style("display","none")}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},E.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},E.tooltip=function(){},E.tooltip.show=function(t){var e,n,i=this.internal,r={};t.mouse?r=t.mouse:(t.data?n=t.data:void 0!==t.x&&(e=t.id?i.data.targets.filter(function(e){return e.id===t.id}):i.data.targets,n=i.filterByX(e,t.x).slice(0,1)[0]),r=n?i.getMousePosition(n):null),i.dispatchEvent("mousemove",r),i.config.tooltip_onshow.call(i,n)},E.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)},E.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},L.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),o=n||{withTransitionForAxis:r};o.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(o)},E.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},E.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},E.zoom=function(t){var e=this.internal;return t?(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.config.subchart_show?e.brush.selectionAsValue(t,!0):(e.updateXDomain(null,!0,!1,!1,t),e.redraw({withY:e.config.zoom_rescale,withSubchart:!1})),e.config.zoom_onzoom.call(this,e.x.orgDomain()),t):e.x.domain()},E.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},E.unzoom=function(){var t=this.internal;t.config.subchart_show?t.brush.clear():(t.updateXDomain(null,!0,!1,!1,t.subX.domain()),t.redraw({withY:t.config.zoom_rescale,withSubchart:!1}))},E.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_max;n.zoom_x_max=i.max([e.orgXDomain[1],t])},E.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;if(0!==t&&!t)return n.zoom_x_min;n.zoom_x_min=i.min([e.orgXDomain[0],t])},E.zoom.range=function(t){if(!arguments.length)return{max:this.domain.max(),min:this.domain.min()};y(t.max)&&this.domain.max(t.max),y(t.min)&&this.domain.min(t.min)},L.initPie=function(){var t=this,e=t.d3;t.pie=e.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)});var n=t.getOrderFunction();if(n&&(t.isOrderAsc()||t.isOrderDesc())){var i=n;n=function(t,e){return-1*i(t,e)}}t.pie.sort(n||null)},L.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width,i=t.filterTargetsToShow(t.data.targets).length*t.config.gauge_arcs_minWidth;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2*(t.hasType("gauge")?.85:1),t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0,t.gaugeArcWidth=n||(i<=t.radius-t.innerRadius?t.radius-t.innerRadius:i<=t.radius?i:t.radius)},L.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},L.updateAngle=function(t){var e,n,i,r,o=this,a=o.config,s=!1,l=0;return a?(o.pie(o.filterTargetsToShow(o.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,t=e,t.index=l),l++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),o.isGaugeType(t.data)&&(e=a.gauge_min,n=a.gauge_max,i=Math.PI*(a.gauge_fullCircle?2:1)/(n-e),r=t.value<e?0:t.value<n?t.value-e:n-e,t.startAngle=a.gauge_startingAngle,t.endAngle=t.startAngle+i*r),s?t:null):null},L.getSvgArc=function(){var t=this,e=t.hasType("gauge"),n=t.gaugeArcWidth/t.filterTargetsToShow(t.data.targets).length,i=t.d3.arc().outerRadius(function(i){return e?t.radius-n*i.index:t.radius}).innerRadius(function(i){return e?t.radius-n*(i.index+1):t.innerRadius}),r=function(e,n){var r;return n?i(e):(r=t.updateAngle(e),r?i(r):"M 0 0")};return r.centroid=i.centroid,r},L.getSvgArcExpanded=function(t){t=t||1;var e=this,n=e.hasType("gauge"),i=e.gaugeArcWidth/e.filterTargetsToShow(e.data.targets).length,r=Math.min(e.radiusExpanded*t-e.radius,.8*i-100*(1-t)),o=e.d3.arc().outerRadius(function(o){return n?e.radius-i*o.index+r:e.radiusExpanded*t}).innerRadius(function(t){return n?e.radius-i*(t.index+1):e.innerRadius});return function(t){var n=e.updateAngle(t);return n?o(n):"M 0 0"}},L.getArc=function(t,e,n){return n||this.isArcType(t.data)?this.svgArc(t,e):"M 0 0"},L.transformForArcLabel=function(t){var e,n,i,r,o,a=this,s=a.config,l=a.updateAngle(t),c="",u=a.hasType("gauge");if(l&&!u)e=this.svgArc.centroid(l),n=isNaN(e[0])?0:e[0],i=isNaN(e[1])?0:e[1],r=Math.sqrt(n*n+i*i),
+o=a.hasType("donut")&&s.donut_label_ratio?p(s.donut_label_ratio)?s.donut_label_ratio(t,a.radius,r):s.donut_label_ratio:a.hasType("pie")&&s.pie_label_ratio?p(s.pie_label_ratio)?s.pie_label_ratio(t,a.radius,r):s.pie_label_ratio:a.radius&&r?(36/a.radius>.375?1.175-36/a.radius:.8)*a.radius/r:0,c="translate("+n*o+","+i*o+")";else if(l&&u&&a.filterTargetsToShow(a.data.targets).length>1){var h=Math.sin(l.endAngle-Math.PI/2);n=Math.cos(l.endAngle-Math.PI/2)*(a.radiusExpanded+25),i=h*(a.radiusExpanded+15-Math.abs(10*h))+3,c="translate("+n+","+i+")"}return c},L.getArcRatio=function(t){var e=this,n=e.config,i=Math.PI*(e.hasType("gauge")&&!n.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/i:null},L.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},L.textForArcLabel=function(t){var e,n,i,r,o,a=this;return a.shouldShowArcLabel()?(e=a.updateAngle(t),n=e?e.value:null,i=a.getArcRatio(e),r=t.data.id,a.hasType("gauge")||a.meetsArcLabelThreshold(i)?(o=a.getArcLabelFormat(),o?o(n,i,r):a.defaultArcValueFormat(n,i)):""):""},L.textForGaugeMinMax=function(t,e){var n=this,i=n.getGaugeLabelExtents();return i?i(t,e):t},L.expandArc=function(t){var e,n=this;if(n.transiting)return void(e=window.setInterval(function(){n.transiting||(window.clearInterval(e),n.legend.selectAll(".c3-legend-item-focused").size()>0&&n.expandArc(t))},10));t=n.mapToTargetIds(t),n.svg.selectAll(n.selectorTargets(t,"."+a.chartArc)).each(function(t){n.shouldExpand(t.data.id)&&n.d3.select(this).selectAll("path").transition().duration(n.expandDuration(t.data.id)).attr("d",n.svgArcExpanded).transition().duration(2*n.expandDuration(t.data.id)).attr("d",n.svgArcExpandedSub).each(function(t){n.isDonutType(t.data)})})},L.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+a.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+a.arc))},L.expandDuration=function(t){var e=this,n=e.config;return e.isDonutType(t)?n.donut_expand_duration:e.isGaugeType(t)?n.gauge_expand_duration:e.isPieType(t)?n.pie_expand_duration:50},L.shouldExpand=function(t){var e=this,n=e.config;return e.isDonutType(t)&&n.donut_expand||e.isGaugeType(t)&&n.gauge_expand||e.isPieType(t)&&n.pie_expand},L.shouldShowArcLabel=function(){var t=this,e=t.config,n=!0;return t.hasType("donut")?n=e.donut_label_show:t.hasType("pie")&&(n=e.pie_label_show),n},L.meetsArcLabelThreshold=function(t){var e=this,n=e.config;return t>=(e.hasType("donut")?n.donut_label_threshold:n.pie_label_threshold)},L.getArcLabelFormat=function(){var t=this,e=t.config,n=e.pie_label_format;return t.hasType("gauge")?n=e.gauge_label_format:t.hasType("donut")&&(n=e.donut_label_format),n},L.getGaugeLabelExtents=function(){return this.config.gauge_label_extents},L.getArcTitle=function(){var t=this;return t.hasType("donut")?t.config.donut_title:""},L.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),s=i.classArcs.bind(i),l=i.classFocus.bind(i);e=r.select("."+a.chartArcs).selectAll("."+a.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+l(t.data)}),n=e.enter().append("g").attr("class",o),n.append("g").attr("class",s),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},L.initArc=function(){var t=this;t.arcs=t.main.select("."+a.chart).append("g").attr("class",a.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",a.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},L.redrawArc=function(t,e,n){var i,r,o,s,l,c=this,u=c.d3,h=c.config,d=c.main,f=c.hasType("gauge");if(i=d.selectAll("."+a.arcs).selectAll("."+a.arc).data(c.arcData.bind(c)),r=i.enter().append("path").attr("class",c.classArc.bind(c)).style("fill",function(t){return c.color(t.data)}).style("cursor",function(t){return h.interaction_enabled&&h.data_selection_isselectable(t)?"pointer":null}).each(function(t){c.isGaugeType(t.data)&&(t.startAngle=t.endAngle=h.gauge_startingAngle),this._current=t}).merge(i),f&&(s=d.selectAll("."+a.arcs).selectAll("."+a.arcLabelLine).data(c.arcData.bind(c)),l=s.enter().append("rect").attr("class",function(t){return a.arcLabelLine+" "+a.target+" "+a.target+"-"+t.data.id}).merge(s),1===c.filterTargetsToShow(c.data.targets).length?l.style("display","none"):l.style("fill",function(t){return h.color_pattern.length>0?c.levelColor(t.data.values[0].value):c.color(t.data)}).style("display",h.gauge_labelLine_show?"":"none").each(function(t){var e=0,n=0,i=0,r="";if(c.hiddenTargetIds.indexOf(t.data.id)<0){var o=c.updateAngle(t),a=c.gaugeArcWidth/c.filterTargetsToShow(c.data.targets).length*(o.index+1),s=o.endAngle-Math.PI/2,l=c.radius-a,h=s-(0===l?0:1/l);e=c.radiusExpanded-c.radius+a,n=Math.cos(h)*l,i=Math.sin(h)*l,r="rotate("+180*s/Math.PI+", "+n+", "+i+")"}u.select(this).attr("x",n).attr("y",i).attr("width",e).attr("height",2).attr("transform",r).style("stroke-dasharray","0, "+(e+2)+", 0")})),r.attr("transform",function(t){return!c.isGaugeType(t.data)&&n?"scale(0)":""}).on("mouseover",h.interaction_enabled?function(t){var e,n;c.transiting||(e=c.updateAngle(t))&&(n=c.convertToArcData(e),c.expandArc(e.data.id),c.api.focus(e.data.id),c.toggleFocusLegend(e.data.id,!0),c.config.data_onmouseover(n,this))}:null).on("mousemove",h.interaction_enabled?function(t){var e,n,i=c.updateAngle(t);i&&(e=c.convertToArcData(i),n=[e],c.showTooltip(n,this))}:null).on("mouseout",h.interaction_enabled?function(t){var e,n;c.transiting||(e=c.updateAngle(t))&&(n=c.convertToArcData(e),c.unexpandArc(e.data.id),c.api.revert(),c.revertLegend(),c.hideTooltip(),c.config.data_onmouseout(n,this))}:null).on("click",h.interaction_enabled?function(t,e){var n,i=c.updateAngle(t);i&&(n=c.convertToArcData(i),c.toggleShape&&c.toggleShape(this,n,e),c.config.data_onclick.call(c.api,n,this))}:null).each(function(){c.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=c.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=u.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,c.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return c.levelColor?c.levelColor(t.data.values[0].value):c.color(t.data.id)}).call(c.endall,function(){c.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),d.selectAll("."+a.chartArc).select("text").style("opacity",0).attr("class",function(t){return c.isGaugeType(t.data)?a.gaugeValue:""}).text(c.textForArcLabel.bind(c)).attr("transform",c.transformForArcLabel.bind(c)).style("font-size",function(t){return c.isGaugeType(t.data)&&1===c.filterTargetsToShow(c.data.targets).length?Math.round(c.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return c.isTargetToShow(t.data.id)&&c.isArcType(t.data)?1:0}),d.select("."+a.chartArcsTitle).style("opacity",c.hasType("donut")||f?1:0),f){var p=0;o=c.arcs.select("g."+a.chartArcsBackground).selectAll("path."+a.chartArcsBackground).data(c.data.targets),o.enter().append("path"),o.attr("class",function(t,e){return a.chartArcsBackground+" "+a.chartArcsBackground+"-"+e}).attr("d",function(t){if(c.hiddenTargetIds.indexOf(t.id)>=0)return"M 0 0";var e={data:[{value:h.gauge_max}],startAngle:h.gauge_startingAngle,endAngle:-1*h.gauge_startingAngle*(h.gauge_fullCircle?Math.PI:1),index:p++};return c.getArc(e,!0,!0)}),o.exit().remove(),c.arcs.select("."+a.chartArcsGaugeUnit).attr("dy",".75em").text(h.gauge_label_show?h.gauge_units:""),c.arcs.select("."+a.chartArcsGaugeMin).attr("dx",-1*(c.innerRadius+(c.radius-c.innerRadius)/(h.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(h.gauge_label_show?c.textForGaugeMinMax(h.gauge_min,!1):""),c.arcs.select("."+a.chartArcsGaugeMax).attr("dx",c.innerRadius+(c.radius-c.innerRadius)/(h.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(h.gauge_label_show?c.textForGaugeMinMax(h.gauge_max,!0):"")}},L.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("g").attr("class",a.chartArcsBackground),t.append("text").attr("class",a.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",a.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},L.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},L.hasCaches=function(t){for(var e=0;e<t.length;e++)if(!(t[e]in this.cache))return!1;return!0},L.addCache=function(t,e){this.cache[t]=this.cloneTarget(e)},L.getCaches=function(t){var e,n=[];for(e=0;e<t.length;e++)t[e]in this.cache&&n.push(this.cloneTarget(this.cache[t[e]]));return n},L.categoryName=function(t){var e=this.config;return t<e.axis_x_categories.length?e.axis_x_categories[t]:t},L.generateTargetClass=function(t){return t||0===t?("-"+t).replace(/\s/g,"-"):""},L.generateClass=function(t,e){return" "+t+" "+t+this.generateTargetClass(e)},L.classText=function(t){return this.generateClass(a.text,t.index)},L.classTexts=function(t){return this.generateClass(a.texts,t.id)},L.classShape=function(t){return this.generateClass(a.shape,t.index)},L.classShapes=function(t){return this.generateClass(a.shapes,t.id)},L.classLine=function(t){return this.classShape(t)+this.generateClass(a.line,t.id)},L.classLines=function(t){return this.classShapes(t)+this.generateClass(a.lines,t.id)},L.classCircle=function(t){return this.classShape(t)+this.generateClass(a.circle,t.index)},L.classCircles=function(t){return this.classShapes(t)+this.generateClass(a.circles,t.id)},L.classBar=function(t){return this.classShape(t)+this.generateClass(a.bar,t.index)},L.classBars=function(t){return this.classShapes(t)+this.generateClass(a.bars,t.id)},L.classArc=function(t){return this.classShape(t.data)+this.generateClass(a.arc,t.data.id)},L.classArcs=function(t){return this.classShapes(t.data)+this.generateClass(a.arcs,t.data.id)},L.classArea=function(t){return this.classShape(t)+this.generateClass(a.area,t.id)},L.classAreas=function(t){return this.classShapes(t)+this.generateClass(a.areas,t.id)},L.classRegion=function(t,e){return this.generateClass(a.region,e)+" "+("class"in t?t.class:"")},L.classEvent=function(t){return this.generateClass(a.eventRect,t.index)},L.classTarget=function(t){var e=this,n=e.config.data_classes[t],i="";return n&&(i=" "+a.target+"-"+n),e.generateClass(a.target,t)+i},L.classFocus=function(t){return this.classFocused(t)+this.classDefocused(t)},L.classFocused=function(t){return" "+(this.focusedTargetIds.indexOf(t.id)>=0?a.focused:"")},L.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?a.defocused:"")},L.classChartText=function(t){return a.chartText+this.classTarget(t.id)},L.classChartLine=function(t){return a.chartLine+this.classTarget(t.id)},L.classChartBar=function(t){return a.chartBar+this.classTarget(t.id)},L.classChartArc=function(t){return a.chartArc+this.classTarget(t.data.id)},L.getTargetSelectorSuffix=function(t){return this.generateTargetClass(t).replace(/([?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\])/g,"\\$1")},L.selectorTarget=function(t,e){return(e||"")+"."+a.target+this.getTargetSelectorSuffix(t)},L.selectorTargets=function(t,e){var n=this;return t=t||[],t.length?t.map(function(t){return n.selectorTarget(t,e)}):null},L.selectorLegend=function(t){return"."+a.legendItem+this.getTargetSelectorSuffix(t)},L.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null},L.getClipPath=function(t){return"url("+(window.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0?"":document.URL.split("#")[0])+"#"+t+")"},L.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},L.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},L.getAxisClipY=function(t){return t?-20:-this.margin.top},L.getXAxisClipX=function(){var t=this;return t.getAxisClipX(!t.config.axis_rotated)},L.getXAxisClipY=function(){var t=this;return t.getAxisClipY(!t.config.axis_rotated)},L.getYAxisClipX=function(){var t=this;return t.config.axis_y_inner?-1:t.getAxisClipX(t.config.axis_rotated)},L.getYAxisClipY=function(){var t=this;return t.getAxisClipY(t.config.axis_rotated)},L.getAxisClipWidth=function(t){var e=this,n=Math.max(30,e.margin.left),i=Math.max(30,e.margin.right);return t?e.width+2+n+i:e.margin.left+20},L.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},L.getXAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(!t.config.axis_rotated)},L.getXAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(!t.config.axis_rotated)},L.getYAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(t.config.axis_rotated)+(t.config.axis_y_inner?20:0)},L.getYAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(t.config.axis_rotated)},L.generateColor=function(){var t=this,e=t.config,n=t.d3,i=e.data_colors,r=S(e.color_pattern)?e.color_pattern:n.schemeCategory10,o=e.data_color,a=[];return function(t){var e,n=t.id||t.data&&t.data.id||t;return i[n]instanceof Function?e=i[n](t):i[n]?e=i[n]:(a.indexOf(n)<0&&a.push(n),e=r[a.indexOf(n)%r.length],i[n]=e),o instanceof Function?o(e,t):e}},L.generateLevelColor=function(){var t=this,e=t.config,n=e.color_pattern,i=e.color_threshold,r="value"===i.unit,o=i.values&&i.values.length?i.values:[],a=i.max||100;return S(e.color_threshold)?function(t){var e,i=n[n.length-1];for(e=0;e<o.length;e++)if((r?t:100*t/a)<o[e]){i=n[e];break}return i}:null},L.getDefaultConfig=function(){var t={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_initialRange:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(t){return t},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_selection:void 0,axis_x_label:{},axis_x_inner:void 0,axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_type:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,bar_space:0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_labelLine_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_label_extents:void 0,gauge_units:void 0,gauge_width:void 0,gauge_arcs_minWidth:5,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_order:void 0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(t,e,n,i){return this.getTooltipContent?this.getTooltipContent(t,e,n,i):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(e){t[e]=this.additionalConfig[e]},this),t},L.additionalConfig={},L.loadConfig=function(t){function e(){var t=i.shift();return t&&n&&"object"===(void 0===n?"undefined":s(n))&&t in n?(n=n[t],e()):t?void 0:n}var n,i,r,o=this.config;Object.keys(o).forEach(function(a){n=t,i=a.split("_"),r=e(),y(r)&&(o[a]=r)})},L.convertUrlToData=function(t,e,n,i,r){var o=this,a=e||"csv",s=o.d3.request(t);n&&Object.keys(n).forEach(function(t){s.header(t,n[t])}),s.get(function(t,e){var n,s=e.response||e.responseText;if(!e)throw new Error(t.responseURL+" "+t.status+" ("+t.statusText+")");n="json"===a?o.convertJsonToData(JSON.parse(s),i):"tsv"===a?o.convertTsvToData(s):o.convertCsvToData(s),r.call(o,n)})},L.convertXsvToData=function(t,e){var n=e.parseRows(t),i=d(n),r=i[0];return 0===i.slice(1).length?{keys:r,rows:[r.reduce(function(t,e){return Object.assign(t,c({},e,null))},{})]}:{keys:r,rows:[].concat(e.parse(t))}},L.convertCsvToData=function(t){return this.convertXsvToData(t,{parse:this.d3.csvParse,parseRows:this.d3.csvParseRows})},L.convertTsvToData=function(t){return this.convertXsvToData(t,{parse:this.d3.tsvParse,parseRows:this.d3.tsvParseRows})},L.convertJsonToData=function(t,e){var n,i,r=this,o=[];return e?(e.x?(n=e.value.concat(e.x),r.config.data_x=e.x):n=e.value,o.push(n),t.forEach(function(t){var e=[];n.forEach(function(n){var i=r.findValueInJson(t,n);v(i)&&(i=null),e.push(i)}),o.push(e)}),i=r.convertRowsToData(o)):(Object.keys(t).forEach(function(e){o.push([e].concat(t[e]))}),i=r.convertColumnsToData(o)),i},L.findValueInJson=function(t,e){e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var n=e.split("."),i=0;i<n.length;++i){var r=n[i];if(!(r in t))return;t=t[r]}return t},L.convertRowsToData=function(t){for(var e=[],n=t[0],i=1;i<t.length;i++){for(var r={},o=0;o<t[i].length;o++){if(v(t[i][o]))throw new Error("Source data is missing a component at ("+i+","+o+")!");r[n[o]]=t[i][o]}e.push(r)}return{keys:n,rows:e}},L.convertColumnsToData=function(t){for(var e=[],n=[],i=0;i<t.length;i++){for(var r=t[i][0],o=1;o<t[i].length;o++){if(v(e[o-1])&&(e[o-1]={}),v(t[i][o]))throw new Error("Source data is missing a component at ("+i+","+o+")!");e[o-1][r]=t[i][o]}n.push(r)}return{keys:n,rows:e}},L.convertDataToTargets=function(t,e){var n,i,r,o,a=this,s=a.config;return g(t)?o=Object.keys(t[0]):(o=t.keys,t=t.rows),i=o.filter(a.isNotX,a),r=o.filter(a.isX,a),i.forEach(function(n){var i=a.getXKey(n);a.isCustomX()||a.isTimeSeries()?r.indexOf(i)>=0?a.data.xs[n]=(e&&a.data.xs[n]?a.data.xs[n]:[]).concat(t.map(function(t){return t[i]}).filter(f).map(function(t,e){return a.generateTargetX(t,n,e)})):s.data_x?a.data.xs[n]=a.getOtherTargetXs():S(s.data_xs)&&(a.data.xs[n]=a.getXValuesOfXKey(i,a.data.targets)):a.data.xs[n]=t.map(function(t,e){return e})}),i.forEach(function(t){if(!a.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),n=i.map(function(e,n){var i=s.data_idConverter(e);return{id:i,id_org:e,values:t.map(function(t,r){var o,l=a.getXKey(e),c=t[l],u=null===t[e]||isNaN(t[e])?null:+t[e];return a.isCustomX()&&a.isCategorized()&&!v(c)?(0===n&&0===r&&(s.axis_x_categories=[]),-1===(o=s.axis_x_categories.indexOf(c))&&(o=s.axis_x_categories.length,s.axis_x_categories.push(c))):o=a.generateTargetX(c,e,r),(v(t[e])||a.data.xs[e].length<=r)&&(o=void 0),{x:o,value:u,id:i}}).filter(function(t){return y(t.x)})}}),n.forEach(function(t){var e;s.data_xSort&&(t.values=t.values.sort(function(t,e){return(t.x||0===t.x?t.x:1/0)-(e.x||0===e.x?e.x:1/0)})),e=0,t.values.forEach(function(t){t.index=e++}),a.data.xs[t.id].sort(function(t,e){return t-e})}),a.hasNegativeValue=a.hasNegativeValueInTargets(n),a.hasPositiveValue=a.hasPositiveValueInTargets(n),s.data_type&&a.setTargetType(a.mapToIds(n).filter(function(t){return!(t in s.data_types)}),s.data_type),n.forEach(function(t){a.addCache(t.id_org,t)}),n},L.isX=function(t){var e=this,n=e.config;return n.data_x&&t===n.data_x||S(n.data_xs)&&T(n.data_xs,t)},L.isNotX=function(t){return!this.isX(t)},L.getXKey=function(t){var e=this,n=e.config;return n.data_x?n.data_x:S(n.data_xs)?n.data_xs[t]:null},L.getXValuesOfXKey=function(t,e){var n,i=this;return(e&&S(e)?i.mapToIds(e):[]).forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},L.getXValue=function(t,e){var n=this;return t in n.data.xs&&n.data.xs[t]&&f(n.data.xs[t][e])?n.data.xs[t][e]:e},L.getOtherTargetXs=function(){var t=this,e=Object.keys(t.data.xs);return e.length?t.data.xs[e[0]]:null},L.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&t<e.length?e[t]:null},L.addXs=function(t){var e=this;Object.keys(t).forEach(function(n){e.config.data_xs[n]=t[n]})},L.addName=function(t){var e,n=this;return t&&(e=n.config.data_names[t.id],t.name=void 0!==e?e:t.id),t},L.getValueOnIndex=function(t,e){var n=t.filter(function(t){return t.index===e});return n.length?n[0]:null},L.updateTargetX=function(t,e){var n=this;t.forEach(function(t){t.values.forEach(function(i,r){i.x=n.generateTargetX(e[r],t.id,r)}),n.data.xs[t.id]=e})},L.updateTargetXs=function(t,e){var n=this;t.forEach(function(t){e[t.id]&&n.updateTargetX([t],e[t.id])})},L.generateTargetX=function(t,e,n){var i=this;return i.isTimeSeries()?t?i.parseDate(t):i.parseDate(i.getXValue(e,n)):i.isCustomX()&&!i.isCategorized()?f(t)?+t:i.getXValue(e,n):n},L.cloneTarget=function(t){return{id:t.id,id_org:t.id_org,values:t.values.map(function(t){return{x:t.x,value:t.value,id:t.id}})}},L.getMaxDataCount=function(){var t=this;return t.d3.max(t.data.targets,function(t){return t.values.length})},L.mapToIds=function(t){return t.map(function(t){return t.id})},L.mapToTargetIds=function(t){var e=this;return t?[].concat(t):e.mapToIds(e.data.targets)},L.hasTarget=function(t,e){var n,i=this.mapToIds(t);for(n=0;n<i.length;n++)if(i[n]===e)return!0;return!1},L.isTargetToShow=function(t){return this.hiddenTargetIds.indexOf(t)<0},L.isLegendToShow=function(t){return this.hiddenLegendIds.indexOf(t)<0},L.filterTargetsToShow=function(t){var e=this;return t.filter(function(t){return e.isTargetToShow(t.id)})},L.mapTargetsToUniqueXs=function(t){var e=this,n=e.d3.set(e.d3.merge(t.map(function(t){return t.values.map(function(t){return+t.x})}))).values();return n=e.isTimeSeries()?n.map(function(t){return new Date(+t)}):n.map(function(t){return+t}),n.sort(function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN})},L.addHiddenTargetIds=function(t){t=t instanceof Array?t:new Array(t);for(var e=0;e<t.length;e++)this.hiddenTargetIds.indexOf(t[e])<0&&(this.hiddenTargetIds=this.hiddenTargetIds.concat(t[e]))},L.removeHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(e){return t.indexOf(e)<0})},L.addHiddenLegendIds=function(t){t=t instanceof Array?t:new Array(t);for(var e=0;e<t.length;e++)this.hiddenLegendIds.indexOf(t[e])<0&&(this.hiddenLegendIds=this.hiddenLegendIds.concat(t[e]))},L.removeHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(e){return t.indexOf(e)<0})},L.getValuesAsIdKeyed=function(t){var e={};return t.forEach(function(t){e[t.id]=[],t.values.forEach(function(n){e[t.id].push(n.value)})}),e},L.checkValueInTargets=function(t,e){var n,i,r,o=Object.keys(t);for(n=0;n<o.length;n++)for(r=t[o[n]].values,i=0;i<r.length;i++)if(e(r[i].value))return!0;return!1},L.hasNegativeValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t<0})},L.hasPositiveValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t>0})},L.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},L.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},L.getOrderFunction=function(){var t=this,e=t.config,n=t.isOrderAsc(),i=t.isOrderDesc();if(n||i){var r=function(t,e){return t+Math.abs(e.value)};return function(t,e){var i=t.values.reduce(r,0),o=e.values.reduce(r,0);return n?o-i:i-o}}if(p(e.data_order))return e.data_order;if(g(e.data_order)){var o=e.data_order;return function(t,e){return o.indexOf(t.id)-o.indexOf(e.id)}}},L.orderTargets=function(t){var e=this.getOrderFunction();return e&&t.sort(e),t},L.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e==0})},L.filterRemoveNull=function(t){return t.filter(function(t){return f(t.value)})},L.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},L.hasDataLabel=function(){var t=this.config;return!("boolean"!=typeof t.data_labels||!t.data_labels)||!("object"!==s(t.data_labels)||!S(t.data_labels))},L.getDataLabelLength=function(t,e,n){var i=this,r=[0,0];return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=1.3*this.getBoundingClientRect()[n]}).remove(),r},L.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},L.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},L.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},L.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+a.bars+i.getTargetSelectorSuffix(t.id)+" ."+a.bar+"-"+t.index).node();!n&&i.isWithinBar(i.d3.mouse(e),e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var o=i.dist(t,e);o<r&&(r=o,n=t)}),n},L.dist=function(t,e){var n=this,i=n.config,r=i.axis_rotated?1:0,o=i.axis_rotated?0:1,a=n.circleY(t,t.index),s=n.x(t.x);return Math.sqrt(Math.pow(s-e[r],2)+Math.pow(a-e[o],2))},L.convertValuesToStep=function(t){var e,n=[].concat(t);if(!this.isCategorized())return t;for(e=t.length+1;0<e;e--)n[e]=n[e-1];return n[0]={x:n[0].x-1,value:n[0].value,id:n[0].id},n[t.length+1]={x:n[t.length].x+1,value:n[t.length].value,id:n[t.length].id},n},L.updateDataAttributes=function(t,e){var n=this,i=n.config,r=i["data_"+t];return void 0===e?r:(Object.keys(e).forEach(function(t){r[t]=e[t]}),n.redraw({withLegend:!0}),r)},L.load=function(t,e){var n=this;t&&(e.filter&&(t=t.filter(e.filter)),(e.type||e.types)&&t.forEach(function(t){var i=e.types&&e.types[t.id]?e.types[t.id]:e.type;n.setTargetType(t.id,i)}),n.data.targets.forEach(function(e){for(var n=0;n<t.length;n++)if(e.id===t[n].id){e.values=t[n].values,t.splice(n,1);break}}),n.data.targets=n.data.targets.concat(t)),n.updateTargets(n.data.targets),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),e.done&&e.done()},L.loadFromArgs=function(t){var e=this;t.data?e.load(e.convertDataToTargets(t.data),t):t.url?e.convertUrlToData(t.url,t.mimeType,t.headers,t.keys,function(n){e.load(e.convertDataToTargets(n),t)}):t.json?e.load(e.convertDataToTargets(e.convertJsonToData(t.json,t.keys)),t):t.rows?e.load(e.convertDataToTargets(e.convertRowsToData(t.rows)),t):t.columns?e.load(e.convertDataToTargets(e.convertColumnsToData(t.columns)),t):e.load(null,t)},L.unload=function(t,e){var n=this;if(e||(e=function(){}),!(t=t.filter(function(t){return n.hasTarget(n.data.targets,t)}))||0===t.length)return void e();n.svg.selectAll(t.map(function(t){return n.selectorTarget(t)})).transition().style("opacity",0).remove().call(n.endall,e),t.forEach(function(t){n.withoutFadeIn[t]=!1,n.legend&&n.legend.selectAll("."+a.legendItem+n.getTargetSelectorSuffix(t)).remove(),n.data.targets=n.data.targets.filter(function(e){return e.id!==t})})},L.getYDomainMin=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasNegativeValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t<0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t>0||(u[i][e]+=+t)});return s.d3.min(Object.keys(u).map(function(t){return s.d3.min(u[t])}))},L.getYDomainMax=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasPositiveValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t>0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t<0||(u[i][e]+=+t)});return s.d3.max(Object.keys(u).map(function(t){return s.d3.max(u[t])}))},L.getYDomain=function(t,e,n){var i,r,o,a,s,l,c,u,h,d,p=this,g=p.config,m=t.filter(function(t){return p.axis.getId(t.id)===e}),v=n?p.filterByXDomain(m,n):m,y="y2"===e?g.axis_y2_min:g.axis_y_min,x="y2"===e?g.axis_y2_max:g.axis_y_max,b=p.getYDomainMin(v),_=p.getYDomainMax(v),C="y2"===e?g.axis_y2_center:g.axis_y_center,T=p.hasType("bar",v)&&g.bar_zerobased||p.hasType("area",v)&&g.area_zerobased,k="y2"===e?g.axis_y2_inverted:g.axis_y_inverted,A=p.hasDataLabel()&&g.axis_rotated,M=p.hasDataLabel()&&!g.axis_rotated;return b=f(y)?y:f(x)?b<x?b:x-10:b,_=f(x)?x:f(y)?y<_?_:y+10:_,0===v.length?"y2"===e?p.y2.domain():p.y.domain():(isNaN(b)&&(b=0),isNaN(_)&&(_=b),b===_&&(b<0?_=0:b=0),h=b>=0&&_>=0,d=b<=0&&_<=0,(f(y)&&h||f(x)&&d)&&(T=!1),T&&(h&&(b=0),d&&(_=0)),r=Math.abs(_-b),o=a=.1*r,void 0!==C&&(s=Math.max(Math.abs(b),Math.abs(_)),_=C+s,b=C-s),A?(l=p.getDataLabelLength(b,_,"width"),c=w(p.y.range()),u=[l[0]/c,l[1]/c],
+o+=r*(u[1]/(1-u[0]-u[1])),a+=r*(u[0]/(1-u[0]-u[1]))):M&&(l=p.getDataLabelLength(b,_,"height"),o+=p.axis.convertPixelsToAxisPadding(l[1],r),a+=p.axis.convertPixelsToAxisPadding(l[0],r)),"y"===e&&S(g.axis_y_padding)&&(o=p.axis.getPadding(g.axis_y_padding,"top",o,r),a=p.axis.getPadding(g.axis_y_padding,"bottom",a,r)),"y2"===e&&S(g.axis_y2_padding)&&(o=p.axis.getPadding(g.axis_y2_padding,"top",o,r),a=p.axis.getPadding(g.axis_y2_padding,"bottom",a,r)),T&&(h&&(a=b),d&&(o=-_)),i=[b-a,_+o],k?i.reverse():i)},L.getXDomainMin=function(t){var e=this,n=e.config;return y(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},L.getXDomainMax=function(t){var e=this,n=e.config;return y(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},L.getXDomainPadding=function(t){var e,n,i,r,o=this,a=o.config,l=t[1]-t[0];return o.isCategorized()?n=0:o.hasType("bar")?(e=o.getMaxDataCount(),n=e>1?l/(e-1)/2:.5):n=.01*l,"object"===s(a.axis_x_padding)&&S(a.axis_x_padding)?(i=f(a.axis_x_padding.left)?a.axis_x_padding.left:n,r=f(a.axis_x_padding.right)?a.axis_x_padding.right:n):i=r="number"==typeof a.axis_x_padding?a.axis_x_padding:n,{left:i,right:r}},L.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],o=e.getXDomainPadding(n),a=0,s=0;return i-r!=0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(a=e.isTimeSeries()?new Date(i.getTime()-o.left):i-o.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+o.right):r+o.right),[a,s]},L.updateXDomain=function(t,e,n,i,r){var o=this,a=o.config;return n&&(o.x.domain(r||o.d3.extent(o.getXDomain(t))),o.orgXDomain=o.x.domain(),a.zoom_enabled&&o.zoom.update(),o.subX.domain(o.x.domain()),o.brush&&o.brush.updateScale(o.subX)),e&&o.x.domain(r||(!o.brush||o.brush.empty()?o.orgXDomain:o.brush.selectionAsValue())),i&&o.x.domain(o.trimXDomain(o.x.orgDomain())),o.x.domain()},L.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},L.drag=function(t){var e,n,i,r,o,s,l,c,u=this,h=u.config,d=u.main,f=u.d3;u.hasArcType()||h.data_selection_enabled&&h.data_selection_multiple&&(e=u.dragStart[0],n=u.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),s=Math.max(e,i),l=h.data_selection_grouped?u.margin.top:Math.min(n,r),c=h.data_selection_grouped?u.height:Math.max(n,r),d.select("."+a.dragarea).attr("x",o).attr("y",l).attr("width",s-o).attr("height",c-l),d.selectAll("."+a.shapes).selectAll("."+a.shape).filter(function(t){return h.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,h,d,p,g=f.select(this),m=g.classed(a.SELECTED),v=g.classed(a.INCLUDED),y=!1;if(g.classed(a.circle))n=1*g.attr("cx"),i=1*g.attr("cy"),d=u.togglePoint,y=o<n&&n<s&&l<i&&i<c;else{if(!g.classed(a.bar))return;p=A(this),n=p.x,i=p.y,r=p.width,h=p.height,d=u.togglePath,y=!(s<n||n+r<o||c<i||i+h<l)}y^v&&(g.classed(a.INCLUDED,!v),g.classed(a.SELECTED,!m),d.call(u,!m,g,t,e))}))},L.dragstart=function(t){var e=this,n=e.config;e.hasArcType()||n.data_selection_enabled&&(e.dragStart=t,e.main.select("."+a.chart).append("rect").attr("class",a.dragarea).style("opacity",.1),e.dragging=!0)},L.dragend=function(){var t=this,e=t.config;t.hasArcType()||e.data_selection_enabled&&(t.main.select("."+a.dragarea).transition().duration(100).style("opacity",0).remove(),t.main.selectAll("."+a.shape).classed(a.INCLUDED,!1),t.dragging=!1)},L.getYFormat=function(t){var e=this,n=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.yFormat,i=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.y2Format;return function(t,r,o){return("y2"===e.axis.getId(o)?i:n).call(e,t,r)}},L.yFormat=function(t){var e=this,n=e.config;return(n.axis_y_tick_format?n.axis_y_tick_format:e.defaultValueFormat)(t)},L.y2Format=function(t){var e=this,n=e.config;return(n.axis_y2_tick_format?n.axis_y2_tick_format:e.defaultValueFormat)(t)},L.defaultValueFormat=function(t){return f(t)?+t:""},L.defaultArcValueFormat=function(t,e){return(100*e).toFixed(1)+"%"},L.dataLabelFormat=function(t){var e=this,n=e.config.data_labels,i=function(t){return f(t)?+t:""};return"function"==typeof n.format?n.format:"object"===s(n.format)?n.format[t]?!0===n.format[t]?i:n.format[t]:function(){return""}:i},L.initGrid=function(){var t=this,e=t.config,n=t.d3;t.grid=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",a.grid),e.grid_x_show&&t.grid.append("g").attr("class",a.xgrids),e.grid_y_show&&t.grid.append("g").attr("class",a.ygrids),e.grid_focus_show&&t.grid.append("g").attr("class",a.xgridFocus).append("line").attr("class",a.xgridFocus),t.xgrid=n.selectAll([]),e.grid_lines_front||t.initGridLines()},L.initGridLines=function(){var t=this,e=t.d3;t.gridLines=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",a.grid+" "+a.gridLines),t.gridLines.append("g").attr("class",a.xgridLines),t.gridLines.append("g").attr("class",a.ygridLines),t.xgridLines=e.selectAll([])},L.updateXGrid=function(t){var e=this,n=e.config,i=e.d3,r=e.generateGridData(n.grid_x_type,e.x),o=e.isCategorized()?e.xAxis.tickOffset():0;e.xgridAttr=n.axis_rotated?{x1:0,x2:e.width,y1:function(t){return e.x(t)-o},y2:function(t){return e.x(t)-o}}:{x1:function(t){return e.x(t)+o},x2:function(t){return e.x(t)+o},y1:0,y2:e.height},e.xgridAttr.opacity=function(){return+i.select(this).attr(n.axis_rotated?"y1":"x1")===(n.axis_rotated?e.height:0)?0:1};var s=e.main.select("."+a.xgrids).selectAll("."+a.xgrid).data(r),l=s.enter().append("line").attr("class",a.xgrid).attr("x1",e.xgridAttr.x1).attr("x2",e.xgridAttr.x2).attr("y1",e.xgridAttr.y1).attr("y2",e.xgridAttr.y2).style("opacity",0);e.xgrid=l.merge(s),t||e.xgrid.attr("x1",e.xgridAttr.x1).attr("x2",e.xgridAttr.x2).attr("y1",e.xgridAttr.y1).attr("y2",e.xgridAttr.y2).style("opacity",e.xgridAttr.opacity),s.exit().remove()},L.updateYGrid=function(){var t=this,e=t.config,n=t.yAxis.tickValues()||t.y.ticks(e.grid_y_ticks),i=t.main.select("."+a.ygrids).selectAll("."+a.ygrid).data(n),r=i.enter().append("line").attr("class",a.ygrid);t.ygrid=r.merge(i),t.ygrid.attr("x1",e.axis_rotated?t.y:0).attr("x2",e.axis_rotated?t.y:t.width).attr("y1",e.axis_rotated?0:t.y).attr("y2",e.axis_rotated?t.height:t.y),i.exit().remove(),t.smoothLines(t.ygrid,"grid")},L.gridTextAnchor=function(t){return t.position?t.position:"end"},L.gridTextDx=function(t){return"start"===t.position?4:"middle"===t.position?0:-4},L.xGridTextX=function(t){return"start"===t.position?-this.height:"middle"===t.position?-this.height/2:0},L.yGridTextX=function(t){return"start"===t.position?0:"middle"===t.position?this.width/2:this.width},L.updateGrid=function(t){var e,n,i,r,o=this,s=o.main,l=o.config,c=o.xv.bind(o),u=o.yv.bind(o),h=o.xGridTextX.bind(o),d=o.yGridTextX.bind(o);o.grid.style("visibility",o.hasArcType()?"hidden":"visible"),s.select("line."+a.xgridFocus).style("visibility","hidden"),l.grid_x_show&&o.updateXGrid(),e=s.select("."+a.xgridLines).selectAll("."+a.xgridLine).data(l.grid_x_lines),n=e.enter().append("g").attr("class",function(t){return a.xgridLine+(t.class?" "+t.class:"")}),n.append("line").attr("x1",l.axis_rotated?0:c).attr("x2",l.axis_rotated?o.width:c).attr("y1",l.axis_rotated?c:0).attr("y2",l.axis_rotated?c:o.height).style("opacity",0),n.append("text").attr("text-anchor",o.gridTextAnchor).attr("transform",l.axis_rotated?"":"rotate(-90)").attr("x",l.axis_rotated?d:h).attr("y",c).attr("dx",o.gridTextDx).attr("dy",-5).style("opacity",0),o.xgridLines=n.merge(e),e.exit().transition().duration(t).style("opacity",0).remove(),l.grid_y_show&&o.updateYGrid(),i=s.select("."+a.ygridLines).selectAll("."+a.ygridLine).data(l.grid_y_lines),r=i.enter().append("g").attr("class",function(t){return a.ygridLine+(t.class?" "+t.class:"")}),r.append("line").attr("x1",l.axis_rotated?u:0).attr("x2",l.axis_rotated?u:o.width).attr("y1",l.axis_rotated?0:u).attr("y2",l.axis_rotated?o.height:u).style("opacity",0),r.append("text").attr("text-anchor",o.gridTextAnchor).attr("transform",l.axis_rotated?"rotate(-90)":"").attr("x",l.axis_rotated?h:d).attr("y",u).attr("dx",o.gridTextDx).attr("dy",-5).style("opacity",0),o.ygridLines=r.merge(i),o.ygridLines.select("line").transition().duration(t).attr("x1",l.axis_rotated?u:0).attr("x2",l.axis_rotated?u:o.width).attr("y1",l.axis_rotated?0:u).attr("y2",l.axis_rotated?o.height:u).style("opacity",1),o.ygridLines.select("text").transition().duration(t).attr("x",l.axis_rotated?o.xGridTextX.bind(o):o.yGridTextX.bind(o)).attr("y",u).text(function(t){return t.text}).style("opacity",1),i.exit().transition().duration(t).style("opacity",0).remove()},L.redrawGrid=function(t,e){var n=this,i=n.config,r=n.xv.bind(n),o=n.xgridLines.select("line"),a=n.xgridLines.select("text");return[(t?o.transition(e):o).attr("x1",i.axis_rotated?0:r).attr("x2",i.axis_rotated?n.width:r).attr("y1",i.axis_rotated?r:0).attr("y2",i.axis_rotated?r:n.height).style("opacity",1),(t?a.transition(e):a).attr("x",i.axis_rotated?n.yGridTextX.bind(n):n.xGridTextX.bind(n)).attr("y",r).text(function(t){return t.text}).style("opacity",1)]},L.showXGridFocus=function(t){var e=this,n=e.config,i=t.filter(function(t){return t&&f(t.value)}),r=e.main.selectAll("line."+a.xgridFocus),o=e.xx.bind(e);n.tooltip_show&&(e.hasType("scatter")||e.hasArcType()||(r.style("visibility","visible").data([i[0]]).attr(n.axis_rotated?"y1":"x1",o).attr(n.axis_rotated?"y2":"x2",o),e.smoothLines(r,"grid")))},L.hideXGridFocus=function(){this.main.select("line."+a.xgridFocus).style("visibility","hidden")},L.updateXgridFocus=function(){var t=this,e=t.config;t.main.select("line."+a.xgridFocus).attr("x1",e.axis_rotated?0:-10).attr("x2",e.axis_rotated?t.width:-10).attr("y1",e.axis_rotated?-10:0).attr("y2",e.axis_rotated?-10:t.height)},L.generateGridData=function(t,e){var n,i,r,o,s=this,l=[],c=s.main.select("."+a.axisX).selectAll(".tick").size();if("year"===t)for(n=s.getXDomain(),i=n[0].getFullYear(),r=n[1].getFullYear(),o=i;o<=r;o++)l.push(new Date(o+"-01-01 00:00:00"));else l=e.ticks(10),l.length>c&&(l=l.filter(function(t){return(""+t).indexOf(".")<0}));return l},L.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},L.removeGridLines=function(t,e){var n=this,i=n.config,r=n.getGridFilterToRemove(t),o=function(t){return!r(t)},s=e?a.xgridLines:a.ygridLines,l=e?a.xgridLine:a.ygridLine;n.main.select("."+s).selectAll("."+l).filter(r).transition().duration(i.transition_duration).style("opacity",0).remove(),e?i.grid_x_lines=i.grid_x_lines.filter(o):i.grid_y_lines=i.grid_y_lines.filter(o)},L.initEventRect=function(){var t=this,e=t.config;t.main.select("."+a.chart).append("g").attr("class",a.eventRects).style("fill-opacity",0),t.eventRect=t.main.select("."+a.eventRects).append("rect").attr("class",a.eventRect),e.zoom_enabled&&t.zoom&&(t.eventRect.call(t.zoom).on("dblclick.zoom",null),e.zoom_initialRange&&t.eventRect.transition().duration(0).call(t.zoom.transform,t.zoomTransform(e.zoom_initialRange)))},L.redrawEventRect=function(){function t(){o.svg.select("."+a.eventRect).style("cursor",null),o.hideXGridFocus(),o.hideTooltip(),o.unexpandCircles(),o.unexpandBars()}var e,n,i,r,o=this,s=o.d3,l=o.config;e=0,n=0,i=o.width,r=o.height,o.main.select("."+a.eventRects).style("cursor",l.zoom_enabled?l.axis_rotated?"ns-resize":"ew-resize":null),o.eventRect.attr("x",e).attr("y",n).attr("width",i).attr("height",r).on("mouseout",l.interaction_enabled?function(){l&&(o.hasArcType()||t())}:null).on("mousemove",l.interaction_enabled?function(){var e,n,i,r,c;if(!o.dragging&&!o.hasArcType(e)){if(e=o.filterTargetsToShow(o.data.targets),n=s.mouse(this),i=o.findClosestFromTargets(e,n),!o.mouseover||i&&i.id===o.mouseover.id||(l.data_onmouseout.call(o.api,o.mouseover),o.mouseover=void 0),!i)return void t();r=o.isScatterType(i)||!l.tooltip_grouped?[i]:o.filterByX(e,i.x),c=r.map(function(t){return o.addName(t)}),o.showTooltip(c,this),l.point_focus_expand_enabled&&(o.unexpandCircles(),c.forEach(function(t){o.expandCircles(t.index,t.id,!1)})),o.expandBars(i.index,i.id,!0),o.showXGridFocus(c),(o.isBarType(i.id)||o.dist(i,n)<l.point_sensitivity)&&(o.svg.select("."+a.eventRect).style("cursor","pointer"),o.mouseover||(l.data_onmouseover.call(o.api,i),o.mouseover=i))}}:null).on("click",l.interaction_enabled?function(){var t,e,n,i;o.hasArcType(t)||(t=o.filterTargetsToShow(o.data.targets),e=s.mouse(this),(n=o.findClosestFromTargets(t,e))&&(o.isBarType(n.id)||o.dist(n,e)<l.point_sensitivity)&&(i=o.isScatterType(n)||!l.data_selection_grouped?[n]:o.filterByX(t,n.x),i.forEach(function(t){o.main.selectAll("."+a.shapes+o.getTargetSelectorSuffix(t.id)).selectAll("."+a.shape+"-"+t.index).each(function(){(l.data_selection_grouped||o.isWithinShape(this,t))&&(o.toggleShape(this,t,t.index),l.data_onclick.call(o.api,t,this))})})))}:null).call(l.interaction_enabled&&l.data_selection_draggable&&o.drag?s.drag().on("drag",function(){o.drag(s.mouse(this))}).on("start",function(){o.dragstart(s.mouse(this))}).on("end",function(){o.dragend()}):function(){})},L.getMousePosition=function(t){var e=this;return[e.x(t.x),e.getYScale(t.id)(t.value)]},L.dispatchEvent=function(t,e){var n=this,i="."+a.eventRect,r=n.main.select(i).node(),o=r.getBoundingClientRect(),s=o.left+(e?e[0]:0),l=o.top+(e?e[1]:0),c=document.createEvent("MouseEvents");c.initMouseEvent(t,!0,!0,window,0,s,l,s,l,!1,!1,!1,!1,0,null),r.dispatchEvent(c)},L.initLegend=function(){var t=this;if(t.legendItemTextBox={},t.legendHasRendered=!1,t.legend=t.svg.append("g").attr("transform",t.getTranslate("legend")),!t.config.legend_show)return t.legend.style("visibility","hidden"),void(t.hiddenLegendIds=t.mapToIds(t.data.targets));t.updateLegendWithDefaults()},L.updateLegendWithDefaults=function(){var t=this;t.updateLegend(t.mapToIds(t.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},L.updateSizeForLegend=function(t,e){var n=this,i=n.config,r={top:n.isLegendTop?n.getCurrentPaddingTop()+i.legend_inset_y+5.5:n.currentHeight-t-n.getCurrentPaddingBottom()-i.legend_inset_y,left:n.isLegendLeft?n.getCurrentPaddingLeft()+i.legend_inset_x+.5:n.currentWidth-e-n.getCurrentPaddingRight()-i.legend_inset_x+.5};n.margin3={top:n.isLegendRight?0:n.isLegendInset?r.top:n.currentHeight-t,right:NaN,bottom:0,left:n.isLegendRight?n.currentWidth-e:n.isLegendInset?r.left:0}},L.transformLegend=function(t){var e=this;(t?e.legend.transition():e.legend).attr("transform",e.getTranslate("legend"))},L.updateLegendStep=function(t){this.legendStep=t},L.updateLegendItemWidth=function(t){this.legendItemWidth=t},L.updateLegendItemHeight=function(t){this.legendItemHeight=t},L.getLegendWidth=function(){var t=this;return t.config.legend_show?t.isLegendRight||t.isLegendInset?t.legendItemWidth*(t.legendStep+1):t.currentWidth:0},L.getLegendHeight=function(){var t=this,e=0;return t.config.legend_show&&(e=t.isLegendRight?t.currentHeight:Math.max(20,t.legendItemHeight)*(t.legendStep+1)),e},L.opacityForLegend=function(t){return t.classed(a.legendItemHidden)?null:1},L.opacityForUnfocusedLegend=function(t){return t.classed(a.legendItemHidden)?null:.3},L.toggleFocusLegend=function(t,e){var n=this;t=n.mapToTargetIds(t),n.legend.selectAll("."+a.legendItem).filter(function(e){return t.indexOf(e)>=0}).classed(a.legendItemFocused,e).transition().duration(100).style("opacity",function(){return(e?n.opacityForLegend:n.opacityForUnfocusedLegend).call(n,n.d3.select(this))})},L.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+a.legendItem).classed(a.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},L.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},L.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&_(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},L.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},L.updateLegend=function(t,e,n){function i(t,e){return S.legendItemTextBox[e]||(S.legendItemTextBox[e]=S.getTextRect(t.textContent,a.legendItem,t)),S.legendItemTextBox[e]}function r(e,n,r){function o(t,e){e||(a=(p-N-f)/2)<L&&(a=(p-f)/2,N=0,j++),H[t]=j,I[j]=S.isLegendInset?10:a,O[t]=N,N+=f}var a,s,l=0===r,c=r===t.length-1,u=i(e,n),h=u.width+P+(!c||S.isLegendRight||S.isLegendInset?A:0)+T.legend_padding,d=u.height+k,f=S.isLegendRight||S.isLegendInset?d:h,p=S.isLegendRight||S.isLegendInset?S.getLegendHeight():S.getLegendWidth();if(l&&(N=0,j=0,M=0,E=0),T.legend_show&&!S.isLegendToShow(n))return void(R[n]=D[n]=H[n]=O[n]=0);R[n]=h,D[n]=d,(!M||h>=M)&&(M=h),(!E||d>=E)&&(E=d),s=S.isLegendRight||S.isLegendInset?E:M,T.legend_equally?(Object.keys(R).forEach(function(t){R[t]=M}),Object.keys(D).forEach(function(t){D[t]=E}),a=(p-s*t.length)/2,a<L?(N=0,j=0,t.forEach(function(t){o(t)})):o(n,!0)):o(n)}var o,s,l,c,u,h,d,f,p,g,m,v,x,b,w,_,S=this,T=S.config,k=4,A=10,M=0,E=0,L=10,P=T.legend_item_tile_width+5,N=0,O={},R={},D={},I=[0],H={},j=0;t=t.filter(function(t){return!y(T.data_names[t])||null!==T.data_names[t]}),e=e||{},m=C(e,"withTransition",!0),v=C(e,"withTransitionForTransform",!0),S.isLegendInset&&(j=T.legend_inset_step?T.legend_inset_step:t.length,S.updateLegendStep(j)),S.isLegendRight?(o=function(t){return M*H[t]},c=function(t){return I[H[t]]+O[t]}):S.isLegendInset?(o=function(t){return M*H[t]+10},c=function(t){return I[H[t]]+O[t]}):(o=function(t){return I[H[t]]+O[t]},c=function(t){return E*H[t]}),s=function(t,e){return o(t,e)+4+T.legend_item_tile_width},u=function(t,e){return c(t,e)+9},l=function(t,e){return o(t,e)},h=function(t,e){return c(t,e)-5},d=function(t,e){return o(t,e)-2},f=function(t,e){return o(t,e)-2+T.legend_item_tile_width},p=function(t,e){return c(t,e)+4},g=S.legend.selectAll("."+a.legendItem).data(t).enter().append("g").attr("class",function(t){return S.generateClass(a.legendItem,t)}).style("visibility",function(t){return S.isLegendToShow(t)?"visible":"hidden"}).style("cursor","pointer").on("click",function(t){T.legend_item_onclick?T.legend_item_onclick.call(S,t):S.d3.event.altKey?(S.api.hide(),S.api.show(t)):(S.api.toggle(t),S.isTargetToShow(t)?S.api.focus(t):S.api.revert())}).on("mouseover",function(t){T.legend_item_onmouseover?T.legend_item_onmouseover.call(S,t):(S.d3.select(this).classed(a.legendItemFocused,!0),!S.transiting&&S.isTargetToShow(t)&&S.api.focus(t))}).on("mouseout",function(t){T.legend_item_onmouseout?T.legend_item_onmouseout.call(S,t):(S.d3.select(this).classed(a.legendItemFocused,!1),S.api.revert())}),g.append("text").text(function(t){return y(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}).style("pointer-events","none").attr("x",S.isLegendRight||S.isLegendInset?s:-200).attr("y",S.isLegendRight||S.isLegendInset?-200:u),g.append("rect").attr("class",a.legendItemEvent).style("fill-opacity",0).attr("x",S.isLegendRight||S.isLegendInset?l:-200).attr("y",S.isLegendRight||S.isLegendInset?-200:h),g.append("line").attr("class",a.legendItemTile).style("stroke",S.color).style("pointer-events","none").attr("x1",S.isLegendRight||S.isLegendInset?d:-200).attr("y1",S.isLegendRight||S.isLegendInset?-200:p).attr("x2",S.isLegendRight||S.isLegendInset?f:-200).attr("y2",S.isLegendRight||S.isLegendInset?-200:p).attr("stroke-width",T.legend_item_tile_height),_=S.legend.select("."+a.legendBackground+" rect"),S.isLegendInset&&M>0&&0===_.size()&&(_=S.legend.insert("g","."+a.legendItem).attr("class",a.legendBackground).append("rect")),x=S.legend.selectAll("text").data(t).text(function(t){return y(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}),(m?x.transition():x).attr("x",s).attr("y",u),b=S.legend.selectAll("rect."+a.legendItemEvent).data(t),(m?b.transition():b).attr("width",function(t){return R[t]}).attr("height",function(t){return D[t]}).attr("x",l).attr("y",h),w=S.legend.selectAll("line."+a.legendItemTile).data(t),(m?w.transition():w).style("stroke",S.levelColor?function(t){return S.levelColor(S.cache[t].values[0].value)}:S.color).attr("x1",d).attr("y1",p).attr("x2",f).attr("y2",p),_&&(m?_.transition():_).attr("height",S.getLegendHeight()-12).attr("width",M*(j+1)+10),S.legend.selectAll("."+a.legendItem).classed(a.legendItemHidden,function(t){return!S.isTargetToShow(t)}),S.updateLegendItemWidth(M),S.updateLegendItemHeight(E),S.updateLegendStep(j),S.updateSizes(),S.updateScales(),S.updateSvgSize(),S.transformAll(v,n),S.legendHasRendered=!0},L.initRegion=function(){var t=this;t.region=t.main.append("g").attr("clip-path",t.clipPath).attr("class",a.regions)},L.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible");var i=e.main.select("."+a.regions).selectAll("."+a.region).data(n.regions),r=i.enter().append("rect").attr("x",e.regionX.bind(e)).attr("y",e.regionY.bind(e)).attr("width",e.regionWidth.bind(e)).attr("height",e.regionHeight.bind(e)).style("fill-opacity",0);e.mainRegion=r.merge(i).attr("class",e.classRegion.bind(e)),i.exit().transition().duration(t).style("opacity",0).remove()},L.redrawRegion=function(t,e){var n=this,i=n.mainRegion;return[(t?i.transition(e):i).attr("x",n.regionX.bind(n)).attr("y",n.regionY.bind(n)).attr("width",n.regionWidth.bind(n)).attr("height",n.regionHeight.bind(n)).style("fill-opacity",function(t){return f(t.opacity)?t.opacity:.1})]},L.regionX=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated&&"start"in t?i(t.start):0:n.axis_rotated?0:"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},L.regionY=function(t){var e=this,n=e.config,i="y"===t.axis?e.y:e.y2;return"y"===t.axis||"y2"===t.axis?n.axis_rotated?0:"end"in t?i(t.end):0:n.axis_rotated&&"start"in t?e.x(e.isTimeSeries()?e.parseDate(t.start):t.start):0},L.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?o(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width,e<r?0:e-r},L.regionHeight=function(t){var e,n=this,i=n.config,r=this.regionY(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?n.height:"start"in t?o(t.start):n.height:i.axis_rotated&&"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.height,e<r?0:e-r},L.isRegionOnX=function(t){return!t.axis||"x"===t.axis},L.getScale=function(t,e,n){return(n?this.d3.scaleTime():this.d3.scaleLinear()).range([t,e])},L.getX=function(t,e,n,i){var r,o=this,a=o.getScale(t,e,o.isTimeSeries()),s=n?a.domain(n):a;o.isCategorized()?(i=i||function(){return 0},a=function(t,e){var n=s(t)+i(t);return e?n:Math.ceil(n)}):a=function(t,e){var n=s(t);return e?n:Math.ceil(n)};for(r in s)a[r]=s[r];return a.orgDomain=function(){return s.domain()},o.isCategorized()&&(a.domain=function(t){return arguments.length?(s.domain(t),a):(t=this.orgDomain(),[t[0],t[1]+1])}),a},L.getY=function(t,e,n){var i=this.getScale(t,e,this.isTimeSeriesY());return n&&i.domain(n),i},L.getYScale=function(t){return"y2"===this.axis.getId(t)?this.y2:this.y},L.getSubYScale=function(t){return"y2"===this.axis.getId(t)?this.subY2:this.subY},L.updateScales=function(){var t=this,e=t.config,n=!t.x;t.xMin=e.axis_rotated?1:0,t.xMax=e.axis_rotated?t.height:t.width,t.yMin=e.axis_rotated?0:t.height,t.yMax=e.axis_rotated?t.width:1,t.subXMin=t.xMin,t.subXMax=t.xMax,t.subYMin=e.axis_rotated?0:t.height2,t.subYMax=e.axis_rotated?t.width2:1,t.x=t.getX(t.xMin,t.xMax,n?void 0:t.x.orgDomain(),function(){return t.xAxis.tickOffset()}),t.y=t.getY(t.yMin,t.yMax,n?e.axis_y_default:t.y.domain()),t.y2=t.getY(t.yMin,t.yMax,n?e.axis_y2_default:t.y2.domain()),t.subX=t.getX(t.xMin,t.xMax,t.orgXDomain,function(e){return e%1?0:t.subXAxis.tickOffset()}),t.subY=t.getY(t.subYMin,t.subYMax,n?e.axis_y_default:t.subY.domain()),t.subY2=t.getY(t.subYMin,t.subYMax,n?e.axis_y2_default:t.subY2.domain()),t.xAxisTickFormat=t.axis.getXAxisTickFormat(),t.xAxisTickValues=t.axis.getXAxisTickValues(),t.yAxisTickValues=t.axis.getYAxisTickValues(),t.y2AxisTickValues=t.axis.getY2AxisTickValues(),t.xAxis=t.axis.getXAxis(t.x,t.xOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.subXAxis=t.axis.getXAxis(t.subX,t.subXOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.yAxis=t.axis.getYAxis(t.y,t.yOrient,e.axis_y_tick_format,t.yAxisTickValues,e.axis_y_tick_outer),t.y2Axis=t.axis.getYAxis(t.y2,t.y2Orient,e.axis_y2_tick_format,t.y2AxisTickValues,e.axis_y2_tick_outer),n||t.brush&&t.brush.updateScale(t.subX),t.updateArc&&t.updateArc()},L.selectPoint=function(t,e,n){var i=this,r=i.config,o=(r.axis_rotated?i.circleY:i.circleX).bind(i),s=(r.axis_rotated?i.circleX:i.circleY).bind(i),l=i.pointSelectR.bind(i);r.data_onselected.call(i.api,e,t.node()),i.main.select("."+a.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+a.selectedCircle+"-"+n).data([e]).enter().append("circle").attr("class",function(){return i.generateClass(a.selectedCircle,n)}).attr("cx",o).attr("cy",s).attr("stroke",function(){return i.color(e)}).attr("r",function(t){return 1.4*i.pointSelectR(t)}).transition().duration(100).attr("r",l)},L.unselectPoint=function(t,e,n){var i=this;i.config.data_onunselected.call(i.api,e,t.node()),i.main.select("."+a.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+a.selectedCircle+"-"+n).transition().duration(100).attr("r",0).remove()},L.togglePoint=function(t,e,n,i){t?this.selectPoint(e,n,i):this.unselectPoint(e,n,i)},L.selectPath=function(t,e){var n=this;n.config.data_onselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.d3.rgb(n.color(e)).brighter(.75)})},L.unselectPath=function(t,e){var n=this;n.config.data_onunselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.color(e)})},L.togglePath=function(t,e,n,i){t?this.selectPath(e,n,i):this.unselectPath(e,n,i)},L.getToggle=function(t,e){var n,i=this;return"circle"===t.nodeName?n=i.isStepType(e)?function(){}:i.togglePoint:"path"===t.nodeName&&(n=i.togglePath),n},L.toggleShape=function(t,e,n){var i=this,r=i.d3,o=i.config,s=r.select(t),l=s.classed(a.SELECTED),c=i.getToggle(t,e).bind(i);o.data_selection_enabled&&o.data_selection_isselectable(e)&&(o.data_selection_multiple||i.main.selectAll("."+a.shapes+(o.data_selection_grouped?i.getTargetSelectorSuffix(e.id):"")).selectAll("."+a.shape).each(function(t,e){var n=r.select(this);n.classed(a.SELECTED)&&c(!1,n.classed(a.SELECTED,!1),t,e)}),s.classed(a.SELECTED,!l),c(!l,s,e,n))},L.initBar=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartBars)},L.updateTargetsForBar=function(t){var e,n,i=this,r=i.config,o=i.classChartBar.bind(i),s=i.classBars.bind(i),l=i.classFocus.bind(i);e=i.main.select("."+a.chartBars).selectAll("."+a.chartBar).data(t).attr("class",function(t){return o(t)+l(t)}),n=e.enter().append("g").attr("class",o).style("pointer-events","none"),n.append("g").attr("class",s).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null})},L.updateBar=function(t){var e=this,n=e.barData.bind(e),i=e.classBar.bind(e),r=e.initialOpacity.bind(e),o=function(t){return e.color(t.id)},s=e.main.selectAll("."+a.bars).selectAll("."+a.bar).data(n),l=s.enter().append("path").attr("class",i).style("stroke",o).style("fill",o);e.mainBar=l.merge(s).style("opacity",r),s.exit().transition().duration(t).style("opacity",0)},L.redrawBar=function(t,e,n){return[(e?this.mainBar.transition(n):this.mainBar).attr("d",t).style("stroke",this.color).style("fill",this.color).style("opacity",1)]},L.getBarW=function(t,e){var n=this,i=n.config,r="number"==typeof i.bar_width?i.bar_width:e?t.tickInterval()*i.bar_width_ratio/e:0;return i.bar_width_max&&r>i.bar_width_max?i.bar_width_max:r},L.getBars=function(t,e){var n=this;return(e?n.main.selectAll("."+a.bars+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+a.bar+(f(t)?"-"+t:""))},L.expandBars=function(t,e,n){var i=this;n&&i.unexpandBars(),i.getBars(t,e).classed(a.EXPANDED,!0)},L.unexpandBars=function(t){this.getBars(t).classed(a.EXPANDED,!1)},L.generateDrawBar=function(t,e){var n=this,i=n.config,r=n.generateGetBarPoints(t,e);return function(t,e){var n=r(t,e),o=i.axis_rotated?1:0,a=i.axis_rotated?0:1;return"M "+n[0][o]+","+n[0][a]+" L"+n[1][o]+","+n[1][a]+" L"+n[2][o]+","+n[2][a]+" L"+n[3][o]+","+n[3][a]+" z"}},L.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,o=n.getBarW(i,r),a=n.getShapeX(o,r,t,!!e),s=n.getShapeY(!!e),l=n.getShapeOffset(n.isBarType,t,!!e),c=o*(n.config.bar_space/2),u=e?n.getSubYScale:n.getYScale;return function(t,e){var i=u.call(n,t.id)(0),r=l(t,e)||i,h=a(t),d=s(t);return n.config.axis_rotated&&(0<t.value&&d<i||t.value<0&&i<d)&&(d=i),[[h+c,r],[h+c,d-(i-r)],[h+o-c,d-(i-r)],[h+o-c,r]]}},L.isWithinBar=function(t,e){var n=e.getBoundingClientRect(),i=e.pathSegList.getItem(0),r=e.pathSegList.getItem(1),o=Math.min(i.x,r.x),a=Math.min(i.y,r.y),s=n.width,l=n.height,c=o-2,u=o+s+2,h=a+l+2,d=a-2;return c<t[0]&&t[0]<u&&d<t[1]&&t[1]<h},L.getShapeIndices=function(t){var e,n,i=this,r=i.config,o={},a=0;return i.filterTargetsToShow(i.data.targets.filter(t,i)).forEach(function(t){for(e=0;e<r.data_groups.length;e++)if(!(r.data_groups[e].indexOf(t.id)<0))for(n=0;n<r.data_groups[e].length;n++)if(r.data_groups[e][n]in o){o[t.id]=o[r.data_groups[e][n]];break}v(o[t.id])&&(o[t.id]=a++)}),o.__max__=a-1,o},L.getShapeX=function(t,e,n,i){var r=this,o=i?r.subX:r.x;return function(i){var r=i.id in n?n[i.id]:0;return i.x||0===i.x?o(i.x)-t*(e/2-r):0}},L.getShapeY=function(t){var e=this;return function(n){return(t?e.getSubYScale(n.id):e.getYScale(n.id))(n.value)}},L.getShapeOffset=function(t,e,n){var i=this,r=i.orderTargets(i.filterTargetsToShow(i.data.targets.filter(t,i))),o=r.map(function(t){return t.id});return function(t,a){var s=n?i.getSubYScale(t.id):i.getYScale(t.id),l=s(0),c=l;return r.forEach(function(n){var r=i.isStepType(t)?i.convertValuesToStep(n.values):n.values;n.id!==t.id&&e[n.id]===e[t.id]&&o.indexOf(n.id)<o.indexOf(t.id)&&(void 0!==r[a]&&+r[a].x==+t.x||(a=-1,r.forEach(function(e,n){e.x===t.x&&(a=n)})),a in r&&r[a].value*t.value>=0&&(c+=s(r[a].value)-l))}),c}},L.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(a.bar)||i.isWithinBar(i.d3.mouse(t),t)):n=!1,n},L.getInterpolate=function(t){var e=this,n=e.d3,i={linear:n.curveLinear,"linear-closed":n.curveLinearClosed,basis:n.curveBasis,"basis-open":n.curveBasisOpen,"basis-closed":n.curveBasisClosed,bundle:n.curveBundle,cardinal:n.curveCardinal,"cardinal-open":n.curveCardinalOpen,"cardinal-closed":n.curveCardinalClosed,monotone:n.curveMonotoneX,step:n.curveStep};return e.isSplineType(t)?i[e.config.spline_interpolation_type]||i.cardinal:e.isStepType(t)?i[e.config.line_step_type]:i.linear},L.initLine=function(){this.main.select("."+a.chart).append("g").attr("class",a.chartLines)},L.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),s=i.classLines.bind(i),l=i.classAreas.bind(i),c=i.classCircles.bind(i),u=i.classFocus.bind(i);e=i.main.select("."+a.chartLines).selectAll("."+a.chartLine).data(t).attr("class",function(t){return o(t)+u(t)}),
+n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",s),n.append("g").attr("class",l),n.append("g").attr("class",function(t){return i.generateClass(a.selectedCircles,t.id)}),n.append("g").attr("class",c).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+a.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+a.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},L.updateLine=function(t){var e=this,n=e.main.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);e.mainLine=i.merge(n).style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),n.exit().transition().duration(t).style("opacity",0)},L.redrawLine=function(t,e,n){return[(e?this.mainLine.transition(n):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},L.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.line(),o=n.generateGetLinePoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(l).y(s):r.x(s).y(l),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var o,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,l=e?n.subX:n.x,c=a.call(n,t.id),u=0,h=0;return n.isLineType(t)?i.data_regions[t.id]?o=n.lineWithRegions(s,l,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),o=r.curve(n.getInterpolate(t))(s)):(s[0]&&(u=l(s[0].x),h=c(s[0].value)),o=i.axis_rotated?"M "+h+" "+u:"M "+u+" "+h),o||"M 0 0"}},L.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)]]}},L.lineWithRegions=function(t,e,n,i){function r(t){return"M"+t[0][0]+" "+t[0][1]+" "+t[1][0]+" "+t[1][1]}var o,a,s,l,c,u,h,d,f,p,g,m,x=this,b=x.config,w="M",_=x.isCategorized()?.5:0,S=[];if(y(i))for(o=0;o<i.length;o++)S[o]={},v(i[o].start)?S[o].start=t[0].x:S[o].start=x.isTimeSeries()?x.parseDate(i[o].start):i[o].start,v(i[o].end)?S[o].end=t[t.length-1].x:S[o].end=x.isTimeSeries()?x.parseDate(i[o].end):i[o].end;for(g=b.axis_rotated?function(t){return n(t.value)}:function(t){return e(t.x)},m=b.axis_rotated?function(t){return e(t.x)}:function(t){return n(t.value)},s=x.isTimeSeries()?function(t,i,o,a){var s,l=t.x.getTime(),u=i.x-t.x,h=new Date(l+u*o),d=new Date(l+u*(o+a));return s=b.axis_rotated?[[n(c(o)),e(h)],[n(c(o+a)),e(d)]]:[[e(h),n(c(o))],[e(d),n(c(o+a))]],r(s)}:function(t,i,o,a){var s;return s=b.axis_rotated?[[n(c(o),!0),e(l(o))],[n(c(o+a),!0),e(l(o+a))]]:[[e(l(o),!0),n(c(o))],[e(l(o+a),!0),n(c(o+a))]],r(s)},o=0;o<t.length;o++){if(v(S)||!function(t,e){var n;for(n=0;n<e.length;n++)if(e[n].start<t&&t<=e[n].end)return!0;return!1}(t[o].x,S))w+=" "+g(t[o])+" "+m(t[o]);else for(l=x.getScale(t[o-1].x+_,t[o].x+_,x.isTimeSeries()),c=x.getScale(t[o-1].value,t[o].value),u=e(t[o].x)-e(t[o-1].x),h=n(t[o].value)-n(t[o-1].value),d=Math.sqrt(Math.pow(u,2)+Math.pow(h,2)),f=2/d,p=2*f,a=f;a<=1;a+=p)w+=s(t[o-1],t[o],a,f);t[o].x}return w},L.updateArea=function(t){var e=this,n=e.d3,i=e.main.selectAll("."+a.areas).selectAll("."+a.area).data(e.lineData.bind(e)),r=i.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0});e.mainArea=r.merge(i).style("opacity",e.orgAreaOpacity),i.exit().transition().duration(t).style("opacity",0)},L.redrawArea=function(t,e,n){return[(e?this.mainArea.transition(n):this.mainArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},L.generateDrawArea=function(t,e){var n=this,i=n.config,r=n.d3.area(),o=n.generateGetAreaPoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(n.getAreaBaseValue(t.id))},c=function(t,e){return i.data_groups.length>0?o(t,e)[1][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(l).x1(c).y(s):r.x(s).y0(i.area_above?0:l).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,o=i.line_connectNull?n.filterRemoveNull(t.values):t.values,a=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(o=n.convertValuesToStep(o)),e=r.curve(n.getInterpolate(t))(o)):(o[0]&&(a=n.x(o[0].x),s=n.getYScale(t.id)(o[0].value)),e=i.axis_rotated?"M "+s+" "+a:"M "+a+" "+s),e||"M 0 0"}},L.getAreaBaseValue=function(){return 0},L.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,c],[u,h-(r-c)],[u,h-(r-c)],[u,c]]}},L.updateCircle=function(t,e){var n=this,i=n.main.selectAll("."+a.circles).selectAll("."+a.circle).data(n.lineOrScatterData.bind(n)),r=i.enter().append("circle").attr("class",n.classCircle.bind(n)).attr("cx",t).attr("cy",e).attr("r",n.pointR.bind(n)).style("fill",n.color);n.mainCircle=r.merge(i).style("opacity",n.initialOpacityForCircle.bind(n)),i.exit().style("opacity",0)},L.redrawCircle=function(t,e,n,i){var r=this,o=r.main.selectAll("."+a.selectedCircle);return[(n?r.mainCircle.transition(i):r.mainCircle).style("opacity",this.opacityForCircle.bind(r)).style("fill",r.color).attr("cx",t).attr("cy",e),(n?o.transition(i):o).attr("cx",t).attr("cy",e)]},L.circleX=function(t){return t.x||0===t.x?this.x(t.x):null},L.updateCircleY=function(){var t,e,n=this;n.config.data_groups.length>0?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},L.getCircles=function(t,e){var n=this;return(e?n.main.selectAll("."+a.circles+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+a.circle+(f(t)?"-"+t:""))},L.expandCircles=function(t,e,n){var i=this,r=i.pointExpandedR.bind(i);n&&i.unexpandCircles(),i.getCircles(t,e).classed(a.EXPANDED,!0).attr("r",r)},L.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(a.EXPANDED)}).classed(a.EXPANDED,!1).attr("r",n)},L.pointR=function(t){var e=this,n=e.config;return e.isStepType(t)?0:p(n.point_r)?n.point_r(t):n.point_r},L.pointExpandedR=function(t){var e=this,n=e.config;return n.point_focus_expand_enabled?p(n.point_focus_expand_r)?n.point_focus_expand_r(t):n.point_focus_expand_r?n.point_focus_expand_r:1.75*e.pointR(t):e.pointR(t)},L.pointSelectR=function(t){var e=this,n=e.config;return p(n.point_select_r)?n.point_select_r(t):n.point_select_r?n.point_select_r:4*e.pointR(t)},L.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),o=+r.attr("cx"),a=+r.attr("cy");return Math.sqrt(Math.pow(o-i[0],2)+Math.pow(a-i[1],2))<e},L.isWithinStep=function(t,e){return Math.abs(e-this.d3.mouse(t)[1])<30},L.getCurrentWidth=function(){var t=this,e=t.config;return e.size_width?e.size_width:t.getParentWidth()},L.getCurrentHeight=function(){var t=this,e=t.config,n=e.size_height?e.size_height:t.getParentHeight();return n>0?n:320/(t.hasType("gauge")&&!e.gauge_fullCircle?2:1)},L.getCurrentPaddingTop=function(){var t=this,e=t.config,n=f(e.padding_top)?e.padding_top:0;return t.title&&t.title.node()&&(n+=t.getTitlePadding()),n},L.getCurrentPaddingBottom=function(){var t=this.config;return f(t.padding_bottom)?t.padding_bottom:0},L.getCurrentPaddingLeft=function(t){var e=this,n=e.config;return f(n.padding_left)?n.padding_left:n.axis_rotated?!n.axis_x_show||n.axis_x_inner?1:Math.max(x(e.getAxisWidthByAxisId("x",t)),40):!n.axis_y_show||n.axis_y_inner?e.axis.getYAxisLabelPosition().isOuter?30:1:x(e.getAxisWidthByAxisId("y",t))},L.getCurrentPaddingRight=function(){var t=this,e=t.config,n=t.isLegendRight?t.getLegendWidth()+20:0;return f(e.padding_right)?e.padding_right+1:e.axis_rotated?10+n:!e.axis_y2_show||e.axis_y2_inner?2+n+(t.axis.getY2AxisLabelPosition().isOuter?20:0):x(t.getAxisWidthByAxisId("y2"))+n},L.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},L.getParentWidth=function(){return this.getParentRectValue("width")},L.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},L.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?a.axisX:a.axisY,o=e.main.select("."+r).node(),s=o&&i?o.getBoundingClientRect():{right:0},l=e.selectChart.node().getBoundingClientRect(),c=e.hasArcType(),u=s.right-l.left-(c?0:e.getCurrentPaddingLeft(t));return u>0?u:0},L.getAxisWidthByAxisId=function(t,e){var n=this,i=n.axis.getLabelPositionById(t);return n.axis.getMaxTickWidth(t,e)+(i.isInner?20:40)},L.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_x_tick_rotate))/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-Math.abs(n.axis_y_tick_rotate))/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},L.initBrush=function(t){var e=this,n=e.d3;return e.brush=(e.config.axis_rotated?n.brushY():n.brushX()).on("brush",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.redrawForBrush()}).on("end",function(){var t=n.event.sourceEvent;t&&"zoom"===t.type||e.brush.empty()&&t&&"end"!==t.type&&e.brush.clear()}),e.brush.updateExtent=function(){var t,n=this.scale.range();return t=e.config.axis_rotated?[[0,n[0]],[e.width2,n[1]]]:[[n[0],0],[n[1],e.height2]],this.extent(t),this},e.brush.updateScale=function(t){return this.scale=t,this},e.brush.update=function(t){this.updateScale(t||e.subX).updateExtent(),e.context.select("."+a.brush).call(this)},e.brush.clear=function(){e.context.select("."+a.brush).call(e.brush.move,null)},e.brush.selection=function(){return n.brushSelection(e.context.select("."+a.brush).node())},e.brush.selectionAsValue=function(t,n){var i,r;return t?(e.context&&(i=[this.scale(t[0]),this.scale(t[1])],r=e.context.select("."+a.brush),n&&(r=r.transition()),e.brush.move(r,i)),[]):(i=e.brush.selection()||[0,0],[this.scale.invert(i[0]),this.scale.invert(i[1])])},e.brush.empty=function(){var t=e.brush.selection();return!t||t[0]===t[1]},e.brush.updateScale(t)},L.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",a.chart),n.select("."+a.chart).append("g").attr("class",a.chartBars),n.select("."+a.chart).append("g").attr("class",a.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",a.brush),t.axes.subx=n.append("g").attr("class",a.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis)},L.initSubchartBrush=function(){var t=this;t.initBrush(t.subX).updateExtent(),t.context.select("."+a.brush).call(t.brush)},L.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,s=o.context,l=o.config,c=o.classChartBar.bind(o),u=o.classBars.bind(o),h=o.classChartLine.bind(o),d=o.classLines.bind(o),f=o.classAreas.bind(o);l.subchart_show&&(r=s.select("."+a.chartBars).selectAll("."+a.chartBar).data(t),i=r.enter().append("g").style("opacity",0),i.merge(r).attr("class",c),i.append("g").attr("class",u),n=s.select("."+a.chartLines).selectAll("."+a.chartLine).data(t),e=n.enter().append("g").style("opacity",0),e.merge(n).attr("class",h),e.append("g").attr("class",d),e.append("g").attr("class",f),s.selectAll("."+a.brush+" rect").attr(l.axis_rotated?"width":"height",l.axis_rotated?o.width2:o.height2))},L.updateBarForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.bars).selectAll("."+a.bar).data(e.barData.bind(e)),i=n.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextBar=i.merge(n).style("opacity",e.initialOpacity.bind(e))},L.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},L.updateLineForSubchart=function(t){var e=this,n=e.context.selectAll("."+a.lines).selectAll("."+a.line).data(e.lineData.bind(e)),i=n.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color);n.exit().transition().duration(t).style("opacity",0).remove(),e.contextLine=i.merge(n).style("opacity",e.initialOpacity.bind(e))},L.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},L.updateAreaForSubchart=function(t){var e=this,n=e.d3,i=e.context.selectAll("."+a.areas).selectAll("."+a.area).data(e.lineData.bind(e)),r=i.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0});i.exit().transition().duration(t).style("opacity",0).remove(),e.contextArea=r.merge(i).style("opacity",0)},L.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},L.redrawSubchart=function(t,e,n,i,r,o,a){var s,l,c,u=this,h=u.d3,d=u.config;u.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(h.event&&"zoom"===h.event.type&&u.brush.selectionAsValue(u.x.orgDomain()),t&&(u.brush.empty()||u.brush.selectionAsValue(u.x.orgDomain()),s=u.generateDrawArea(r,!0),l=u.generateDrawBar(o,!0),c=u.generateDrawLine(a,!0),u.updateBarForSubchart(n),u.updateLineForSubchart(n),u.updateAreaForSubchart(n),u.redrawBarForSubchart(l,n,n),u.redrawLineForSubchart(c,n,n),u.redrawAreaForSubchart(s,n,n)))},L.redrawForBrush=function(){var t,e=this,n=e.x,i=e.d3;e.redraw({withTransition:!1,withY:e.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withEventRect:!1,withDimension:!1}),t=i.event.selection||e.brush.scale.range(),e.main.select("."+a.eventRect).call(e.zoom.transform,i.zoomIdentity.scale(e.width/(t[1]-t[0])).translate(-t[0],0)),e.config.subchart_onbrush.call(e.api,n.orgDomain())},L.transformContext=function(t,e){var n,i=this;e&&e.axisSubX?n=e.axisSubX:(n=i.context.select("."+a.axisX),t&&(n=n.transition())),i.context.attr("transform",i.getTranslate("context")),n.attr("transform",i.getTranslate("subx"))},L.getDefaultSelection=function(){var t=this,e=t.config,n=p(e.axis_x_selection)?e.axis_x_selection(t.getXDomain(t.data.targets)):e.axis_x_selection;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},L.initText=function(){var t=this;t.main.select("."+a.chart).append("g").attr("class",a.chartTexts),t.mainText=t.d3.selectAll([])},L.updateTargetsForText=function(t){var e=this,n=e.classChartText.bind(e),i=e.classTexts.bind(e),r=e.classFocus.bind(e),o=e.main.select("."+a.chartTexts).selectAll("."+a.chartText).data(t),s=o.enter().append("g").attr("class",n).style("opacity",0).style("pointer-events","none");s.append("g").attr("class",i),s.merge(o).attr("class",function(t){return n(t)+r(t)})},L.updateText=function(t,e,n){var i=this,r=i.config,o=i.barOrLineData.bind(i),s=i.classText.bind(i),l=i.main.selectAll("."+a.texts).selectAll("."+a.text).data(o),c=l.enter().append("text").attr("class",s).attr("text-anchor",function(t){return r.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").attr("x",t).attr("y",e).style("fill",function(t){return i.color(t)}).style("fill-opacity",0);i.mainText=c.merge(l).text(function(t,e,n){return i.dataLabelFormat(t.id)(t.value,t.id,e,n)}),l.exit().transition().duration(n).style("fill-opacity",0).remove()},L.redrawText=function(t,e,n,i,r){return[(i?this.mainText.transition(r):this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},L.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),o=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a=this.d3.select(n).style("font");return o.selectAll(".dummy").data([t]).enter().append("text").classed(e||"",!0).style("font",a).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},L.generateXYForText=function(t,e,n,i){var r=this,o=r.generateGetAreaPoints(t,!1),a=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),l=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?o:r.isBarType(t)?a:s;return l.call(r,n(t,e),t,this)}},L.getXForText=function(t,e,n){var i,r,o=this,a=n.getBoundingClientRect();return o.config.axis_rotated?(r=o.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=o.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>o.width?i=o.width-a.width:i<0&&(i=4)),i},L.getYForText=function(t,e,n){var i,r=this,o=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*o.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=o.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(i<o.height?i=o.height:i>this.height&&(i=this.height-4)),i},L.initTitle=function(){var t=this;t.title=t.svg.append("text").text(t.config.title_text).attr("class",t.CLASS.title)},L.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},L.xForTitle=function(){var t=this,e=t.config,n=e.title_position||"left";return n.indexOf("right")>=0?t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width-e.title_padding.right:n.indexOf("center")>=0?(t.currentWidth-t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).width)/2:e.title_padding.left},L.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},L.getTitlePadding=function(){var t=this;return t.yForTitle()+t.config.title_padding.bottom},L.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",a.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&m(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t<e.data.targets[0].values.length&&e.data.targets[0].values[t].x-n.tooltip_init_x!=0;t++);n.tooltip_init_x=t}e.tooltip.html(n.tooltip_contents.call(e,e.data.targets.map(function(t){return e.addName(t.values[n.tooltip_init_x])}),e.axis.getXAxisTickFormat(),e.getYFormat(e.hasArcType()),e.color)),e.tooltip.style("top",n.tooltip_init_position.top).style("left",n.tooltip_init_position.left).style("display","block")}},L.getTooltipSortFunction=function(){var t=this,e=t.config;if(0!==e.data_groups.length&&void 0===e.tooltip_order){var n=t.orderTargets(t.data.targets).map(function(t){return t.id});return(t.isOrderAsc()||t.isOrderDesc())&&(n=n.reverse()),function(t,e){return n.indexOf(t.id)-n.indexOf(e.id)}}var i=e.tooltip_order;void 0===i&&(i=e.data_order);var r=function(t){return t?t.value:null};if(m(i)&&"asc"===i.toLowerCase())return function(t,e){return r(t)-r(e)};if(m(i)&&"desc"===i.toLowerCase())return function(t,e){return r(e)-r(t)};if(p(i)){var o=i;return void 0===e.tooltip_order&&(o=function(t,e){return i(t?{id:t.id,values:[t]}:null,e?{id:e.id,values:[e]}:null)}),o}return g(i)?function(t,e){return i.indexOf(t.id)-i.indexOf(e.id)}:void 0},L.getTooltipContent=function(t,e,n,i){var r,o,a,s,l,c,u=this,h=u.config,d=h.tooltip_format_title||e,f=h.tooltip_format_name||function(t){return t},p=h.tooltip_format_value||n,g=this.getTooltipSortFunction();for(g&&t.sort(g),o=0;o<t.length;o++)if(t[o]&&(t[o].value||0===t[o].value)&&(r||(a=k(d?d(t[o].x):t[o].x),r="<table class='"+u.CLASS.tooltip+"'>"+(a||0===a?"<tr><th colspan='2'>"+a+"</th></tr>":"")),void 0!==(s=k(p(t[o].value,t[o].ratio,t[o].id,t[o].index,t))))){if(null===t[o].name)continue;l=k(f(t[o].name,t[o].ratio,t[o].id,t[o].index)),c=u.levelColor?u.levelColor(t[o].value):i(t[o].id),r+="<tr class='"+u.CLASS.tooltipName+"-"+u.getTargetSelectorSuffix(t[o].id)+"'>",r+="<td class='name'><span style='background-color:"+c+"'></span>"+l+"</td>",r+="<td class='value'>"+s+"</td>",r+="</tr>"}return r+"</table>"},L.tooltipPosition=function(t,e,n,i){var r,o,a,s,l,c=this,u=c.config,h=c.d3,d=c.hasArcType(),f=h.mouse(i);return d?(o=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+f[0],s=(c.hasType("gauge")?c.height:c.height/2)+f[1]+20):(r=c.getSvgLeft(!0),u.axis_rotated?(o=r+f[0]+100,a=o+e,l=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20,a=o+e,l=r+c.currentWidth-c.getCurrentPaddingRight(),s=f[1]+15),a>l&&(o-=a-l+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:o}},L.showTooltip=function(t,e){var n,i,r,o=this,a=o.config,s=o.hasArcType(),l=t.filter(function(t){return t&&f(t.value)}),c=a.tooltip_position||L.tooltipPosition;0!==l.length&&a.tooltip_show&&(o.tooltip.html(a.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(s),o.color)).style("display","block"),n=o.tooltip.property("offsetWidth"),i=o.tooltip.property("offsetHeight"),r=c.call(this,l,n,i,e),o.tooltip.style("top",r.top+"px").style("left",r.left+"px"))},L.hideTooltip=function(){this.tooltip.style("display","none")},L.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},L.hasType=function(t,e){var n=this,i=n.config.data_types,r=!1;return e=e||n.data.targets,e&&e.length?e.forEach(function(e){var n=i[e.id];(n&&n.indexOf(t)>=0||!n&&"line"===t)&&(r=!0)}):Object.keys(i).length?Object.keys(i).forEach(function(e){i[e]===t&&(r=!0)}):r=n.config.data_type===t,r},L.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},L.isLineType=function(t){var e=this.config,n=m(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},L.isStepType=function(t){var e=m(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},L.isSplineType=function(t){var e=m(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},L.isAreaType=function(t){var e=m(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},L.isBarType=function(t){var e=m(t)?t:t.id;return"bar"===this.config.data_types[e]},L.isScatterType=function(t){var e=m(t)?t:t.id;return"scatter"===this.config.data_types[e]},L.isPieType=function(t){var e=m(t)?t:t.id;return"pie"===this.config.data_types[e]},L.isGaugeType=function(t){var e=m(t)?t:t.id;return"gauge"===this.config.data_types[e]},L.isDonutType=function(t){var e=m(t)?t:t.id;return"donut"===this.config.data_types[e]},L.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},L.lineData=function(t){return this.isLineType(t)?[t]:[]},L.arcData=function(t){return this.isArcType(t.data)?[t]:[]},L.barData=function(t){return this.isBarType(t)?t.values:[]},L.lineOrScatterData=function(t){return this.isLineType(t)||this.isScatterType(t)?t.values:[]},L.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},L.isSafari=function(){var t=window.navigator.userAgent;return t.indexOf("Safari")>=0&&t.indexOf("Chrome")<0},L.isChrome=function(){return window.navigator.userAgent.indexOf("Chrome")>=0},L.initZoom=function(){var t,e=this,n=e.d3,i=e.config;return e.zoom=n.zoom().on("start",function(){var r=n.event.sourceEvent;r&&"brush"===r.type||(t=r,i.zoom_onzoomstart.call(e.api,r))}).on("zoom",function(){var t=n.event.sourceEvent;t&&"brush"===t.type||e.redrawForZoom.call(e)}).on("end",function(){var r=n.event.sourceEvent;r&&"brush"===r.type||r&&t.clientX===r.clientX&&t.clientY===r.clientY||i.zoom_onzoomend.call(e.api,e.x.orgDomain())}),e.zoom.updateDomain=function(){return n.event&&n.event.transform&&e.x.domain(n.event.transform.rescaleX(e.subX).domain()),this},e.zoom.updateExtent=function(){return this.scaleExtent([1,1/0]).translateExtent([[0,0],[e.width,e.height]]).extent([[0,0],[e.width,e.height]]),this},e.zoom.update=function(){return this.updateExtent().updateDomain()},e.zoom.updateExtent()},L.zoomTransform=function(t){var e=this,n=[e.x(t[0]),e.x(t[1])];return e.d3.zoomIdentity.scale(e.width/(n[1]-n[0])).translate(-n[0],0)},L.getZoomDomain=function(){var t=this,e=t.config,n=t.d3;return[n.min([t.orgXDomain[0],e.zoom_x_min]),n.max([t.orgXDomain[1],e.zoom_x_max])]},L.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length&&(i.update(),t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),e.event.sourceEvent&&"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0),n.zoom_onzoom.call(t.api,r.orgDomain()))},P}),function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return r(n||t)},u,u.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){var i=t("./svg-pan-zoom.js");!function(t,n){"function"==typeof define&&define.amd?define("svg-pan-zoom",[],function(){return i}):void 0!==e&&e.exports&&(e.exports=i,t.svgPanZoom=i)}(window,document)},{"./svg-pan-zoom.js":4}],2:[function(t,e,n){var i=t("./svg-utilities");e.exports={enable:function(t){var e=t.svg.querySelector("defs");if(e||(e=document.createElementNS(i.svgNS,"defs"),t.svg.appendChild(e)),!e.querySelector("style#svg-pan-zoom-controls-styles")){var n=document.createElementNS(i.svgNS,"style");n.setAttribute("id","svg-pan-zoom-controls-styles"),n.setAttribute("type","text/css"),n.textContent=".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }",e.appendChild(n)}var r=document.createElementNS(i.svgNS,"g");r.setAttribute("id","svg-pan-zoom-controls"),r.setAttribute("transform","translate("+(t.width-70)+" "+(t.height-76)+") scale(0.75)"),r.setAttribute("class","svg-pan-zoom-control"),r.appendChild(this._createZoomIn(t)),r.appendChild(this._createZoomReset(t)),r.appendChild(this._createZoomOut(t)),t.svg.appendChild(r),t.controlIcons=r},_createZoomIn:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-in"),e.setAttribute("transform","translate(30.5 5) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},_createZoomReset:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-reset-pan-zoom"),e.setAttribute("transform","translate(5 35) scale(0.4)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().reset()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","2"),n.setAttribute("y","2"),n.setAttribute("width","182"),n.setAttribute("height","58"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");r.setAttribute("d","M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r);var o=document.createElementNS(i.svgNS,"path");return o.setAttribute("d","M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"),o.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(o),e},_createZoomOut:function(t){
+var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-out"),e.setAttribute("transform","translate(30.5 70) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{"./svg-utilities":5}],3:[function(t,e,n){var i=t("./svg-utilities"),r=t("./utilities"),o=function(t,e){this.init(t,e)};o.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=r.proxy(this.updateCTM,this),this.requestAnimationFrame=r.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},o.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute("viewBox");if(t){var e=t.split(/[\s\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute("viewBox")}else this.simpleViewBoxCache()},o.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},o.prototype.getViewBox=function(){return r.extend({},this.viewBox)},o.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),i=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=i}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},o.prototype.getOriginalState=function(){return r.extend({},this.originalState)},o.prototype.getState=function(){return r.extend({},this.activeState)},o.prototype.getZoom=function(){return this.activeState.zoom},o.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},o.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},o.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},o.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},o.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(!1===this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var i=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),o=!1,a=!1;!1===i?(t.e=this.getPan().x,t.f=this.getPan().y,o=a=!0):r.isObject(i)&&(!1===i.x?(t.e=this.getPan().x,o=!0):r.isNumber(i.x)&&(t.e=i.x),!1===i.y?(t.f=this.getPan().y,a=!0):r.isNumber(i.y)&&(t.f=i.y)),o&&a||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},o.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},o.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},o.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},o.prototype.pendingUpdate=!1,o.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},o.prototype.updateCTM=function(){var t=this.getCTM();i.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new o(t,e)}},{"./svg-utilities":5,"./utilities":7}],4:[function(t,e,n){var i=t("./uniwheel"),r=t("./control-icons"),o=t("./utilities"),a=t("./svg-utilities"),s=t("./shadow-viewport"),l=function(t,e){this.init(t,e)},c={viewportSelector:".svg-pan-zoom_viewport",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:"auto",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector("defs"),a.setupSvgAttributes(this.svg),this.options=o.extend(o.extend({},c),e),this.state="none";var i=a.getBoundingClientRectNormalized(t);this.width=i.width,this.height=i.height,this.viewport=s(a.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){if(n.viewport&&n.options.beforeZoom)return n.options.beforeZoom(t,e)},onZoom:function(t){if(n.viewport&&n.options.onZoom)return n.options.onZoom(t)},beforePan:function(t,e){if(n.viewport&&n.options.beforePan)return n.options.beforePan(t,e)},onPan:function(t){if(n.viewport&&n.options.onPan)return n.options.onPan(t)},onUpdatedCTM:function(t){if(n.viewport&&n.options.onUpdatedCTM)return n.options.onUpdatedCTM(t)}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&r.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var i=t.handleMouseDown(n,e);return e=n,i},touchstart:function(n){var i=t.handleMouseDown(n,e);return e=n,i},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var i=n.length-1;i>=0;i--)this.eventListeners.hasOwnProperty(n[i])&&delete this.eventListeners[n[i]]}for(var r in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(r,this.eventListeners[r],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},i.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(i.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,i=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=-.3<e&&e<.3?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/i;var r=this.svg.getScreenCTM().inverse(),o=a.getEventPoint(t,this.svg).matrixTransform(r),s=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(s,o)}},l.prototype.zoomAtPoint=function(t,e,n){var i=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*i.zoom,Math.min(this.options.maxZoom*i.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*i.zoom?t=this.options.minZoom*i.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*i.zoom&&(t=this.options.maxZoom*i.zoom/this.getZoom());var r=this.viewport.getCTM(),o=e.matrixTransform(r.inverse()),a=this.svg.createSVGMatrix().translate(o.x,o.y).scale(t).translate(-o.x,-o.y),s=r.multiply(a);s.a!==r.a&&this.viewport.setCTM(s)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,a.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==o.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=a.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){if((t.target.getAttribute("class")||"").indexOf("svg-pan-zoom-control")>-1)return!1}var e;e=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var n=a.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(e,n)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),o.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&o.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=a.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),u=u.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:o.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,r.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,r.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:o.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var u=[],h=function(t,e){var n=o.getSvg(t);if(null===n)return null;for(var i=u.length-1;i>=0;i--)if(u[i].svg===n)return u[i].instance.getPublicInstance();return u.push({svg:n,instance:new l(n,e)}),u[u.length-1].instance.getPublicInstance()};e.exports=h},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,n){var i=t("./utilities"),r="unknown";document.documentMode&&(r="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var n=null;if(!(n=i.isElement(e)?e:t.querySelector(e))){var r=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===r.length&&"g"===r[0].nodeName&&null===r[0].getAttribute("transform")&&(n=r[0])}if(!n){var o="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",o);var a=t.childNodes||t.children;if(a&&a.length>0)for(var s=a.length;s>0;s--)"defs"!==a[a.length-s].nodeName&&n.appendChild(a[a.length-s]);t.appendChild(n)}var l=[];return n.getAttribute("class")&&(l=n.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),n.setAttribute("class",l.join(" "))),n},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:i.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,n=0;n<e;n++){var i=t[n];i.parentNode.insertBefore(i,i)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var i=this,o="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",o),"transform"in t.style?t.style.transform=o:"-ms-transform"in t.style?t.style["-ms-transform"]=o:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=o),"ie"===r&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){i.refreshDefsGlobal()},i.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return i.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var i=t.createSVGPoint();return i.x=e,i.y=n,i}}},{"./utilities":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var i=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==c?(n.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-.025*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return h.push({element:t,fn:i,capture:n}),i}function e(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h[n].fn;return function(){}}function n(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h.splice(n,1)}function i(e,n,i,r){var o;o="wheel"===c?i:t(e,i,r),e[s](u+n,o,r||!1)}function r(t,i,r,o){var a;a="wheel"===c?r:e(t,o),t[l](u+i,a,o||!1),n(t,o)}function o(t,e,n){i(t,c,e,n),"DOMMouseScroll"==c&&i(t,"MozMousePixelScroll",e,n)}function a(t,e,n){r(t,c,e,n),"DOMMouseScroll"==c&&r(t,"MozMousePixelScroll",e,n)}var s,l,c,u="",h=[];return window.addEventListener?(s="addEventListener",l="removeEventListener"):(s="attachEvent",l="detachEvent",u="on"),c="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",{on:o,off:a}}()},{}],7:[function(t,e,n){function i(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&"object"==typeof t&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName},isObject:function(t){return"[object Object]"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!("string"==typeof t||t instanceof String))throw new Error("Provided selector is not an HTML object nor String");if(!(e=document.querySelector(t)))throw new Error("Provided selector did not find any elements. Selector: "+t)}if("svg"===e.tagName.toLowerCase())n=e;else if("object"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if("embed"!==e.tagName.toLowerCase())throw"img"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.'):new Error("Cannot get SVG.");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\[object\s/,"").replace(/\]$/,"")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.touches&&t.touches.length){if(void 0!==t.touches[0].clientX)t.clientX=t.touches[0].clientX,t.clientY=t.touches[0].clientY;else if(void 0!==t.touches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.touches[0].pageX-n.left,t.clientY=t.touches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,i=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return n<250&&i<10}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var i,r,o,a=this,s=null,l=0;n||(n={});var c=function(){l=!1===n.leading?0:a.now(),s=null,o=t.apply(i,r),s||(i=r=null)};return function(){var u=a.now();l||!1!==n.leading||(l=u);var h=e-(u-l);return i=this,r=arguments,h<=0||h>e?(clearTimeout(s),s=null,l=u,o=t.apply(i,r),s||(i=r=null)):s||!1===n.trailing||(s=setTimeout(c,h)),o}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&t<60&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||i(33):i(e)}}},{}]},{},[1]),define("jswish",["jquery","config","preferences","history","modal","chat","splitter","bootstrap","pane","tabbed","notebook","navbar","search","editor","query","runner","term","laconic","login","chatroom","d3","c3","svg-pan-zoom"],function(t,e,n,i,r){n.setDefault("semantic-highlighting",!0),n.setDefault("emacs-keybinding",!1),n.setDefault("new-tab",!0),n.setDefault("preserve-state",!0),n.setInform("preserve-state",".unloadable"),function(t){function o(t,e){return e.glyph=t,e}function a(e,n){t(".swish-event-receiver").trigger(e,n)}function s(){t(".swish-logo").append(t.el.b(t.el.span({style:"color:darkblue"},"SWI"),t.el.span({style:"color:maroon"},"SH"))).css("margin-left","30px").css("font-size","24px").addClass("navbar-brand")}function l(){0==t("#modal").length&&(t("body").append(t.el.div({id:"modal"})),t("#modal").swishModal())}function c(){t(".tile").tile(),t(window).resize(function(){t(".tile").tile("resize")}),t(".tabbed").tabbed()}function u(){t(window).resize(function(){t(".reactive-size").trigger("reactive-resize")})}function h(){t(window).bind("beforeunload",function(e){var n;return t(".unloadable").each(function(){var e={};t(this).trigger("unload",e),n=n||e.rc}),n})}var d={menu:{File:{"Save ...":o("cloud-upload",function(){a("save","as")}),"Info & history ...":o("info-sign",function(){a("fileInfo")}),Reload:o("refresh",function(){a("reload")}),"Open recent":{type:"submenu",glyph:"paperclip",action:function(e){i.openRecent(e,t(this).data("document"))},update:i.updateRecentUL},Share:"--","Follow ...":e.http.locations.follow_file_options?o("eye-open",function(){a("follow-file")}):void 0,"Start TogetherJS ...":function(t,e){return e.typeIcon=t,e}("togetherjs",function(){t("body").swish("collaborate")}),Export:"--",Download:o("floppy-save",function(){a("download")}),"Print ...":o("print",function(){a("print")})},Edit:{"Clear messages":function(){a("clearMessages")},Changes:"--","View changes":function(){a("diff")},Edit:"--","Find (Ctrl-F)":function(){a("edit-command","find")},"Find and replace (Shift-Ctrl-F)":function(){a("edit-command","replace")},"Jump to line (Alt-G)":function(){a("edit-command","jumpToLine")},Options:"--","Semantic highlighting":{preference:"semantic-highlighting",type:"checkbox"},"Emacs Keybinding":{preference:"emacs-keybinding",type:"checkbox",value:"false"},"Open document in new tab":{preference:"new-tab",type:"checkbox",value:"true"},"Preserve state in browser":{preference:"preserve-state",type:"checkbox",value:"true"}},Examples:function(e,n){t("body").swish("populateExamples",e,n)},Help:function(e,n){t("body").swish("populateHelp",e,n)}}},f={_init:function(n){return s(),l(),c(),u(),h(),t("#search").search(),n=n||{},this.addClass("swish"),this.each(function(){var i=t(this),r={};t("#navbar").navbar(d.menu),t("#login").login();var o=t(".prolog-editor").prologEditor({save:!0});r.runner=t(".prolog-runners").prologRunners(),r.query=t(".prolog-query").queryEditor({source:function(){return i.swish("prologSource")},sourceID:function(){return o.prologEditor("getSourceID")},examples:i.swish("examples"),runner:r.runner,editor:o[0]}),t(".notebook").notebook(),!n.show_beware||swish.option&&0==swish.option.show_beware||a("help",{file:"beware.html",notagain:"beware"}),i.data("swish",r),window.location.href.indexOf("&togetherjs=")>0&&i.swish("collaborate"),t("#chat").chat(""),t("#broadcast-bell").chatbell({empty_title:"Click to open chat"}),t("#chat-menu").on("click","a",function(n){switch(t(n.target).closest("a").data("action")){case"chat-shared":t("body").swish("playFile",{file:e.swish.hangout,chat:"large"});break;case"chat-about-file":a("chat-about-file")}}),setInterval(function(){t(".each-minute").trigger("minute")},6e4),i.swish("preserve_state")&&t(".unloadable").trigger("restore")})},preserve_state:function(){return 0!=swish.option.preserve_state&&0!=n.getVal("preserve-state")},trigger:function(t,e){return a(t,e),this},playFile:function(n){var i=this;"string"==typeof n&&(n={file:n});var o=this.find(".storage").storage("match",n);if(o&&o.storage("expose","Already open"))return this;var a=e.http.locations.web_storage+n.file;return t.ajax({url:a,type:"GET",data:{format:"json"},success:function(t){t.url=a,t.st_type="gitty",function(e){for(var i=0;i<e.length;i++){var r=e[i];n[r]&&(t[r]=n[r])}}(["line","regex","showAllMatches","newTab","noHistory","prompt","chat"]),i.swish("setSource",t)},error:function(t){r.ajaxError(t)}}),this},playURL:function(e){var n=this,i=this.find(".storage").storage("match",e);if(i&&i.storage("expose","Already open"))return this;t.ajax({url:e.url,type:"GET",data:{format:"json"},success:function(t){var i;if("string"==typeof t)i={data:t},i.st_type="external";else{if("object"!=typeof t||"string"!=typeof t.data)return void alert("Invalid data");i=t,i.st_type="filesys"}i.url=e.url,function(t){for(var n=0;n<t.length;n++){var r=t[n];e[r]&&(i[r]=e[r])}}(["line","regex","showAllMatches","newTab","noHistory","prompt"]),n.swish("setSource",i)},error:function(t){r.ajaxError(t)}})},setSource:function(t){var e=this.swish("isFullscreen");return e&&e.storage("setSource",t)||(e&&this.swish("exitFullscreen"),this.find(".tabbed").tabbed("tabFromSource",t)),this},openExampleFunction:function(t){var e=this;return"divider"==t.type?"--":"store"==t.type?function(){f.playFile.call(e,t.file)}:function(){f.playURL.call(e,{url:t.href})}},populateExamples:function(n,i){var o=this;return o.off("examples-changed").on("examples-changed",function(){t("#navbar").navbar("clearDropdown",i),o.swish("populateExamples",n,i)}),t.ajax(e.http.locations.swish_examples,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var r,a,s=e[n];if("--"==s||"divider"==s.type)r="--",a="--";else{var l=s.file||s.href;r=s.title,a=o.swish("openExampleFunction",s),l&&(a.typeIcon=l.split(".").pop())}t("#navbar").navbar("extendDropdown",i,r,a)}},error:function(t){r.ajaxError(t)}}),this},populateHelp:function(n,i){function o(t){return function(){a("help",{file:t.file})}}return t.ajax(e.http.locations.swish_help_index,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var r,a,s=e[n];if("--"==s||"divider"==s.type)r="--",a="--";else{s.file;r=s.title,a=o(s)}t("#navbar").navbar("extendDropdown",i,r,a)}},error:function(t){r.ajaxError(t)}}),this},prologSource:function(){var e,n=[];return(e=t(".prolog-editor").prologEditor("getSource","source"))&&n.push(e),(e=t(".background.prolog.source").text())&&n.push(e),n.join("\n\n")},breakpoints:function(t){return this.find(".prolog-editor").prologEditor("getBreakpoints",t)||[]},tabData:function(t){return t=t||{},t.active?this.find(".tab-pane.active .storage").storage("getData",t):this.find(".storage").storage("getData",t)},examples:function(e){var n=t(".examples.prolog").text();return n?t().prologEditor("getExamples",n,!1):1!=e?function(){return t(".prolog-editor").prologEditor("getExamples")}:void 0},fullscreen:function(e,n){var i=this.find(".container.tile-top");if(!i.hasClass("fullscreen")){var r=this.data("fullscreen");r||(r={},this.data("fullscreen",r)),i.addClass("fullscreen"),n=n||e,n.addClass("fullscreen hamburger"),r.fullscreen_origin=e.parent()[0],r.fullscreen_main=n[0],t(i.children()[0]).hide(),i.append(e),n.trigger("fullscreen",!0)}return this},exitFullscreen:function(){var e=this.find(".container.tile-top");if(e.hasClass("fullscreen")){var n=this.data("fullscreen"),i=t(e.children()[1]),r=n.fullscreen_main;return e.removeClass("fullscreen"),t(n.fullscreen_main).removeClass("fullscreen hamburger"),t(n.fullscreen_origin).append(i),n.fullscreen_origin=null,n.fullscreen_main=null,t(e.children()[0]).show(),t(r).trigger("fullscreen",!1),!0}return!1},isFullscreen:function(){var t=this.find(".container.tile-top");if(t.hasClass("fullscreen")){var e=t.find(".storage");if(0!=e.length)return e}},collaborate:function(){var e=this;return t(this).attr("data-end-togetherjs-html","End collaboration"),require(["https://togetherjs.com/togetherjs-min.js"],function(){TogetherJS(e)}),this}};t.fn.swish=function(e){
+return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery.swish"):f._init.apply(this,arguments)}}(jQuery)}),require.config({urlArgs:"ts="+(new Date).getTime(),waitSeconds:60,paths:{jquery:"../bower_components/jquery/dist/jquery.min","jquery-ui":"../bower_components/jquery-ui/jquery-ui.min",laconic:"../bower_components/laconic/laconic",bootstrap:"../bower_components/bootstrap/dist/js/bootstrap.min",bloodhound:"../bower_components/typeahead.js/dist/bloodhound",typeahead:"../bower_components/typeahead.js/dist/typeahead.jquery",splitter:"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0",tagmanager:"../bower_components/tagmanager/tagmanager",sha1:"../bower_components/js-sha1/src/sha1",c3:"../bower_components/c3/c3",d3:"../bower_components/d3/d3","svg-pan-zoom":"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min",sparkline:"../bower_components/sparkline/dist/jquery.sparkline","cm/mode/prolog":"codemirror/mode/prolog","cm/addon/hover/prolog-hover":"codemirror/addon/hover/prolog-hover","cm/addon/hover/text-hover":"codemirror/addon/hover/text-hover","cm/addon/hint/templates-hint":"codemirror/addon/hint/templates-hint","cm/addon/hint/show-context-info":"codemirror/addon/hint/show-context-info",cm:"../bower_components/codemirror"},shim:{bootstrap:{deps:["jquery"]},typeahead:{deps:["jquery"],init:function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)}},bloodhound:{deps:["jquery"]},splitter:{deps:["jquery"]},laconic:{deps:["jquery"]},tagmanager:{deps:["jquery"]}}}),require(["jquery","config","jswish"],function(t,e,n){require([e.http.locations.pengines+"/pengines.js"],function(){t(function(){t("body").swish(e.swish||{})})})}),define("swish",function(){});
 //# sourceMappingURL=swish-min.js.map
\ No newline at end of file
diff --git a/web/js/swish-min.js.gz b/web/js/swish-min.js.gz
index 75da5b8..a79f24f 100644
Binary files a/web/js/swish-min.js.gz and b/web/js/swish-min.js.gz differ
diff --git a/web/js/swish-min.js.map b/web/js/swish-min.js.map
index 4cd0389..18549ba 100644
--- a/web/js/swish-min.js.map
+++ b/web/js/swish-min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../bower_components/bootstrap/dist/js/bootstrap.min.js","../bower_components/jquery/dist/jquery.min.js","config.js","preferences.js","links.js","../bower_components/laconic/laconic.js","modal.js","../bower_components/tagmanager/tagmanager.js","form.js","history.js","utils.js","chat.js","../bower_components/jquery.splitter/js/jquery.splitter-0.15.0.js","pane.js","../bower_components/typeahead.js/dist/bloodhound.js","../bower_components/typeahead.js/dist/typeahead.jquery.js","search.js","../bower_components/codemirror/lib/codemirror.js","chatroom.js","chatbell.js","tabbed.js","prolog.js","answer.js","../bower_components/sparkline/dist/jquery.sparkline.js","download.js","runner.js","gitty.js","difflib.js","diffview.js","diff.js","storage.js","../bower_components/js-sha1/src/sha1.js","notebook.js","navbar.js","codemirror/addon/hint/templates-hint.js","codemirror/mode/prolog/prolog-template-hint.js","codemirror/mode/prolog/prolog-ctype.js","codemirror/mode/prolog/prolog.js","codemirror/mode/prolog/prolog_keys.js","codemirror/mode/prolog/prolog_query.js","codemirror/mode/prolog/prolog_server.js","../bower_components/codemirror/mode/xml/xml.js","../bower_components/codemirror/mode/meta.js","../bower_components/codemirror/mode/markdown/markdown.js","../bower_components/codemirror/addon/edit/matchbrackets.js","../bower_components/codemirror/addon/comment/continuecomment.js","../bower_components/codemirror/addon/comment/comment.js","../bower_components/codemirror/addon/hint/show-hint.js","../bower_components/codemirror/addon/hint/anyword-hint.js","../bower_components/codemirror/addon/display/placeholder.js","../bower_components/codemirror/addon/runmode/runmode.js","../bower_components/codemirror/addon/search/searchcursor.js","../bower_components/codemirror/addon/dialog/dialog.js","../bower_components/codemirror/addon/search/search.js","../bower_components/codemirror/addon/search/jump-to-line.js","codemirror/addon/hover/text-hover.js","codemirror/addon/hover/prolog-hover.js","codemirror/addon/hint/show-context-info.js","../bower_components/codemirror/keymap/emacs.js","editor.js","query.js","term.js","login.js","../bower_components/d3/d3.js","../bower_components/c3/c3.js","../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min.js","jswish.js","swish.js"],"names":["a","b","module","exports","document","Error","window","this","p","d","c","createElement","text","head","appendChild","parentNode","removeChild","w","length","r","type","isWindow","B","nodeName","toLowerCase","E","isFunction","grep","call","nodeType","i","D","test","filter","K","M","each","match","L","N","O","P","e","promise","done","fail","then","apply","slice","S","removeEventListener","ready","V","expando","uid","$","Y","JSON","parse","_","replace","Z","getAttribute","X","set","fa","f","g","h","cur","css","j","cssNumber","k","ba","exec","style","unit","start","end","ha","ownerDocument","ga","body","ia","display","W","get","da","na","getElementsByTagName","querySelectorAll","merge","oa","qa","l","createDocumentFragment","m","n","o","pa","ka","ma","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","contains","la","va","wa","xa","activeElement","ya","off","arguments","guid","event","add","Ea","Fa","Ga","Ca","removeAttribute","Ha","hasData","access","events","handle","extend","Ia","ja","checked","defaultValue","Ja","q","s","checkClone","Ba","eq","html","map","clone","src","_evalUrl","Da","Ka","cleanData","Oa","Na","getPropertyValue","pixelMarginRight","Ma","La","width","minWidth","maxWidth","Pa","Wa","Va","toUpperCase","Ua","Xa","cssProps","Ya","Math","max","Za","ca","$a","boxSizingReliable","parseFloat","_a","prototype","init","eb","bb","hidden","requestAnimationFrame","setTimeout","fx","interval","tick","fb","ab","now","gb","height","opacity","hb","kb","tweeners","concat","ib","queue","_queueHooks","unqueued","empty","fire","always","cb","isEmptyObject","overflow","overflowX","overflowY","remove","jb","camelCase","Array","isArray","cssHooks","expand","prefilters","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","props","opts","specialEasing","easing","originalProperties","originalOptions","createTween","Tween","stop","rejectWith","proxy","progress","complete","timer","anim","pb","join","qb","Ab","wb","Mb","unshift","Nb","dataTypes","Jb","Ob","ajaxSettings","flatOptions","Pb","contents","shift","mimeType","getResponseHeader","converters","Qb","responseFields","dataFilter","dataType","split","state","error","data","Object","getPrototypeOf","indexOf","toString","hasOwnProperty","fn","t","u","v","jquery","constructor","toArray","pushStack","prevObject","first","last","sort","splice","isPlainObject","random","isReady","noop","isNumeric","isNaN","globalEval","trim","makeArray","Date","support","Symbol","iterator","x","getElementById","id","G","getElementsByClassName","qsa","A","setAttribute","sa","cacheLength","attrHandle","sourceIndex","nextSibling","disabled","isDisabled","ea","ra","value","ta","dir","next","uniqueID","ua","I","relative","matches","za","find","TAG","y","z","uniqueSort","C","pop","F","H","J","RegExp","Q","R","T","U","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","aa","String","fromCharCode","charCodeAt","isXML","documentElement","setDocument","defaultView","top","addEventListener","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","escape","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","pseudos","setFilters","not","has","innerText","lang","target","location","hash","root","focus","hasFocus","href","tabIndex","enabled","selected","selectedIndex","parent","header","input","button","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","tokenize","compile","selector","select","expr","unique","isXMLDoc","escapeSelector","is","parseHTML","children","prev","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","reverse","Callbacks","once","stopOnFalse","memory","disable","lock","locked","fireWith","fired","catch","pipe","notify","resolve","reject","TypeError","exceptionHook","stackTrace","getStackHook","when","console","warn","name","message","stack","readyException","readyWait","readyState","doScroll","cache","defineProperty","configurable","removeData","_data","_removeData","dequeue","clearQueue","source","show","hide","toggle","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","fix","delegateTarget","preDispatch","handlers","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","handleObj","result","preventDefault","stopPropagation","postDispatch","addProp","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","key","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","on","one","Aa","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","marginLeft","marginRight","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","Qa","Ra","Sa","position","visibility","Ta","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","float","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prop","options","propHooks","pos","step","scrollTop","scrollLeft","linear","swing","cos","PI","db","Animation","*","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","clearTimeout","checkOn","optSelected","radioValue","lb","mb","removeAttr","attrHooks","nb","ob","removeProp","propFix","parseInt","for","class","addClass","removeClass","toggleClass","hasClass","rb","val","valHooks","sb","isTrigger","parentWindow","simulate","triggerHandler","hover","focusin","tb","ub","vb","parseXML","DOMParser","parseFromString","xb","yb","zb","param","encodeURIComponent","serialize","serializeArray","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Kb","Lb","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","xml","json","* text","text html","text json","text xml","context","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","method","crossDomain","host","traditional","hasContent","headers","beforeSend","success","timeout","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","Rb","0","1223","Sb","cors","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","response","script","text script","charset","scriptCharset","Tb","Ub","jsonp","jsonpCallback","createHTMLDocument","implementation","animated","offset","setOffset","using","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","scrollTo","Height","Width","","bind","unbind","delegate","undelegate","holdReady","parseJSON","define","amd","Vb","jQuery","Wb","noConflict","getCachedConfig","swish","config_hash","str","localStorage","getItem","KEY","config","setCachedConfig","setItem","stringify","alert","readNotAgain","err","hasLocalStore","defaults","preferences","persistent","setNotAgain","notagain","broadcast","setVal","setDefault","getVal","setDocVal","docid","prefs","getDocVal","def","undefined","modal","functions","PlDoc","from","ev","parsePred","pred","substring","charAt","arity","decodeURIComponent","runQueryLink","isVar","vars","novars","qname","cell","prologEditor","nbCell","bindings","vr","feedback","owner","followLink","accept","swishStore","http","locations","swishExamples","startsWith","laconic","el","arg","substr","toExponential","toFixed","attributeMap","isEvent","child","acceptcharset","accesskey","allowtransparency","bgcolor","cellpadding","cellspacing","classname","colspan","csstext","defaultchecked","defaultselected","defaultvalue","frameborder","hspace","htmlfor","longdesc","maxlength","marginwidth","marginheight","noresize","noshade","readonly","rowspan","tabindex","valign","vspace","registerElement","renderer","deprecatedTags","tags","makeApply","tagName","dollar","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","bsTransitionEnd","close","VERSION","TRANSITION_DURATION","Constructor","setState","$element","DEFAULTS","isLoading","loadingText","resetText","slide","to","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","clearInterval","setInterval","getItemIndex","getItemForDirection","direction","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","collapse","dropdown","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","right","abs","clientWidth","measureScrollbar","hoverState","inState","animation","placement","template","title","container","viewport","getOptions","$viewport","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","isInStateTrue","getUID","setContent","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","round","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","SVGElement","scroll","$arrow","enable","toggleEnabled","destroy","tooltip","getContent","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","activate","clear","scrollspy","element","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","links","form","saveNotagain","closeButton","data-dismiss","notAgain","label","data-notagain","initTagsManagers","prefilled","tagsManager","pluginName","methods","_init","swishModal","icon","jqXHR","showHelp","that","help","showForm","showPlDoc","docURL","term","pldoc_doc_for","docBody","div","h2","md","modalel","role","onclose","server_form","require","jqXHDR","formel","serializeAsObject","obj","onreply","formError","showAjaxError","dom","h1","win","resizeIframe","iframe","contentWindow","ntfid","ajaxError","wsid","epos","outerWidth","time","onremove","chat","CapitalizeFirstLetter","preventSubmitOnEnter","isClearInputOnEsc","externalTagId","prefillIdFieldName","prefillValueFieldName","AjaxPush","AjaxPushAllTags","AjaxPushParameters","delimiters","backspace","maxTags","hiddenTagListName","hiddenTagListId","output","deleteTagsOnBackspace","tagsContainer","tagCloseIcon","tagClass","validator","onlyTagList","tagList","fillInputOnTagRemove","publicMethods","pushTag","tag","ignoreEvents","alreadyInList","tlisLowerCase","tagId","idx","newTagId","newTagRemoveId","escaped","$el","lastTagObj","$self","tlis","tlid","privateMethods","trimTag","delimiterChars","$tagList","item","suggestion","blinkClass","backgroundColor","blinkBGColor_1","blinkBGColor_2","Infinity","post","tagClasses","TagIdToRemove","spliceTag","refreshHiddenTagList","showOrHide","popTag","tagBeingRemoved","cl","tagBaseClass","inputBaseClass","lhiddenTagList","baseDelimiter","change","killEvent","cancelBubble","keyInArray","ary","applyDelimiter","prefill","pta","pushAllTags","keyNums","delimeters","delimiterKeys","hiddenObj","rndid","albet","floor","navigator","userAgent","valgridw","LABELWIDTH","elemName","attrs","textInput","placeholder","tagInput","textarea","addSelect","ignore_empty","arr","inset","jvalue","code","errors","fieldError","field","msg","group","showDialog","formBroadcast","fields","fileName","public","example","fork","labeltext","community_examples","span","btn","author","identity","date","stamp","labels","toLocaleString","description","commit_message","modify","who","canmodify","checkboxes","follow","email","projection","csvFormat","list","format","limit","distinct","boxes","boxel","dopts","box","autocomplete","chunk","filename","action","data-toggle","cls","lblopts","widgets","glyphIcon","glyph","typeIcon","glyphIconButton","dropdownButton","divClass","ulClass","ul","actions","populateMenu","client","menu","runMenu","addMenuItem","onclick","li","bound","history","reply","cpath","pathname","meta","pushState","recentMaxLength","addRecent","doc","equalDocument","d1","d2","recent","openRecent","st_type","updateRecentUL","gitty","onpopstate","utils","htmlEncode","generateUUID","getTime","uuid","flash","lastIndexOf","MIN_RECONNECT_DELAY","MAX_RECONNECT_DELAY","li_user","avatar","keypress","img","reconnect_delay","last_open","connect","add_pref_param","pname","lead","swish_chat","ws","connection","reconnect","WebSocket","onmessage","origin","log","onopen","empty_queue","disconnect","subscribe","channel","sub_channel","unsubscribe","subchannel","welcome","avatar_source","visitors","check_login","login","storage","userCount","cnt","gazers","gazer","profile","reason","rejoined","avatars","joined","session_closed","chat-message","rooms","chatroom","hangout","chatbell","displayed","user","forbidden","read_until","broadcast_room","notifyUser","isBroadcast","event_argv","create_user","user_li","unnotify","updateFiles","addUser","removeUser","lost","tmo","user_info","users","rc","self","is_self","addUserFile","fli","data-file","removeUserFile","user_too","removeFile","count","splitter_id","splitters","current_splitter","get_position","settings","orientation","panel_1","panel_2","invisible","onDragStart","onDragEnd","onDrag","splitter","new_width","new_height","silent","sw","sw2","pw","outerHeight","isActive","not_null","paneInfo","pane","panes","second","flipdir","tile","resize_start","info","resize_save","percent","resizestart","rel","minheight","relto","sumh","splitContainer","factory","a0","isMsie","isBlankString","escapeRegExChars","isString","isNumber","isObject","isUndefined","isElement","isJQuery","toStr","collection","reverseArgs","every","some","mixin","getIdGenerator","counter","templatify","defer","debounce","func","wait","immediate","later","callNow","args","throttle","previous","remaining","tokenizers","whitespace","nonword","getObjTokenizer","tokenizer","keys","tokens","LruCache","maxSize","List","tail","Node","node","tailItem","size","moveToFront","PersistentStorage","override","prefix","ttlKey","keyMatcher","ls","LOCAL_STORAGE","_noop","encode","decode","gatherMatchingKeys","len","removeItem","_prefix","_ttlKey","isExpired","_safeSet","ttl","Transport","cancelled","lastReq","_send","transport","_get","limiter","_cache","sharedCache","pendingRequestsCount","pendingRequests","maxPendingRequests","setMaxPendingRequests","num","resetCache","_fingerprint","resp","fingerprint","onDeckRequestArgs","jqXhr","cancel","SearchIndex","datumTokenizer","queryTokenizer","identify","normalizeTokens","token","newNode","IDS","CHILDREN","array","seen","uniques","getIntersection","arrayA","arrayB","ai","bi","intersection","lenArrayA","lenArrayB","bootstrap","datums","trie","datum","chars","ch","ids","search","query","all","values","Prefetch","prepare","transform","thumbprint","cacheKey","_settings","store","fromCache","stored","fromNetwork","onError","onResponse","Remote","cancelLastRequest","oParser","parsePrefetch","callbackToDeferred","parseRemote","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","prepareByReplace","prepareByWildcard","idenityPrepare","onSuccess","deferred","sorter","initialize","sufficient","local","prefetch","Bloodhound","__ttAdapter","withAsync","sync","withoutAsync","_loadPrefetch","serialized","_initialize","addLocalToIndex","initPromise","force","processRemote","nonDuplicates","clearPrefetchCache","clearRemoteCache","ttAdapter","WWW","build","www","classes","defaultClassNames","buildCss","buildHtml","buildSelectors","wrapper","hint","borderColor","boxShadow","verticalAlign","inputWithNoHint","ltr","rtl","backgroundImage","dataset","selectable","cursor","highlight","EventBus","deprecationMap","render","cursorchange","_trigger","$e","deprecatedType","EventEmitter","types","bindContext","_callbacks","onAsync","onSync","callbacks","syncFlush","asyncFlush","getFlush","nextTick","flush","getNextTick","nextTickFn","setImmediate","getRegex","patterns","caseSensitive","wordsOnly","regexStr","escapedPatterns","pattern","hightlightTextNode","textNode","patternNode","wrapperNode","regex","splitText","traverse","childNode","TEXT_NODE_TYPE","Input","$hint","$input","queryWhenFocused","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","areQueriesEquivalent","normalizeQuery","withModifier","specialKeyCodeMap","9","27","37","39","13","38","40","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","isValid","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","range","selection","createRange","moveStart","Dataset","templates","notFound","isValidName","nameGenerator","displayFn","getDisplayFn","displayKey","getTemplates","_resetLastSuggestion","suggestionTemplate","pending","footer","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_empty","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","fragment","_injectQuery","_query","update","syncCalled","rendered","canceled","isEmpty","Menu","initializeDataset","oDataset","$node","datasets","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","_propagate","isDatasetEmpty","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","onSelectableClick","isOpen","setLanguageDirection","selectableRelativeToCursor","delta","$selectables","$oldCursor","oldIndex","newIndex","setCursor","getSelectableData","getTopSelectable","updateDataset","isValidUpdate","clearDataset","destroyDataset","DefaultMenu","_show","_hide","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","ctx","$menu","hasActive","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","frontMatchRegEx","isEnabled","deactivate","$candidate","payload","cancelMove","ttEach","$els","typeahead","buildHintFromInput","getBackgroundStyles","spellcheck","prepInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","revert","$wrapper","$elOrNull","attach","defaultHint","defaultMenu","MenuConstructor","classNames","newVal","ret","contexts","registry","bloodHoundURL","fileTokenizer","renderFile","filetype","filebase","renderStoreSourceLine","hit","currentFile","alias","currentAlias","ext","renderSourceMatch","sourceLineTokenizer","renderSourceLine","predicateMatcher","ql","pl","templ","renderPredicate","mode","iso","summary","sourceMatcher","re","sourceRE","editor","line","renderUser","encodeURI","ttSources","sources","typeaheadProperties","files","swish_typeahead","storeContent","query_cache_length","store_content","predicates","of","showAllMatches","play","string","CodeMirror","classTest","removeChildren","removeChildrenAndAdd","elt","eltP","activeElt","shadowRoot","current","joinClasses","as","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","nextTab","findColumn","goal","skipped","min","spaceStr","spaceStrs","lst","out","insertSorted","score","priority","nothing","createObj","base","inst","create","isWordCharBasic","nonASCIISingleCaseWordChar","isWordChar","helper","isExtendingChar","extendingChars","skipExtendingChars","findFirst","mid","Display","place","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","cursorDiv","measure","lineMeasure","lineSpace","lines","mover","sizer","sizerWidth","heightForcer","scrollerGap","gutters","lineGutter","scroller","ie","ie_version","webkit","gecko","mobile","draggable","viewFrom","viewTo","reportedViewFrom","reportedViewTo","renderedView","externalMeasured","viewOffset","lastWrapHeight","lastWrapWidth","updateLineNumbers","nativeBarWidth","barHeight","barWidth","scrollbarsClipped","lineNumWidth","lineNumInnerWidth","lineNumChars","alignWidgets","cachedCharWidth","cachedTextHeight","cachedPaddingH","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","selForContextMenu","activeTouch","getLine","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","diff","lineNo","no","lineAtHeight","outer","i$1","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","seeReadOnlySpans","sawReadOnlySpans","seeCollapsedSpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","full","oldFirst","oldLast","sameLine","found","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","cm","iterateBidiSections","part","level","getBidiPartAt","bidiOther","getOrder","bidiOrdering","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","prepareMeasureForLine","targetTop","measureCharPrepared","moveVisually","bidi","partPos","mv","getWrappedLineExtent","lineWrapping","wrappedLineExtentChar","begin","wrappedLineExtent","searchInVisualLine","getRes","res","nextCh","getHandlers","emitter","_handlers","noHandlers","detachEvent","map$$1","signal","signalDOMEvent","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","e_stopPropagation","e_stop","e_target","srcElement","e_button","mac","zeroWidthElement","zwspSupported","hasBadBidiRects","badBidiRects","txt","r0","r1","hasBadZoomedRects","badZoomedRects","normal","fromRange","defineMode","dependencies","modes","defineMIME","mime","spec","mimeModes","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a1","a2","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","at","i_end","opaque","styles","bgClass","textClass","getLineStyles","updateFrontier","getStateBefore","maxHighlightLength","stateAfter","styleClasses","frontier","precise","findStartLine","processLine","save","startAt","stream","StringStream","callBlankLine","eol","readToken","blankLine","inner","takeToken","asArray","getObj","copy","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","updateLine","estimateHeight","estHeight","cleanUpLine","interpretTokenStyle","styleToClassCacheWithMode","styleToClassCache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","insertLineContent","maps","caches","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","specialChars","mustWrap","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","j$1","j$2","upto","tokenText","LineView","buildViewArray","nextPos","pushOperation","op","operationGroup","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","cursorActivityCalled","finishOperation","endCb","signalLater","orphanDelayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","updateLineBackground","background","getLineContent","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","paddingTop","paddingVert","paddingH","currentStyle","scrollGap","displayWidth","displayHeight","ensureLineHeights","rect","wrapping","curWidth","heights","rects","mapFromLineView","updateExternalMeasurement","measureChar","bias","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","nullRect","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","pageScrollX","chrome","android","pageScrollY","marginTop","intoCoordSystem","includeWidgets","yOff","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","mergedPos","assign","prevDiff","prevPos","beginLeft","textHeight","measureText","anchor","offsetLeft","compensateForHScroll","perLine","widgetsHeight","ceil","estimateLineHeights","est","posFromMouse","liberal","forRect","space","colDiff","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","range$$1","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursorHeight","otherCursor","rightSide","drawForLine","fromArg","toArg","lineLen","rightPos","leftPos","tmp","leftSide","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorBlinkRate","ensureFocus","delayBlurEvent","delayingBlurEvent","receivedFocus","rmClass","alignHorizontally","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","updateGutterSpace","updateHeightsInViewport","prevBottom","updateWidgetHeight","visibleLines","ensure","ensureFrom","ensureTo","setScrollTop","updateDisplaySimple","scrollbars","startWorker","setScrollLeft","isScroller","scrollWidth","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","axis","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","wheelPixelsPerUnit","onScrollWheel","canScrollX","canScrollY","currentWheelTarget","presto","pixels","wheelSamples","movedX","movedY","sample","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","borderBottom","coverGutterNextToScrollbar","initScrollbars","scrollbarModel","scrollbarStyle","maybeScrollWindow","innerHeight","phantom","scrollNode","scrollIntoView","scrollPosIntoView","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollPos","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","sPos","startOperation","viewChanged","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","nextOpId","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","i$4","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","forceScroll","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","highlightWorker","workTime","changedLines","oldStyles","tooLong","highlighted","oldCls","newCls","ischange","workDelay","marginBottom","borderRightWidth","editorIsHidden","viewportMargin","different","wrapperHeight","toUpdate","patchDisplay","minHeight","oldDisplayWidth","updateNumbersFrom","rm","updateNumber","updateGutters","specs","gElt","setGuttersForLineNumbers","normalizeSelection","prim","inv","Range","Selection","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","linesFor","Line","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","shared","attachDoc","setDirectionClass","directionChanged","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","somethingSelected","addSelectionToHistory","clearRedo","dest","equals","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","deepCopy","newChanges","Number","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","filterSelectionChange","this$1","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","sel_dontScroll","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","changeType","adjustScrollWhenAboveVisible","addLineWidget","LineWidget","insertAt","aboveVisible","markText","markTextShared","TextMarker","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","nextMarkerId","isParent","SharedTextMarker","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","onDrop","clearDragCursor","lastDrop","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","lineSeparator","readAsText","draggingText","text$1","getData","listSelections","replaceSelection","setData","getSelection","effectAllowed","setDragImage","safari","_top","onDragOver","frag","dragCursor","forEachCodeMirror","byClass","ensureGlobalHandlers","globalsRegistered","registerGlobalHandlers","resizeTimer","onResize","setSize","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyNames","noShift","altGraphKey","flipCtrlCmd","keyMap","deleteNearSelection","compute","kill","toKill","replaced","lineStart","visual","lineEnd","lineStartSmart","firstNonWS","inWS","doHandleBinding","dropShift","commands","ensurePolled","prevShift","Pass","lookupKeyForEditor","keyMaps","extraKeys","dispatchKey","seq","keySeq","stopSeq","handleKeyBinding","motion","handleCharBinding","onKeyDown","handled","lastStoppedKey","hasCopyEvent","showCrossHair","up","onKeyUp","onKeyPress","onMouseDown","supportsTouch","clickInGutter","selectingText","leftButtonDown","lastMiddleDown","captureRightClick","onContextMenu","lastDoubleClick","lastClick","contained","modifier","dragDrop","dragAndDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","e2","addNew","extendTo","lastPos","startCol","posCol","startSel","ourIndex","oldRange","ourRange","findWordAt","ranges$1","sel_mouse","curCount","editorSize","move","chromeOS","word","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","theme","defineOptions","deflt","notOnInit","optionHandlers","Init","defineOption","setValue","lineSep","newBreaks","getInputField","windows","guttersChanged","wrappingChanged","integer","readOnlyChanged","dragDropChanged","resetPosition","getField","setDirection","wasOn","funcs","dragFunctions","over","drop","CodeMirror$1","Doc","inputStyles","inputStyle","pasteIncoming","cutIncoming","Delayed","autofocus","registerEventHandlers","opt","finishInit","initHooks","finishTouch","touchFinished","prevTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","inp","indentLine","how","aggressive","indent","curSpace","indentation","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","setLastCopied","newLastCopied","lastCopied","applyTextInput","inserted","deleted","paste","textLines","splitLinesAuto","multiPaste","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","getRange","disableBrowserMagic","hiddenTextarea","te","ios","findPosH","findNextLine","moveOnce","boundToLine","origDir","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","posToDOM","side","isInGutter","scan","badPos","bad","domTextBetween","recognizeMarker","closing","addText","walk","cmText","markerID","isBlock","domToPos","lineNode","locateNodeInLineView","topNode","curNode","dist","previousSibling","dist$1","fromTextArea","getValue","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","getWrapperElement","addLegacyProps","cmpPos","platform","ie_upto10","ie_11up","edge","documentMode","qtwebkit","vendor","mac_geMountainLion","presto_version","endNode","setEnd","setStart","createTextRange","moveToElementText","moveEnd","selectInput","selectionEnd","_e","ms","sel_move","charType","lowTypes","arabicTypes","BidiSpan","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","outerType","type$1","prev$1","type$2","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","i$7","nstart","nl","rt","hasSelection","parentElement","compareEndPoints","oncopy","lastColumnPos","lastColumnValue","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","consume","caseInsensitive","cased","hideFirstChars","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elt$$1","elementFromPoint","NullScrollbars","native","null","here","there","LeafChunk","removeInner","insertInner","iterN","BranchChunk","oldHeight","leaf","maybeSpill","me","spilled","sibling","myIndex","used","oldH","withOp","dHeight","nextDocId","cleanGeneration","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","extendSelectionsBy","setSelections","addSelection","getSelections","dup","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","link","splitIds","iterLinkedDocs","getEditor","eachLine","3","8","16","17","18","19","20","32","33","34","35","36","44","45","46","59","61","91","92","93","106","107","109","110","111","127","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","goDocStart","goDocEnd","goLineStart","goLineStartSmart","goLineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","defineInitHook","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","amount","rtlMoveVisually","goalColumn","goals","headPos","startChar","check","getScrollInfo","interpret","swapDoc","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","removeAllRanges","curAnchor","anchorNode","anchorOffset","curFocus","focusNode","focusOffset","rng","rangeCount","getRangeAt","addRange","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","TextareaInput","prevInput","pollingFast","inaccurateSelection","prepareCopyCut","fastPoll","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","minimal","slowPoll","missed","same","prepareSelectAllHack","extval","rehide","oldWrapperCSS","oldCSS","detectingSelectAll","resetSelectionOnContextMenu","wrapperBox","oldScrollY","scrollY","mouseup","dontDelegate","contenteditable","defineExtension","defineDocExtension","version","sourceToolTip","ago","markdown","web_storage","delim","lasthangoutwarning","messages","aria-haspopup","aria-expanded","table","Include my query","queryEditor","Broadcast to hangout","oneline","has_payload","muser","suser","profile_id","data-userid","payload_handlers","load_from_server","ifempty","chat_messages","textStatus","errorThrown","update_time","diffBody","baseName","headName","room","scrollToBottom","onlydown","qe","dif","nwe","commit","about","chats","empty_title","total","chats++","chat_status","tabbed","tabTypes","wrapInTab","wrapped","glyphicon","genId","tabid","profileObject","profiles","newTab","prompt","clean","makeTabbed","newContentID","hr","tabFromSource","inNewTab","setSource","tabType","showTracePort","isPengineSrc","isStoreSrc","pengineID","editors","noHistory","addTab","removeTab","new_active","prologRunner","tabLabel","close_button","data-id","tabSelect","data-type","typeName","data-ext","typelabel","download","print","fileInfo","searchForm","sform","data-search-in","profileForm","pform","profileValue","navTabs","navTab","navContent","prolog","downloadCSV","infoBody","csv_formats","disposition","params","pengines","trimFullStop","application","Pengine","answerHasOutput","answer","variables","residuals","renderSubstitutions","substs","var","renderAnswer","substitutions","renderTabledAnswer","findBinding","ensureResidualColumn","vname","binding","evalScripts","ajaxScript","eval","row","renderMulti","prologAnswer","selectMenu","hovering","startMenuTimeout","resetHover","closeSelectMenu","dt","downloadButton","showSelect","hideSelect","selectElementText","selectNodeContents","aSupportsDownload","outerHTML","extension","svg","prologText","sparkline","createClass","SPFormat","clipval","quartile","normalizeValue","normalizeValues","sum","addCSS","ensureArray","formatNumber","RangeMap","MouseHandler","Tooltip","barHighlightMixin","tristate","discrete","bullet","pie","defaultStyles","initStyles","VShape","VCanvas_base","VCanvas_canvas","VCanvas_vml","UNSET_OPTION","shapeCount","common","lineColor","fillColor","defaultPixelsPerValue","composite","tagValuesAttribute","tagOptionsPrefix","enableTagOptions","enableHighlight","highlightLighten","tooltipSkipNull","tooltipPrefix","tooltipSuffix","disableHiddenCheck","numberFormatter","numberDigitGroupCount","numberDigitGroupSep","numberDecimalMark","disableTooltips","disableInteraction","spotColor","highlightSpotColor","highlightLineColor","spotRadius","minSpotColor","maxSpotColor","lineWidth","normalRangeMin","normalRangeMax","normalRangeColor","drawNormalOnTop","chartRangeMin","chartRangeMax","chartRangeMinX","chartRangeMaxX","tooltipFormat","barColor","negBarColor","stackedBarColor","zeroColor","nullColor","zeroAxis","barSpacing","chartRangeClip","colorMap","posBarColor","zeroBarColor","tooltipValueLookups","-1","1","thresholdColor","thresholdValue","targetColor","targetWidth","performanceColor","rangeColors","sliceColors","borderWidth","raw","boxLineColor","boxFillColor","whiskerColor","outlierLineColor","outlierFillColor","medianColor","showOutliers","outlierIQR","tooltipFormatFieldlistKey","lq","med","uq","lo","ro","lw","rw","Class","_super","SPFormatClass","fre","precre","fclass","fieldset","lookups","lookupkey","fieldvalue","prec","lookup","spformat","vl","nf","vals","groupsize","groupsep","decsep","ignoreNull","createStyleSheet","WebkitAppearance","simpledraw","useExisting","interact","mhandler","canvas","getContext","namespaces","registerCanvas","cleardraw","RangeMapClass","rangelist","range_map","currentPageX","currentPageY","splist","displayTooltips","highlightEnabled","registerSparkline","updateDisplay","$canvas","mouseclick","removeTooltip","clickEvent","sparklines","mousemove","currentEl","updatePosition","spcount","needsRefresh","clearRegionHighlight","tooltiphtml","localX","localY","setRegionHighlight","getCurrentRegionTooltip","disableHighlight","sizeStyle","tooltipClassname","sizetipStyle","tooltipOffsetX","tooltipOffsetY","sizetip","updateWindowDims","scrollRight","getSize","mousex","mousey","userValues","userOptions","$this","sparkline_display_visible","extendedOptions","tagOptionType","tagValCache","getTagSetting","mergedOptions","pairs","keyval","defaultval","tagOption","_base","currentRegion","initTarget","interactive","canvasWidth","pixelWidth","canvasHeight","pixelHeight","getRegion","newRegion","removeHighlight","renderHighlight","changeHighlight","formats","formatlen","showFields","showFieldsKey","newFields","fv","formatter","fieldlen","entries","getCurrentRegionFields","isNull","suffix","calcHighlightColor","color","mult","rgbnew","highlightColor","lighten","newShapes","shapeids","regionShapes","renderRegion","replaceWithShapes","newShape","replaceWithShape","shapes","vertices","regionMap","xvalues","yvalues","yminmax","hightlightSpotId","lastShapeId","highlightSpot","vertex","drawCircle","highlightSpotId","insertAfterShape","drawLine","canvasTop","highlightLineId","removeShapeId","scanValues","isStr","valcount","maxy","maxyorg","miny","minyorg","maxx","minx","processRangeOptions","drawNormalRange","canvasLeft","rangey","ytop","drawRect","rangex","yvallast","path","paths","xnext","xpos","xposnext","yvalcount","lineShapes","fillShapes","plen","valueSpots","hlSpotsEnabled","drawShape","getLastShapeId","isStackString","groupMin","groupMax","stackRanges","numValues","vlen","xaxisOffset","clipMin","clipMax","stacked","vlist","slen","svals","yoffset","yMaxCalc","stackMin","stackMax","totalBarWidth","stackTotals","stackRangesNeg","canvasHeightEf","colorMapByIndex","colorMapByValue","calcColor","stacknum","valuenum","newColor","yoffsetNeg","minPlotted","allMin","halfHeight","itemWidth","pheight","valueShapes","regiondata","shapeid","getShapeAt","fieldkey","region","shape","renderRange","renderPerformance","renderTarget","rn","rangeval","rangewidth","perfval","perfwidth","targetval","targettop","targetheight","p1","t0","radius","newslice","renderSlice","circle","drawPieSlice","quartiles","loutlier","routlier","lwhisker","rwhisker","iqr","q1","q2","q3","unitSize","minValue","maxValue","appendShape","_pxregex","x1","y1","x2","y2","_genShape","startAngle","endAngle","getElement","_insert","_calculatePixelDims","shapetype","shapeargs","shapeseq","currentTargetShapeId","_getContext","strokeStyle","fillStyle","clearRect","_drawShape","beginPath","moveTo","lineTo","stroke","fill","targetX","targetY","isPointInPath","_drawCircle","arc","_drawPieSlice","closePath","_drawRect","sid","shapemap","groupel","insertAdjacentHTML","prerender","initial","closed","vel","vpath","startx","starty","endx","endy","sin","content_type","chs","downloader","glyphButton","runnerMenu","Collapse all","Expand all","Stop all","Clear","prologRunners","stretch","iconifyLast","runner","jrunner","alive","toggleIconic","RS","addAnswer","results","aliveState","answerTable","tds","runScripts","scripts","my_node","breakpoints","registerSources","pengine","handleCreate","bps","resvar","residuals_var","ask","termNoFullStop","handleSuccess","more","handleFailure","handleStop","handlePrompt","wait_for","clickableLocations","matched","gotoError","econtext","handleOutput","clickableError","loc","error_context","error_handler","handleError","handleAbort","handlePing","keyBindings","65","112","titleBarButton","stateButton","controllerDiv","next10","next100","next1000","statusChart","spark","tabled","qspan","savedFocus","answers","server","oncreate","onsuccess","onfailure","onstop","onprompt","onoutput","onping","ping","setScreenDimensions","sh","cw","cols","rows","outputHTML","syntaxError","query_editor","trace","capitalizeFirstLetter","respond","depth","port","exception","setPrompt","receiver","request","fdata","stopOrAbort","runners","populateActionMenu","Re-run","stateful","stats","toBytes","numberWithCommas","bytes","pow","stacks","colors","names","usage","trail","log10","tooltipChartTitle","node_id","unique_id","diffMeta","m1","m2","diffAttr","diffTags","reduceMeta","t1","t2","tabs","commits","henabled","Boolean","symbolic","showMetaData","metaData","newMetaData","showHistory","playButton","data-click-to-select","data-single-select","fillHistoryTable","changedAttributes","data-commit","setCommit","showDiff","fillDiff","addTag","udiffData","classmap","@","-","br","__whitespace","\t","\n","\f","\r","difflib","defaultJunkFunction","stripLinebreaks","stringAsLines","lfpos","crpos","linebreak","__reduce","__ntuplecomp","mlen","__calculate_ratio","__isindict","dict","__dictget","SequenceMatcher","isjunk","set_seqs","set_seq1","set_seq2","matching_blocks","opcodes","fullbcount","__chain_b","b2j","populardict","indices","junkdict","isbjunk","isbpopular","find_longest_match","alo","ahi","blo","bhi","besti","bestj","bestsize","j2len","newj2len","jdict","jkey","get_matching_blocks","qi","i2","j2","k2","i1","j1","k1","block","non_adjacent","get_opcodes","bj","blocks","get_grouped_opcodes","codes","nn","groups","ratio","triple","quick_ratio","avail","availhas","numb","real_quick_ratio","_calculate_ratio","diffview","buildView","celt","clazz","telt","ctelt","addCells","tidx","tend","addCellsInline","tidx2","baseTextLines","newTextLines","baseTextName","newTextName","contextSize","inline","viewType","tdata","node2","be","ne","rowcnt","toprows","botrows","jump","newtxt","sm","basename","udiff","editConflicts","addLine","filesysInfo","last_modified","modified_since_loaded","loaded","errorString","is_clean","onStorage","supportsType","changeGen","cleanCheckpoint","update_tab_title","reload","what","default","saveAs","saveAsBody","display_name","saveURL","resolveEditConflict","tabContent","bdiv","merge-my-edits","edit","merge-server-edits","merge-conflicts","patch_status","editConflictAction","copyMeta","modified","expose","new","selections","notebook","getSelectionLabel","editorLabel","ed","restoreSelection","percentage","close_chat","chat_message","follow_file_options","unload","why","confirm","opened","Sha1","sharedMemory","h0","h3","h4","finalized","hashed","NODE_JS","JS_SHA1_NO_NODE_JS","versions","COMMON_JS","JS_SHA1_NO_COMMON_JS","AMD","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","createOutputMethod","outputType","createMethod","nodeWrap","crypto","Buffer","nodeMethod","createHash","digest","ArrayBuffer","Uint8Array","notString","lastByteIndex","finalize","hex","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","data-action","imageButton","glyphButtonGlyph","sep","Notebook","my_cell","cellTypes","program","currentCell","stringifyNotebookDOM","orderAttrs","nest","is_cell","clipboard","notebookMenu","Delete cell","Copy cell","Paste cell","Move cell up","Move cell down","Insert cell","--","Exit fullscreen","copyData","toolbar","focusout","eds","aeds","nc","fullscreen","delete","cells","restore","down","insertAbove","insertBelow","if_visible","chat_container","cellType","checkModified","clean_signalled","removeNotForQuery","viewrect","seltop","selbottom","cbottom","setupStorage","cgen","skipEmpty","assignCellNames","updatePlaceHolder","placeHolder","cellText","fileInsertInput","theFile","typeMore","typeLess","less","assignName","runTabled","getSettings","querySettingsBody","singleline","program_cells","programs","saveDOM","restoreDOM","domCellType","setAttr","autoCurrent","getSource","wrapSolution","sourceID","Aggregate (count all)","Projection","Order by","Distinct","Limit","---","Download answers as CSV","markdownText","makeEditable","setHTML","htmlText","eval_script","runHTML","pretext","copyAttr","copyClassAttr","isDefault","getAttr","addClassAttr","addData","addAttr","pcells","formsel","appendDropdown","accell","preference","pref","submenu","items","dropDownUL","clickNotSubMenu","clickSubMenu","grandparent","navbar","ul1","ul2","populateDropdown","clearDropdown","extendDropdown","DEBUG","topic","TemplateState","marked","selectableMarkers","varIndex","isNested","_templateStack","Template","varTemplates","_tokens","parseTemplate","varParsing","addChar","line_selection","variable","getMarkerChanged","textChanged","_templateVar","onChange","_templateState","updating","markerChanged","uninstall","posChanged","newContent","onEndCompletion","selectNextVariable","exitOnEnd","exit","hintValue","samePos","p2","_hintTemplateMarker","cursorPos","canceledMarker","ourMap","templatesMap","templatesHint","Ctrl-Space","_content","subTemplate","tvar","nested","startLine","_templates","targetLine","getCompletions","completions","completion","addTemplates","forEach","TemplatesHint","PrologHint","modeToTemplate","varp","detp","metav","vt","hintsFor","myTemplates","symbol","anyword","anyhint","getHints","callback","attachContextInfo","tokenPosition","uflagsW","chr","cp","UNICODE_MAP_SIZE","uflags_map","U_ID_START","U_ID_CONTINUE","U_UPPERCASE","U_SEPARATOR","U_SYMBOL","U_OTHER","U_CONTROL","ucp0x00","ucp0x01","ucp0x02","ucp0x03","ucp0x04","ucp0x05","ucp0x06","ucp0x07","ucp0x08","ucp0x09","ucp0x0a","ucp0x0b","ucp0x0c","ucp0x0d","ucp0x0e","ucp0x0f","ucp0x10","ucp0x12","ucp0x13","ucp0x14","ucp0x16","ucp0x17","ucp0x18","ucp0x19","ucp0x1a","ucp0x1b","ucp0x1c","ucp0x1d","ucp0x1e","ucp0x1f","ucp0x20","ucp0x21","ucp0x23","ucp0x24","ucp0x27","ucp0x2b","ucp0x2c","ucp0x2d","ucp0x2e","ucp0x2f","ucp0x30","ucp0x31","ucp0x32","ucp0x4d","ucp0x9f","ucp0xa4","ucp0xa6","ucp0xa7","ucp0xa8","ucp0xa9","ucp0xaa","ucp0xab","ucp0xd7","ucp0xd8","ucp0xdb","ucp0xdc","ucp0xdf","ucp0xe0","ucp0xf8","ucp0xfa","ucp0xfb","ucp0xfd","ucp0xfe","ucp0xff","ucp0x100","ucp0x101","ucp0x102","ucp0x103","ucp0x104","ucp0x108","ucp0x109","ucp0x10a","ucp0x10b","ucp0x10c","ucp0x10e","ucp0x110","ucp0x111","ucp0x116","ucp0x123","ucp0x124","ucp0x134","ucp0x16a","ucp0x16f","ucp0x1b0","ucp0x1d0","ucp0x1d1","ucp0x1d2","ucp0x1d3","ucp0x1d4","ucp0x1d5","ucp0x1d6","ucp0x1d7","ucp0x1ee","ucp0x1f0","ucp0x1f1","ucp0x1f2","ucp0x1f3","ucp0x1f4","ucp0x1f5","ucp0x1f6","ucp0x1f7","ucp0x2a6","ucp0x2b7","ucp0x2b8","ucp0x2fa","ucp0xe00","ucp0xe01","ucp0xf00","ucp0xfff","ucp0x1000","ucp0x10ff","flags","id_start","id_continue","uppercase","separator","control","ctype","cmConfig","parserConfig","chain","readDigits","readEsc","isSingleEscChar","unicodeEscape","isHexDigit","isOctalDigit","nextUntilUnescaped","nesting","multiLineQuoted","setArg1","goalStart","setArgAlignment","alignment","leftCol","nextArg","isControl","inBody","tp","cont","peekSpace","plTokenBase","lastType","functor","functorName","functorColumn","closeColumn","tagColumn","plTokenComment","isSoloChar","commaAtEOL","quasiQuotations","plTokenQuasiQuotation","plTokenString","groupedIntegers","atom","isNeck","isControlOp","dicts","sec","quote","quoteType","maybeEnd","\"","'","`","curTerm","curToken","metainfo","enrich","textAfter","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","prologStartIfThenElse","prologStartThen","prologStartElse","'('","'>'","';'","Ctrl-L","prologFireQuery","endl","endc","Ctrl-Enter","State","DEFAULT_DELAY","generationFromServer","changeEditor","prologHighlightServer","askRefresh","serverAssistedHighlight","leaveEditor","enrichStyle","serverToken","outOfSync","okToken","okTerm","skippedTerms","skippedTokens","reSync","oos","matchTokenText","isQuoted","matchToken","syncOnType","serverSync","serverStyle","syntax_error","USE_CHANGES_IF_LONGER_THEN","leaveCM","modeOptions","refreshHighlight","qatom","bqstring","number","neg-number","pos-number","list_open","list_close","qq_open","qq_sep","qq_close","dict_open","dict_close","brace_term_open","brace_term_close","neck","fullstop","singleton","uatom","op_type","int","ext_quant","expanded","comment_string","identifier","delimiter","head_exported","head_public","head_extern","head_dynamic","head_multifile","head_unreferenced","head_hook","head_meta","head_constraint","head_imported","head_built_in","head_iso","head_def_iso","head_def_swi","goal_built_in","goal_imported","goal_autoload","goal_global","goal_undefined","goal_thread_local","goal_dynamic","goal_multifile","goal_expanded","goal_extern","goal_recursion","goal_meta","goal_foreign","goal_local","goal_constraint","goal_not_callable","xpce_method","xpce_class_builtin","xpce_class_lib","xpce_class_user","xpce_class_undef","option_name","no_option_name","flag_name","no_flag_name","file_no_depends","nofile","qq_type","string_terminal","entity","html_attribute","sgml_attr_function","http_location_for_id","http_no_location_for_id","getEnrichedToken","terminfo","tokenInfo","getTokenReferences","setFile","htmlConfig","autoSelfClosers","area","command","embed","frame","keygen","track","wbr","menuitem","implicitlyClosed","dd","rp","contextGrabbers","address","article","aside","blockquote","dl","h5","h6","hgroup","nav","ol","section","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","inText","parser","inBlock","doctype","inTag","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","Context","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","setStyle","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","htmlMode","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","modeInfo","mimes","findModeByMIME","findModeByExtension","findModeByFileName","dot","findModeByName","cmCfg","modeCfg","switchInline","switchBlock","lineIsEmpty","linkTitle","em","strong","strikethrough","indentedCode","htmlBlock","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","prevLineIsList","prevLineIsIndentedCode","indentationDiff","tokenTypes","atxHeaderRE","highlightFormatting","formatting","getType","setextHeaderRE","footnoteLink","hrRE","listRE","listType","listStack","taskLists","taskListRE","taskList","fencedCodeBlocks","fencedCodeRE","fencedChars","localMode","localState","htmlState","htmlModeMissing","md_inside","returnType","maxBlockquoteDepth","taskOpen","taskClosed","linkHref","linkText","imageAltText","imageMarker","listMod","list2","list3","list1","handleText","textRE","matchCh","previousFormatting","formattingEscape","linkInline","linkEmail","atts","leftFlanking","punctuation","rightFlanking","setEm","setStrong","getLinkHrefInside","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","tokenTypeOverrides","tokenType","allowAtxHeaderWithoutSpace",")","]","forceBlankLine","closeBrackets","fold","findMatchingBracket","strict","matching","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","bracketRegex","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ie_lt8","doMatchBrackets","currentlyHighlighted","(","[","{","}","continueComment","inserts","modeHere","continueLineCommentEnabled","continueLineComment","nonWS","probablyInsideString","useInnerComments","noOptions","toggleComment","minLine","uncomment","commentString","fullLines","blockComment","pad","blankLines","commentBlankLines","baseString","startString","endString","lastLineHasText","blockCommentLead","didSomething","lineString","endPos","endLine","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","openEnd","foundEnd","Completion","startPos","startLen","activityFunc","isNewCompletion","parseOptions","hintOptions","defaultOptions","buildKeyMap","addBinding","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","extra","getHintElement","hintsElement","Widget","picked","hints","selectedHint","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","hintId","alignWithWord","below","winW","winH","overlapY","scrolls","startScroll","curTop","overlapX","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onScroll","curScroll","point","completeOnSingleClick","applicableHelpers","supportsSelection","fetchHints","resolveAutoHints","words","resolved","app","fromList","showHint","newOpts","completionActive","cancelAnimationFrame","closeCharacters","myTick","finishUpdate","completeSingle","auto","WORD","RANGE","curWord","clearPlaceholder","setPlaceholder","modespec","ie_lt9","SearchCursor","atOccurrence","ignoreCase","cutOff","newMatch","matchLen","origQuery","orig","adjustPos","origTarget","ln","folded","pos1","len1","findNext","findPrevious","savePosAndFail","getSearchCursor","dialogDiv","dialog","closeNotification","currentNotificationClose","onClose","selectValueOnOpen","closeOnEnter","closeOnBlur","blurring","doneTimer","searchOverlay","SearchState","posFrom","posTo","lastQuery","getSearchState","queryCaseInsensitive","persistentDialog","onEnter","openDialog","clearSearch","shortText","confirmDialog","fs","openConfirm","parseString","parseQuery","isRE","startSearch","queryText","showMatchesOnScrollbar","annotate","doSearch","rev","hiding","searchNext","queryDialog","dialogText","replaceQueryDialog","replacementQueryDialog","advance","doReplaceConfirm","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","interpretLine","jumpDialog","jumpToLine","posStr","showTooltip","tt","hideTooltip","showTooltipFor","HOVER_CLASS","TextHoverState","onMouseOver","onMouseOverWithDelay","Function","getTextHover","textHover","newE","getTokenAndPosAt","optionHandler","nearby","predName","addFileTranslation","pathTranslations","localDef","tokenHelp","unused_import","undefined_import","expected","instantiation_error","comment","operator","et","contextInfo","information","showContextInfo","showHints","posEq","addToRing","killRing","growRingTop","getFromRing","popFromRing","mayGrow","lastKill","byChar","byWord","byLine","byPage","byParagraph","sawText","fst","hasText","bySentence","sawWord","byExpr","newPos","getPrefix","digits","emacsPrefix","clearPrefix","repeated","findEnd","by","killTo","killRegion","addPrefix","digit","maybeClearPrefix","maybeDuplicateInput","emacsPrefixMap","prefixPreservingKeys","addPrefixMap","prefixMap","maybeRemovePrefixMap","setMark","clearMark","getInput","operateOnWord","toEnclosingExpr","quit","regPrefix","Alt-G","Ctrl-X","Ctrl-Q","emacs","Ctrl-W","Alt-W","Alt-Y","Ctrl-Shift-2","Alt-V","Alt-A","Alt-E","Alt-K","Ctrl-Alt-K","Ctrl-Alt-F","Ctrl-Alt-B","Shift-Ctrl-Alt-2","Ctrl-Alt-T","leftStart","rightEnd","Ctrl-Alt-U","Alt-Space","Alt-C","letter","Alt-L","Alt-;","Ctrl-/","Shift-Ctrl--","Shift-Alt-,","Shift-Alt-.","Ctrl-R","Shift-Alt-5","Alt-/","Ctrl-J","Alt-G G","Ctrl-X Tab","Ctrl-X Ctrl-X","Ctrl-X Ctrl-S","Ctrl-X Ctrl-W","Ctrl-X S","Ctrl-X F","Ctrl-X U","Ctrl-X K","Ctrl-X Delete","Ctrl-X H","Ctrl-Q Tab","templateHint","loadStyleExtensions","sname","lastEditor","modeDefaults","prologKeys","roleDefaults","moveLongClick","lc","long_click","sqrt","cancelLongClick","cm_highlight","continueComments","traceMark","makeMarker","setKeybinding","schema","isPengineSource","storageData","getBreakpoints","direct","mysrc","getSourceEx","stdoc","getSourceID","makeCurrent","setIsClean","printWithIframe","highlightError","chmark","clearMessages","isMyFile","charOffsetToPos","cmploc","l1","l2","cppos","esel","cell_name","sr","restoreEditorSelection","findsel","contextMatch","l0","stringMatch","choff","cml","poff","goffset","soff","toff","cmsel","loffset","findEditor","getExamples","inComment","comments","exlist","exl","ex","addExample","gotoLine","clearSearchMarkers","_searchMarkers","markMatches","myHeight","vp","contextAction","data-locindex","coord","anon","addVars","wrapQuery","prefixQuery","tab_types","editDefaults","charno","cm_style","cm_hover_style","dropup","examplesButton","updateExamples","examples","mousedown","historyButton","aggregateButton","aggregates","runButton","tableSelected","tableCheckbox","tabled_results","maxHistoryLength","qediv","prologQuery","setProgramEditor","bg","getProgramEditor","setExamples","sameExamples","exs","ex0","addHistory","findInHistory","cleanGen","unfold","DEFAULT_USER_FIELDS","clearAuthenticationCache","page","oncomplete","agt","xmlhttp","createXMLObject","ActiveXObject","openPopup","uri","closeCallback","Logout","Profile","logged_in","swish_profile_url","user_profile","get_profile","set_from_chat","chat_key","given_name","family_name","nick_name","external_identity","identity_provider","logout","logout_url","auth_method","http_logout","d3_documentElement","d3_window","d3_ascending","d3_number","d3_numeric","d3_bisector","compare","hi","d3_transposeLength","d3_range_integerScale","d3_class","d3_Map","d3_map_escape","d3_map_proto","d3_map_zero","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","object","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","listeners","listenerByName","listener","d3_eventPreventDefault","d3","d3_eventSource","sourceEvent","d3_eventDispatch","thiz","argumentz","e1","e0","d3_selection","d3_subclass","d3_selectionPrototype","d3_selection_selector","d3_select","d3_selection_selectorAll","d3_selectAll","d3_selection_attr","attrNull","attrNullNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","ns","qualify","d3_collapse","d3_selection_classedRe","requote","d3_selection_classes","d3_selection_classed","classedConstant","classedFunction","d3_selection_classedName","classList","d3_selection_style","styleNull","removeProperty","styleConstant","styleFunction","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","namespaceURI","d3_nsXhtml","createElementNS","createNS","d3_selectionRemove","d3_selection_dataNode","__data__","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","d3_selection_enterInsertBefore","i0","j0","d3_selection_on","capture","onRemove","onAdd","d3_array","removeAll","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","related","d3_event_dragSuppress","d3_event_dragId","d3_event_dragSelect","suppressClick","d3_mousePoint","ownerSVGElement","createSVGPoint","d3_mouse_bug44083","scrollX","ctm","getScreenCTM","matrixTransform","inverse","d3_behavior_dragTouchId","d3_sgn","d3_cross2d","d3_acos","π","acos","d3_asin","halfπ","asin","d3_sinh","exp","d3_cosh","d3_tanh","d3_haversin","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hsl_rgb","vv","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","rgb","d3_hcl_lab","d3_radians","d3_lab_rgb","d3_lab_xyz","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_xyz_rgb","atan2","d3_degrees","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgb_hex","hsl","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","d3_xhr","d3_xhrHasResponse","XDomainRequest","onprogress","beforesend","rebind","d3_xhr_fixCallback","d3_timer","d3_timer_queueTail","d3_timer_queueHead","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","LN10","d3_formatPrefix","scale","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","specifier","d3_format_re","sign","zfill","comma","precision","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","formatPrefix","d3_date_utc","UTC","d3_time_interval","d0","d3_date","times","range_utc","utc","d3_time_interval_utc","d3_locale_timeFormat","d3_time_format","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","setFullYear","getDay","setHours","d3_time_parsers","d3_time_parseWeekdayAbbrev","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_parseWeekday","d3_time_dayRe","d3_time_dayLookup","d3_time_parseMonthAbbrev","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_parseMonth","d3_time_monthRe","d3_time_monthLookup","d3_time_parseLocaleFull","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseAmPm","d3_time_periodLookup","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","multi","d3_time_formatMulti","d3_time_formatRe","d3_time_formatLookup","getMonth","d3_time_formatPad","getDate","getHours","d3_time","dayOfYear","getMilliseconds","getMinutes","getSeconds","sundayOfYear","mondayOfYear","getFullYear","d3_time_zone","%","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","d3_time_numberRe","d3_time_expandYear","getTimezoneOffset","zs","zh","zm","d3_time_percentRe","d3_adder","d3_adderSum","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","d3_geo_streamLine","coordinates","coordinate","d3_geo_streamPolygon","polygonStart","polygonEnd","d3_geo_areaRingStart","nextPoint","λ","φ","dλ","λ0","sdλ","adλ","cosφ","sinφ","sinφ0","cosφ0","d3_geo_areaRingSum","λ00","φ00","d3_geo_area","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ε","d3_geo_centroidPoint","d3_geo_centroidPointXYZ","d3_geo_centroidW0","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidLineStart","y0","z0","x0","d3_geo_centroidW1","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroid","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","cx","cy","cz","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","interpolate","subject","clip","segment","p0","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","isSubject","d3_geo_clip","pointVisible","clipStart","rotate","pointLine","pointRing","ring","ringListener","ringStart","ringEnd","ringSegments","polygon","polygonStarted","d3_geo_clipSegmentLength1","rotatedClipStart","d3_geo_pointInPolygon","d3_geo_clipSort","sphere","d3_geo_clipBufferListener","rejoin","d3_geo_clipAntimeridianLine","φ0","sλ0","λ1","φ1","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianInterpolate","meridian","parallel","meridianNormal","polarAngle","winding","point0","antimeridian","τ","φarc","d3_geo_clipCircle","cr","c0","v0","v00","point2","point1","smallRadius","intersect","notHemisphere","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","δλ","polar","d3_geo_circleInterpolate","d3_geom_clipLine","ax","ay","bx","d3_geo_clipExtent","corner","comparePoints","insidePolygon","wn","linePoint","v_","x_","y_","x__","y__","v__","bufferListener","d3_geo_clipExtentMAX","listener_","inside","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ","ρ0","ρ0_y","d3_geo_pathAreaRingStart","d3_geo_pathAreaPolygon","x00","y00","d3_geo_pathArea","d3_geo_pathBoundsPoint","d3_geo_pathBoundsX0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY0","d3_geo_pathBoundsY1","d3_geo_pathBuffer","pointCircle","pointLineStart","lineEndPolygon","d3_geo_pathBufferCircle","pointRadius","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroid","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","resample","maxDepth","resampleRecursive","resampleNone","d3_geo_transformPoint","resampleLineTo","b0","ringPoint","a00","b00","c00","b1","δ2","φ2","λ2","dx2","dy2","dz","cosMinDistance","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","d3_geo_rotation","δφ","δγ","center","invalidate","valid","projectResample","preclip","d3_geo_clipAntimeridian","postclip","clipAngle","clipExtent","translate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","d3_geo_circleAngle","angle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_lengthLineStart","cosΔλ","d3_geo_lengthSum","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_conicConformal","tan","d3_geo_mercator","d3_geo_conicEquidistant","d3_geo_mercatorProjection","clipAuto","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","d3_geom_polygonClosed","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiBeachPool","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiBeaches","d3_geom_voronoiRemoveBeach","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","newArc","lSite","rSite","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","extent","iHalfEdge","halfEdges","nHalfEdges","d3_geom_voronoiCells","iCell","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ε2","d3_geom_voronoiCirclePool","d3_geom_voronoiCircles","d3_geom_voronoiFirstCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiEdges","d3_geom_voronoiConnectEdge","fm","lx","ly","rx","ry","fy","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","nodes","d3_geom_quadtreeVisit","sx","sy","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","xm","ym","d3_interpolateRgb","ar","ag","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","d3_interpolate_numberA","d3_interpolate_numberB","interpolators","d3_interpolateArray","n0","d3_ease_clamp","d3_ease_reverse","d3_ease_reflect","d3_ease_quad","d3_ease_cubic","d3_ease_cubicInOut","t3","d3_ease_poly","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_interpolateHcl","hcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","d3_interpolateLab","lab","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","d3_interpolateTransformPop","d3_interpolateTranslate","d3_interpolateRotate","d3_interpolateSkew","d3_interpolateScale","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","quad","alpha","charges","charge","pointCharge","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","d3_layout_stackMaxIndex","d3_layout_stackReduceSum","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","LN2","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","s1","s2","d3_layout_packUnlink","d3_layout_packTransform","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","domain","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","bisect","d3_scale_linear","clamp","rescale","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","ranger","steps","rangeBand","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","d3_scale_quantile","thresholds","quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","d3_zero","d3_svg_arcInnerRadius","innerRadius","d3_svg_arcOuterRadius","outerRadius","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","padAngle","d3_svg_arcSweep","d3_svg_arcCornerTangents","x01","y01","ox","oy","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","tension","defined","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineCardinalOpen","d3_svg_lineHermite","d3_svg_lineCardinalTangents","d3_svg_lineCardinalClosed","d3_svg_lineCardinal","tangents","pi","lp","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineMonotone","d3_svg_lineRadial","d3_svg_area","points1","interpolateReverse","points0","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","d3_selection_interruptNS","activeId","interrupt","d3_transition","d3_transitionPrototype","d3_transition_tween","tween","d3_transition_text","d3_transitionNamespace","d3_transitionNode","inherit","schedule","elapsed","cancelId","ease","d3_svg_axisX","d3_svg_axisY","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","year","d3_time_scaleMilliseconds","d3_time_scaleDate","d3_json","d3_html","d3_document","selectNode","createContextualFragment","d3_arraySlice","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","ascending","descending","mean","median","numbers","variance","deviation","d3_bisect","bisectLeft","bisectRight","bisector","shuffle","permute","indexes","permutes","transpose","matrix","zip","arrays","mapType","rollup","sortValues","keyValue","setter","valuesByKey","sortKey","sortKeys","behavior","d3_requote_re","__proto__","property","d3_selectMatcher","Sizzle","subgroup","subnode","subgroups","d3_nsPrefix","xhtml","xlink","xmlns","getAttributeNS","classed","groupData","nodeData","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","upgroup","mouse","drag","touchstart","dragstart","position1","dragId","position0","dragged","dragOffset","ended","dragSubject","dragName","dragRestore","correspondingElement","τε","SQRT2","ρ2","ρ4","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","scaleExtent","translateTo","zoomTo","__chart__","center0","zoomstarted","zooming","zoomed","zoomended","location0","d3_selection_interrupt","relocate","scale0","locations0","started","touchmove","touchend","touchtime","distance0","distance1","scale1","zoomName","mousewheelTimer","translate0","d3_behavior_zoomDelta","d3_behavior_zoomInfinity","deltaY","deltaMode","view1","d3_transitionInheritId","d3_hslPrototype","brighter","darker","d3_hclPrototype","d3_lab_K","d3_labPrototype","d3_rgbPrototype","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","dsv","typedResponse","formatRow","formatValue","reFormat","delimiterCode","parseRows","EOF","EOL","formatRows","fieldSet","csv","tsv","d3_formatPrefixes","toPrecision","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setUTCFullYear","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","day","years","week","sunday","weeks","weekOfYear","numberFormat","timeFormat","d3_locale_enUS","geo","d3_adderTemp","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","d3_geo_areaSum","bounds","equatorial","inflection","λ_","λi","φi","dλSum","λ__","φ__","compareRanges","withinRange","best","centroid","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathBounds","contextStream","cacheStream","projectStream","projectionMutator","equirectangular","Δλ","sinΔλ","sinφ1","graticule","X0","DX","X1","Y0","DY","Y1","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","stereographic","transverseMercator","geom","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","grandpa","uncle","voronoi","polygons","d3_geom_voronoiClipExtent","triangles","s0","delaunay","quadtree","nx","ny","insertChild","nPoint","xs","ys","x1_","y1_","x2_","y2_","compat","visit","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolateArray","d3_ease_default","d3_ease","poly","cubic","elastic","back","bounce","d3_ease_mode","in","in-out","out-in","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","baseVal","consolidate","d3_transformIdentity","interpolateTransform","layout","bundle","chord","relayout","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","di","dj","subindex","sortChords","resort","repulse","dw","dn","theta2","chargeDistance2","dragmove","resume","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","d3_layout_forceChargeDistance2","gravity","weight","chargeDistance","theta","neighbors","candidates","childs","revalue","partition","arcs","d3_layout_pieSortByValue","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","inside-out","sums","tops","bottoms","silhouette","wiggle","s3","o0","zero","histogram","bin","bins","valuer","binner","frequency","pack","root0","root1","wrapTree","firstWalk","secondWalk","nodeSize","sizeNode","tx","separation","node1","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","squarify","worst","stickify","rmax","rmin","stickies","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","quantize","threshold","circleSegment","ap","padRadius","d3_svg_arcAuto","cornerRadius","rc1","rc0","oc","kc","t30","t12","t03","t21","linear-closed","step-before","step-after","basis","basis-open","basis-closed","cardinal","cardinal-open","cardinal-closed","monotone","radial","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","triangle-down","d3_svg_symbolSqrt3","triangle-up","symbolTypes","d3_transitionId","d3_transitionInherit","subnodes","nameNS","attrTween","attrTweenNS","styleString","styleTween","inheritId","id0","id1","tickTransform","tickValues","tickArguments_","tickFormat_","tickEnter","tickExit","tickUpdate","tickSpacing","innerTickSize","tickPadding","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","orient","outerTickSize","d3_svg_axisDefaultOrient","d3_svg_axisOrients","tickSize","tickSubdivide","brush","brushstart","resizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","xExtent","yExtent","dragging","keyup","brushmove","resizingX","move1","resizingY","event_","yClamp","xClamp","yExtentDomain","xExtentDomain","brushend","eventTarget","resizing","ey","d3_svg_brushResizes","extent1","extent0","yi","se","d3_time_formatUtc","d3_time_formatIso","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","responseXML","API","derived","Chart","$$","internal","ChartInternal","loadConfig","beforeInit","afterInit","bindThis","argThis","c3_chart_fn","api","getDefaultConfig","axes","Axis","c3_axis","axisX","tickOffset","axisY","generateTicks","tickArguments","copyScale","newScale","isCategory","textFormatted","formatted","getSizeFor1Char","tickTextCharSize","transitionise","withoutTransition","splitTickText","splitted","spaceIndex","subtext","textWidth","sizeFor1Char","tickText","isVertical","tspanDy","counts","tickPosition","tickCentered","textAnchorForText","dxForText","yForText","tickLength","tickX","tickY","tspan","tickMultiline","tickWidth","tickTextRotate","tickCulling","withOuterTick","isCentered","tickInterval","getTotalLength","culling","c3_chart_internal_fn","c3_chart_internal_axis_fn","c3","generate","chart","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForXAxis","clipPathForYAxis","clipPathForGrid","clipPathForSubchart","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeFormat","data_xLocaltime","axisTimeFormat","axis_x_localtime","defaultAxisTimeFormat","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","xOrient","axis_rotated","yOrient","axis_y_inner","y2Orient","axis_y2_inner","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","currentMaxTickWidths","rotated_padding_left","rotated_padding_right","axis_x_show","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","subx","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","main","initPie","initBrush","initZoom","bindto","selectChart","observeInserted","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","hasType","legend_show","updateSizes","updateScales","getXDomain","getYDomain","subX","subY","subY2","orgXDomain","zoom_enabled","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","getTranslate","initSubchart","initTooltip","initLegend","initTitle","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","zoom_privileged","regions","zoomRect","axis_x_extent","getDefaultExtent","updateTargets","updateDimension","oninit","withTransition","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","smoothLines","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","xForText","durationForExit","durationForAxis","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","targetsToShow","filterTargetsToShow","xv","generateTransitions","updateLegend","isCategorized","updateXDomain","axis_x_tick_values","updateXAxisTickValues","xAxis","subXAxis","zoom_rescale","orgDomain","axis_y_tick_values","axis_y_tick_count","yAxis","generateTickValues","axis_y2_tick_values","axis_y2_tick_count","y2Axis","updateLabels","axis_x_tick_culling","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateXgridFocus","data_empty_label_text","updateGrid","updateRegion","updateBar","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","selectedCircles","interaction_enabled","redrawEventRect","updateZoom","updateCircleY","circleY","circleX","generateFlow","isTabVisible","transitionsToWait","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","isTimeSeries","axis_x_type","isCustomX","data_x","notEmpty","data_xs","isTimeSeriesY","axis_y_type","asHalfPixel","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isValue","isScatterType","opacityForText","xx","parseDate","axis_x_categories","yv","yScale","subxx","transformMain","axisY2","chartArcs","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","observe","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","callResizeFunctions","resizeFunctions","endall","parsedDate","data_xFormat","mozHidden","msHidden","webkitHidden","size_width","size_height","padding_left","padding_right","padding_top","padding_bottom","zoom_extent","zoom_onzoom","zoom_onzoomstart","zoom_onzoomend","zoom_x_min","zoom_x_max","interaction_brighten","data_xSort","data_idConverter","data_names","data_classes","data_groups","data_axes","data_type","data_types","data_labels","data_order","data_regions","data_color","data_colors","data_selection_enabled","data_selection_grouped","data_selection_isselectable","data_selection_multiple","data_selection_draggable","data_onclick","data_onmouseover","data_onmouseout","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","color_pattern","color_threshold","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_centered","axis_x_tick_format","axis_x_tick_count","axis_x_tick_fit","axis_x_tick_rotate","axis_x_tick_outer","axis_x_tick_multiline","axis_x_tick_width","axis_x_max","axis_x_min","axis_x_padding","axis_x_height","axis_x_label","axis_y_show","axis_y_max","axis_y_min","axis_y_inverted","axis_y_center","axis_y_label","axis_y_tick_format","axis_y_tick_outer","axis_y_tick_rotate","axis_y_tick_time_value","axis_y_tick_time_interval","axis_y_padding","axis_y_default","axis_y2_show","axis_y2_max","axis_y2_min","axis_y2_inverted","axis_y2_center","axis_y2_label","axis_y2_tick_format","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_x_lines","grid_y_show","grid_y_lines","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","area_zerobased","area_above","pie_label_show","pie_label_format","pie_label_threshold","pie_label_ratio","pie_expand","pie_expand_duration","gauge_label_show","gauge_label_format","gauge_min","gauge_max","gauge_startingAngle","gauge_units","gauge_width","gauge_expand","gauge_expand_duration","donut_label_show","donut_label_format","donut_label_threshold","donut_label_ratio","donut_width","donut_title","donut_expand","donut_expand_duration","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","tooltip_onshow","tooltip_onhide","title_text","title_padding","title_position","additionalConfig","this_config","isDefined","getScale","forTimeseries","getX","_scale","getY","getYScale","getId","getSubYScale","forInit","subXMin","subXMax","subYMin","subYMax","xAxisTickFormat","getXAxisTickFormat","xAxisTickValues","getXAxisTickValues","yAxisTickValues","getYAxisTickValues","y2AxisTickValues","getY2AxisTickValues","getXAxis","getYAxis","updateArc","getYDomainMin","baseId","idsInGroup","hasNegativeValue","getValuesAsIdKeyed","hasNegativeValueInTargets","getYDomainMax","hasPositiveValue","hasPositiveValueInTargets","axisId","xDomain","domainLength","yDomainAbs","lengths","isAllPositive","isAllNegative","targetsByAxisId","yTargets","filterByXDomain","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getDataLabelLength","diffDomain","convertPixelsToAxisPadding","getPadding","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","getMaxDataCount","firstX","lastX","withTrim","updateScaleExtent","trimXDomain","zoomDomain","getZoomDomain","isX","hasValue","isNotX","getXKey","getXValuesOfXKey","xValues","getIndexByX","filterByX","getXValue","getOtherTargetXs","idsForX","getOtherTargetX","addXs","hasMultipleX","isMultipleX","addName","getValueOnIndex","valueOnIndex","updateTargetX","generateTargetX","updateTargetXs","rawX","cloneTarget","id_org","updateXs","getPrevX","getNextX","getMaxDataCountTarget","maxTarget","getEdgeX","mapToTargetIds","hasTarget","targetId","isLegendToShow","mapTargetsToUniqueXs","targetIds","removeHiddenTargetIds","removeHiddenLegendIds","checkValueInTargets","checker","isOrderDesc","isOrderAsc","orderTargets","orderAsc","orderDesc","reducer","t1Sum","t2Sum","filterRemoveNull","paddingCoef","dataLabelFormat","isNoneArc","isArc","findSameXOfValues","sames","findClosestFromTargets","findClosest","minDist","bars","getTargetSelectorSuffix","isWithinBar","xIndex","yIndex","convertValuesToStep","converted","updateDataAttributes","req","responseURL","convertTsvToData","convertCsvToData","convertXsvToData","xsv","targetKeys","new_rows","new_row","findValueInJson","pathArray","columns","appendXs","xKey","convertedId","v1","v2","setTargetType","addCache","loadFromArgs","selectorTarget","legendItem","categoryName","eventRects","eventRectUpdate","maxDataCountTarget","eventRectsMultiple","eventRectsSingle","eventRect","generateEventRectsForMultipleXs","updateEventRect","generateEventRectsForSingleX","rectW","rectX","getEventRectWidth","prevX","nextX","thisX","classEvent","eventRectEnter","expandCircles","expandBars","hideXGridFocus","unexpandCircles","unexpandBars","selectedData","isStepType","showXGridFocus","EXPANDED","isWithinShape","toggleShape","dragend","mouseout","sameXData","dispatchEvent","createEvent","initMouseEvent","getParentWidth","getParentHeight","getTitlePadding","withoutRecompute","ceil10","getAxisWidthByAxisId","getYAxisLabelPosition","isOuter","defaultPadding","legendWidthOnRight","getY2AxisLabelPosition","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","getLabelPositionById","getMaxTickWidth","isInner","typeFilter","__max__","getShapeX","targetsNum","isSub","getShapeY","getShapeOffset","isWithin","isWithinStep","isWithinCircle","pointSelectR","getInterpolate","interpolation","isInterpolationType","isSplineType","chartLines","mainLineUpdate","mainLineEnter","classChartLine","classLines","classAreas","classCircles","classFocus","chartLine","generateClass","selectedCircle","mainLine","lineData","classLine","getPoints","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","posX","posY","_regions","isWithinRegions","generateM","sWithRegion","xp","yp","diffx2","xOffset","x_diff","xv0","xv1","mainArea","areas","classArea","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","value1","areaTargetsNum","areaOffset","mainCircle","circles","lineOrScatterData","classCircle","pointR","getCircles","pointExpandedR","d3_this","chartBars","mainBarUpdate","mainBarEnter","classChartBar","classBars","chartBar","barData","classBar","mainBar","getBarW","barTargetsNum","getBars","generateGetBarPoints","indexX","indexY","barW","barX","barY","barOffset","seg0","pathSegList","seg1","chartTexts","mainText","mainTextUpdate","mainTextEnter","classChartText","classTexts","chartText","barOrLineData","classText","texts","forFlow","getTextRect","dummy","font","forX","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","textElement","xPos","yPos","isSafari","isChrome","isPieType","isGaugeType","isDonutType","isArcType","arcData","grid","xgrids","ygrids","xgridFocus","xgrid","gridLines","xgridLines","ygridLines","updateXGrid","withoutUpdate","xgridData","generateGridData","xgridAttr","updateYGrid","gridValues","ygrid","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLine","ygridLine","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","removeGridLines","toRemove","toShow","tooltipContainer","getYFormat","titleFormat","nameFormat","valueFormat","sanitise","tooltipName","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","forArc","positionFunction","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","legendItemHidden","opacityForUnfocusedLegend","toggleFocusLegend","legendItemFocused","revertLegend","showLegend","selectorLegends","hideLegend","clearLegendItemTextBoxCache","getTextBox","updatePositions","updateValues","withoutStep","areaLength","totalLength","itemLength","posMin","margins","maxLength","isLast","tileWidth","itemHeight","maxHeight","widths","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","tiles","legendItemEvent","legendItemTile","legendBackground","xForTitle","yForTitle","axisXLabel","textAnchorForXAxisLabel","axisYLabel","textAnchorForYAxisLabel","axisY2Label","textAnchorForY2AxisLabel","withoutRotateTickText","axisParams","getTickValues","getLabelOptionByAxisId","getLabelText","setLabelText","getLabelPosition","defaultPosition","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","dyForYAxisLabel","dyForY2AxisLabel","tickCount","forTimeSeries","targetCount","tickValue","axisSubX","isHidden","isIE9","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","innerRadiusRatio","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","updated","rate","getArc","transformForArcLabel","getArcRatio","whole","convertToArcData","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","expandArc","selectorTargets","chartArc","shouldExpand","expandDuration","unexpandArc","shouldShow","getArcTitle","mainPieUpdate","mainPieEnter","classChartArc","classArcs","chartArcsTitle","mainArc","classArc","_current","interpolated","gaugeValue","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMin","chartArcsGaugeMax","mainRegion","classRegion","parentData","regionX","regionY","regionWidth","regionHeight","isRegionOnX","mx","my","minX","maxX","minY","maxY","altDomain","dragarea","_x","_y","_w","_h","isSelected","SELECTED","isIncluded","INCLUDED","togglePoint","getPathBox","togglePath","selectPoint","unselectPoint","selectPath","unselectPath","getToggle","redrawForBrush","contextLineEnter","contextLineUpdate","contextBarEnter","contextBarUpdate","updateBarForSubchart","contextBar","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","contextLine","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","redrawAreaForSubchart","drawAreaOnSub","startEvent","redrawForZoom","orgScaleExtent","asValue","formatForY","yFormat","formatForY2","y2Format","defaultFormat","hasCaches","getCaches","defocused","classShape","classShapes","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","selectorLegend","defocus","unzoom","categories","cacheIds","dataCount","baseTarget","baseValue","notfoundIds","orgDataCount","missing","translateX","flowIndex","flowLength","flowStart","flowEnd","durationForFlow","resetOther","isTargetId","isTargetIndex","unselect","transformTo","optionsForRedraw","grids","shown","category","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r2","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","numberOfItems","insertItemBefore","replaceItem","appendItem","pathSegArray","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","_parseNumber","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","svgPanZoom","./svg-pan-zoom.js","2","svgNS","_createZoomIn","_createZoomReset","_createZoomOut","controlIcons","getPublicInstance","zoomIn","zoomOut","./svg-utilities","originalState","activeState","updateCTMCached","updateCTM","createRequestAnimationFrame","refreshRate","viewBox","cacheViewBox","processCTM","setCTM","updateCTMOnNextFrame","simpleViewBoxCache","getBBox","getViewBox","getCTM","fit","contain","getOriginalState","getZoom","getRelativeZoom","computeRelativeZoom","getPan","createSVGMatrix","isZoomDifferent","isPanDifferent","beforeZoom","updateCache","onZoom","beforePan","onPan","pendingUpdate","onUpdatedCTM","./utilities","4","viewportSelector","panEnabled","controlIconsEnabled","zoomEnabled","dblClickZoomEnabled","mouseWheelZoomEnabled","preventMouseEventsDefault","zoomScaleSensitivity","minZoom","maxZoom","customEventsHandler","eventsListenerElement","setupSvgAttributes","getBoundingClientRectNormalized","getOrCreateViewport","setBeforeZoom","setOnZoom","setBeforePan","setOnPan","setOnUpdatedCTM","lastMouseWheelEventTime","setupHandlers","eventListeners","handleMouseDown","handleMouseUp","handleMouseMove","touchleave","touchcancel","svgElement","instance","haltEventListeners","enableMouseWheelZoom","wheelListener","handleMouseWheel","disableMouseWheelZoom","getEventPoint","zoomAtPoint","multiply","getSvgCenterPoint","publicZoom","computeFromRelativeZoom","publicZoomAtPoint","resetZoom","resetPan","pan","handleDblClick","mouseAndTouchNormalize","isDblClick","firstEventCTM","stateOrigin","updateBBox","panBy","disableControlIcons","enableControlIcons","publicInstance","enablePan","disablePan","isPanEnabled","enableZoom","disableZoom","isZoomEnabled","isControlIconsEnabled","enableDblClickZoom","disableDblClickZoom","isDblClickZoomEnabled","isMouseWheelZoomEnabled","setZoomScaleSensitivity","setMinZoom","setMaxZoom","zoomBy","zoomAtPointBy","getSizes","realZoom","getSvg","./control-icons","./shadow-viewport","./uniwheel","5","xmlNS","xmlnsNS","xlinkNS","evNS","internetExplorerRedisplayInterval","refreshDefsGlobal","6","deltaX","delatZ","onmousewheel","7","HTMLElement","SVGSVGElement","getSVGDocument","leading","trailing","menuBroadcast","swishLogo","setupModal","setupPanes","setupResize","Save ...","Info & history ...","Reload","Open recent","Share","Follow ...","Start TogetherJS ...","Export","Download","Print ...","Edit","Clear messages","Changes","View changes","Find (Ctrl-F)","Find and replace (Shift-Ctrl-F)","Jump to line (Alt-G)","Options","Semantic highlighting","Emacs Keybinding","Examples","Help","show_beware","playFile","copyAttrs","playURL","openExampleFunction","populateExamples","swish_examples","populateHelp","openHelpFunction","swish_help_index","prologSource","tabData","onlyglobal","fullscreen_origin","fullscreen_main","exitFullscreen","isFullscreen","collaborate","TogetherJS","urlArgs","waitSeconds","jquery-ui","bloodhound","tagmanager","svg-pan-zoom","cm/mode/prolog","cm/addon/hover/prolog-hover","cm/addon/hover/text-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","shim","deps"],"mappings":"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AAAC,EACA,GAAA,GAAA,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EAAA,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAAC,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,EACA,EAAA,EAAA,EAAA,EAAAC,GAAA,EAAAC,GAAAC,GACAC,GAAAC,GAAAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAAC,GAAAC,GAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAAC,GAAAC,GAAA,EAAAC,GAAAC,GAAAC,GACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,EAAA,EAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,EAAAC,GAAA,EACAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAAC,GAAAC,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAAC,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAAC,GAAA,EAAA,EAAA,EAAA,EAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,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","file":"swish-min.js.new","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";var b=a.fn.jquery.split(\" \")[0].split(\".\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\"bsTransitionEnd\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var c=a(this),e=c.data(\"bs.alert\");e||c.data(\"bs.alert\",e=new d(this)),\"string\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\"alert\"]',d=function(b){a(b).on(\"click\",c,this.close)};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\"closed.bs.alert\").remove()}var e=a(this),f=e.attr(\"data-target\");f||(f=e.attr(\"href\"),f=f&&f.replace(/.*(?=#[^\\s]*$)/,\"\"));var g=a(\"#\"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(\".alert\")),g.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(g.removeClass(\"in\"),a.support.transition&&g.hasClass(\"fade\")?g.one(\"bsTransitionEnd\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\"click.bs.alert.data-api\",c,d.prototype.close)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.button\",e=new c(this,f)),\"toggle\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\"3.3.7\",c.DEFAULTS={loadingText:\"loading...\"},c.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",null==f.resetText&&d.data(\"resetText\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")?(c.prop(\"checked\")&&(a=!1),b.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==c.prop(\"type\")&&(c.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(a=!1),this.$element.toggleClass(\"active\")),c.prop(\"checked\",this.$element.hasClass(\"active\")),a&&c.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(c){var d=a(c.target).closest(\".btn\");b.call(d,\"toggle\"),a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(c.preventDefault(),d.is(\"input,button\")?d.trigger(\"focus\"):d.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(b){a(b.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},c.DEFAULTS,d.data(),\"object\"==typeof b&&b),g=\"string\"==typeof b?b:f.slide;e||d.data(\"bs.carousel\",e=new c(this,f)),\"number\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",a.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",a.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",a.proxy(this.cycle,this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\".item\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\"prev\"==a&&0===c||\"next\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\"prev\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\"next\":\"prev\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},c.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},c.prototype.slide=function(b,d){var e=this.$element.find(\".item.active\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\"next\"==b?\"left\":\"right\",i=this;if(f.hasClass(\"active\"))return this.sliding=!1;var j=f[0],k=a.Event(\"slide.bs.carousel\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\"active\")}var m=a.Event(\"slid.bs.carousel\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\"slide\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\"bsTransitionEnd\",function(){f.removeClass([b,h].join(\" \")).addClass(\"active\"),e.removeClass([\"active\",h].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\"active\"),f.addClass(\"active\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\"data-target\")||(d=e.attr(\"href\"))&&d.replace(/.*(?=#[^\\s]+$)/,\"\"));if(f.hasClass(\"carousel\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\"data-slide-to\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\"bs.carousel\").to(h),c.preventDefault()}};a(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",e).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",e),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\"use strict\";function b(b){var c,d=b.attr(\"data-target\")||(c=b.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\"bs.collapse\"),f=a.extend({},d.DEFAULTS,c.data(),\"object\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\"bs.collapse\",e=new d(this,f)),\"string\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\"collapse\"][href=\"#'+b.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+b.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b,e=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(e&&e.length&&(b=e.data(\"bs.collapse\"),b&&b.transitioning))){var f=a.Event(\"show.bs.collapse\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\"hide\"),b||e.data(\"bs.collapse\",null));var g=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\"scroll\",g].join(\"-\"));this.$element.one(\"bsTransitionEnd\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return a.support.transition?void this.$element[c](0).one(\"bsTransitionEnd\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\"in\");a.attr(\"aria-expanded\",c),b.toggleClass(\"collapsed\",!c).attr(\"aria-expanded\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(d){var e=a(this);e.attr(\"data-target\")||d.preventDefault();var f=b(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":e.data();c.call(f,h)})}(jQuery),+function(a){\"use strict\";function b(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\"open\")&&(c&&\"click\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\"hide.bs.dropdown\",f)),c.isDefaultPrevented()||(d.attr(\"aria-expanded\",\"false\"),e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\"bs.dropdown\");d||c.data(\"bs.dropdown\",d=new g(this)),\"string\"==typeof b&&d[b].call(c)})}var e=\".dropdown-backdrop\",f='[data-toggle=\"dropdown\"]',g=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};g.VERSION=\"3.3.7\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=b(e),g=f.hasClass(\"open\");if(c(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;e.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\".disabled, :disabled\")){var e=b(d),g=e.hasClass(\"open\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\"focus\"),d.trigger(\"click\");var h=\" li:not(.disabled):visible a\",i=e.find(\".dropdown-menu\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger(\"focus\")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(\"click.bs.dropdown.data-api\",c).on(\"click.bs.dropdown.data-api\",\".dropdown form\",function(a){a.stopPropagation()}).on(\"click.bs.dropdown.data-api\",f,g.prototype.toggle).on(\"keydown.bs.dropdown.data-api\",f,g.prototype.keydown).on(\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",g.prototype.keydown)}(jQuery),+function(a){\"use strict\";function b(b,d){return this.each(function(){var e=a(this),f=e.data(\"bs.modal\"),g=a.extend({},c.DEFAULTS,e.data(),\"object\"==typeof b&&b);f||e.data(\"bs.modal\",f=new c(this,g)),\"string\"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(\".modal-dialog\"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(\".modal-content\").load(this.options.remote,a.proxy(function(){this.$element.trigger(\"loaded.bs.modal\")},this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event(\"show.bs.modal\",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass(\"modal-open\"),this.escape(),this.resize(),this.$element.on(\"click.dismiss.bs.modal\",'[data-dismiss=\"modal\"]',a.proxy(this.hide,this)),this.$dialog.on(\"mousedown.dismiss.bs.modal\",function(){d.$element.one(\"mouseup.dismiss.bs.modal\",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass(\"fade\");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass(\"in\"),d.enforceFocus();var f=a.Event(\"shown.bs.modal\",{relatedTarget:b});e?d.$dialog.one(\"bsTransitionEnd\",function(){d.$element.trigger(\"focus\").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger(\"focus\").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(\"hide.bs.modal\"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off(\"focusin.bs.modal\"),this.$element.removeClass(\"in\").off(\"click.dismiss.bs.modal\").off(\"mouseup.dismiss.bs.modal\"),this.$dialog.off(\"mousedown.dismiss.bs.modal\"),a.support.transition&&this.$element.hasClass(\"fade\")?this.$element.one(\"bsTransitionEnd\",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger(\"focus\")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(\"keydown.dismiss.bs.modal\",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off(\"keydown.dismiss.bs.modal\")},c.prototype.resize=function(){this.isShown?a(window).on(\"resize.bs.modal\",a.proxy(this.handleUpdate,this)):a(window).off(\"resize.bs.modal\")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass(\"modal-open\"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger(\"hidden.bs.modal\")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass(\"fade\")?\"fade\":\"\";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement(\"div\")).addClass(\"modal-backdrop \"+e).appendTo(this.$body),this.$element.on(\"click.dismiss.bs.modal\",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&(\"static\"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass(\"in\"),!b)return;f?this.$backdrop.one(\"bsTransitionEnd\",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass(\"in\");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass(\"fade\")?this.$backdrop.one(\"bsTransitionEnd\",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\"\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css(\"padding-right\")||0,10);this.originalBodyPad=document.body.style.paddingRight||\"\",this.bodyIsOverflowing&&this.$body.css(\"padding-right\",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css(\"padding-right\",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement(\"div\");a.className=\"modal-scrollbar-measure\",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',function(c){var d=a(this),e=d.attr(\"href\"),f=a(d.attr(\"data-target\")||e&&e.replace(/.*(?=#[^\\s]+$)/,\"\")),g=f.data(\"bs.modal\")?\"toggle\":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is(\"a\")&&c.preventDefault(),f.one(\"show.bs.modal\",function(a){a.isDefaultPrevented()||f.one(\"hidden.bs.modal\",function(){d.is(\":visible\")&&d.trigger(\"focus\")})}),b.call(f,g,this)})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tooltip\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.tooltip\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init(\"tooltip\",a,b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:\"top\",selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusin\"==b.type?\"focus\":\"hover\"]=!0),c.tip().hasClass(\"in\")||\"in\"==c.hoverState?void(c.hoverState=\"in\"):(clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusout\"==b.type?\"focus\":\"hover\"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\"id\",g),this.$element.attr(\"aria-describedby\",g),this.options.animation&&f.addClass(\"fade\");var h=\"function\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\s?auto?\\s?/i,j=i.test(h);j&&(h=h.replace(i,\"\")||\"top\"),f.detach().css({top:0,left:0,display:\"block\"}).addClass(h).data(\"bs.\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\"bottom\"==h&&k.bottom+m>o.bottom?\"top\":\"top\"==h&&k.top-m<o.top?\"bottom\":\"right\"==h&&k.right+l>o.width?\"left\":\"left\"==h&&k.left-l<o.left?\"right\":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger(\"shown.bs.\"+e.type),e.hoverState=null,\"out\"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css(\"margin-top\"),10),h=parseInt(d.css(\"margin-left\"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass(\"in\");var i=d[0].offsetWidth,j=d[0].offsetHeight;\"top\"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?\"offsetWidth\":\"offsetHeight\";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?\"left\":\"top\",50*(1-a/b)+\"%\").css(c?\"top\":\"left\",\"\")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(\".tooltip-inner\")[this.options.html?\"html\":\"text\"](b),a.removeClass(\"fade in top bottom left right\")},c.prototype.hide=function(b){function d(){\"in\"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr(\"aria-describedby\").trigger(\"hidden.bs.\"+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event(\"hide.bs.\"+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass(\"in\"),a.support.transition&&f.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(\"title\")||\"string\"!=typeof a.attr(\"data-original-title\"))&&a.attr(\"data-original-title\",a.attr(\"title\")||\"\").attr(\"title\",\"\")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d=\"BODY\"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return\"bottom\"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:\"top\"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:\"left\"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\"data-original-title\")||(\"function\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\"bs.\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\"in\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\".\"+a.type).removeData(\"bs.\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.popover\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\"popover\",a,b)};if(!a.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");c.VERSION=\"3.3.7\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\"use strict\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})}b.VERSION=\"3.3.7\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\"offset\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\"position\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\"target\")||b.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){\nthis.activeTarget=b,this.clear();var c=this.selector+'[data-target=\"'+b+'\"],'+this.selector+'[href=\"'+b+'\"]',d=a(c).parents(\"li\").addClass(\"active\");d.parent(\".dropdown-menu\").length&&(d=d.closest(\"li.dropdown\").addClass(\"active\")),d.trigger(\"activate.bs.scrollspy\")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,\".active\").removeClass(\"active\")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on(\"load.bs.scrollspy.data-api\",function(){a('[data-spy=\"scroll\"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tab\");e||d.data(\"bs.tab\",e=new c(this)),\"string\"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest(\"ul:not(.dropdown-menu)\"),d=b.data(\"target\");if(d||(d=b.attr(\"href\"),d=d&&d.replace(/.*(?=#[^\\s]*$)/,\"\")),!b.parent(\"li\").hasClass(\"active\")){var e=c.find(\".active:last a\"),f=a.Event(\"hide.bs.tab\",{relatedTarget:b[0]}),g=a.Event(\"show.bs.tab\",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest(\"li\"),c),this.activate(h,h.parent(),function(){e.trigger({type:\"hidden.bs.tab\",relatedTarget:b[0]}),b.trigger({type:\"shown.bs.tab\",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),h?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\").length&&b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),e&&e()}var g=d.find(\"> .active\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\"fade\")||!!d.find(\"> .fade\").length);g.length&&h?g.one(\"bsTransitionEnd\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\"in\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\"show\")};a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',e).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',e)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.affix\",e=new c(this,f)),\"string\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\"3.3.7\",c.RESET=\"affix affix-top affix-bottom\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\"top\"==this.affixed)return e<c&&\"top\";if(\"bottom\"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&\"bottom\":!(e+g<=a-d)&&\"bottom\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?\"top\":null!=d&&i+j>=a-d&&\"bottom\"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\"affix\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\"object\"!=typeof d&&(f=e=d),\"function\"==typeof e&&(e=d.top(this.$element)),\"function\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\"top\",\"\");var i=\"affix\"+(h?\"-\"+h:\"\"),j=a.Event(i+\".bs.affix\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\"bottom\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\ndefine(\"bootstrap\", [\"jquery\"], function(){});\n\n","/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(a,b){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){\"use strict\";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement(\"script\");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q=\"3.2.1\",r=function(a,b){return new r.fn.init(a,b)},s=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:\"jQuery\"+(q+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return(\"number\"===b||\"string\"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||\"[object Object]\"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,\"constructor\")&&b.constructor,\"function\"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?j[k.call(a)]||\"object\":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,\"ms-\").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(s,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,\"string\"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if(\"string\"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),\"function\"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(a,b){j[\"[object \"+b+\"]\"]=b.toLowerCase()});function w(a){var b=!!a&&\"length\"in a&&a.length,c=r.type(a);return\"function\"!==c&&!r.isWindow(a)&&(\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",K=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",L=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",M=\"\\\\[\"+K+\"*(\"+L+\")(?:\"+K+\"*([*^$|!~]?=)\"+K+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+L+\"))|)\"+K+\"*\\\\]\",N=\":(\"+L+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+M+\")*)|.*)\\\\)|)\",O=new RegExp(K+\"+\",\"g\"),P=new RegExp(\"^\"+K+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+K+\"+$\",\"g\"),Q=new RegExp(\"^\"+K+\"*,\"+K+\"*\"),R=new RegExp(\"^\"+K+\"*([>+~]|\"+K+\")\"+K+\"*\"),S=new RegExp(\"=\"+K+\"*([^\\\\]'\\\"]*?)\"+K+\"*\\\\]\",\"g\"),T=new RegExp(N),U=new RegExp(\"^\"+L+\"$\"),V={ID:new RegExp(\"^#(\"+L+\")\"),CLASS:new RegExp(\"^\\\\.(\"+L+\")\"),TAG:new RegExp(\"^(\"+L+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+N),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+K+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+K+\"*(?:([+-]|)\"+K+\"*(\\\\d+)|))\"+K+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+J+\")$\",\"i\"),needsContext:new RegExp(\"^\"+K+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+K+\"*((?:-\\\\d)?\\\\d*)\"+K+\"*\\\\)|)(?=[^-]|$)\",\"i\")},W=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,$=/[+~]/,_=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+K+\"?|(\"+K+\")|.)\",\"ig\"),aa=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ca=function(a,b){return b?\"\\0\"===a?\"\\ufffd\":a.slice(0,-1)+\"\\\\\"+a.charCodeAt(a.length-1).toString(16)+\" \":\"\\\\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&(\"form\"in a||\"label\"in a)},{dir:\"parentNode\",next:\"legend\"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],\"string\"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+\" \"]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if(\"object\"!==b.nodeName.toLowerCase()){(k=b.getAttribute(\"id\"))?k=k.replace(ba,ca):b.setAttribute(\"id\",k=u),o=g(a),h=o.length;while(h--)o[h]=\"#\"+k+\" \"+sa(o[h]);r=o.join(\",\"),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute(\"id\")}}}return i(a.replace(P,\"$1\"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement(\"fieldset\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split(\"|\"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function oa(a){return function(b){return\"form\"in b?b.parentNode&&b.disabled===!1?\"label\"in b?\"label\"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:\"label\"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&\"HTML\"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener(\"unload\",da,!1):e.attachEvent&&e.attachEvent(\"onunload\",da)),c.attributes=ja(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute(\"id\")===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if(\"undefined\"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+K+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+K+\"*(?:value|\"+J+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),ja(function(a){a.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var b=n.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+K+\"*[*^$|!~]?=\"),2!==a.querySelectorAll(\":enabled\").length&&q.push(\":enabled\",\":disabled\"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(\":disabled\").length&&q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,\"*\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",N)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,\"='$1']\"),c.matchesSelector&&p&&!A[b+\" \"]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+\"\").replace(ba,ca)},ga.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||\"\").replace(_,aa),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+K+\")\"+a+\"(\"+K+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?\"!=\"===b:!b||(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(O,\" \")+\" \").indexOf(c)>-1:\"|=\"===b&&(e===c||e.slice(0,c.length+1)===c+\"-\"))}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,\"$1\"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||\"\")||ga.error(\"unsupported lang: \"+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d=\"\";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&\"parentNode\"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(P,\"$1\"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s=\"0\",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG(\"*\",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m=\"function\"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&\"ID\"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement(\"fieldset\"))}),ja(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||ka(\"type|href|height|width\",function(a,b,c){if(!c)return a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||ka(\"value\",function(a,b,c){if(!c&&\"input\"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute(\"disabled\")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[\":\"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,D=/^.[^:#\\[\\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):\"string\"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if(\"string\"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,\"string\"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,\"string\"==typeof a){if(e=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g=\"string\"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?\"string\"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,\"parentNode\")},parentsUntil:function(a,b,c){return y(a,\"parentNode\",c)},next:function(a){return K(a,\"nextSibling\")},prev:function(a){return K(a,\"previousSibling\")},nextAll:function(a){return y(a,\"nextSibling\")},prevAll:function(a){return y(a,\"previousSibling\")},nextUntil:function(a,b,c){return y(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return y(a,\"previousSibling\",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,\"iframe\")?a.contentDocument:(B(a,\"template\")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\\x20\\t\\r\\n\\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a=\"string\"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:\"\")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c=\"\",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=\"\"),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[[\"notify\",\"progress\",r.Callbacks(\"memory\"),r.Callbacks(\"memory\"),2],[\"resolve\",\"done\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),1,\"rejected\"]],d=\"pending\",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},\"catch\":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+\"With\"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError(\"Thenable self-resolution\");j=a&&(\"object\"==typeof a||\"function\"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+\"With\"](this===f?void 0:this,arguments),this},f[b[0]+\"With\"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),\"pending\"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn(\"jQuery.Deferred exception: \"+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)[\"catch\"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener(\"DOMContentLoaded\",S),\na.removeEventListener(\"load\",S),r.ready()}\"complete\"===d.readyState||\"loading\"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener(\"DOMContentLoaded\",S),a.addEventListener(\"load\",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if(\"string\"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&\"string\"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,Z=/[A-Z]/g;function $(a){return\"true\"===a||\"false\"!==a&&(\"null\"===a?null:a===+a+\"\"?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(Z,\"-$&\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks(\"once memory\").add(function(){W.remove(a,[b+\"queue\",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=W.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ba=new RegExp(\"^(?:([+-])=|)(\"+aa+\")([a-z%]*)$\",\"i\"),ca=[\"Top\",\"Right\",\"Bottom\",\"Left\"],da=function(a,b){return a=b||a,\"none\"===a.style.display||\"\"===a.style.display&&r.contains(a.ownerDocument,a)&&\"none\"===r.css(a,\"display\")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,\"\")},i=h(),j=c&&c[3]||(r.cssNumber[b]?\"\":\"px\"),k=(r.cssNumber[b]||\"px\"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||\".5\",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,\"display\"),b.parentNode.removeChild(b),\"none\"===e&&(e=\"block\"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?(\"none\"===c&&(e[f]=W.get(d,\"display\")||null,e[f]||(d.style.display=\"\")),\"\"===d.style.display&&da(d)&&(e[f]=ha(d))):\"none\"!==c&&(e[f]=\"none\",W.set(d,\"display\",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,la=/^$|\\/(?:java|ecma)script/i,ma={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c=\"undefined\"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):\"undefined\"!=typeof a.querySelectorAll?a.querySelectorAll(b||\"*\"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],\"globalEval\",!b||W.get(b[c],\"globalEval\"))}var pa=/<|&#?\\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if(\"object\"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement(\"div\")),h=(ka.exec(f)||[\"\",\"\"])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=\"\"}else m.push(b.createTextNode(f));l.textContent=\"\",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),\"script\"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||\"\")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement(\"div\")),c=d.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if(\"object\"==typeof b){\"string\"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&(\"string\"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return\"undefined\"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(\".\")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+o.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,\"handle events\")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,\"events\")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!(\"click\"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&(\"click\"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+\" \",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&B(this,\"input\"))return this.click(),!1},_default:function(a){return B(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&\"function\"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ca=/^true\\/(.*)/,Da=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Ea(a,b){return B(a,\"table\")&&B(11!==b.nodeType?b:b.firstChild,\"tr\")?r(\">tbody\",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&ja.test(a.type)?b.checked=a.checked:\"input\"!==c&&\"textarea\"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&\"string\"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,\"script\"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,\"script\"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||\"\")&&!W.access(j,\"globalEval\")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,\"\"),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,\"script\")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,\"<$1></$2>\")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,\"script\"),g.length>0&&oa(g,!i&&na(a,\"script\")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp(\"^(\"+aa+\")(?!px)[a-z%]+$\",\"i\"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText=\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",i.innerHTML=\"\",ra.appendChild(h);var b=a.getComputedStyle(i);c=\"1%\"!==b.top,g=\"2px\"===b.marginLeft,e=\"4px\"===b.width,i.style.marginRight=\"50%\",f=\"4px\"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement(\"div\"),i=d.createElement(\"div\");i.style&&(i.style.backgroundClip=\"content-box\",i.cloneNode(!0).style.backgroundClip=\"\",o.clearCloneStyle=\"content-box\"===i.style.backgroundClip,h.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],\"\"!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ta={letterSpacing:\"0\",fontWeight:\"400\"},Ua=[\"Webkit\",\"Moz\",\"ms\"],Va=d.createElement(\"div\").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||\"px\"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0;f<4;f+=2)\"margin\"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?(\"content\"===c&&(g-=r.css(a,\"padding\"+ca[f],!0,e)),\"margin\"!==c&&(g-=r.css(a,\"border\"+ca[f]+\"Width\",!0,e))):(g+=r.css(a,\"padding\"+ca[f],!0,e),\"padding\"!==c&&(g+=r.css(a,\"border\"+ca[f]+\"Width\",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g=\"border-box\"===r.css(a,\"boxSizing\",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),\"auto\"===f&&(f=a[\"offset\"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?\"border\":\"content\"),d,e)+\"px\")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,\"string\"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f=\"number\"),null!=c&&c===c&&(\"number\"===f&&(c+=e&&e[3]||(r.cssNumber[h]?\"\":\"px\")),o.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(j[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),\"normal\"===e&&b in Ta&&(e=Ta[b]),\"\"===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each([\"height\",\"width\"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,\"display\"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,\"border-box\"===r.css(a,\"boxSizing\",!1,f),f);return g&&(e=ba.exec(c))&&\"px\"!==(e[3]||\"px\")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,\"marginLeft\"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+\"px\"}),r.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?\"\":\"px\")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:\"swing\"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners[\"*\"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l=\"width\"in b||\"height\"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,\"fxshow\");c.queue||(g=r._queueHooks(a,\"fx\"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,\"fx\").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,\"display\")),k=r.css(a,\"display\"),\"none\"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,\"display\"),ia([a]))),(\"inline\"===k||\"inline-block\"===k&&null!=j)&&\"none\"===r.css(a,\"float\")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j=\"none\"===k?\"\":k)),o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?\"hidden\"in q&&(p=q.hidden):q=W.access(a,\"fxshow\",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,\"fxshow\");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{\"*\":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=[\"*\"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&\"object\"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:\"number\"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=W.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb(\"show\"),slideUp:gb(\"hide\"),slideToggle:gb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||\"fx\",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement(\"input\"),b=d.createElement(\"select\"),c=b.appendChild(d.createElement(\"option\"));a.type=\"checkbox\",o.checkOn=\"\"!==a.value,o.optSelected=c.selected,a=d.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",o.radioValue=\"t\"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return\"undefined\"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+\"\"),c):e&&\"get\"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),\nnull==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&\"radio\"===b&&B(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,\"tabindex\");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(\" \")}function qb(a){return a.getAttribute&&a.getAttribute(\"class\")||\"\"}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])d.indexOf(\" \"+f+\" \")<0&&(d+=f+\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])while(d.indexOf(\" \"+f+\" \")>-1)d=d.replace(\" \"+f+\" \",\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if(\"string\"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&\"boolean\"!==c||(b=qb(this),b&&W.set(this,\"__className__\",b),this.setAttribute&&this.setAttribute(\"class\",b||a===!1?\"\":W.get(this,\"__className__\")||\"\"))})},hasClass:function(a){var b,c,d=0;b=\" \"+a+\" \";while(c=this[d++])if(1===c.nodeType&&(\" \"+pb(qb(c))+\" \").indexOf(b)>-1)return!0;return!1}});var rb=/\\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?\"\":a+\"\"})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(rb,\"\"):null==c?\"\":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,\"value\");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g=\"select-one\"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,\"optgroup\"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each([\"radio\",\"checkbox\"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,\"type\")?b.type:b,q=l.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(\".\")>-1&&(q=p.split(\".\"),p=q.shift(),q.sort()),k=p.indexOf(\":\")<0&&\"on\"+p,b=b[r.expando]?b:new r.Event(p,\"object\"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join(\".\"),b.rnamespace=b.namespace?new RegExp(\"(^|\\\\.)\"+q.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,\"events\")||{})[b.type]&&W.get(h,\"handle\"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin=\"onfocusin\"in a,o.focusin||r.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\\?/;r.parseXML=function(b){var c;if(!b||\"string\"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,\"text/xml\")}catch(d){c=void 0}return c&&!c.getElementsByTagName(\"parsererror\").length||r.error(\"Invalid XML: \"+b),c};var wb=/\\[\\]$/,xb=/\\r?\\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+\"[\"+(\"object\"==typeof e&&null!=e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==r.type(b))d(a,b);else for(e in b)Ab(a+\"[\"+e+\"]\",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(null==c?\"\":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join(\"&\")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,\"elements\");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(\":disabled\")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,\"\\r\\n\")}}):{name:b.name,value:c.replace(xb,\"\\r\\n\")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\\/\\//,Ib={},Jb={},Kb=\"*/\".concat(\"*\"),Lb=d.createElement(\"a\");Lb.href=tb.href;function Mb(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:\"GET\",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Kb,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){\"object\"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks(\"once memory\"),u=o.statusCode||{},v={},w={},x=\"canceled\",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+\"\").replace(Hb,tb.protocol+\"//\"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||\"*\").toLowerCase().match(L)||[\"\"],null==o.crossDomain){j=d.createElement(\"a\");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+\"//\"+Lb.host!=j.protocol+\"//\"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&\"string\"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger(\"ajaxStart\"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,\"\"),o.hasContent?o.data&&o.processData&&0===(o.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(o.data=o.data.replace(Bb,\"+\")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?\"&\":\"?\")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,\"$1\"),n=(vb.test(f)?\"&\":\"?\")+\"_=\"+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader(\"If-Modified-Since\",r.lastModified[f]),r.etag[f]&&y.setRequestHeader(\"If-None-Match\",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader(\"Content-Type\",o.contentType),y.setRequestHeader(\"Accept\",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+(\"*\"!==o.dataTypes[0]?\", \"+Kb+\"; q=0.01\":\"\"):o.accepts[\"*\"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x=\"abort\",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger(\"ajaxSend\",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort(\"timeout\")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,\"No Transport\");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||\"\",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader(\"Last-Modified\"),w&&(r.lastModified[f]=w),w=y.getResponseHeader(\"etag\"),w&&(r.etag[f]=w)),204===b||\"HEAD\"===o.type?x=\"nocontent\":304===b?x=\"notmodified\":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x=\"error\",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+\"\",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?\"ajaxSuccess\":\"ajaxError\",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger(\"ajaxComplete\",[y,o]),--r.active||r.event.trigger(\"ajaxStop\")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,\"json\")},getScript:function(a,b){return r.get(a,void 0,b,\"script\")}}),r.each([\"get\",\"post\"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not(\"body\").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&\"withCredentials\"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,\"abort\"===a?h.abort():\"error\"===a?\"number\"!=typeof h.status?f(0,\"error\"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,\"text\"!==(h.responseType||\"text\")||\"string\"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c(\"error\"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c(\"abort\");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),r.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(\"<script>\").prop({charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&f(\"error\"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\\?(?=&|$)|\\?\\?/;r.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Tb.pop()||r.expando+\"_\"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?\"url\":\"string\"==typeof b.data&&0===(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ub.test(b.data)&&\"data\");if(h||\"jsonp\"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,\"$1\"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||r.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument(\"\").body;return a.innerHTML=\"<form></form><form></form>\",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if(\"string\"!=typeof a)return[];\"boolean\"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(\"\"),e=b.createElement(\"base\"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(\" \");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&r.ajax({url:a,type:e||\"GET\",dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?r(\"<div>\").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,\"position\"),l=r(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=r.css(a,\"top\"),i=r.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===r.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],\"html\")||(d=a.offset()),d={top:d.top+r.css(a[0],\"borderTopWidth\",!0),left:d.left+r.css(a[0],\"borderLeftWidth\",!0)}),{top:b.top-d.top-r.css(c,\"marginTop\",!0),left:b.left-d.left-r.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&\"static\"===r.css(a,\"position\"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=\"pageYOffset\"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each([\"top\",\"left\"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+\"px\":c})}),r.each({Height:\"height\",Width:\"width\"},function(a,b){r.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||\"boolean\"!=typeof e),h=c||(e===!0||f===!0?\"margin\":\"border\");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf(\"outer\")?b[\"inner\"+a]:b.document.documentElement[\"client\"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body[\"scroll\"+a],f[\"scroll\"+a],b.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module to get server configuration information. This module\n * fetches \"config.json\" relative  to  the   main  document.  The Prolog\n * server emits a  JSON  object  that   provides  the  location  of  all\n * explicitly  identified  HTTP  handlers.  These    are   intended  for\n * (typically) AJAX calls:\n *\n * ```\n *   $.ajax({ url: config.http.locations.swish_examples,\n *            ...\n * ```\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('config',[ \"jquery\" ],\n       function($) {\nvar KEY = \"SWISHCONFIG\";\n\n/* Configuration of various server components.  We provide\n   defaults for the case that these files are served from\n   a non-Prolog server.\n*/\n\nvar config;\n\nfunction getCachedConfig() {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    var str;\n\n    if ( (str = localStorage.getItem(KEY)) ) {\n      value = JSON.parse(str);\n      if ( value.hash == window.swish.config_hash )\n\treturn value.config;\n    }\n  }\n}\n\nfunction setCachedConfig(config) {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    localStorage.setItem(KEY, JSON.stringify(\n      { hash: window.swish.config_hash,\n        config: config\n      }));\n  }\n}\n\nif ( !config ) {\n  if ( !(config = getCachedConfig()) ) {\n    $.ajax(\"swish_config.json\",\n\t   { dataType: \"json\",\n\t     async: false,\n\t     success: function(data) {\n\t       config = data;\n\t       setCachedConfig(config);\n\t     },\n\t     error: function() {\n\t       alert(\"Failed to fetch configuration from server\");\n\t     }\n\t   });\n  }\n}\n\nreturn config;\n});\n\n\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage persistent data such as preferences.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('preferences',[\"jquery\"],\n       function($) {\n  var hasLocalStore = (typeof(Storage) !== \"undefined\");\n  var defaults = {};\n\n  var preferences = {\n    /**\n     * @returns {Boolean} indicating whether persistent storage is\n     * supported.\n     */\n    persistent: function() {\n      return hasLocalStore;\n    },\n\n    /**\n     * Store that we do not want to see info dialogue with a given\n     * identifier again.\n     * @param {String} id\n     */\n    setNotAgain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\n\tif ( data.indexOf(id) < 0 ) {\n\t  data.push(id);\n\t  localStorage.setItem(\"notagain\", JSON.stringify(data));\n\t}\n      }\n    },\n\n    /**\n     * @returns {Boolean} `true` if the user choose not to see this\n     * dialogue again\n     * @param {String} id identifier to test\n     */\n    notagain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\treturn data.indexOf(id) >= 0;\n      }\n      return false;\n    },\n\n    /**\n     * Broadcast the change of a preference.\n     */\n    broadcast: function(name, value) {\n      $(\".swish-event-receiver\").trigger(\"preference\",\n\t\t\t\t\t { name: name,\n\t\t\t\t\t   value: value\n\t\t\t\t\t });\n    },\n\n    /**\n     * Set the value of a preference and broadcast it.\n     * FIXME: we should only broadcast if the value has changed.\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the value.  Values are stored\n     * using JSON serialization.\n     */\n    setVal: function(name, value) {\n      if ( hasLocalStore ) {\n\tlocalStorage.setItem(name, JSON.stringify(value));\n      }\n      this.broadcast(name, value);\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the default value.\n     */\n    setDefault: function(name, value) {\n      defaults[name] = value;\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     */\n    getVal: function(name) {\n      if ( hasLocalStore ) {\n\tvar str;\n\n\tif ( (str = localStorage.getItem(name)) ) {\n\t  value = JSON.parse(str);\n\t  return value;\n\t}\n      }\n      return defaults[name];\n    },\n\n    /**\n     * Set a preference value for a document.\n     */\n    setDocVal: function(docid, name, value) {\n      var prefs = preferences.getVal(docid)||{};\n      prefs[name] = value;\n      preferences.setVal(docid, prefs);\n    },\n\n    /**\n     * Get a preference value for a document.\n     */\n    getDocVal: function(docid, name, def) {\n      var prefs = preferences.getVal(docid)||{};\n      return prefs[name] === undefined ? def : prefs[name];\n    }\n  }\n\n  function readNotAgain() {\n    var str = localStorage.getItem(\"notagain\") || \"[]\";\n    var notagain;\n\n    try {\n      data = JSON.parse(str);\n      if ( typeof(data) != \"object\" )\n\tdata = [];\n    } catch(err) {\n      data = [];\n    }\n\n    return data;\n  }\n\n  return preferences;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage hyper links.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('links',[\"jquery\", \"config\", \"modal\"],\n       function($, config, modal) {\n\n  var functions = {\n    /** Decode a PlDoc specification and, if valid, open the\n     * corresponding documentation.\n     * @arg {String} from The PlDoc specification.  Accepted if it\n     * is of the form `[.*:].*[/]/?\\d+`\n     * @return Boolean `true` if the string was recognised\n     */\n    PlDoc: function(from, ev) {\n      function parsePred(s) {\n\tvar pred = {};\n\tvar i;\n\n\tif ( (i=s.indexOf(\":\")) > 0 ) {\n\t  pred.module = s.substring(0,i);\n\t  s = s.slice(i+1);\n\t}\n\tif ( (i=s.indexOf(\"/\")) > 0 ) {\n\t  pred.name = s.substring(0,i);\n\t  if ( s.charAt(i+1) == '/' )\t/* name//arity is a non-terminal */\n\t    pred.arity = parseInt(s.slice(i+2))+2;\n\t  else\n\t    pred.arity = parseInt(s.slice(i+1));\n\n\t  if ( !isNaN(pred.arity) )\n\t    return pred;\n\t}\n      }\n\n      if ( from ) {\n\tvar pred = parsePred(decodeURIComponent(from));\n\n\tif ( pred ) {\n\t  $(ev.target).closest(\"#ajaxModal\").modal('hide');\n\t  $(\".swish-event-receiver\").trigger(\"pldoc\", pred);\n\t  ev.preventDefault();\n\n\t  return true;\n\t}\n      }\n\n      return false;\n    },\n\n    /**\n     * Run a link that refers to a cell. Such a link has a\n     * `data-query=name` attribute and optionally a number of\n     * `data-Var=Value` attributes. Because attributes are\n     * case-insensitive, `Var` is matched case-insensitive against\n     * variables from the query.\n     */\n    runQueryLink: function(a, ev) {\n      var nb    = a.closest(\".notebook\");\n      var qname = a.data(\"query\");\n      var cell  = nb.find('.nb-cell[name=\"'+qname+'\"]');\n\n      if ( cell ) {\n\tvar vars = $().prologEditor('variables', cell.nbCell('text'), true);\n\tvar bindings = \"\";\n\tvar options  = {};\n\tvar novars   = [];\n\n\tfunction isVar(k) {\n\t  for(var i=0; i<vars.length; i++) {\n\t    if ( vars[i].toLowerCase() == k.toLowerCase() )\n\t      return vars[i];\n\t  }\n\t  novars.push(k);\n\t}\n\n\t$.each(a.data(), function(k, v) {\n\t  var vr;\n\n\t  if ( k !== 'query' && (vr=isVar(k)) ) {\n\t    if ( bindings != \"\" )\n\t      bindings += \", \";\n\t    bindings += vr + \" = (\" + v + \")\";\n\t  }\n\t});\n\n\tif ( novars.length > 0 ) {\n\t  modal.feedback({\n\t    owner:    nb,\n\t    type:     \"warning\",\n\t    duration: 3000,\n\t    html:     \"The variables <b>\" + novars.join(\", \") + \"</b> do not appear in \" +\n\t\t      \"query <b>\" + qname + \"</b>\"\n\t  });\n\t}\n\n\tif ( bindings != \"\" )\n          options.bindings = bindings;\n\n\tcell.nbCell('run', options);\n      }\n    },\n\n    /**\n     * Follow a link from a markdown or HTML cell. This recognises links\n     * to internal SWISH objects and handles them using AJAX calls\n     * rather then opening a new page.  If the link is not recognised,\n     * it is opened on a new tab/page.  Recognised:\n     *\n     *  - class=\"store\" links open a gitty store element in a tab\n     *  - class=\"file\" links opens a file in a tab\n     *  - PlDoc links creates a modal dialog holding the documentation\n     *  - data-query=<query-name> runs a query.  data-<Var>=<Value>\n     *    binds variables.\n     *\n     * @param {Event} ev is the event to follow form\n     */\n    followLink: function(ev) {\n      var a = $(ev.target).closest(\"a\");\n      var done = false;\n\n      function accept() {\n\tdone = true;\n\tev.preventDefault();\n\n\t$(ev.target).closest(\"#ajaxModal\").modal('hide');\n      }\n\n      if ( a.attr(\"href\") ) {\n\tvar swishStore    = config.http.locations.swish + \"p/\";\n\tvar swishExamples = config.http.locations.swish + \"example/\";\n\tvar href\t  = a.attr(\"href\");\n\tvar modal;\n\n\tif ( href.startsWith(swishStore) && !href.match(/#/) ) {\n\t  accept();\n\t  file = href.slice(swishStore.length);\n\t  $(ev.target).closest(\".swish\").swish('playFile', file);\n\t} else if ( a.hasClass(\"store\") ) {\n\t  accept();\n\t  modal.alert(\"File does not appear to come from gitty store?\");\n\t} else if ( a.hasClass(\"file\") ||\n\t\t    (href.startsWith(swishExamples) && !href.match(/#/)) ) {\n\t  accept();\n\t  $(ev.target).closest(\".swish\")\n\t\t      .swish('playURL', {url: href});\n\t} else if ( a.hasClass(\"builtin\") && href.match(/predicate=/) ) {\n\t  done = functions.PlDoc(href.split(\"predicate=\").pop(), ev);\n\t} else if ( href.match(/object=/) ) {\n\t  done = functions.PlDoc(href.split(\"object=\").pop(), ev);\n\t} else if ( (modal=$(ev.target).closest(\"#ajaxModal\")).length == 1 &&\n\t\t    href.match(/#/) )\n\t{ var id = href.split(\"#\").pop();\n\t  var target;\n\n\t  if ( (target=modal.find(\"#\"+id)).length == 1 )\n\t  { done = true;\n\t    ev.preventDefault();\n\t    modal.animate({scrollTop: target.position().top}, 2000);\n\t  }\n\t}\n\n\tif ( !done ) {\n\t  ev.preventDefault();\n\t  window.open(href, '_blank');\n\t}\n      } else if ( a.data(\"query\") ) {\n\tfunctions.runQueryLink(a, ev);\n      }\n    }\n  }\n\n  return functions;\n});\n\n","// Laconic simplifies the generation of DOM content.\n(function(context) {\n\n  // properly-cased attribute names for IE setAttribute support\n  var attributeMap = {\n    'acceptcharset'     : 'acceptCharset',\n    'accesskey'         : 'accessKey',\n    'allowtransparency' : 'allowTransparency',\n    'bgcolor'           : 'bgColor',\n    'cellpadding'       : 'cellPadding',\n    'cellspacing'       : 'cellSpacing',\n    'class'             : 'className',\n    'classname'         : 'className',\n    'colspan'           : 'colSpan',\n    'csstext'           : 'style',\n    'defaultchecked'    : 'defaultChecked',\n    'defaultselected'   : 'defaultSelected',\n    'defaultvalue'      : 'defaultValue',\n    'for'               : 'htmlFor',\n    'frameborder'       : 'frameBorder',\n    'hspace'            : 'hSpace',\n    'htmlfor'           : 'htmlFor',\n    'longdesc'          : 'longDesc',\n    'maxlength'         : 'maxLength',\n    'marginwidth'       : 'marginWidth',\n    'marginheight'      : 'marginHeight',\n    'noresize'          : 'noResize',\n    'noshade'           : 'noShade',\n    'readonly'          : 'readOnly',\n    'rowspan'           : 'rowSpan',\n    'tabindex'          : 'tabIndex',\n    'valign'            : 'vAlign',\n    'vspace'            : 'vSpace'\n  };\n\n  // The laconic function serves as a generic method for generating\n  // DOM content, and also as a placeholder for helper functions.\n  //\n  // The first parameter MUST be a string specifying the element's \n  // tag name.  \n  // \n  // An optional object of element attributs may follow directly \n  // after the tag name.  \n  // \n  // Additional arguments will be considered children of the new \n  // element and may consist of elements, strings, or numbers.\n  // \n  // for example:\n  // laconic('div', {'class' : 'foo'}, 'bar');\n  function laconic() {\n\n    // create a new element of the requested type\n    var el = document.createElement(arguments[0]);\n    \n    // walk through the rest of the arguments\n    for(var i=1; i<arguments.length; i++) {\n      var arg = arguments[i];\n      if(arg === null || arg === undefined) continue;\n\n      // if the argument is a dom node, we simply append it\n      if(arg.nodeType === 1) {\n        el.appendChild(arg); \n      }\n\n      // if the argument is a string or a number, we append it as\n      // a new text node\n      else if(\n          (!!(arg === '' || (arg && arg.charCodeAt && arg.substr))) ||\n          (!!(arg === 0  || (arg && arg.toExponential && arg.toFixed)))) {\n\n        el.appendChild(document.createTextNode(arg));\n      }\n\n      // if the argument is a plain-old object, and we're processing the first \n      // argument, then we apply the object's values as element attributes\n      else if(i === 1 && typeof(arg) === 'object') {\n        for(var key in arg) {\n          if(arg.hasOwnProperty(key)) {\n            var value = arg[key];\n            if(value !== null && value !== undefined) {\n              key = key.toLowerCase();\n              key = attributeMap[key] || key;\n\n              // if the key represents an event (onclick, onchange, etc)\n              // we'll set the href to '#' if none is given, and we'll apply\n              // the attribute directly to the element for IE7 support.\n              var isEvent = key.charAt(0) === 'o' && key.charAt(1) === 'n';\n              if(isEvent) {\n                if(arg.href === undefined && key === 'onclick') {\n                  el.setAttribute('href', '#');\n                }\n                el[key] = value;\n              }\n\n              // if we're setting the style attribute, we may need to \n              // use the cssText property\n              else if(key === 'style' && el.style.setAttribute) {\n                el.style.setAttribute('cssText', value);\n              }\n\n              // if we're setting an attribute that's not properly supported \n              // by IE7's setAttribute implementation, then we apply the \n              // attribute directly to the element\n              else if(key === 'className' || key === 'htmlFor') {\n                el[key] = value;\n              }\n\n              // otherwise, we use the standard setAttribute\n              else {\n                el.setAttribute(key, value);\n              }\n            }\n          }\n        }\n      }\n\n      // if the argument is an array, we append each element\n      else if(Object.prototype.toString.call(arg) === '[object Array]') {\n        for(var j=0; j<arg.length; j++) {\n          var child = arg[j];\n          if(child.nodeType === 1) {\n            el.appendChild(child);\n          }\n        }\n      }\n    }\n\n    // Add an appendTo method to the newly created element, which will allow\n    // the DOM insertion to be method chained to the creation.  For example:\n    // $el.div('foo').appendTo(document.body);\n    el.appendTo = function(parentNode) {\n      if(parentNode.nodeType === 1 && this.nodeType === 1) {\n        parentNode.appendChild(this);\n      }\n      return this;\n    };\n    \n    return el;\n  }\n\n  // registers a new 'tag' that can be used to automate\n  // the creation of a known element hierarchy\n  laconic.registerElement= function(name, renderer) {\n    if(!laconic[name]) {\n      laconic[name] = function() {\n        var el = laconic('div', {'class' : name});\n        renderer.apply(el, Array.prototype.slice.call(arguments));\n        return el;\n      };\n    }\n  };\n\n  // html 4 tags \n  var deprecatedTags = ['acronym', 'applet', 'basefont', 'big', 'center', 'dir',\n    'font', 'frame', 'frameset', 'noframes', 'strike', 'tt', 'u', 'xmp'];\n\n  // html 5 tags\n  var tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b',\n    'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption',\n    'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del',\n    'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset',\n    'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5',\n    'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img',\n    'input', 'ins', 'keygen', 'kbd', 'label', 'legend', 'li', 'link', 'map',\n    'mark', 'menu', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol',\n    'optgroup', 'option', 'output', 'p', 'picture', 'param', 'pre', 'progress', \n    'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', \n    'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', \n    'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n    'tr', 'ul', 'var', 'video', 'wbr'].concat(deprecatedTags);\n\n  // add our tag methods to the laconic object \n  var makeApply = function(tagName) {\n    return function() {\n      return laconic.apply(this, \n        [tagName].concat(Array.prototype.slice.call(arguments)));\n    };\n  };\n\n  for(var i=0; i<tags.length; i++) {\n    laconic[tags[i]] = makeApply(tags[i]);\n  }\n\n  // If we're in a CommonJS environment, we export our laconic methods\n  if(typeof module !== 'undefined' && module.exports) {\n    module.exports = laconic;\n  } \n\n  // otherwise, we attach them to the top level $.el namespace\n  else {\n    var dollar = context.$ || {};\n    dollar.el = laconic;\n    context.$ = dollar;\n  }\n}(this));\n\ndefine(\"laconic\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Show modal windows\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('modal',[ \"jquery\", \"config\", \"preferences\", \"links\", \"form\",\n\t \"laconic\", \"bootstrap\" ],\n       function($, config, preferences, links, form) {\n\n/* NOTE: form dependency is circular.  Form is initialized later. */\n\n(function($) {\n  var pluginName = 'swishModal';\n\n  /** @lends $.fn.modal */\n  var methods = {\n    /**\n     * Initialize the widget and listen for \"help\" events.\n     * @param {Object} options currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.on(\"help\", function(ev, data) {\n\t  elem.swishModal('showHelp', data);\n\t});\n\telem.on(\"pldoc\", function(ev, data) {\n\t  elem.swishModal('showPlDoc', data);\n\t});\n\telem.on(\"form\", function(ev, data) {\n\t  elem.swishModal('showForm', data);\n\t});\n\telem.on(\"dialog\", function(ev, data) {\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"error\", function(ev, data) { /* still needed? */\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"alert\", function(ev, str) {\n\t  var icon = \"<span class='glyphicon glyphicon-warning-sign'></span>\";\n\t  elem.swishModal('show', {title: icon, body:str});\n\t});\n\telem.on(\"ajaxError\", function(ev, jqXHR) {\n\t  elem.swishModal('showAjaxError', jqXHR);\n\t});\n\telem.on(\"feedback\", function(ev, options) {\n\t  elem.swishModal('feedback', options);\n\t});\n\telem.on(\"show\", function(ev, options) {\n\t  elem.swishModal('show', options);\n\t});\n\telem.on(\"server_form\", function(ev, options) {\n\t  elem.swishModal('server_form', options);\n\t});\n      });\n    },\n\n    /**\n     * Show a help file.  The help file is a normal HTML document.  The\n     * `<title>` element is used for the title, while the `<body>`\n     * carries the content of the help file.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showHelp: function(options) {\n      var that = this;\n\n      if ( options.notagain && preferences.notagain(options.notagain) )\n\treturn;\n\n      $.ajax({ url: config.http.locations.help + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"title\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /**\n     * Show a form.  The form is an HTML document.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showForm: function(options) {\n      var that = this;\n\n      $.ajax({ url: config.http.locations.form + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"legend\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /** Show PlDoc manual page\n     * @param {Object} options\n     * @param {String} options.name is the name of the predicate to show\n     * @param {String} options.arity arity of the predicate\n     * @param {String} [options.module] module of the predicate\n     */\n    showPlDoc: function(options) {\n      function docURL(options) {\n\tvar term = \"(\"+options.name+\")/\"+options.arity;\n\tif ( options.module )\t\t\t/* FIXME: must be valid Prolog term */\n\t  term = options.module+\":\"+term;\n\treturn   config.http.locations.pldoc_doc_for\n\t       + \"?header=false&object=\"\n\t       + encodeURIComponent(term);\n      }\n\n      function docBody(content, url) {\n\tcontent.parents(\"div.modal-dialog\").addClass(\"swish-embedded-manual\");\n\treturn \"<iframe class='swish-embedded-manual' \" +\n\t\t       \"onload='javascript:resizeIframe(this);' \" +\n                       \"src='\"+url+\"'>\" +\n\t       \"</iframe>\";\n      }\n\n      var data = { title: \"SWI-Prolog manual\",\n                   body:  function() {\n\t\t     return docBody(this, docURL(options))\n\t\t   }\n                 };\n\n      return this.swishModal('show', data);\n    },\n\n    /**\n     * Show a modal dialog.\n     * @param {Object} options\n     * @param {String} options.title HTML rendered as title\n     * @param {String|function} options.body  If this is a string the\n     * content is set using `$.html()`, else the function is called,\n     * where `this` refers to the jQuery content element and the\n     * function result is added to the content using `$.append()`.\n     * @param {String} options.notagain Identifier to stop this dialog\n     * showing\n     * @param {function} [options.onclose] If present, call this\n     * function if the modal window is closed.\n     */\n    show: function(options) {\n      var content = $.el.div({class:\"modal-body\"});\n      var title   = $.el.h2();\n      var md      = $.el.div({class:\"modal-content\"},\n\t\t\t     $.el.div({class:\"modal-header\"},\n\t\t\t\t      notAgain(options),\n\t\t\t\t      closeButton(),\n\t\t\t\t      title),\n\t\t\t     content);\n      var modalel = $.el.div({class:\"modal fade\", id:\"ajaxModal\",\n\t\t\t      tabindex:-1, role:\"dialog\"\n\t\t\t     },\n\t\t\t     $.el.div({class:\"modal-dialog\"},\n\t\t\t\t      md));\n      if ( options.notagain && preferences.persistent() ) {\n\t$(md).append($.el.div(\n\t  {class:\"modal-footer\"},\n\t  notAgain(options)));\n      }\n      content = $(content);\n      if ( typeof(options.body) == \"function\" ) {\n\tvar c = options.body.call(content);\n\tif ( c )\n\t  content.append(c);\n      } else {\n\tcontent.html(options.body);\n      }\n      $(title).html(options.title);\n      $(modalel).modal({show: true})\n\t\t.on(\"click\", \"a\", links.followLink)\n\t        .on(\"shown.bs.modal\", initTagsManagers)\n\t        .on(\"hidden.bs.modal\", function() {\n\t\t  if ( options.onclose )\n\t\t    options.onclose();\n\t\t  saveNotagain($(this));\n\t\t  $(this).remove();\n\t\t});\n\n      return this\n    },\n\n    /**\n     * Show a server-generated form and act on the buttons.\n     * @arg {Object} options\n     * @arg {String} options.url is the URL that generates the form\n     * content\n     * @arg {String} options.title sets the title of the form.\n     * @arg {Function} options.onreply is called after the form has\n     * been submitted.  `this` points at the submitting button and\n     * the first argument contains the server reply.\n     */\n\n    server_form: function(options) {\n      var modalel = $(this);\n\n      if ( form === undefined )\t\t\t/* circular dependency */\n\tform = require(\"form\");\n\n      return this.swishModal('show', {\n\ttitle: options.title,\n\tbody: function() {\n\t  elem = $(this);\n\t  $.ajax({ url: options.url,\n\t\t   data: options.data,\n\t\t   success: function(data) {\n\t\t     elem.append(data);\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modalel.swishModal('showAjaxError', jqXHDR);\n\t\t   }\n\t         });\n\n\t  elem.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var formel = $(ev.target).closest(\"form\");\n\t    var data   = form.serializeAsObject(formel, true);\n\t    var button = $(ev.target).closest(\"button\");\n\n\t    if ( button.data(\"form_data\") == false ) {\n\t      $.ajax({ url: button.data(\"action\"),\n\t               success: function(obj) {\n\t\t\t button.closest(\".modal\").modal('hide');\n\t\t\t if ( options.onreply )\n\t\t\t   options.onreply.call(button[0], obj);\n\t\t\t ev.preventDefault();\n\t\t\t return false;\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    } else {\n\t      $.ajax({ url: button.data(\"action\"),\n\t\t       data: JSON.stringify(data),\n\t\t       dataType: \"json\",\n\t\t       contentType: \"application/json\",\n\t\t       type: \"POST\",\n\t\t       success: function(obj) {\n\t\t\t if ( obj.status == \"success\" ) {\n\t\t\t   button.closest(\".modal\").modal('hide');\n\t\t\t   if ( options.onreply )\n\t\t\t     options.onreply.call(button[0], obj);\n\t\t\t   ev.preventDefault();\n\t\t\t   return false;\n\t\t\t } else if ( obj.status == \"error\" ) {\n\t\t\t   form.formError(formel, obj.error);\n\t\t\t } else {\n\t\t\t   alert(\"Updated failed: \" +\n\t\t\t\t JSON.serializeAsObject(obj));\n\t\t\t }\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    }\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Display information about an ajax error\n     */\n    showAjaxError: function(jqXHR) {\n      var dom = $.el.div();\n\n      $(dom).html(jqXHR.responseText);\n      var h1 = $(dom).find(\"h1\");\n      var title = h1.text() || \"Server error\";\n      h1.remove();\n\n      var data = { title: title,\n\t\t   body: dom\n\t\t };\n\n      this.swishModal('show', data);\n    },\n\n    /**\n     * Display briefly a feedback message\n     * @param {Object} options\n     * @param {String} options.html defines the HTML content that is\n     * rendered.\n     * @param {Number} [options.duration=1500] number of milliseconds\n     * that the message is visible.\n     * @param {Object} [options.owner=$(\"body\")] is the DOM element to\n     * which the feedback window is added.\n     */\n    feedback: function(options) {\n      var win = $.el.div({class:\"feedback \"+options.type||\"\"});\n      $(win).html(options.html);\n\n      $(options.owner||\"body\").append(win);\n      setTimeout(function() {\n\t$(win).hide(400, function() {\n\t  $(win).remove();\n\t});\n      }, options.duration||1500);\n      return this;\n    }\n  }; // methods\n\n  function saveNotagain(elem) {\n    if ( !elem.hasClass(\"modal\") )\n      elem = elem.closest(\".modal\");\n\n    elem.find(\"[data-notagain]\")\n\t.each(function() {\n      if ( $(this).prop(\"checked\") ) {\n\tpreferences.setNotAgain($(this).attr(\"data-notagain\"));\n\treturn false;\n      }\n    });\n  }\n\n  function closeButton() {\n    var button = $.el.button({ type:\"button\", class:\"close\",\n\t\t\t       \"data-dismiss\":\"modal\"\n                             });\n    $(button)\n\t.html(\"&times;\")\n\t.on(\"click\", function(ev) {\n\t  ev.preventDefault();\n\t  saveNotagain($(ev.target));\n\t});\n\n    return button;\n  }\n\n  function notAgain(options) {\n    if ( options.notagain && preferences.persistent() ) {\n      return $.el.label($.el.input({ type:\"checkbox\",\n\t\t\t\t     'data-notagain':options.notagain,\n\t\t\t\t     name:\"dismiss\"\n\t\t\t\t   }),\n\t\t\t\" Don't show again!\");\n    } else {\n      return \"\";\n    }\n  }\n\n  /**\n   * Tags managers must be initialised after the DOM is complete.\n   * This cooperates with `tagInput()` from `form.js`\n   */\n  function initTagsManagers() {\n    var set = $(this).find(\".tm-input\");\n\n    set.each(function() {\n      var elem = $(this);\n      var tags = elem.data(\"prefilled\");\n      var options = {};\n\n      if ( tags ) options.prefilled = tags;\n\n      elem.tagsManager(options);\n    });\n  }\n\n  /**\n   * See http://stackoverflow.com/questions/9975810/make-iframe-automatically-adjust-height-according-to-the-contents-without-using\n   */\n  window.resizeIframe = function(iframe) {\n    iframe.style.height = 0;\n    iframe.style.height = iframe.contentWindow.document.body.scrollHeight+20\n                          + 'px';\n  }\n\n  /**\n   * This class is a small layer around bootstrap $.modal that isolates\n   * us from bootstrap and provides most of the intermediate divs\n   * needed to create a nice modal window.  In addition, it listens to\n   * `\"help\"` events.\n   *\n   * @class swishModal\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swishModal = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  var ntfid = 1;\n\n  return {\n    ajaxError: function(jqXHR) {\n      $(\".swish-event-receiver\").trigger(\"ajaxError\", jqXHR);\n    },\n    feedback: function(options) {\n      $(\".swish-event-receiver\").trigger(\"feedback\", options);\n    },\n    alert: function(options) {\n      $(\".swish-event-receiver\").trigger(\"alert\", options);\n    },\n    help: function(options) {\n      $(\".swish-event-receiver\").trigger(\"help\", options);\n    },\n    show: function(options) {\n      $(\".swish-event-receiver\").trigger(\"show\", options);\n    },\n    server_form: function(options) {\n      $(\".swish-event-receiver\").trigger(\"server_form\", options);\n    },\n\n    /**\n     * Provide a brief notification for an element, typically an\n     * icon or similar object.\n     *\n     * @param {Object} options\n     * @param {String} options.html provides the inner html of the message.\n     * @param {Number} [options.fadeIn=400] provide the fade in time.\n     * @param {Number} [options.fadeOut=400] provide the fade out time.\n     * @param {Number} [options.time=5000] provide the show time.  The\n     * value `0` prevents a timeout.\n     */\n    notify: function(elem, options) {\n      var id = \"ntf-\"+(options.wsid||ntfid++);\n\n      var div  = $.el.div({ class:\"notification notify-arrow\",\n\t\t\t    id:id\n\t\t\t  });\n      var epos = elem.offset();\n\n      $(\"body\").append(div);\n      if ( options.html )\n\t$(div).html(options.html);\n      else if ( options.dom )\n\t$(div).append(options.dom);\n\n      $(div).css({ left: epos.left+elem.width()-$(div).outerWidth()+15,\n\t\t   top:  epos.top+elem.height()+12\n\t\t })\n\t    .on(\"click\", function(){$(div).remove();})\n\t    .show(options.fadeIn||400);\n\n      if ( options.time !== 0 ) {\n\tvar time = options.time;\n\n\tif ( !time )\n\t  time = elem.hasClass(\"myself\") ? 1000 : 5000;\n\n\tsetTimeout(function() {\n\t  $(div).hide(options.fadeOut||400, function() {\n\t    $(\"#\"+id).remove();\n\t    if ( options.onremove )\n\t      options.onremove(options);\n\t    elem.chat('unnotify', options.wsid);\n\t  });\n\t}, time);\n      }\n    }\n  };\n});\n\n\n","/* ===================================================\n * tagmanager.js v3.0.1\n * http://welldonethings.com/tags/manager\n * ===================================================\n * Copyright 2012 Max Favilli\n *\n * Licensed under the Mozilla Public License, Version 2.0 You may not use this work except in compliance with the License.\n *\n * http://www.mozilla.org/MPL/2.0/\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n(function($) {\n\n    \"use strict\";\n\n    var defaults = {\n        prefilled: null,\n        CapitalizeFirstLetter: false,\n        preventSubmitOnEnter: true,     // deprecated\n        isClearInputOnEsc: true,        // deprecated\n        externalTagId: false,\n        prefillIdFieldName: 'Id',\n        prefillValueFieldName: 'Value',\n        AjaxPush: null,\n        AjaxPushAllTags: null,\n        AjaxPushParameters: null,\n        delimiters: [9, 13, 44],        // tab, enter, comma\n        backspace: [8],\n        maxTags: 0,\n        hiddenTagListName: null,        // deprecated\n        hiddenTagListId: null,          // deprecated\n        replace: true,\n        output: null,\n        deleteTagsOnBackspace: true,    // deprecated\n        tagsContainer: null,\n        tagCloseIcon: 'x',\n        tagClass: '',\n        validator: null,\n        onlyTagList: false,\n        tagList: null,\n        fillInputOnTagRemove: false\n    },\n\n    publicMethods = {\n        pushTag : function (tag, ignoreEvents, externalTagId) {\n            var $self = $(this), opts = $self.data('opts'), alreadyInList, tlisLowerCase, max, tagId,\n            tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx, newTagId, newTagRemoveId, escaped,\n            html, $el, lastTagId, lastTagObj;\n\n            tag = privateMethods.trimTag(tag, opts.delimiterChars);\n\n            if (!tag || tag.length <= 0) { return; }\n\n            // check if restricted only to the tagList suggestions\n            if (opts.onlyTagList && undefined !== opts.tagList ){\n\n                //if the list has been updated by look pushed tag in the tagList. if not found return\n                if (opts.tagList){\n                    var $tagList = opts.tagList;\n\n                    // change each array item to lower case\n                    $.each($tagList, function(index, item) {\n                        $tagList[index] = item.toLowerCase();\n                    });\n                    var suggestion = $.inArray(tag.toLowerCase(), $tagList);\n\n                    if ( -1 === suggestion ) {\n                        //console.log(\"tag:\" + tag + \" not in tagList, not adding it\");\n                        return;\n                    } \n                }\n\n            }\n\n            if (opts.CapitalizeFirstLetter && tag.length > 1) {\n                tag = tag.charAt(0).toUpperCase() + tag.slice(1).toLowerCase();\n            }\n\n            // call the validator (if any) and do not let the tag pass if invalid\n            if (opts.validator && !opts.validator(tag)) {\n                $self.trigger('tm:invalid', tag)\n                return;\n            }\n\n            // dont accept new tags beyond the defined maximum\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) { return; }\n\n            alreadyInList = false;\n            //use jQuery.map to make this work in IE8 (pure JS map is JS 1.6 but IE8 only supports JS 1.5)\n            tlisLowerCase = jQuery.map(tlis, function(elem) {\n                return elem.toLowerCase();\n            });\n\n            idx = $.inArray(tag.toLowerCase(), tlisLowerCase);\n\n            if (-1 !== idx) {\n                // console.log(\"tag:\" + tag + \" !!already in list!!\");\n                alreadyInList = true;\n            }\n\n            if (alreadyInList) {\n                $self.trigger('tm:duplicated', tag);\n                if (opts.blinkClass) {\n                    for (var i = 0; i < 6; ++i) {\n                        $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).queue(function(next) {\n                            $(this).toggleClass(opts.blinkClass);\n                            next();\n                        }).delay(100);\n                    }\n                } else {\n                    $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).stop()\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100);\n                }\n            } else {\n                if (opts.externalTagId === true) {\n                    if (externalTagId === undefined) {\n                        $.error('externalTagId is not passed for tag -' + tag);\n                    }\n                    tagId = externalTagId;\n                } else {\n                    max = Math.max.apply(null, tlid);\n                    max = max === -Infinity ? 0 : max;\n\n                    tagId = ++max;\n                }\n                if (!ignoreEvents) { $self.trigger('tm:pushing', [tag, tagId]); }\n                tlis.push(tag);\n                tlid.push(tagId);\n\n                if (!ignoreEvents)\n                    if (opts.AjaxPush !== null && opts.AjaxPushAllTags == null) {\n                        if ($.inArray(tag, opts.prefilled) === -1) {\n                            $.post(opts.AjaxPush, $.extend({tag: tag}, opts.AjaxPushParameters));\n                        }\n                    }\n\n                // console.log(\"tagList: \" + tlis);\n\n                newTagId = $self.data(\"tm_rndid\") + '_' + tagId;\n                newTagRemoveId = $self.data(\"tm_rndid\") + '_Remover_' + tagId;\n                escaped = $(\"<span/>\").text(tag).html();\n\n                html = '<span class=\"' + privateMethods.tagClasses.call($self) + '\" id=\"' + newTagId + '\">';\n                html+= '<span>' + escaped + '</span>';\n                html+= '<a href=\"#\" class=\"tm-tag-remove\" id=\"' + newTagRemoveId + '\" TagIdToRemove=\"' + tagId + '\">';\n                html+= opts.tagCloseIcon + '</a></span> ';\n                $el = $(html);\n\n                if (opts.tagsContainer !== null) {\n                    $(opts.tagsContainer).append($el);\n                } else {\n                    if (tlid.length > 1) {\n                        lastTagObj = $self.siblings(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[tlid.length - 2]);\n                        lastTagObj.after($el);\n                    } else {\n                        $self.before($el);\n                    }\n                }\n\n                $el.find(\"#\" + newTagRemoveId).on(\"click\", $self, function(e) {\n                    e.preventDefault();\n                    var TagIdToRemove = parseInt($(this).attr(\"TagIdToRemove\"));\n                    privateMethods.spliceTag.call($self, TagIdToRemove, e.data);\n                });\n\n                privateMethods.refreshHiddenTagList.call($self);\n\n                if (!ignoreEvents) { $self.trigger('tm:pushed', [tag, tagId]); }\n\n                privateMethods.showOrHide.call($self);\n                //if (tagManagerOptions.maxTags > 0 && tlis.length >= tagManagerOptions.maxTags) {\n                //  obj.hide();\n                //}\n            }\n            $self.val(\"\");\n        },\n\n        popTag : function () {\n            var $self = $(this), tagId, tagBeingRemoved,\n            tlis = $self.data(\"tlis\"),\n            tlid = $self.data(\"tlid\");\n\n            if (tlid.length > 0) {\n              tagId = tlid.pop();\n\n              tagBeingRemoved = tlis[tlis.length - 1];\n              $self.trigger('tm:popping', [tagBeingRemoved, tagId]);\n              tlis.pop();\n\n              // console.log(\"TagIdToRemove: \" + tagId);\n              $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n              privateMethods.refreshHiddenTagList.call($self);\n              $self.trigger('tm:popped', [tagBeingRemoved, tagId]);\n              // console.log(tlis);\n            }\n        },\n\n        empty : function() {\n            var $self = $(this), tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), tagId;\n\n            while (tlid.length > 0) {\n                tagId = tlid.pop();\n                tlis.pop();\n                // console.log(\"TagIdToRemove: \" + tagId);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                privateMethods.refreshHiddenTagList.call($self);\n                // console.log(tlis);\n            }\n            $self.trigger('tm:emptied', null);\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        tags : function() {\n            var $self = this, tlis = $self.data(\"tlis\");\n            return tlis;\n        }\n    },\n\n    privateMethods = {\n        showOrHide : function () {\n            var $self = this, opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n\n            if (opts.maxTags > 0 && tlis.length < opts.maxTags) {\n                $self.show();\n                $self.trigger('tm:show');\n            }\n\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) {\n                $self.hide();\n                $self.trigger('tm:hide');\n            }\n        },\n\n        tagClasses : function () {\n            var $self = $(this), opts = $self.data('opts'), tagBaseClass = opts.tagBaseClass,\n            inputBaseClass = opts.inputBaseClass, cl;\n            // 1) default class (tm-tag)\n            cl = tagBaseClass;\n            // 2) interpolate from input class: tm-input-xxx --> tm-tag-xxx\n            if ($self.attr('class')) {\n                $.each($self.attr('class').split(' '), function (index, value) {\n                    if (value.indexOf(inputBaseClass + '-') !== -1) {\n                        cl += ' ' + tagBaseClass + value.substring(inputBaseClass.length);\n                    }\n                });\n            }\n            // 3) tags from tagClass option\n            cl += (opts.tagClass ? ' ' + opts.tagClass : '');\n            return cl;\n        },\n\n        trimTag : function (tag, delimiterChars) {\n            var i;\n            tag = $.trim(tag);\n            // truncate at the first delimiter char\n            i = 0;\n            for (i; i < tag.length; i++) {\n                if ($.inArray(tag.charCodeAt(i), delimiterChars) !== -1) { break; }\n            }\n            return tag.substring(0, i);\n        },\n\n        refreshHiddenTagList : function () {\n            var $self = $(this), tlis = $self.data(\"tlis\"), lhiddenTagList = $self.data(\"lhiddenTagList\");\n\n            if (lhiddenTagList) {\n                $(lhiddenTagList).val(tlis.join($self.data('opts').baseDelimiter)).change();\n            }\n\n            $self.trigger('tm:refresh', tlis.join($self.data('opts').baseDelimiter));\n        },\n\n        killEvent : function (e) {\n            e.cancelBubble = true;\n            e.returnValue = false;\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        keyInArray : function (e, ary) {\n            return $.inArray(e.which, ary) !== -1;\n        },\n\n        applyDelimiter : function (e) {\n            var $self = $(this);\n            publicMethods.pushTag.call($self,$(this).val());\n            e.preventDefault();\n        },\n\n        prefill: function (pta) {\n            var $self = $(this);\n            var opts = $self.data('opts')\n            $.each(pta, function (key, val) {\n                if (opts.externalTagId === true) {\n                    publicMethods.pushTag.call($self, val[opts.prefillValueFieldName], true, val[opts.prefillIdFieldName]);\n                } else {\n                    publicMethods.pushTag.call($self, val, true);\n                }\n            });\n        },\n\n        pushAllTags : function (e, tag) {\n            var $self = $(this), opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n            if (opts.AjaxPushAllTags) {\n                if (e.type !== 'tm:pushed' || $.inArray(tag, opts.prefilled) === -1) {\n                    $.post(opts.AjaxPush, $.extend({ tags: tlis.join(opts.baseDelimiter) }, opts.AjaxPushParameters));\n                }\n            }\n        },\n\n        spliceTag : function (tagId) {\n            var $self = this, tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx = $.inArray(tagId, tlid),\n            tagBeingRemoved;\n\n            // console.log(\"TagIdToRemove: \" + tagId);\n            // console.log(\"position: \" + idx);\n\n            if (-1 !== idx) {\n                tagBeingRemoved = tlis[idx];\n                $self.trigger('tm:splicing', [tagBeingRemoved, tagId]);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                tlis.splice(idx, 1);\n                tlid.splice(idx, 1);\n                privateMethods.refreshHiddenTagList.call($self);\n                $self.trigger('tm:spliced', [tagBeingRemoved, tagId]);\n                // console.log(tlis);\n            }\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        init : function (options) {\n            var opts = $.extend({}, defaults, options), delimiters, keyNums;\n\n            opts.hiddenTagListName = (opts.hiddenTagListName === null)\n                ? 'hidden-' + this.attr('name')\n                : opts.hiddenTagListName;\n\n            delimiters = opts.delimeters || opts.delimiters; // 'delimeter' is deprecated\n            keyNums = [9, 13, 17, 18, 19, 37, 38, 39, 40]; // delimiter values to be handled as key codes\n            opts.delimiterChars = [];\n            opts.delimiterKeys = [];\n\n            $.each(delimiters, function (i, v) {\n                if ($.inArray(v, keyNums) !== -1) {\n                    opts.delimiterKeys.push(v);\n                } else {\n                    opts.delimiterChars.push(v);\n                }\n            });\n\n            opts.baseDelimiter = String.fromCharCode(opts.delimiterChars[0] || 44);\n            opts.tagBaseClass = 'tm-tag';\n            opts.inputBaseClass = 'tm-input';\n\n            if (!$.isFunction(opts.validator)) { opts.validator = null; }\n\n            this.each(function() {\n                var $self = $(this), hiddenObj ='', rndid ='', albet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n                // prevent double-initialization of TagManager\n                if ($self.data('tagManager')) { return false; }\n                $self.data('tagManager', true);\n\n                for (var i = 0; i < 5; i++) {\n                  rndid += albet.charAt(Math.floor(Math.random() * albet.length));\n                }\n\n                $self.data(\"tm_rndid\", rndid);\n\n                // store instance-specific data in the DOM object\n                $self.data('opts',opts)\n                    .data('tlis', []) //list of string tags\n                    .data('tlid', []); //list of ID of the string tags\n\n                if (opts.output === null) {\n                    hiddenObj = $('<input/>', {\n                        type: 'hidden',\n                        name: opts.hiddenTagListName\n                    });\n                    $self.after(hiddenObj);\n                    $self.data(\"lhiddenTagList\", hiddenObj);\n                } else {\n                    $self.data(\"lhiddenTagList\", $(opts.output));\n                }\n\n                if (opts.AjaxPushAllTags) {\n                    $self.on('tm:spliced', privateMethods.pushAllTags);\n                    $self.on('tm:popped', privateMethods.pushAllTags);\n                    $self.on('tm:pushed', privateMethods.pushAllTags);\n                }\n\n                // hide popovers on focus and keypress events\n                $self.on('focus keypress', function(e) {\n                    if ($(this).popover) { $(this).popover('hide'); }\n                });\n\n                // handle ESC (keyup used for browser compatibility)\n                if (opts.isClearInputOnEsc) {\n                    $self.on('keyup', function(e) {\n                        if (e.which === 27) {\n                            // console.log('esc detected');\n                            $(this).val('');\n                            privateMethods.killEvent(e);\n                        }\n                    });\n                }\n\n                $self.on('keypress', function(e) {\n                    // push ASCII-based delimiters\n                    if (privateMethods.keyInArray(e, opts.delimiterChars)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                $self.on('keydown', function(e) {\n                    // disable ENTER\n                    if (e.which === 13) {\n                        if (opts.preventSubmitOnEnter) {\n                            privateMethods.killEvent(e);\n                        }\n                    }\n\n                    // push key-based delimiters (includes <enter> by default)\n                    if (privateMethods.keyInArray(e, opts.delimiterKeys)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                // BACKSPACE (keydown used for browser compatibility)\n                if (opts.deleteTagsOnBackspace) {\n                    $self.on('keydown', function(e) {\n                        if (privateMethods.keyInArray(e, opts.backspace)) {\n                            // console.log(\"backspace detected\");\n                            if ($(this).val().length <= 0) {\n                                publicMethods.popTag.call($self);\n                                privateMethods.killEvent(e);\n                            }\n                        }\n                    });\n                }\n\n                // on tag pop fill back the tag's content to the input field\n                if (opts.fillInputOnTagRemove) {\n                    $self.on('tm:popped', function(e, tag) {\n                        $(this).val(tag);\n                    });\n                }\n\n                $self.change(function(e) {\n                    if (!/webkit/.test(navigator.userAgent.toLowerCase())) {\n                        $self.focus();\n                    } // why?\n\n                    /* unimplemented mode to push tag on blur\n                     else if (tagManagerOptions.pushTagOnBlur) {\n                     console.log('change: pushTagOnBlur ' + tag);\n                     pushTag($(this).val());\n                     } */\n                    privateMethods.killEvent(e);\n                });\n\n                if (opts.prefilled !== null) {\n                    if (typeof (opts.prefilled) === \"object\") {\n                        privateMethods.prefill.call($self, opts.prefilled);\n                    } else if (typeof (opts.prefilled) === \"string\") {\n                        privateMethods.prefill.call($self, opts.prefilled.split(opts.baseDelimiter));\n                    } else if (typeof (opts.prefilled) === \"function\") {\n                        privateMethods.prefill.call($self, opts.prefilled());\n                    }\n                } else if (opts.output !== null) {\n                    if ($(opts.output) && $(opts.output).val()) { var existing_tags = $(opts.output); }\n                    privateMethods.prefill.call($self,$(opts.output).val().split(opts.baseDelimiter));\n                }\n\n            });\n\n            return this;\n        }\n    };\n\n    $.fn.tagsManager = function(method) {\n        var $self = $(this);\n\n        if (!(0 in this)) { return this; }\n\n        if ( publicMethods[method] ) {\n            return publicMethods[method].apply( $self, Array.prototype.slice.call(arguments, 1) );\n        } else if ( typeof method === 'object' || ! method ) {\n            return privateMethods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist.' );\n            return false;\n        }\n    };\n\n}(jQuery));\n\ndefine(\"tagmanager\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for handling\n * forms and functions to build Bootstrap forms easily.\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('form',[ \"jquery\", \"config\", \"modal\", \"laconic\", \"tagmanager\" ],\n       function($, config, modal) {\n\n  var LABELWIDTH = 3;\n\n  var form = {\n    /**\n     * Serialize a form as an object. The following normalizations are\n     * performed:\n     *   - Form fields that have an empty string are ignored unless\n     *     `ignore_empty` is `true`\n     *   - The value from a `<input type=\"checkbox\">`is converted\n     *     into a JavaScript boolean.\n     *\t - The value of a tag-list is converted into a list of strings.\n     * @returns {Object} holding the name/value pairs of the form\n     */\n    serializeAsObject: function(form, ignore_empty) {\n      var arr = form.serializeArray();\n      var inset = [];\n      var obj = {};\n\n      // get arrays of checkboxes\n      form.find(\"div.checkboxes.array\").each(function() {\n\tvar elem = $(this);\n\tvar set = [];\n\n\telem.find(\"input:checked\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  set.push(name);\n\t});\n\telem.find(\"input\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  inset.push(name);\n\t});\n\n\tobj[elem.attr(\"name\")] = set;\n      });\n\n      for(var i=0; i<arr.length; i++) {\n\tvar name  = arr[i].name;\n\tvar value = arr[i].value;\n\tvar input = form.find('[name=\"'+name+'\"]');\n\tvar type  = input.prop(\"type\");\n\tvar jvalue;\n\n\tif ( (jvalue = input.data('json-value')) ) {\n\t  obj[name] = jvalue;\n\t} else if ( value != \"\" || ignore_empty == true ) {\n\t  // deal with tag lists\n\t  if ( type == \"hidden\" && name.indexOf(\"hidden-\") == 0 ) {\n\t    name = name.slice(\"hidden-\".length);\n\t    if ( obj[name] == undefined ) {\n\t      obj[name] = value.split(\",\");\n\t    } else {\n\t      obj[name] = value.split(\",\").concat(obj[name]);\n\t    }\n\t  } else if ( type == \"text\" && input.hasClass(\"tag-list\") ) {\n\t    if ( value != \"\" ) {\n\t      if ( obj[name] !== undefined )\n\t\tobj[name].push(value);\n\t      else\n\t\tobj[name] = [value];\n\t    }\n\t  } else if ( type == \"number\" ) {\n\t    obj[name] = parseInt(value);\n\t  } else if ( type == \"checkbox\" ) {\n\t    if ( inset.indexOf(name) == -1 )\n\t      obj[name] = (value == \"on\" ? true : false);\n\t  } else {\n\t    obj[name] = value;\n\t  }\n\t}\n      }\n\n      // unchecked checkboxes are not reported\n      form.find(\"[type=checkbox]\").each(function() {\n\tvar checkbox = $(this);\n\tvar name = checkbox.prop('name');\n\tif ( checkbox.prop(\"disabled\") != true &&\n\t     obj[name] === undefined &&\n\t     inset.indexOf(name) == -1 )\n\t  obj[name] = false;\n      });\n\n      return obj;\n    },\n\n    /**\n     * Provide feedback about problems with form elements\n     * @param form is the form to decorate\n     * @param error is a pengine error message created by lib/form.pl\n     */\n\n    formError: function(formel, error) {\n      formel.find(\".has-error\").removeClass(\"has-error\");\n      formel.find(\".help-block.with-errors\").remove();\n\n      if ( error ) {\n\tif ( error.code == \"form_error\" || error.code == \"input_error\" ) {\n\t  errors = error.data.split(\"\\n\");\n\t  for(var i=0; i<errors.length; i++) {\n\t    var el = errors[i].split(/:\\s*(.*)?/);\n\n\t    form.fieldError(formel, el[0], el[1]);\n\t  }\n\t} else\n\t{ modal.alert(error.data);\n\t}\n      }\n    },\n\n    fieldError: function(form, field, msg) {\n      var input = form.find(\"input[name=\"+field+\"]\");\n\n      if ( input.length > 0 ) {\n\tvar group = input.closest(\".form-group\");\n\n\tif ( input.parent().hasClass(\"input-group\") )\n\t  input = input.parent();\n\n\tgroup.addClass(\"has-error\");\n\tinput.after($.el.p({class:\"help-block with-errors\"}, msg));\n      } else\n      { alert(\"Missing value for \"+field);\n      }\n    },\n\n    showDialog: function(data) {\n      $(\".swish-event-receiver\").trigger(\"dialog\", data);\n    },\n\n    /**\n     * Invoke the central broadcasting of SWISH\n     * @param {String} event is the event name\n     * @param {any} [data] is the associated data\n     */\n    formBroadcast: function(event, data) {\n      $(\".swish-event-receiver\").trigger(event, data);\n    },\n\n    fields: {\n      fileName: function(name, public, example, disabled) {\n\tvar labeltext = config.swish.community_examples ? \"Public | Example | name\" : \"Public | name\"\n\tvar empty = \"(leave empty for generated random name)\"\n\tvar fork, input;\n        var elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", labeltext),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, other users can find this program\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"public\",\n\t\t\t\t\t\t      { checked: public\n\t\t\t\t\t\t      })),\n\t\t\t\t   config.swish.community_examples ?\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, add to examples menu\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"example\",\n\t\t\t\t\t\t      { checked: example\n\t\t\t\t\t\t      })) : undefined,\n\t\t\t   input = textInput(\"name\",\n\t\t\t\t\t     {placeholder:\"Name \" + empty,\n\t\t\t\t\t      title:\"Public name of your program\",\n\t\t\t\t\t      value:name,\n\t\t\t\t\t      disabled:disabled}),\n\t\t\t    fork = $.el.span({class:\"input-group-btn\"\n\t\t\t\t             },\n\t\t\t\t\t     $.el.button({ class: \"btn btn-success\",\n\t\t\t\t\t\t\t   type: \"button\"\n\t\t\t\t\t\t\t }, \"Fork\"))\n\t\t\t\t  )));\n\t$(fork).on(\"click\", function() {\n\t  var btn = $(input).closest(\"form\").find(\".btn.btn-primary\");\n\t  $(input).attr(\"placeholder\", \"Fork as \" + empty);\n\t  $(input).val(\"\");\n\t  btn.text(btn.text().replace(\"Update\", \"Fork\"));\n\t});\n\treturn elem;\n      },\n\n      title: function(title) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"title\", \"Title\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"title\",\n\t\t\t\t    {placeholder:\"Descriptive title\",\n\t\t\t\t     value:title})));\n\treturn elem;\n      },\n\n      /**\n       * @param {String} [identity] if provided, this indicates that the\n       * author cannot be changed.\n       */\n      author: function(author, identity) {\n\tvar options = { placeholder:\"Your name\", value:author };\n\n\tif ( author && identity ) {\n\t  options.readonly = true;\n\t  options.title    = \"Verified author name\";\n\t}\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"author\", \"Author\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"author\", options)));\n\treturn elem;\n      },\n\n      date: function(stamp, labels, name) {\n\tname = name||label;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(name, labels),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(name,\n\t\t\t\t    {disabled: true,\n\t\t\t\t     value:new Date(stamp*1000).toLocaleString()\n\t\t\t\t    })));\n\treturn elem;\n      },\n\n      description: function(description) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"description\", \"Description\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"description\", {value:description})));\n\treturn elem;\n      },\n\n      commit_message: function(msg) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"commit_message\", \"Changes\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"commit_message\",\n\t\t\t\t   { value:msg,\n\t\t\t\t     placeholder:\"Describe your changes here\"\n\t\t\t\t   })));\n\treturn elem;\n      },\n\n      tags: function(tags) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"tags\", \"Tags\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  tagInput(\"tags\", \"Tags help finding this code\", tags)));\n\treturn elem;\n      },\n\n      /**\n       * Provide checkboxes for determining who may save a new version\n       * of this file\n       */\n      modify: function(who, canmodify) {\n\tvar fields = [];\n\tvar opts = { name:\"modify\", label:\"Can save new version\",\n\t\t     type:\"array\"\n\t\t   };\n\n\tfunction add(key, label) {\n\t  fields.push({ name:key,\n\t\t\tlabel:label,\n\t\t\tvalue:who.indexOf(key) != -1,\n\t\t\treadonly: !canmodify\n\t\t      });\n\t}\n\n\tadd(\"any\",   \"Anyone\");\n\tadd(\"login\", \"Logged in users\");\n\tadd(\"owner\", \"Only me\");\n\n\tif ( !canmodify )\n\t  opts.title = \"Only logged in users and owners can set permissions\";\n\telse\n\t  opts.title = \"Specify who can save an updated version of this file\";\n\n\treturn form.fields.checkboxes(fields, opts);\n      },\n\n      follow: function(email) {\n\treturn form.fields.checkboxes(\n\t\t [ { name: \"follow\", label: \"Follow this document\",\n\t\t     value:!!email, readonly:!email\n\t\t   }\n\t\t ],\n\t\t { name:\"options\", label:\"\",\n\t\t   title: \"Notify about activity (updates, chat)\\n\"+\n\t\t\t  \"Requires being logged in with valid email\"\n\t\t });\n      },\n\n      projection: function(projection) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"projection\", \"Projection\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"projection\",\n\t\t\t\t    {placeholder:\"Columns\", value:projection})));\n\treturn elem;\n      },\n\n      csvFormat: function(list, format) {\n\tvar elem;\n\n\tlist = list||[\"prolog\"];\n\tformat = format||list[0];\n\n\tif ( list.length == 1 ) {\n\t  elem = $.el.input({type:\"hidden\", name:\"format\", value:list[0]});\n\t} else {\n\t  elem = $.el.div({class:\"form-group\"},\n\t\t\t  label(\"format\", \"Format\"),\n\t\t\t  $.el.div({class:valgridw()},\n\t\t\t\t   select(\"format\",\n\t\t\t\t\t  list,\n\t\t\t\t\t  {value:format})));\n\t}\n\n\treturn elem;\n      },\n\n      /**\n       * Ask for limit and distinct to modify the solution set.\n       * @param {Number} [limit] is the max number of solutions to\n       * return\n       * @param {Boolean} [distinct] requests only to return distinct\n       * solutions.\n       */\n      limit: function(limit, distinct) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Distinct | limit\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked only return distinct results\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"distinct\",\n\t\t\t\t\t\t      { checked: distinct\n\t\t\t\t\t\t      })),\n\t\t\t\t   textInput(\"limit\",\n\t\t\t\t\t     {placeholder:\"Maximum result count (blank for unlimited)\",\n\t\t\t\t\t      title:\"Limit results\",\n\t\t\t\t\t      value:limit}))));\n\treturn elem;\n      },\n\n      /**\n       * @param {Array} boxes is a list of checkbox specifications.\n       * Uses .name, .label, .value (Boolean) and .readonly\n       */\n      checkboxes: function(boxes, options) {\n\tvar boxel;\n\n\toptions = $.extend({name:\"options\", label:\"Options\", col:LABELWIDTH},\n\t\t\t   options||{});\n\n\tvar dopts = { class: \"checkboxes col-xs-\"+(12-options.col),\n\t              name:  options.name\n\t\t    };\n\tif ( options.title ) dopts.title = options.title;\n\tif ( options.type  ) dopts.class += \" \"+options.type;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(options.name, options.label, options.col),\n\t\t boxel = $.el.div(dopts));\n\n\tfor(var k=0; k<boxes.length; k++) {\n\t  var box = boxes[k];\n\t  var opts = {type: \"checkbox\", name:box.name, autocomplete:\"false\"};\n\t  if ( box.value )\n\t    opts.checked = \"checked\";\n\t  if ( box.readonly )\n\t    opts.disabled = \"disabled\";\n\t  $(boxel).append($.el.label({class:\"checkbox-inline\"},\n\t\t\t\t     $.el.input(opts), box.label));\n\t}\n\n\treturn elem;\n      },\n\n      chunk: function(value) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"count\", \"Initial solutions\", 3),\n\t\t $.el.div({class:\"col-xs-9\"},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   textInput(\"chunk\",\n\t\t\t\t\t     { title:\"Initial number of solutions\",\n\t\t\t\t\t       type:\"number\",\n\t\t\t\t\t       value:value}))));\n\treturn elem;\n      },\n\n      name: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"name\",\n\t\t\t\t    {placeholder:\"Name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      filename: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"filename\", \"File name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"filename\",\n\t\t\t\t    {placeholder:\"File name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      hidden: function(name, value) {\n\tif ( value !== undefined )\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n      },\n\n      /**\n       * @param {Object} options\n       * @param {String} options.label is the label used for the\n       * primary button.\n       * @param {Function} options.action is called with two arguments,\n       * the _event_ and the serialized data from the embedded form\n       * @param {Number} options.offset determines the begin column in\n       * the grid (default 2)\n       */\n      buttons: function(options) {\n\toptions    = options||{};\n\tvar label  = options.label||\"Save program\";\n\tvar offset = options.offset||LABELWIDTH;\n\tvar button = $.el.button({ name:\"save\",\n\t\t\t\t   class:\"btn btn-primary\"\n\t\t\t\t },\n\t\t\t\t label);\n\n\t$(button).on(\"click\", function(ev) {\n\t  var elem = $(ev.target).parents(\"form\")[0];\n\t  var data = form.serializeAsObject($(elem));\n\n\t  options.action(ev, data);\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t $.el.div({class:\"col-xs-offset-\"+offset+\" col-xs-\"+(12-offset)},\n\t\t\t  button,\n\t\t\t  $.el.button({name:\"cancel\",\n\t\t\t\t       class:\"btn btn-danger\",\n\t\t\t\t       'data-dismiss':\"modal\"},\n\t\t\t\t      \"Cancel\")));\n\treturn elem;\n      },\n\n      /**\n       * Bootstrap radio button.  To get the value, use\n       * `$(\"label.active > input[name=Name]\").val();\n       * @param {String} name is the name of the radio button\n       * @param {Array(Object)} buttons is an array of objects with\n       * .active, .label and .value\n       */\n      radio: function(name, buttons, type) {\n\tvar elem = $.el.div({class:\"btn-group\", \"data-toggle\":\"buttons\"});\n\ttype = type||\"radio\"\n\n\tfor(var i=0; i<buttons.length; i++) {\n\t  var cls = \"btn btn-default btn-xs\";\n\t  if ( buttons[i].active )\n\t    cls += \" active\";\n\n\t  var opts = { type:type, name:name,\n\t               autocomplete:\"off\",\n\t\t       value:buttons[i].value\n\t\t     };\n\t  var lblopts = {class:cls};\n\t  if ( buttons[i].title )\n\t    lblopts.title = buttons[i].title;\n\t  $(elem).append($.el.label(lblopts,\n\t\t\t\t    $.el.input(opts),\n\t\t\t\t    buttons[i].label));\n\t}\n\n        return elem;\n      }\n    },\n\n    widgets: {\n      glyphIcon: function(glyph) {\n\treturn $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n      },\n\n      typeIcon: function(type) {\n\treturn $.el.span({class:\"dropdown-icon type-icon \"+type});\n      },\n\n      glyphIconButton: function(glyph, options) {\n\tvar attrs = {class:\"btn\", type:\"button\"};\n\n\tif ( options.action ) attrs['data-action'] = options.action;\n\tif ( options.title )  attrs.title          = options.title;\n\tif ( options.class )  attrs.class\t  += \" \"+options.class;\n\n\treturn $.el.button(attrs, form.widgets.glyphIcon(glyph));\n      },\n\n      /**\n       * Turn an icon into a dropdown button.\n       * @param {Object} options\n       * @param {Any}\t options.client is the `this` for the menu\n       *\t\t functions.\n       * @param {String} [options.divClass] additional class for the\n       * returned `div` element\n       * @param {String} [options.ulClass] additional class for the\n       * `ul` element that defines the menu.\n       * @param {Object} [options.actions] defines the menu items.\n       * this is passed to populateMenu()\n       * @returns {DIV} the downdown button\n       */\n      dropdownButton: function(icon, options) {\n\tif ( !options ) options = {};\n\tvar cls     = options.divClass;\n\tvar ulClass = options.ulClass;\n\n\tvar dropdown = $.el.div(\n\t  {class: \"btn-group dropdown\"+(cls?\" \"+cls:\"\")},\n\t  $.el.button(\n\t    {class:\"dropdown-toggle\",\n\t     \"data-toggle\":\"dropdown\"},\n\t    icon),\n\t  $.el.ul({class:\"dropdown-menu\"+(ulClass?\" \"+ulClass:\"\")}));\n\n\tif ( options.actions )\n\t  form.widgets.populateMenu($(dropdown), options.client, options.actions);\n\n\treturn dropdown;\n      },\n\n      populateMenu: function(menu, client, actions) {\n\tvar ul = menu.find(\".dropdown-menu\");\n\tvar data = ul.data(\"menu\")||{};\n\n\tfunction runMenu(ev, a) {\n\t  var action = $(a).data('action');\n\n\t  if ( action )\n\t    action.call(client, a);\n\t}\n\n\tfunction addMenuItem(label, onclick) {\n\t  if ( onclick !== undefined ) {\n\t    if ( label.indexOf(\"--\") == 0 ) {\n\t      ul.append($.el.li({class:\"divider\"}));\n\t    } else {\n\t      var a = $.el.a(label);\n\n\t      $(a).data('action', onclick);\n\t      ul.append($.el.li(a));\n\t    }\n\t  }\n\t}\n\n\tfor(var a in actions) {\n\t  if ( actions.hasOwnProperty(a) ) {\n\t    addMenuItem(a, actions[a]);\n\t  }\n\t}\n\n\tif ( !data.bound ) {\n\t  data.bound = true;\n\t  ul.on(\"click\", \"a\", function(ev) { runMenu(ev, this); } );\n\t}\n\n\tul.data(\"menu\", data);\n\n\treturn menu;\n      }\n    }\n  };\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\n  function valgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+(12-n);\n  }\n  function colgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+n;\n  }\n\n  function label(elemName, text, width) {\n    width = width || LABELWIDTH;\n    return $.el.label({class:\"control-label col-xs-\"+width+\"\", for:elemName}, text);\n  }\n\n  function checkbox(name, options) {\n    var attrs = {name:name, type:\"checkbox\"};\n    options = options||{};\n    if ( options.checked ) attrs.checked = \"checked\";\n    if ( options.title   ) attrs.title\t = options.title;\n    return $.el.input(attrs);\n  }\n\n  function textInput(name, options) {\n    var attrs = {name:name, type:\"text\", class:\"form-control\"};\n    options = options||{};\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n    if ( options.title )       attrs.title       = options.title;\n    if ( options.value )       attrs.value       = options.value;\n    if ( options.disabled )    attrs.disabled    = options.disabled;\n    if ( options.readonly )    attrs.readonly    = options.readonly;\n    if ( options.type )        attrs.type        = options.type;\n    return $.el.input(attrs);\n  }\n\n  function tagInput(name, placeholder, tags) {\n    var attrs = { name:name, type:\"text\",\n                  class:\"tm-input tag-list\"\n                };\n    if ( placeholder ) attrs.placeholder = placeholder;\n    var elem = $.el.input(attrs);\n    if ( tags )\n      $(elem).data(\"prefilled\", tags);\n    return elem;\n  }\n\n  function helpBlock(help) {\n    return $.el.p({class:\"help-block\"},\n\t\t  \"Make saved file public and give it a meaningful name\");\n  }\n\n  function textarea(name, options) {\n    var attrs = {name:name, class:\"form-control\"};\n    options = options||{};\n\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n\n    return $.el.textarea(attrs, options.value||\"\");\n  }\n\n  /**\n   * Create a bootstrap <select> element from a list of options\n   * @param {String} name is the name of the select element\n   * @param {Array} from is an array of options. Each options is a\n   * string or an object with keys `value` and `label`.\n   * @param {Object} [options]\n   * @param {Object} [options.value] If provided, the corresponding\n   * option is selected\n   */\n\n  function select(name, from, options) {\n    var select = $($.el.select({class:\"form-control\", name:name}));\n\n    options=options||{};\n\n    function addSelect(e) {\n      if ( typeof(e) == \"string\" ) {\n\tif ( e == options.value ) {\n\t  select.append($.el.option({selected:\"selected\"}, e));\n\t} else {\n\t  select.append($.el.option(e));\n\t}\n      } else {\n\tvar opts = {value:e.value};\n\tif ( e.value == options.value )\n\t  opts.selected = \"selected\";\n\n\tselect.append($.el.option(opts, e.label));\n      }\n    }\n\n    for(var i=0; i<from.length; i++)\n      addSelect(from[i]);\n\n    return select[0];\n  }\n\n  return form;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage application history. This file supports  two types of history:\n * plugin for the browser history  and  keep   track  of  issues such as\n * recently used files.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('history',[\"jquery\", \"preferences\", \"form\"],\n       function($, preferences, form) {\n  var history = {\n\n\t\t /*******************************\n\t\t *\t BROWSER HISTORY\t*\n\t\t *******************************/\n\n    /**\n     * Push a new entry to the browser history.\n     * FIXME: Safe history menu of the query window.\n     * FIXME: Deal with unsafed data.\n     */\n    push: function(reply) {\n      var cpath = window.location.pathname;\n\n      if ( cpath != reply.url ) {\n\tvar state = {location:reply.url};\n\n\tif ( reply.meta )\n\t  state.meta = reply.meta;\n\n\twindow.history.pushState(state, \"\", reply.url);\n\tdocument.title = \"SWISH -- \"\n                       + (reply.file ? reply.file\n\t\t\t             : \"SWI-Prolog for SHaring\");\n      }\n    },\n\n    /**\n     * Restore a previous browser history state\n     */\n    pop: function(e) {\n      if ( e.state ) {\n\tif ( e.state.meta && e.state.meta.name ) {\n\t  $(\".swish\").swish('playFile', e.state.meta.name);\n\t} else if ( e.state.location ) {\n\t  window.location =  e.state.location;\n\t}\n      }\n    },\n\n\t\t /*******************************\n\t\t *\t  RECENT DOCUMENTS\t*\n\t\t *******************************/\n\n    recentMaxLength: 10,\n\n    /**\n     * Add/refresh document to list of recent documents.\n     * @param {Object} doc\n     * @param {String} doc.id is the document _identifier_\n     * @param {String} [doc.label] is the document label for\n     * the _Open recent_ menu.  Default is the `id`.\n     * @param {String} doc.type is the type of document.\n     * A document of a specific type is opened by calling\n     * `history.openRecent.type.call(event, doc)`\n     */\n\n    addRecent: function(doc) {\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      function equalDocument(d1, d2) {\n\treturn d1.type == d2.type && d1.id == d2.id;\n      }\n\n      for(var i=0; i<recent.length; i++) {\n\tif ( equalDocument(doc, recent[i]) ) {\n\t  recent.splice(i,1);\n\t  break;\n\t}\n      }\n      while ( recent.length+1 > history.recentMaxLength )\n\trecent.pop();\n      recent.splice(0,0,doc);\n\n      preferences.setVal(\"recentDocuments\", recent);\n    },\n\n    openRecent: function(ev, doc) {\n      return history.openRecent[doc.st_type](ev, doc);\n    },\n\n    /**\n     * Fill a (navbar) <ul> with <li><a> elements, where\n     * each <a> carries the related entry as `data('document')`\n     */\n    updateRecentUL: function() {\n      var ul = $(this);\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      ul.html(\"\");\n      for(var i=0; i<recent.length; i++) {\n\tvar e = recent[i];\n\n\tif ( e.id ) {\n\t  var a = $.el.a(form.widgets.typeIcon(e.id.split(\".\").pop()),\n\t\t\t e.label||e.id);\n\n\t  $(a).data('document', e);\n\t  ul.append($.el.li(a));\n\t}\n      }\n    }\n  };\n\n  /**\n   * Open recent \"gitty\" document\n   */\n  history.openRecent.gitty = function(ev, doc) {\n    $(ev.target).parents(\".swish\").swish('playFile', doc.id);\n  };\n\n  window.onpopstate = history.pop;\n\n  return history;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Small utilities\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('utils',[\"jquery\"],\n       function($) {\n\n  var utils = {\n    /**\n     * @param   {String} text is the text to be encoded\n     * @returns {String} HTML encoded version of text\n     */\n    htmlEncode: function(text) {\n      if ( !text ) return \"\";\n      return document.createElement('a')\n                     .appendChild(document.createTextNode(text))\n\t\t     .parentNode\n\t\t     .innerHTML;\n    },\n\n    /**\n     * @returns {String} (random) UUID\n     */\n    generateUUID: function() {\n      var d = new Date().getTime();\n      var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n\t.replace(/[xy]/g, function(c) {\n\t  var r = (d + Math.random()*16)%16 | 0;\n\t  d = Math.floor(d/16);\n\t  return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n\t});\n      return uuid;\n    },\n\n    flash: function(obj) {\n      obj.addClass(\"flash\");\n      setTimeout(function() { obj.removeClass(\"flash\"); }, 1500);\n    }\n  }\n\n  if (typeof String.prototype.startsWith != 'function') {\n    String.prototype.startsWith = function(str) {\n      return this.lastIndexOf(str, 0) === 0;\n    };\n  }\n\n  return utils;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with cooperation\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chat',[ \"jquery\", \"config\", \"preferences\", \"form\", \"modal\", \"utils\" ],\n       function($, config, preferences, form, modal, utils) {\n\nvar MIN_RECONNECT_DELAY =   1000;\nvar MAX_RECONNECT_DELAY = 300000;\n\n(function($) {\n  var pluginName = 'chat';\n  var reconnect_delay = MIN_RECONNECT_DELAY;\n  var last_open = null;\n\n  /** @lends $.fn.chat */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t/* add event handling */\n\telem.on(\"click\", function(ev) {\n\t  var li = $(ev.target).closest(\"li.user\");\n\n\t  if ( li.length == 1 )\n\t    elem.chat('unnotify', li.attr(\"id\"));\n\t});\n\telem.on(\"send\", function(ev, msg) {\n\t  elem.chat('send', msg);\n\t});\n\t$(window).bind(\"beforeunload\", function() {\n\t  elem.chat('disconnect');\n\t});\n\n\t/* setup websocket */\n\tif ( config.swish.chat ) {\n\t  elem.chat('connect');\n\t}\n      });\n    },\n\n\t\t /*******************************\n\t\t *\t      WEBSOCKET\t\t*\n\t\t *******************************/\n\n    /**\n     * Create a websocket connection to /chat on the SWISH server.\n     */\n    connect: function() {\n      var elem = this;\n      var data = this.data(pluginName);\n      var url  = window.location.host + config.http.locations.swish_chat;\n      var lead = \"?\";\n      var ws = window.location.protocol.replace(\"http\", \"ws\");\n\n      if ( data.connection && data.connection.readyState == 1 )\n\treturn this;\t\t\t/* already connected */\n\n      function add_pref_param(name, pname) {\n\tvar value = preferences.getVal(pname);\n\n\tif ( value ) {\n\t  if ( pname == \"anon-avatar\" ) {\n\t    /* hack to deal with possibly rebased server */\n\t    value = config.http.locations.avatar+value.split(\"/\").pop();\n\t  }\n\n\t  url += lead + name + \"=\" + encodeURIComponent(value);\n\t  lead = \"&\";\n\t}\n      }\n\n      add_pref_param(\"avatar\",   \"anon-avatar\");\n      add_pref_param(\"nickname\", \"nick-name\");\n\n      if ( data.reconnect ) {\t\t\t/* reconnecting */\n\turl += lead + \"reconnect\" + \"=\" + encodeURIComponent(data.reconnect);\n\tlead = \"&\";\n      }\n\n      data.connection = new WebSocket(ws + \"//\" + url,\n\t\t\t\t      ['v1.chat.swish.swi-prolog.org']);\n\n      data.connection.onerror = function(error) {\n\telem.chat('userCount', undefined);\n      };\n      data.connection.onclose = function(ev) {\n\tif ( last_open == null ) {\n\t  reconnect_delay *= 2;\n\t  if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t    reconnect_delay = MAX_RECONNECT_DELAY;\n\t} else {\n\t  if ( getTime() - last_open > 300000 )\n\t  { reconnect_delay = MIN_RECONNECT_DELAY;\n\t  } else\n\t  { reconnect_delay *= 2;\n\t    if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t      reconnect_delay = MAX_RECONNECT_DELAY;\n\t  }\n\t}\n\tsetTimeout(function() {\n\t  elem.chat('connect');\n\t}, reconnect_delay);\n      };\n      data.connection.onmessage = function(e) {\n\tvar msg = JSON.parse(e.data);\n\tmsg.origin = e.origin;\n\tif ( msg.type )\n\t  elem.chat(msg.type, msg);\n\telse\n\t  console.log(e);\n      };\n      data.connection.onopen = function() {\n      };\n    },\n\n    empty_queue: function() {\n      var data = this.data(pluginName);\n\n      while( data.queue &&\n\t     data.queue.length > 0\n\t     && data.connection.readyState == 1 ) {\n\tvar str = data.queue.shift();\n\tdata.connection.send(str);\n      }\n    },\n\n    disconnect: function() {\n      var data = this.data(pluginName);\n\n      this.chat('send', {type: \"unload\"});\n      data.connection.onclose = function(){};\n      data.connection.close();\n      data.connection = undefined;\n\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t   BASIC MESSAGES\t*\n\t\t *******************************/\n\n    /**\n     * @param {Object} msg is the JSON object to broadcast\n     */\n    send: function(msg) {\n      var data = this.data(pluginName);\n\n      if ( data && data.connection ) {\n\tvar str = JSON.stringify(msg);\n\n\tif ( data.connection.readyState != 1 ) {\n\t  if ( !data.queue )\n\t    data.queue = [str];\n\t  else\n\t    data.queue.push(str);\n\t  this.chat('connect');\n\t} else {\n\t  data.connection.send(str);\n\t}\n      }\n\n      return this;\n    },\n\n    subscribe: function(channel, sub_channel) {\n      var msg = { type: \"subscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n    unsubscribe: function(channel, subchannel) {\n      var msg = { type: \"unsubscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n\t\t /*******************************\n\t\t *\t      ACTIONS\t\t*\n\t\t *******************************/\n\n    /**\n     * The welcome message is sent by SWISH immediately after opening\n     * the websocket connection.  It provides the session UID for this\n     * user\n     */\n    welcome: function(e) {\n      var data = this.data(pluginName);\n\n      if ( data.wsid && data.wsid != e.wsid ) {\n\tthis.html(\"\");\t\t\t\t/* server restart? */\n      }\n\n      data.wsid = e.wsid;\n      data.reconnect = e.reconnect;\t\t/* reconnection token */\n      if ( e.avatar && e.avatar_source == 'generated' )\n\tpreferences.setVal(\"anon-avatar\", e.avatar);\n      e.role = \"self\";\n\n      var li = this.chat('addUser', e);\n      $(li).addClass(\"myself\");\n      this.chat('userCount', e.visitors);\n      last_open = getTime();\n\n      if ( e.check_login )\n\t$(\"#login\").login('update', \"check\");\n      $(\".storage\").storage('chat_status');\n      this.chat('empty_queue');\n    },\n\n    userCount: function(cnt) {\n      var elem = $(\"#user-count\");\n\n      if ( cnt == undefined ) {\n\telem.parent().hide();\n      } else {\n\telem.parent().show();\n\telem.text(cnt);\n      }\n    },\n\n    /**\n     * Replied when opening SWISH on a file to inform\n     * the new user about existing visitors to same\n     * files as are open in the current SWISH.  See\n     * inform_newby_about_existing_gazers/2.\n     */\n    gazers: function(e) {\n      if ( e.gazers ) {\n\tfor(var i=0; i<e.gazers.length; i++) {\n\t  var gazer = e.gazers[i];\n\t  this.chat('addUser', gazer);\n\t  if ( gazer.file )\n\t    this.chat('addUserFile', gazer.wsid, gazer.file);\n\t}\n      }\n    },\n\n    /**\n     * Replied if the profile associated with a visitor changes.  A\n     * key `reason` carries the reason for the change.\n     */\n\n    profile: function(e) {\n      var li = $(\"#\"+e.wsid);\n\n      li.children(\"a\").html(\"\").append(avatar(e));\n      if ( e.avatar ) {\n\t$(\"*[data-userid=\"+e.wsid+\"] img.avatar\").attr(\"src\", e.avatar);\n\tif ( e.avatar_source == 'generated' )\n\t  preferences.setVal(\"anon-avatar\", e.avatar);\n      }\n\n      if ( e.name ) {\n\tli.prop('title', e.name);\n\tif ( e.reason == 'set-nick-name' ) {\n\t  e.html = \"Named <i>\"+utils.htmlEncode(e.name)+\"</i>\";\n\t  this.chat('notifyUser', e);\n\t}\n      }\n    },\n\n    /**\n     * A user has rejoined. This is the case if we lost the\n     * connection and the connection was re-established.\n     */\n    rejoined: function(e) {\n      var avatars = $(\"#\"+e.wsid);\n\n      this.chat('lost', avatars, false);\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    /**\n     * A new user has joined.\n     */\n    joined: function(e) {\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    session_closed: function() {\n      $(\"#login\").login('update', \"session-closed\");\n    },\n\n    /**\n     * Display a notification by some user.\n     */\n    notify: function(e) {\n      this.chat('notifyUser', e);\n    },\n\n    /**\n     * Add incomming chat messages to the chatroom.  If there is no\n     * chatroom we should warn/open it\n     */\n    'chat-message': function(e) {\n      var rooms = $(\"div.chatroom\").chatroom('rooms', e.docid);\n\n      $(\".storage\").storage('chat_message', e);\n\n      if ( e.docid == \"gitty:\"+config.swish.hangout ) {\n\t$(\"#broadcast-bell\").chatbell('chat-message', e);\n      }\n\n      if ( rooms.length > 0 ) {\n\trooms.chatroom('add', e);\n\te.displayed = true;\n      } else {\n\tif ( $(\"#\"+e.user.id).length > 0 ) {\n\t  msg = $.extend({}, e);\n\t  msg.wsid = e.user.id;\n\t  msg.html = \"Wants to chat\";\n\t  this.chat('notifyUser', msg);\n\t}\n      }\n    },\n\n    /**\n     * Some action was forbidden\n     */\n\n     forbidden: function(e) {\n       modal.alert(e.message||\"Action is forbidden\");\n     },\n\n    /**\n     * Indicate we have read all messages upto a certain time stamp.\n     * @param {String} docid is the document id for which we should\n     * update the counter.\n     * @param {Number} time is the time of the last message read\n     * (seconds after 1/1/1970)\n     */\n    read_until: function(docid, time) {\n      preferences.setDocVal(docid, 'chatBar', time);\n    },\n\n\n\t\t /*******************************\n\t\t *\t        UI\t\t*\n\t\t *******************************/\n\n    /**\n     * Get the broadcast room\n     */\n     broadcast_room: function() {\n      return this.closest(\".swish\")\n                 .find(\".storage\")\n                 .storage('match', {file:config.swish.hangout});\n    },\n\n    /**\n     * Present a notification associated with a user. We do not\n     * add a user icon for open and close on the broadcast room if\n     * we do not have this open when the message arrives.\n     */\n    notifyUser: function(options) {\n      var elem = this;\n\n      function isBroadcast(options) {\n\treturn ( ( options.event == 'opened' ||\n\t\t   options.event == 'closed' ) &&\n\t\t options.event_argv &&\n\t\t options.event_argv[0] == config.swish.hangout\n\t       );\n      }\n\n      if ( isBroadcast(options) && !this.chat('broadcast_room') )\n\toptions.create_user = false;\n\n      var user_li = this.chat('addUser', options);\n\n      if ( user_li && user_li.length > 0 ) {\n\toptions.onremove = function() {\n\t  elem.chat('unnotify', options.wsid);\n\t};\n\tmodal.notify(user_li, options);\n\n\tthis.chat('updateFiles', options);\n      }\n    },\n\n    unnotify: function(wsid) {\n      if ( $(\"#\"+wsid).hasClass(\"removed\") )\n\tthis.chat('removeUser', wsid);\n\n      return this;\n    },\n\n    updateFiles: function(options) {\n      var data = $(this).data(pluginName);\n\n      function file() {\n\treturn options.event_argv[0];\n      }\n\n      if ( options.event == \"opened\" ) {\n\tthis.chat('addUserFile', options.wsid, file());\n      } else if ( options.event == \"closed\" ) {\n\tvar wsid = options.wsid == data.wsid ? undefined : options.wsid;\n\tthis.chat('removeUserFile', wsid, file(), true);\n      }\n    },\n\n    /**\n     * Return or add a user to the notification area.\n     * @param {Object} options\n     * @param {String} options.wsid Identifier for the user (a UUID)\n     * @param {String} [options.name] is the name of the user\n     * @returns {jQuery} the `li` element representing the user\n     */\n    addUser: function(options) {\n      var li = $(\"#\"+options.wsid);\n\n      if ( li.length == 0 )\n      { if ( options.create_user != false ) {\n\t  li = $(li_user(options.wsid, options));\n\t  this.prepend(li);\n        } else {\n\t  return null;\n\t}\n      } else {\n\tthis.chat('lost', li, false);\n      }\n\n      return li;\n    },\n\n    /**\n     * Remove a user avatar.  If a notification is pending we delay\n     * removal until the notification times out\n     */\n    removeUser: function(wsid) {\n      if ( typeof wsid == \"string\" ) {\n\twsid = {wsid:wsid};\n      }\n\n      if ( wsid.visitors !== undefined )\n\tthis.chat('userCount', wsid.visitors);\n      var li = $(\"#\"+wsid.wsid);\n      if ( li.length == 0 )\n\treturn this;\n\n      if ( wsid.reason != \"close\" ) {\n\tif ( $(\"#ntf-\"+wsid.wsid).length > 0 )\t/* notification pending */\n\t  li.addClass(\"removed\");\n\telse\n\t  li.hide(400, function() {this.remove();});\n      } else {\t\t\t\t\t/* connection was lost */\n\tthis.chat('lost', li, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Set/clear lost-connection state of users.\n     * @param {jQuery} li set of items to set/clear\n     * @param {Boolean} lost is `true` if we lost the connection\n     */\n    lost: function(li, lost) {\n      if ( lost ) {\n\tli.addClass(\"lost\");\n      } else {\n\tli.removeClass(\"lost\");\n      }\n\n      li.each(function() {\n\tvar elem = $(this);\n\tif ( lost ) {\n\t  elem.data('lost-timer',\n\t\t    setTimeout(function() {\n\t\t      if ( li.hasClass(\"lost\") )\n\t\t\tli.remove();\n\t\t    }, 60000));\n\t} else {\n\t  var tmo = elem.data('lost-timer');\n\t  if ( tmo ) {\n\t    clearTimeout(tmo);\n\t    elem.data('lost-timer', undefined);\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Get info about a specific user.\n     * @param {Array} [fields] lists the keys we want to have in the\n     * user objects.  Default is all we have.\n     */\n    user_info: function(fields) {\n      var li = $(this);\n      var user = {};\n\n      if ( !fields || fields.indexOf('id') >= 0 ) {\n\tuser.id = li.attr(\"id\");\n      }\n      if ( !fields || fields.indexOf('name') >= 0 ) {\n\tvar name = li.prop(\"title\");\n\tif ( name && name !== \"Me\" )\n\t  user.name = name;\n      }\n      if ( !fields || fields.indexOf('avatar') >= 0 ) {\n\tuser.avatar = li.find(\"img.avatar\").attr(\"src\");\n      }\n\n      return user;\n    },\n\n    /**\n     * Get the set of visible users.  The return is an object holding\n     * a key `self` and a key `users` bound to an array of users.\n     * `self` points to the user of this browser.  Self always has\n     * all keys\n     */\n    users: function(fields) {\n      var users = [];\n      var rc = {users:users};\n\n      this.find(\"li.user[id]\").each(function() {\n\tvar elem = $(this);\n\tvar self = elem.hasClass(\"myself\");\n\tvar user = elem.chat('user_info', self ? undefined : fields);\n\n\tif ( self ) {\n\t  rc.self = $.extend({}, user);\n\t  user.is_self = true;\n\t}\n\n\tusers.push(user);\n      });\n\n      return rc;\n    },\n\n    /**\n     * Get info on the _self_ user.\n     */\n    self: function(fields) {\n      var li = this.find(\"li.user.myself[id]\");\n\n      return li.chat('user_info', fields);\n    },\n\n    /**\n     * Browser `wsid` has opened `file`\n     */\n    addUserFile: function(wsid, file) {\n      var li = $(\"#\"+wsid);\n      var ul = li.find(\"ul.dropdown-menu\");\n      var fli;\n\n      ul.find(\"li.file\").each(function() {\n\tif ( $(this).data(\"file\") == file ) {\n\t  fli = this;\n\t  return false;\n\t}\n      });\n\n      if ( fli == undefined ) {\n\tvar type = file.split(\".\").pop();\n\tul.append(\n\t  $.el.li({class:\"file\", \"data-file\":file, title:\"Shared file\"},\n\t\t  $.el.a($.el.span({class: \"dropdown-icon type-icon \"+type}),\n\t\t\t file)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Remove a file associated with the user wsid.\n     * @param {String} [wsid] User for which to remove file.  If\n     * `undefined`, remove file for all users.\n     * @param {Boolean} [user_too] if `true', remove the user if\n     * the set of files becomes empty and this is not `myself`.\n     */\n    removeUserFile: function(wsid, file, user_too) {\n      var elem = this;\n\n      function removeFile(user_li) {\n\tvar ul = user_li.children(\"ul.dropdown-menu\");\n\n\tul.find(\"li.file\").each(function() {\n\t  if ( $(this).data(\"file\") == file ) {\n\t    $(this).remove();\n\t    if ( user_too &&\n\t\t !user_li.hasClass(\"myself\") &&\n\t\t ul.find(\"li.file\").length == 0 )\n\t      elem.chat('removeUser', user_li.attr(\"id\"));\n\t    return false;\n\t  }\n\t});\n      }\n\n      if ( wsid ) {\n\tremoveFile($(\"#\"+wsid));\n      } else {\n\tthis.children().each(function() {\n\t  removeFile($(this), file, user_too);\n\t});\n      }\n    }\n  }; // methods\n\n  // Private functions\n\n  /**\n   * Add an entry for a user to the notification area\n   */\n  function li_user(id, options) {\n    options = options||{};\n    var ul;\n    var a;\n    var name = options.name;\n\n    if ( !name && options.role == \"self\" )\n      name = \"Me\";\n    if ( !name )\n      name = id;\n\n    var li = $.el.li({class:\"dropdown user\", id:id, title:name},\n\t\t   a=$.el.a({ class:\"dropdown-toggle avatar\",\n\t\t\t      'data-toggle':\"dropdown\"\n\t\t\t    },\n\t\t\t    avatar(options)),\n\t\t  ul=$.el.ul({ class:\"dropdown-menu pull-right\",\n\t\t\t       title:\"\"\n\t\t\t     }));\n\n    if ( options.role == \"self\" ) {\n      $(a).append($.el.b({class:\"caret\"}));\n\n      var input = $.el.input({ type:\"text\",\n\t\t\t       placeholder:\"Nick name\",\n\t\t\t       value:options.name||\"\",\n\t\t\t       title:\"Nick name\"\n\t\t\t     });\n      ul.append($.el.li(input));\n      $(input).keypress(function(ev) {\n\tif ( ev.which == 13 ) {\n\t  var name = $(input).val().trim();\n\n\t  if ( name != \"\" ) {\n\t    $(\"#chat\").trigger('send',\n\t\t\t       { type:'set-nick-name',\n\t\t\t\t name: name\n\t\t\t       });\n\t    preferences.setVal(\"nick-name\", name);\n\t  }\n\t  $(input).closest('.dropdown.open').removeClass('open');\n\t}\n      });\n\n      form.widgets.populateMenu($(li), $(\"#chat\"), {\n/*\t\"Chat ...\": function() {\n\t  this.chat('start_chat');\n\t}\n*/\n      });\n\n      ul.append($.el.li({class:\"divider\"}));\n    }\n\n    return li;\n  }\n\n  function avatar(options) {\n    if ( options.avatar ) {\n      return $.el.img({ class:\"avatar\", src:options.avatar\n\t\t      });\n    } else {\n      return $.el.span({class:\"avatar glyphicon glyphicon-user\"})\n    }\n  }\n\n  /**\n   * @return {Number} time since 1/1/1970 in milliseconds\n   */\n  function getTime() {\n    var d = new Date();\n    return d.getTime();\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chat\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chat = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * JQuery Spliter Plugin\n * Copyright (C) 2010-2013 Jakub Jankiewicz <http://jcubic.pl>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n(function($, undefined) {\n    var count = 0;\n    var splitter_id = null;\n    var splitters = [];\n    var current_splitter = null;\n    $.fn.split = function(options) {\n        var data = this.data('splitter');\n        if (data) {\n            return data;\n        }\n        var panel_1;\n        var panel_2;\n        var settings = $.extend({\n            limit: 100,\n            orientation: 'horizontal',\n            position: '50%',\n            invisible: false,\n            onDragStart: $.noop,\n            onDragEnd: $.noop,\n            onDrag: $.noop\n        }, options || {});\n        this.settings = settings;\n        var cls;\n        var children = this.children();\n        if (settings.orientation == 'vertical') {\n            panel_1 = children.first().addClass('left_panel');\n            panel_2 = panel_1.next().addClass('right_panel');\n            cls = 'vsplitter';\n        } else if (settings.orientation == 'horizontal') {\n            panel_1 = children.first().addClass('top_panel')\n            panel_2 = panel_1.next().addClass('bottom_panel');\n            cls = 'hsplitter';\n        }\n        if (settings.invisible) {\n            cls += ' splitter-invisible';\n        }\n        var width = this.width();\n        var height = this.height();\n        var id = count++;\n        this.addClass('splitter_panel');\n        var splitter = $('<div/>').addClass(cls).bind('mouseenter touchstart', function() {\n            splitter_id = id;\n        }).bind('mouseleave touchend', function() {\n            splitter_id = null;\n        }).insertAfter(panel_1);\n        var position;\n\n        function get_position(position) {\n            if (typeof position === 'number') {\n                return position;\n            } else if (typeof position === 'string') {\n                var match = position.match(/^([0-9\\.]+)(px|%)$/);\n                if (match) {\n                    if (match[2] == 'px') {\n                        return +match[1];\n                    } else {\n                        if (settings.orientation == 'vertical') {\n                            return (width * +match[1]) / 100;\n                        } else if (settings.orientation == 'horizontal') {\n                            return (height * +match[1]) / 100;\n                        }\n                    }\n                } else {\n                    //throw position + ' is invalid value';\n                }\n            } else {\n                //throw 'position have invalid type';\n            }\n        }\n\n        var self = $.extend(this, {\n            refresh: function() {\n                var new_width = this.width();\n                var new_height = this.height();\n                if (width != new_width || height != new_height) {\n                    width = this.width();\n                    height = this.height();\n                    self.position(position);\n                }\n            },\n            position: (function() {\n                if (settings.orientation == 'vertical') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.width();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.width(position).outerWidth();\n                                panel_2.width(self.width()-pw);\n                                splitter.css('left', pw-sw2);\n                            } else {\n                                var pw = panel_1.width(position-sw2).outerWidth();\n                                panel_2.width(self.width()-pw-sw);\n                                splitter.css('left', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else if (settings.orientation == 'horizontal') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.height();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.height(position).outerHeight();\n                                panel_2.height(self.height()-pw);\n                                splitter.css('top', pw-sw2);\n                            } else {\n                                var pw = panel_1.height(position-sw2).outerHeight();\n                                panel_2.height(self.height()-pw-sw);\n                                splitter.css('top', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else {\n                    return $.noop;\n                }\n            })(),\n            orientation: settings.orientation,\n            limit: settings.limit,\n            isActive: function() {\n                return splitter_id === id;\n            },\n            destroy: function() {\n                self.removeClass('splitter_panel');\n                splitter.unbind('mouseenter');\n                splitter.unbind('mouseleave');\n                splitter.unbind('touchstart');\n                splitter.unbind('touchmove');\n                splitter.unbind('touchend');\n                splitter.unbind('touchleave');\n                splitter.unbind('touchcancel');\n                if (settings.orientation == 'vertical') {\n                    panel_1.removeClass('left_panel');\n                    panel_2.removeClass('right_panel');\n                } else if (settings.orientation == 'horizontal') {\n                    panel_1.removeClass('top_panel');\n                    panel_2.removeClass('bottom_panel');\n                }\n                self.unbind('splitter.resize');\n                self.find('.splitter_panel').trigger('splitter.resize');\n                splitters[id] = null;\n                splitter.remove();\n                var not_null = false;\n                for (var i=splitters.length; i--;) {\n                    if (splitters[i] !== null) {\n                        not_null = true;\n                        break;\n                    }\n                }\n                //remove document events when no splitters\n                if (!not_null) {\n                    $(document.documentElement).unbind('.splitter');\n                    $(window).unbind('resize.splitter');\n                    self.data('splitter', null);\n                    splitters = [];\n                    count = 0;\n                }\n            }\n        });\n        self.bind('splitter.resize', function(e) {\n            var pos = self.position();\n            if (self.orientation == 'vertical' &&\n                pos > self.width()) {\n                pos = self.width() - self.limit-1;\n            } else if (self.orientation == 'horizontal' &&\n                       pos > self.height()) {\n                pos = self.height() - self.limit-1;\n            }\n            if (pos < self.limit) {\n                pos = self.limit + 1;\n            }\n            self.position(pos, true);\n        });\n        //inital position of splitter\n        var pos;\n        if (settings.orientation == 'vertical') {\n            if (pos > width-settings.limit) {\n                pos = width-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        } else if (settings.orientation == 'horizontal') {\n            //position = height/2;\n            if (pos > height-settings.limit) {\n                pos = height-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        }\n        if (pos < settings.limit) {\n            pos = settings.limit;\n        }\n        self.position(pos, true);\n        if (splitters.length == 0) { // first time bind events to document\n            $(window).bind('resize.splitter', function() {\n                $.each(splitters, function(i, splitter) {\n                    if ( splitter ) splitter.refresh();\n                });\n            });\n            $(document.documentElement).bind('mousedown.splitter touchstart.splitter', function(e) {\n                if (splitter_id !== null) {\n                    current_splitter = splitters[splitter_id];\n                    $('<div class=\"splitterMask\"></div>').css('cursor', current_splitter.children().eq(1).css('cursor')).insertAfter(current_splitter);\n                    current_splitter.settings.onDragStart(e);\n                    return false;\n                }\n            }).bind('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function(e) {\n                if (current_splitter) {\n                    $('.splitterMask').remove();\n                    current_splitter.settings.onDragEnd(e);\n                    current_splitter = null;\n                }\n            }).bind('mousemove.splitter touchmove.splitter', function(e) {\n                if (current_splitter !== null) {\n                    var limit = current_splitter.limit;\n                    var offset = current_splitter.offset();\n                    if (current_splitter.orientation == 'vertical') {\n                        var pageX = e.pageX;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageX = e.originalEvent.changedTouches[0].pageX;\n                        }\n                        var x = pageX - offset.left;\n                        if (x <= current_splitter.limit) {\n                            x = current_splitter.limit + 1;\n                        } else if (x >= current_splitter.width() - limit) {\n                            x = current_splitter.width() - limit - 1;\n                        }\n                        if (x > current_splitter.limit &&\n                            x < current_splitter.width()-limit) {\n                            current_splitter.position(x, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    } else if (current_splitter.orientation == 'horizontal') {\n                        var pageY = e.pageY;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageY = e.originalEvent.changedTouches[0].pageY;\n                        }\n                        var y = pageY-offset.top;\n                        if (y <= current_splitter.limit) {\n                            y = current_splitter.limit + 1;\n                        } else if (y >= current_splitter.height() - limit) {\n                            y = current_splitter.height() - limit - 1;\n                        }\n                        if (y > current_splitter.limit &&\n                            y < current_splitter.height()-limit) {\n                            current_splitter.position(y, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    }\n                    current_splitter.settings.onDrag(e);\n                }\n            });\n        }\n        splitters.push(self);\n        self.data('splitter', self);\n        return self;\n    };\n})(jQuery);\n\ndefine(\"splitter\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with subwindow layout\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('pane',[ \"jquery\", \"splitter\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'tile';\n\n  /** @lends $.fn.tile */\n  var methods = {\n    /**\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar dir   = elem.hasClass(\"horizontal\") ? \"vertical\" : \"horizontal\";\n\tvar pos   = elem.attr(\"data-split\");\n\tvar panes = elem.children();\n\n\tpos = pos||\"50%\";\n\n\tpanes.each(function() {\n\t  $(this).wrap('<div class=\"pane-wrapper\"></div>')\n\t});\n\telem.addClass(\"pane-container\");\n\telem.split({ orientation:dir,\n\t             position:pos,\n\t\t     limit:10,\n\t\t     onDragStart: function() { elem.tile('resize_start'); },\n\t\t     onDrag: function(ev) { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd: function() { elem.tile('resize_save'); }\n\t           });\n\telem.tile('resize_save');\n\n\telem.on('fullscreen', function(ev, val) {\n\t  elem.tile('resize');\n\t});\n      });\n    },\n\n    resize_start: function() {\n      return this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\n\telem.find(\".reactive-size\").trigger(\"reactive-resize-start\",\n\t\t\t\t\t    info.splitter.orientation);\n      });\n    },\n\n    /**\n     * Save the current split location as a percentage, so we can\n     * maintain this percentage at subsequent resize events.  This\n     * is normally called after establishing the tile and after a\n     * user-initiated resize.\n     */\n    resize_save: function() {\n      this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\tvar length, pos;\n\n\tif ( info.splitter.orientation == 'horizontal' ) {\n\t  length = elem.height();\n\t  pos    = $(info.first).height();\n\t} else {\n\t  length = elem.width();\n\t  pos    = $(info.first).width();\n\t}\n\n\tvar percent = Math.round(((100 * pos) / length)) + \"%\";\n\n\tinfo.splitter.resizestart = percent;\n      });\n\n      this.find(\".reactive-size\").trigger(\"reactive-resize\");\n      return this;\n    },\n\n    /**\n     * Act on a resize by keeping the relative distribution and respect\n     * min/max style properties. This assumes that {@link resizestart}\n     * is called at the start of the windowresize.\n     * @example $(window).resize(function() { $(\".tile\").tile('resize'); });\n     */\n    resize: function() {\n      return this.each(function() {\n\tvar elem     = $(this);\n\tvar splitter = elem.split();\n\n\tif ( splitter.resizestart ) {\n\t  splitter.position(splitter.resizestart);\n\t  splitter.settings.onDrag(elem);\n\t}\n      });\n    },\n\n    /**\n     * Split a pane, adding a new pane above/below/left/right of the\n     * splitted pane.  `this` must be the pane content!\n     * @param {Element} pane is a `<div>` element providing the content\n     * for the new tile.\n     * @param {String} [rel] is one of `above`/`below`/`left`/`right`.\n     * Default is `\"below\"`\n     * @param {Number} [pos] is percentage of the height/width taken by\n     * the new pane\n     * @param {Number} [minheight] is the minimum height of the new tab\n     * in the case of a vertical split.\n     * @return {jQuery} parent `pane-container` that hold me and the note\n     * that was added next to me.\n     */\n    split: function(pane, rel, pos, minheight) {\n      rel = rel||\"below\";\n\n      var relto  = this;\n      var dir    = (rel == \"above\" || rel == \"below\") ? \"horizontal\" : \"vertical\";\n      var parent = relto.wrap('<div class=\"pane-container tile \"' +\n\t\t\t      flipdir(dir) +\n\t\t\t      '></div>')\n                        .parent();\n\n      if ( pos == undefined )\n\tpos = 50;\n      else if ( pos < 10 )\n\tpos = 10;\n      else if ( pos > 90 )\n\tpos = 90;\n\n      if ( minheight && dir == \"horizontal\" ) {\n\tsumh = this.height();\n\tleft = sumh*pos/100;\n\tif ( left < minheight && minheight < sumh*0.9 ) {\n\t  pos = (minheight*100/sumh);\n\t}\n      }\n\n      if ( rel == \"above\" || rel == \"left\" ) {\n\tparent.prepend(pane);\n      } else {\n\tpos = 100 - pos;\n\tparent.append(pane);\n      }\n\n      var panes = $(relto).add(pane);\n      panes.wrap('<div class=\"pane-wrapper\"></div>');\n\n      parent.split({ orientation:dir,\n\t\t     position:pos+\"%\",\n\t\t     limit:10,\n\t\t     onDragStart: function() { parent.tile('resize_start'); },\n\t\t     onDrag:      function() { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd:   function() { parent.tile('resize_save'); }\n\t\t   });\n      parent.tile('resize_save');\n      panes.trigger(\"pane.resize\");\n\n      return parent;\n    },\n\n    /**\n     * Remove a tile from the DOM, causing the remaining half to occupy\n     * the whole space.  Again, `this` is the content pane.\n     */\n     close: function() {\n      var pane = this;\n      var splitContainer = pane.closest(\".pane-container\");\n\n      splitContainer.split().destroy();\n      pane.parent().remove();\n      splitContainer.children().first().children().first().unwrap().unwrap();\n    }\n  }; // methods\n\n  function paneInfo(pane) {\n    var panes = pane.children();\n\n    return { splitter: pane.split(),\n             first:    $(panes[0]).children()[0],\n\t     second:   $(panes[2]).children()[0]\n           };\n  }\n\n  function flipdir(dir) {\n    return dir == \"horizontal\" ? \"vertical\" : \"horizontal\";\n  }\n\n  /**\n   * Generate a tiled subwindow layout from a hierarchy of `<div>`\n   * elements.  Below is the HTML that creates the SWISH 2.0 subwindow\n   * layout.  This plugin uses the class `horizontal` or `vertical` to\n   * decide on the direction of the split and the attribute `data-split`\n   * to locate the split location.\n   *\n   *     <div class=\"tile horizontal\" data-split=\"60%\">\n   *       <div class=\"prolog-editor\"></div>\n   *       <div class=\"tile vertical\" data-split=\"70%\">\n   *         <div class=\"prolog-runners\"></div>\n   *         <div class=\"prolog-query\"></div>\n   *       </div>\n   *     </div>\n   *\n   * @class tile\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example $(\".tile\").tile();\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tile = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"0.11.1\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e;\n                $e = $.Event(namespace + type);\n                (args = args || []).unshift($e);\n                this.$el.trigger.apply(this.$el, args);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function getRegex(patterns, caseSensitive, wordsOnly) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = o.name || nameGenerator();\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", this.name, suggestions, false);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", this.name, suggestions, true);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        rendered += suggestions.length;\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\n                        that.async && that.trigger(\"asyncReceived\", query);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $(\"<div>\").text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, isDatasetEmpty);\n                function isDatasetEmpty(dataset) {\n                    return dataset.isEmpty();\n                }\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n                this._updateHint();\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, payload, cancelMove;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                payload = data ? data.obj : null;\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", payload);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(newVal);\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n                autocomplete: \"off\",\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                autocomplete: \"off\",\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});\ndefine(\"typeahead\", [\"jquery\"], (function (global) {\n    return function () {\n        var ret, fn;\n       fn = function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      };\n        ret = fn.apply(global, arguments);\n        return ret;\n    };\n}(this)));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Support the SWISH search box.  This we want to find:\n *\n *   - Predicates based on templates we also use for template completion\n *   - Source code (line)\t\t[TBD]\n *   - Saved programs by\n *     - Name\n *     - Tag\n *     - Description\t\t\t[TBD]\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('search',[ \"jquery\", \"config\", \"utils\", \"bloodhound\", \"typeahead\" ],\n       function($, config, utils, Bloodhound) {\n\n(function($) {\n  var pluginName = 'search';\n\n  /** @lends $.fn.search */\n  var methods = {\n    /**\n     * Turn Bootstrap search input into a typeahead widget\n     * @param {Object}  [options]\n     * @param {Boolean} [options.search=true] If false, merely use\n     * typeahead to fill a value.\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar query;\t\t\t/* current query */\n\n\t\t /*******************************\n\t\t *\t FILE COMPLETION\t*\n\t\t *******************************/\n\n\tvar files = new Bloodhound({\n\t\t\tname: \"files\",\n\t\t\tremote: { url: config.http.locations.swish_typeahead +\n\t\t\t\t       \"?set=file&q=%QUERY\",\n\t\t\t\t  wildcard: '%QUERY'\n\t\t\t},\n\t\t\tdatumTokenizer: fileTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tfiles.initialize();\n\n\tfunction fileTokenizer(f) {\n\t  return (f.tags||[]).push(f.name);\n\t}\n\n\tfunction renderFile(f) {\n\t  function filetype(file) {\n\t    return file.split('.').pop();\n\t  }\n\t  function filebase(file) {\n\t    return file.split('.').slice(0,-1).join(\".\");\n\t  }\n\n\t  var str = \"<div class=\\\"tt-match file type-icon \"\n\t          + filetype(f.name)\n\t          + \"\\\">\"\n\t\t  + \"<span class=\\\"tt-label\\\">\"\n\t\t  + utils.htmlEncode(filebase(f.name));\n\t          + \"</span>\";\n\n\t  if ( f.tags ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    for(var i=0; i<f.tags.length; i++) {\n\t      var tag = f.tags[i];\n\t      str += \"<span class=\\\"tt-tag\\\">\"\n\t\t   + utils.htmlEncode(tag)\n\t\t   + \"</span>\";\n\t    }\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( f.title )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(f.title)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH STORE SOURCES\t*\n\t\t *******************************/\n\n\tvar storeContent = new Bloodhound({\n\t\t\t     name: \"store_content\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=store_content&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tstoreContent.initialize();\n\n\tvar currentFile  = null;\n\tvar currentAlias = null;\n\tfunction renderStoreSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    var ext = hit.file.split('.').pop();\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+ext+\"\\\">\"\n\t\t+ \"<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \"</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  return str+renderSourceMatch(hit);\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH REMOTE SOURCES\t*\n\t\t *******************************/\n\n\tvar sources = new Bloodhound({\n\t\t\tname: \"source\",\n\t\t\tlimit: 15,\n\t\t\tcache: false,\n\t\t\tquery_cache_length: 1,\n\t\t\tremote: {\n\t\t\t  url: config.http.locations.swish_typeahead +\n\t\t\t\t\"?set=sources&q=%QUERY\",\n\t\t\t  replace: bloodHoundURL\n\t\t\t},\n\t\t\tdatumTokenizer: sourceLineTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tsources.initialize();\n\n\tfunction sourceLineTokenizer(hit) {\n\t  return Bloodhound.tokenizers.whitespace(hit.text);\n\t}\n\n\tfunction renderSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+hit.ext+\"\\\">\"\n\t        + \"<span class=\\\"tt-path-alias\\\">\"\n\t        + utils.htmlEncode(hit.alias)\n\t\t+ \"</span>(<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \")</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  if ( hit.text )\n\t    str += renderSourceMatch(hit);\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *    PREDICATE COMPLETION\t*\n\t\t *******************************/\n\n\tfunction predicateMatcher(q, cb) {\n\t  var templates = config.swish.templates;\n\t  var matches = [];\n\t  var ql = q.split(\" \");\n\t  var pl = [];\n\n\t  for(var i=0; i<ql.length; i++)\n\t    pl.push({prefix:ql[i], regex:new RegExp(\"_\"+ql[i])});\n\n\t  for(var i=0; i<templates.length; i++) {\n\t    var templ = templates[i];\n\n\t    if ( templ.arity !== undefined ) {\n\t      for(var j=0, match=true; j<pl.length && match; j++) {\n\t\tif ( !(templ.name.startsWith(pl[j].prefix) ||\n\t\t       templ.name.match(pl[j].regex)) )\n\t\t  match=false;\n\t      }\n\t      if ( match )\n\t        matches.push(templ);\n\t    }\n\t  }\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderPredicate(p) {\n\t  var str = \"<div class=\\\"tt-match predicate\";\n\n\t  if ( p.type ) str += \" \" + p.type;\n\t  if ( p.mode ) str += \"\\\" title=\\\"\"\n                             + p.mode;\n\n\t  str += \"\\\">\"\n               + \"<span class=\\\"tt-label\\\">\"\n\t       + utils.htmlEncode(p.name)\n\t       + \"/\"\n\t       + p.arity\n\t       + \"</span>\";\n\n\t  if ( p.iso ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    if ( p.iso )\n\t      str += \"<span class=\\\"tt-tag\\\">ISO</span>\";\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( p.summary )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(p.summary)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *\t   SEARCH SOURCE\t*\n\t\t *******************************/\n\n\tvar sourceRE;\n\n\tfunction sourceMatcher(q, cb) {\n\t  query = q;\n\t  if ( q.length < 2 ) return [];\n\n\t  var matches = [];\n\t  var re = new RegExp(\"\\\\b\"+q, \"g\");\n\t  sourceRE = re;\n\n\t  $(\".prolog-editor\").each(function() {\n\t    var editor = this;\n\t    var m = $(editor).prologEditor('search', re, {max: 7});\n\n\t    for(var i=0; i<m.length; i++) {\n\t      m[i].editor = editor;\n\t      m[i].regex  = sourceRE;\n\t      matches.push(m[i]);\n\t    }\n\t  });\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderSourceMatch(hit) {\n\t  var text = hit.text;\n\t  var i;\n\n\t  if ( (i=text.search(sourceRE)) > 20 )\n\t    text = \"...\"+text.slice(i-17);\n\t  if ( text.length > 80 )\n\t    text = text.substring(0,80);\n\n\t  var str = \"<div class=\\\"tt-match source\\\">\"\n\t          + \"<span class=\\\"tt-line\\\">\"\n\t\t  + \"<span class=\\\"tt-lineno\\\">\"\n\t\t  + hit.line\n\t\t  + \"</span>\"\n\t\t  + \"<span class=\\\"tt-text\\\">\"\n\t\t  + utils.htmlEncode(text)\n\t          + \"</span>\"\n\t          + \"</span>\"\n\t\t  + \"</div>\";\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t       USERS\t\t*\n\t\t *******************************/\n\n\tvar users = new Bloodhound({\n\t\t\t     name: \"users\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=user&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tusers.initialize();\n\n\tfunction renderUser(hit) {\n\t  function avatar(hit) {\n\t    if ( hit.avatar ) {\n\t      return '<img class=\"avatar\" src=\"'+encodeURI(hit.avatar)+'\">';\n\t    } else {\n\t      return \"\";\n\t    }\n\t  }\n\n\t  var str = '<div class=\"tt-match user\">'\n\t\t  + avatar(hit)\n\t\t  + '<span class=\"tt-label\">'\n\t\t  + utils.htmlEncode(hit.name)\n\t\t  + '</span>'\n\t\t  + '</div>';\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t      COMBINE\t\t*\n\t\t *******************************/\n\n\tvar typeaheadProperties = {\n\t  source:\t\t\t/* local source */\n\t  { name: \"source\",\n\t    display: 'text',\n\t    source: sourceMatcher,\n\t    templates: { suggestion: renderSourceMatch }\n\t  },\n\t  sources:\t\t\t/* remote sources */\n\t  { name: \"sources\",\n\t    display: 'file',\n\t    source: sources.ttAdapter(),\n\t    templates: { suggestion: renderSourceLine },\n\t    limit: 15\n\t  },\n\t  files:\t\t\t/* files in gitty on name and tags */\n\t  { name: \"files\",\n\t    display: 'name',\n\t    source: files.ttAdapter(),\n\t    templates: { suggestion: renderFile }\n\t  },\n\t  store_content:\t\t/* file content in gitty */\n\t  { name: \"store_content\",\n\t    display: 'file',\n\t    source: storeContent.ttAdapter(),\n\t    templates: { suggestion: renderStoreSourceLine }\n\t  },\n\t  predicates:\t\t\t/* built-in and library predicates */\n\t  { name: \"predicates\",\n\t    display: function(p) {\n\t      return p.name+\"/\"+p.arity;\n\t    },\n\t    source: predicateMatcher,\n\t    templates: { suggestion: renderPredicate }\n\t  },\n\t  users:\t\t\t/* Users (profiles) */\n\t  { name: \"users\",\n\t    display: \"name\",\n\t    source: users.ttAdapter(),\n\t    templates: { suggestion: renderUser }\n\t  }\n\t};\n\n\t// Get the actual query string exchanged between\n\t// typeahead and Bloodhound.\n\tvar of = typeaheadProperties.sources.source;\n\ttypeaheadProperties.sources.source = function(q, cb) {\n\t  currentFile = null;\n\t  currentAlias = null;\n\t  sourceRE = new RegExp(RegExp.escape(q));\n\t  return of(q, cb);\n\t}\n\n\t/**\n\t * Assemble the sources\n\t */\n\n\tfunction ttSources(from) {\n\t  var sources = [];\n\t  var src = from.replace(/\\s+/g, ' ').split(\" \");\n\n\t  for(var i=0; i<src.length; i++) {\n\t    sources.push(typeaheadProperties[src[i]]);\n\t  }\n\n\t  return sources;\n\t}\n\n\t\t /*******************************\n\t\t *\t     TYPEAHEAD\t\t*\n\t\t *******************************/\n\n\telem.typeahead({ minLength: 2,\n\t\t\t highlight: true\n\t\t       },\n\t\t       ttSources(elem.data(\"search-in\")))\n\t  .on('typeahead:selected typeahead:autocompleted',\n\t      function(ev, datum) {\n\n\t\tif ( options.search == false ) {\n\t\t  elem.data(\"json-value\", datum);\n\t\t} else {\n\t\t  if ( datum.type == \"store\" ) {\n\t\t    if ( datum.query ) {\n\t\t      datum.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      datum.showAllMatches = true;\n\t\t    }\n\t\t    $(ev.target).closest(\".swish\").swish('playFile', datum);\n\t\t  } else if ( datum.arity !== undefined ) {\n\t\t    $(\".swish-event-receiver\").trigger(\"pldoc\", datum);\n\t\t  } else if ( datum.editor !== undefined &&\n\t\t\t      datum.line !== undefined ) {\n\t\t    $(datum.editor).prologEditor('gotoLine', datum.line,\n\t\t\t\t\t\t { regex: datum.regex,\n\t\t\t\t\t\t   showAllMatches: true\n\t\t\t\t\t\t });\n\t\t  } else if ( datum.alias !== undefined ) {\n\t\t    var url = encodeURI(\"/\"+datum.alias+\n\t\t\t\t\t\"/\"+datum.file+\n\t\t\t\t\t\".\"+datum.ext);\n\t\t    var play = { url:url, line:datum.line };\n\n\t\t    if ( datum.query ) {\n\t\t      play.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      play.showAllMatches = true;\n\t\t    }\n\n\t\t    $(ev.target).closest(\".swish\").swish('playURL', play);\n\t\t  } else {\n\t\t    elem.data(\"json-value\", datum);\n\t\t    console.log(elem.data(\"json-value\"));\n\t\t  }\n\t\t}\n\t      });\n\n\tif ( options.search != false ) {\n\t  elem.closest(\"form\").submit(function(ev) {\n\t    var data = elem.data(\"json-value\");\n\t    var str  = elem.val();\n\n\t    if ( !(data && data.datum && data.datum.label == str) )\n\t      data = str;\n\n\t    elem.val(\"\");\n\t    elem.data(\"json-value\", null);\n\n\t    elem.search('search', data);\n\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Search for the a given query.\n     *\n     * @param {String|Object} q specifies the search target. If it is a\n     * string, no autocompletion was performed.  If it is an object, it\n     * is the object returned by Bloodhound\n     */\n    search: function(q) {\n      alert(\"Full search not yet implemented\\n\"+\n\t    \"Please select from auto completion list\");\n    }\n  }; // methods\n\n  function bloodHoundURL(url, query) {\n    var url = url.replace('%QUERY',\n\t\t\t  encodeURIComponent(query));\n    var match = $(\"label.active > input[name=smatch]\").val();\n    if ( match )\n      url += \"&match=\"+match;\n\n    return url;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class search\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.search = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nRegExp.escape = function(string) {\n  return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\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// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('cm/lib/codemirror',factory) :\n\t(global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n// Kludges for bugs and behavior differences that can't be feature\n// detected are enabled based on userAgent etc sniffing.\nvar userAgent = navigator.userAgent;\nvar platform = navigator.platform;\n\nvar gecko = /gecko\\/\\d/i.test(userAgent);\nvar ie_upto10 = /MSIE \\d/.test(userAgent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\nvar edge = /Edge\\/(\\d+)/.exec(userAgent);\nvar ie = ie_upto10 || ie_11up || edge;\nvar ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\nvar webkit = !edge && /WebKit\\//.test(userAgent);\nvar qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\nvar chrome = !edge && /Chrome\\//.test(userAgent);\nvar presto = /Opera\\//.test(userAgent);\nvar safari = /Apple Computer/.test(navigator.vendor);\nvar mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\nvar phantom = /PhantomJS/.test(userAgent);\n\nvar ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\nvar android = /Android/.test(userAgent);\n// This is woefully incomplete. Suggestions for alternative methods welcome.\nvar mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\nvar mac = ios || /Mac/.test(platform);\nvar chromeOS = /\\bCrOS\\b/.test(userAgent);\nvar windows = /win/i.test(platform);\n\nvar presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\nif (presto_version) { presto_version = Number(presto_version[1]); }\nif (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\nvar flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\nvar captureRightClick = gecko || (ie && ie_version >= 9);\n\nfunction classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\nvar rmClass = function(node, cls) {\n  var current = node.className;\n  var match = classTest(cls).exec(current);\n  if (match) {\n    var after = current.slice(match.index + match[0].length);\n    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n  }\n};\n\nfunction removeChildren(e) {\n  for (var count = e.childNodes.length; count > 0; --count)\n    { e.removeChild(e.firstChild); }\n  return e\n}\n\nfunction removeChildrenAndAdd(parent, e) {\n  return removeChildren(parent).appendChild(e)\n}\n\nfunction elt(tag, content, className, style) {\n  var e = document.createElement(tag);\n  if (className) { e.className = className; }\n  if (style) { e.style.cssText = style; }\n  if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n  else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n  return e\n}\n// wrapper for elt, which removes the elt from the accessibility tree\nfunction eltP(tag, content, className, style) {\n  var e = elt(tag, content, className, style);\n  e.setAttribute(\"role\", \"presentation\");\n  return e\n}\n\nvar range;\nif (document.createRange) { range = function(node, start, end, endNode) {\n  var r = document.createRange();\n  r.setEnd(endNode || node, end);\n  r.setStart(node, start);\n  return r\n}; }\nelse { range = function(node, start, end) {\n  var r = document.body.createTextRange();\n  try { r.moveToElementText(node.parentNode); }\n  catch(e) { return r }\n  r.collapse(true);\n  r.moveEnd(\"character\", end);\n  r.moveStart(\"character\", start);\n  return r\n}; }\n\nfunction contains(parent, child) {\n  if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n    { child = child.parentNode; }\n  if (parent.contains)\n    { return parent.contains(child) }\n  do {\n    if (child.nodeType == 11) { child = child.host; }\n    if (child == parent) { return true }\n  } while (child = child.parentNode)\n}\n\nfunction activeElt() {\n  // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n  // IE < 10 will throw when accessed while the page is loading or in an iframe.\n  // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n  var activeElement;\n  try {\n    activeElement = document.activeElement;\n  } catch(e) {\n    activeElement = document.body || null;\n  }\n  while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n    { activeElement = activeElement.shadowRoot.activeElement; }\n  return activeElement\n}\n\nfunction addClass(node, cls) {\n  var current = node.className;\n  if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n}\nfunction joinClasses(a, b) {\n  var as = a.split(\" \");\n  for (var i = 0; i < as.length; i++)\n    { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n  return b\n}\n\nvar selectInput = function(node) { node.select(); };\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\n  { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\nelse if (ie) // Suppress mysterious IE10 errors\n  { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\nfunction bind(f) {\n  var args = Array.prototype.slice.call(arguments, 1);\n  return function(){return f.apply(null, args)}\n}\n\nfunction copyObj(obj, target, overwrite) {\n  if (!target) { target = {}; }\n  for (var prop in obj)\n    { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n      { target[prop] = obj[prop]; } }\n  return target\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countColumn(string, end, tabSize, startIndex, startValue) {\n  if (end == null) {\n    end = string.search(/[^\\s\\u00a0]/);\n    if (end == -1) { end = string.length; }\n  }\n  for (var i = startIndex || 0, n = startValue || 0;;) {\n    var nextTab = string.indexOf(\"\\t\", i);\n    if (nextTab < 0 || nextTab >= end)\n      { return n + (end - i) }\n    n += nextTab - i;\n    n += tabSize - (n % tabSize);\n    i = nextTab + 1;\n  }\n}\n\nvar Delayed = function() {this.id = null;};\nDelayed.prototype.set = function (ms, f) {\n  clearTimeout(this.id);\n  this.id = setTimeout(f, ms);\n};\n\nfunction indexOf(array, elt) {\n  for (var i = 0; i < array.length; ++i)\n    { if (array[i] == elt) { return i } }\n  return -1\n}\n\n// Number of pixels added to scroller and sizer to hide scrollbar\nvar scrollerGap = 30;\n\n// Returned or thrown by various protocols to signal 'I'm not\n// handling this'.\nvar Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n// Reused option objects for setSelection & friends\nvar sel_dontScroll = {scroll: false};\nvar sel_mouse = {origin: \"*mouse\"};\nvar sel_move = {origin: \"+move\"};\n\n// The inverse of countColumn -- find the offset that corresponds to\n// a particular column.\nfunction findColumn(string, goal, tabSize) {\n  for (var pos = 0, col = 0;;) {\n    var nextTab = string.indexOf(\"\\t\", pos);\n    if (nextTab == -1) { nextTab = string.length; }\n    var skipped = nextTab - pos;\n    if (nextTab == string.length || col + skipped >= goal)\n      { return pos + Math.min(skipped, goal - col) }\n    col += nextTab - pos;\n    col += tabSize - (col % tabSize);\n    pos = nextTab + 1;\n    if (col >= goal) { return pos }\n  }\n}\n\nvar spaceStrs = [\"\"];\nfunction spaceStr(n) {\n  while (spaceStrs.length <= n)\n    { spaceStrs.push(lst(spaceStrs) + \" \"); }\n  return spaceStrs[n]\n}\n\nfunction lst(arr) { return arr[arr.length-1] }\n\nfunction map(array, f) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n  return out\n}\n\nfunction insertSorted(array, value, score) {\n  var pos = 0, priority = score(value);\n  while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n  array.splice(pos, 0, value);\n}\n\nfunction nothing() {}\n\nfunction createObj(base, props) {\n  var inst;\n  if (Object.create) {\n    inst = Object.create(base);\n  } else {\n    nothing.prototype = base;\n    inst = new nothing();\n  }\n  if (props) { copyObj(props, inst); }\n  return inst\n}\n\nvar nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nfunction isWordCharBasic(ch) {\n  return /\\w/.test(ch) || ch > \"\\x80\" &&\n    (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n}\nfunction isWordChar(ch, helper) {\n  if (!helper) { return isWordCharBasic(ch) }\n  if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n  return helper.test(ch)\n}\n\nfunction isEmpty(obj) {\n  for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n  return true\n}\n\n// Extending unicode characters. A series of a non-extending char +\n// any number of extending chars is treated as a single unit as far\n// as editing and measuring is concerned. This is not fully correct,\n// since some scripts/fonts/browsers also treat other configurations\n// of code points as a group.\nvar extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\nfunction isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\nfunction skipExtendingChars(str, pos, dir) {\n  while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n  return pos\n}\n\n// Returns the value from the range [`from`; `to`] that satisfies\n// `pred` and is closest to `from`. Assumes that at least `to` satisfies `pred`.\nfunction findFirst(pred, from, to) {\n  for (;;) {\n    if (Math.abs(from - to) <= 1) { return pred(from) ? from : to }\n    var mid = Math.floor((from + to) / 2);\n    if (pred(mid)) { to = mid; }\n    else { from = mid; }\n  }\n}\n\n// The display handles the DOM integration, both for input reading\n// and content drawing. It holds references to DOM nodes and\n// display-related state.\n\nfunction Display(place, doc, input) {\n  var d = this;\n  this.input = input;\n\n  // Covers bottom-right square when both scrollbars are present.\n  d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n  d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Covers bottom of gutter when coverGutterNextToScrollbar is on\n  // and h scrollbar is present.\n  d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n  d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Will contain the actual code, positioned to cover the viewport.\n  d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n  // Elements are added to these to represent selection and cursors.\n  d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n  d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n  // A visibility: hidden element used to find the size of things.\n  d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n  // When lines outside of the viewport are measured, they are drawn in this.\n  d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n  // Wraps everything that needs to exist inside the vertically-padded coordinate system\n  d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                    null, \"position: relative; outline: none\");\n  var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n  // Moved around its parent to cover visible view.\n  d.mover = elt(\"div\", [lines], null, \"position: relative\");\n  // Set to the height of the document, allowing scrolling.\n  d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n  d.sizerWidth = null;\n  // Behavior of elts with overflow: auto and padding is\n  // inconsistent across browsers. This is used to ensure the\n  // scrollable area is big enough.\n  d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n  // Will contain the gutters, if any.\n  d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n  d.lineGutter = null;\n  // Actual scrollable element.\n  d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n  d.scroller.setAttribute(\"tabIndex\", \"-1\");\n  // The element in which the editor lives.\n  d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n  // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n  if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n  if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n  if (place) {\n    if (place.appendChild) { place.appendChild(d.wrapper); }\n    else { place(d.wrapper); }\n  }\n\n  // Current rendered range (may be bigger than the view window).\n  d.viewFrom = d.viewTo = doc.first;\n  d.reportedViewFrom = d.reportedViewTo = doc.first;\n  // Information about the rendered lines.\n  d.view = [];\n  d.renderedView = null;\n  // Holds info about a single rendered line when it was rendered\n  // for measurement, while not in view.\n  d.externalMeasured = null;\n  // Empty space (in pixels) above the view\n  d.viewOffset = 0;\n  d.lastWrapHeight = d.lastWrapWidth = 0;\n  d.updateLineNumbers = null;\n\n  d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n  d.scrollbarsClipped = false;\n\n  // Used to only resize the line number gutter when necessary (when\n  // the amount of lines crosses a boundary that makes its width change)\n  d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n  // Set to true when a non-horizontal-scrolling line widget is\n  // added. As an optimization, line widget aligning is skipped when\n  // this is false.\n  d.alignWidgets = false;\n\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n  // Tracks the maximum line length so that the horizontal scrollbar\n  // can be kept static when scrolling.\n  d.maxLine = null;\n  d.maxLineLength = 0;\n  d.maxLineChanged = false;\n\n  // Used for measuring wheel scrolling granularity\n  d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n  // True when shift is held down.\n  d.shift = false;\n\n  // Used to track whether anything happened since the context menu\n  // was opened.\n  d.selForContextMenu = null;\n\n  d.activeTouch = null;\n\n  input.init(d);\n}\n\n// Find the line object corresponding to the given line number.\nfunction getLine(doc, n) {\n  n -= doc.first;\n  if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n  var chunk = doc;\n  while (!chunk.lines) {\n    for (var i = 0;; ++i) {\n      var child = chunk.children[i], sz = child.chunkSize();\n      if (n < sz) { chunk = child; break }\n      n -= sz;\n    }\n  }\n  return chunk.lines[n]\n}\n\n// Get the part of a document between two positions, as an array of\n// strings.\nfunction getBetween(doc, start, end) {\n  var out = [], n = start.line;\n  doc.iter(start.line, end.line + 1, function (line) {\n    var text = line.text;\n    if (n == end.line) { text = text.slice(0, end.ch); }\n    if (n == start.line) { text = text.slice(start.ch); }\n    out.push(text);\n    ++n;\n  });\n  return out\n}\n// Get the lines between from and to, as array of strings.\nfunction getLines(doc, from, to) {\n  var out = [];\n  doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n  return out\n}\n\n// Update the height of a line, propagating the height change\n// upwards to parent nodes.\nfunction updateLineHeight(line, height) {\n  var diff = height - line.height;\n  if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n}\n\n// Given a line object, find its line number by walking up through\n// its parent links.\nfunction lineNo(line) {\n  if (line.parent == null) { return null }\n  var cur = line.parent, no = indexOf(cur.lines, line);\n  for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n    for (var i = 0;; ++i) {\n      if (chunk.children[i] == cur) { break }\n      no += chunk.children[i].chunkSize();\n    }\n  }\n  return no + cur.first\n}\n\n// Find the line at the given vertical position, using the height\n// information in the document tree.\nfunction lineAtHeight(chunk, h) {\n  var n = chunk.first;\n  outer: do {\n    for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n      var child = chunk.children[i$1], ch = child.height;\n      if (h < ch) { chunk = child; continue outer }\n      h -= ch;\n      n += child.chunkSize();\n    }\n    return n\n  } while (!chunk.lines)\n  var i = 0;\n  for (; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i], lh = line.height;\n    if (h < lh) { break }\n    h -= lh;\n  }\n  return n + i\n}\n\nfunction isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\nfunction lineNumberFor(options, i) {\n  return String(options.lineNumberFormatter(i + options.firstLineNumber))\n}\n\n// A Pos instance represents a position within the text.\nfunction Pos(line, ch, sticky) {\n  if ( sticky === void 0 ) sticky = null;\n\n  if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n  this.line = line;\n  this.ch = ch;\n  this.sticky = sticky;\n}\n\n// Compare two positions, return 0 if they are the same, a negative\n// number when a is less, and a positive number otherwise.\nfunction cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\nfunction equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\nfunction copyPos(x) {return Pos(x.line, x.ch)}\nfunction maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\nfunction minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n// Most of the external API clips given positions to make sure they\n// actually exist within the document.\nfunction clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\nfunction clipPos(doc, pos) {\n  if (pos.line < doc.first) { return Pos(doc.first, 0) }\n  var last = doc.first + doc.size - 1;\n  if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n  return clipToLen(pos, getLine(doc, pos.line).text.length)\n}\nfunction clipToLen(pos, linelen) {\n  var ch = pos.ch;\n  if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n  else if (ch < 0) { return Pos(pos.line, 0) }\n  else { return pos }\n}\nfunction clipPosArray(doc, array) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n  return out\n}\n\n// Optimize some code when these features are not used.\nvar sawReadOnlySpans = false;\nvar sawCollapsedSpans = false;\n\nfunction seeReadOnlySpans() {\n  sawReadOnlySpans = true;\n}\n\nfunction seeCollapsedSpans() {\n  sawCollapsedSpans = true;\n}\n\n// TEXTMARKER SPANS\n\nfunction MarkedSpan(marker, from, to) {\n  this.marker = marker;\n  this.from = from; this.to = to;\n}\n\n// Search an array of spans for a span matching the given marker.\nfunction getMarkedSpanFor(spans, marker) {\n  if (spans) { for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.marker == marker) { return span }\n  } }\n}\n// Remove a span from an array, returning undefined if no spans are\n// left (we don't store arrays for lines without spans).\nfunction removeMarkedSpan(spans, span) {\n  var r;\n  for (var i = 0; i < spans.length; ++i)\n    { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n  return r\n}\n// Add a span to a line.\nfunction addMarkedSpan(line, span) {\n  line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n  span.marker.attachLine(line);\n}\n\n// Used for the algorithm that adjusts markers for a change in the\n// document. These functions cut an array of spans at a given\n// character position, returning an array of remaining chunks (or\n// undefined if nothing remains).\nfunction markedSpansBefore(old, startCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n    if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n    }\n  } }\n  return nw\n}\nfunction markedSpansAfter(old, endCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n    if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                            span.to == null ? null : span.to - endCh));\n    }\n  } }\n  return nw\n}\n\n// Given a change object, compute the new set of marker spans that\n// cover the line in which the change took place. Removes spans\n// entirely within the change, reconnects spans belonging to the\n// same marker that appear on both sides of the change, and cuts off\n// spans partially within the change. Returns an array of span\n// arrays with one element for each line in (after) the change.\nfunction stretchSpansOverChange(doc, change) {\n  if (change.full) { return null }\n  var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n  var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n  if (!oldFirst && !oldLast) { return null }\n\n  var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n  // Get the spans that 'stick out' on both sides\n  var first = markedSpansBefore(oldFirst, startCh, isInsert);\n  var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n  // Next, merge those two ends\n  var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n  if (first) {\n    // Fix up .to properties of first\n    for (var i = 0; i < first.length; ++i) {\n      var span = first[i];\n      if (span.to == null) {\n        var found = getMarkedSpanFor(last, span.marker);\n        if (!found) { span.to = startCh; }\n        else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n      }\n    }\n  }\n  if (last) {\n    // Fix up .from in last (or move them into first in case of sameLine)\n    for (var i$1 = 0; i$1 < last.length; ++i$1) {\n      var span$1 = last[i$1];\n      if (span$1.to != null) { span$1.to += offset; }\n      if (span$1.from == null) {\n        var found$1 = getMarkedSpanFor(first, span$1.marker);\n        if (!found$1) {\n          span$1.from = offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      } else {\n        span$1.from += offset;\n        if (sameLine) { (first || (first = [])).push(span$1); }\n      }\n    }\n  }\n  // Make sure we didn't create any zero-length spans\n  if (first) { first = clearEmptySpans(first); }\n  if (last && last != first) { last = clearEmptySpans(last); }\n\n  var newMarkers = [first];\n  if (!sameLine) {\n    // Fill gap with whole-line-spans\n    var gap = change.text.length - 2, gapMarkers;\n    if (gap > 0 && first)\n      { for (var i$2 = 0; i$2 < first.length; ++i$2)\n        { if (first[i$2].to == null)\n          { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n    for (var i$3 = 0; i$3 < gap; ++i$3)\n      { newMarkers.push(gapMarkers); }\n    newMarkers.push(last);\n  }\n  return newMarkers\n}\n\n// Remove spans that are empty and don't have a clearWhenEmpty\n// option of false.\nfunction clearEmptySpans(spans) {\n  for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n      { spans.splice(i--, 1); }\n  }\n  if (!spans.length) { return null }\n  return spans\n}\n\n// Used to 'clip' out readOnly ranges when making a change.\nfunction removeReadOnlyRanges(doc, from, to) {\n  var markers = null;\n  doc.iter(from.line, to.line + 1, function (line) {\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var mark = line.markedSpans[i].marker;\n      if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n        { (markers || (markers = [])).push(mark); }\n    } }\n  });\n  if (!markers) { return null }\n  var parts = [{from: from, to: to}];\n  for (var i = 0; i < markers.length; ++i) {\n    var mk = markers[i], m = mk.find(0);\n    for (var j = 0; j < parts.length; ++j) {\n      var p = parts[j];\n      if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n      var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n      if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n        { newParts.push({from: p.from, to: m.from}); }\n      if (dto > 0 || !mk.inclusiveRight && !dto)\n        { newParts.push({from: m.to, to: p.to}); }\n      parts.splice.apply(parts, newParts);\n      j += newParts.length - 3;\n    }\n  }\n  return parts\n}\n\n// Connect or disconnect spans from a line.\nfunction detachMarkedSpans(line) {\n  var spans = line.markedSpans;\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.detachLine(line); }\n  line.markedSpans = null;\n}\nfunction attachMarkedSpans(line, spans) {\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.attachLine(line); }\n  line.markedSpans = spans;\n}\n\n// Helpers used when computing which overlapping collapsed span\n// counts as the larger one.\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n// Returns a number indicating which of two overlapping collapsed\n// spans is larger (and thus includes the other). Falls back to\n// comparing ids when the spans cover exactly the same range.\nfunction compareCollapsedMarkers(a, b) {\n  var lenDiff = a.lines.length - b.lines.length;\n  if (lenDiff != 0) { return lenDiff }\n  var aPos = a.find(), bPos = b.find();\n  var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n  if (fromCmp) { return -fromCmp }\n  var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n  if (toCmp) { return toCmp }\n  return b.id - a.id\n}\n\n// Find out whether a line ends or starts in a collapsed span. If\n// so, return the marker for that span.\nfunction collapsedSpanAtSide(line, start) {\n  var sps = sawCollapsedSpans && line.markedSpans, found;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n      { found = sp.marker; }\n  } }\n  return found\n}\nfunction collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\nfunction collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n// Test whether there exists a collapsed span that partially\n// overlaps (covers the start or end, but not both) of a new span.\n// Such overlap is not allowed.\nfunction conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n  var line = getLine(doc, lineNo$$1);\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var i = 0; i < sps.length; ++i) {\n    var sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    var found = sp.marker.find(0);\n    var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n    var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n    if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n    if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n        fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n      { return true }\n  } }\n}\n\n// A visual line is a line as drawn on the screen. Folding, for\n// example, can cause multiple logical lines to appear on the same\n// visual line. This finds the start of the visual line that the\n// given line is part of (usually that is the line itself).\nfunction visualLine(line) {\n  var merged;\n  while (merged = collapsedSpanAtStart(line))\n    { line = merged.find(-1, true).line; }\n  return line\n}\n\nfunction visualLineEnd(line) {\n  var merged;\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return line\n}\n\n// Returns an array of logical lines that continue the visual line\n// started by the argument, or undefined if there are no such lines.\nfunction visualLineContinued(line) {\n  var merged, lines;\n  while (merged = collapsedSpanAtEnd(line)) {\n    line = merged.find(1, true).line\n    ;(lines || (lines = [])).push(line);\n  }\n  return lines\n}\n\n// Get the line number of the start of the visual line that the\n// given line number is part of.\nfunction visualLineNo(doc, lineN) {\n  var line = getLine(doc, lineN), vis = visualLine(line);\n  if (line == vis) { return lineN }\n  return lineNo(vis)\n}\n\n// Get the line number of the start of the next visual line after\n// the given line.\nfunction visualLineEndNo(doc, lineN) {\n  if (lineN > doc.lastLine()) { return lineN }\n  var line = getLine(doc, lineN), merged;\n  if (!lineIsHidden(doc, line)) { return lineN }\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return lineNo(line) + 1\n}\n\n// Compute whether a line is hidden. Lines count as hidden when they\n// are part of a visual line that starts with another line, or when\n// they are entirely covered by collapsed, non-widget span.\nfunction lineIsHidden(doc, line) {\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    if (sp.from == null) { return true }\n    if (sp.marker.widgetNode) { continue }\n    if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n      { return true }\n  } }\n}\nfunction lineIsHiddenInner(doc, line, span) {\n  if (span.to == null) {\n    var end = span.marker.find(1, true);\n    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n  }\n  if (span.marker.inclusiveRight && span.to == line.text.length)\n    { return true }\n  for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n    sp = line.markedSpans[i];\n    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n        (sp.to == null || sp.to != span.from) &&\n        (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n        lineIsHiddenInner(doc, line, sp)) { return true }\n  }\n}\n\n// Find the height above the given line.\nfunction heightAtLine(lineObj) {\n  lineObj = visualLine(lineObj);\n\n  var h = 0, chunk = lineObj.parent;\n  for (var i = 0; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i];\n    if (line == lineObj) { break }\n    else { h += line.height; }\n  }\n  for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n    for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n      var cur = p.children[i$1];\n      if (cur == chunk) { break }\n      else { h += cur.height; }\n    }\n  }\n  return h\n}\n\n// Compute the character length of a line, taking into account\n// collapsed ranges (see markText) that might hide parts, and join\n// other lines onto it.\nfunction lineLength(line) {\n  if (line.height == 0) { return 0 }\n  var len = line.text.length, merged, cur = line;\n  while (merged = collapsedSpanAtStart(cur)) {\n    var found = merged.find(0, true);\n    cur = found.from.line;\n    len += found.from.ch - found.to.ch;\n  }\n  cur = line;\n  while (merged = collapsedSpanAtEnd(cur)) {\n    var found$1 = merged.find(0, true);\n    len -= cur.text.length - found$1.from.ch;\n    cur = found$1.to.line;\n    len += cur.text.length - found$1.to.ch;\n  }\n  return len\n}\n\n// Find the longest line in the document.\nfunction findMaxLine(cm) {\n  var d = cm.display, doc = cm.doc;\n  d.maxLine = getLine(doc, doc.first);\n  d.maxLineLength = lineLength(d.maxLine);\n  d.maxLineChanged = true;\n  doc.iter(function (line) {\n    var len = lineLength(line);\n    if (len > d.maxLineLength) {\n      d.maxLineLength = len;\n      d.maxLine = line;\n    }\n  });\n}\n\n// BIDI HELPERS\n\nfunction iterateBidiSections(order, from, to, f) {\n  if (!order) { return f(from, to, \"ltr\") }\n  var found = false;\n  for (var i = 0; i < order.length; ++i) {\n    var part = order[i];\n    if (part.from < to && part.to > from || from == to && part.to == from) {\n      f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\");\n      found = true;\n    }\n  }\n  if (!found) { f(from, to, \"ltr\"); }\n}\n\nvar bidiOther = null;\nfunction getBidiPartAt(order, ch, sticky) {\n  var found;\n  bidiOther = null;\n  for (var i = 0; i < order.length; ++i) {\n    var cur = order[i];\n    if (cur.from < ch && cur.to > ch) { return i }\n    if (cur.to == ch) {\n      if (cur.from != cur.to && sticky == \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n    if (cur.from == ch) {\n      if (cur.from != cur.to && sticky != \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n  }\n  return found != null ? found : bidiOther\n}\n\n// Bidirectional ordering algorithm\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n// that this (partially) implements.\n\n// One-char codes used for character types:\n// L (L):   Left-to-Right\n// R (R):   Right-to-Left\n// r (AL):  Right-to-Left Arabic\n// 1 (EN):  European Number\n// + (ES):  European Number Separator\n// % (ET):  European Number Terminator\n// n (AN):  Arabic Number\n// , (CS):  Common Number Separator\n// m (NSM): Non-Spacing Mark\n// b (BN):  Boundary Neutral\n// s (B):   Paragraph Separator\n// t (S):   Segment Separator\n// w (WS):  Whitespace\n// N (ON):  Other Neutrals\n\n// Returns null if characters are ordered as they appear\n// (left-to-right), or an array of sections ({from, to, level}\n// objects) in the order in which they occur visually.\nvar bidiOrdering = (function() {\n  // Character types for codepoints 0 to 0xff\n  var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n  // Character types for codepoints 0x600 to 0x6f9\n  var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n  function charType(code) {\n    if (code <= 0xf7) { return lowTypes.charAt(code) }\n    else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n    else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n    else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n    else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n    else if (code == 0x200c) { return \"b\" }\n    else { return \"L\" }\n  }\n\n  var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n  var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n  function BidiSpan(level, from, to) {\n    this.level = level;\n    this.from = from; this.to = to;\n  }\n\n  return function(str, direction) {\n    var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n    var len = str.length, types = [];\n    for (var i = 0; i < len; ++i)\n      { types.push(charType(str.charCodeAt(i))); }\n\n    // W1. Examine each non-spacing mark (NSM) in the level run, and\n    // change the type of the NSM to the type of the previous\n    // character. If the NSM is at the start of the level run, it will\n    // get the type of sor.\n    for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n      var type = types[i$1];\n      if (type == \"m\") { types[i$1] = prev; }\n      else { prev = type; }\n    }\n\n    // W2. Search backwards from each instance of a European number\n    // until the first strong type (R, L, AL, or sor) is found. If an\n    // AL is found, change the type of the European number to Arabic\n    // number.\n    // W3. Change all ALs to R.\n    for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n      var type$1 = types[i$2];\n      if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n      else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n    }\n\n    // W4. A single European separator between two European numbers\n    // changes to a European number. A single common separator between\n    // two numbers of the same type changes to that type.\n    for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n      var type$2 = types[i$3];\n      if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n      else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n               (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n      prev$1 = type$2;\n    }\n\n    // W5. A sequence of European terminators adjacent to European\n    // numbers changes to all European numbers.\n    // W6. Otherwise, separators and terminators change to Other\n    // Neutral.\n    for (var i$4 = 0; i$4 < len; ++i$4) {\n      var type$3 = types[i$4];\n      if (type$3 == \",\") { types[i$4] = \"N\"; }\n      else if (type$3 == \"%\") {\n        var end = (void 0);\n        for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n        var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n        for (var j = i$4; j < end; ++j) { types[j] = replace; }\n        i$4 = end - 1;\n      }\n    }\n\n    // W7. Search backwards from each instance of a European number\n    // until the first strong type (R, L, or sor) is found. If an L is\n    // found, then change the type of the European number to L.\n    for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n      var type$4 = types[i$5];\n      if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n      else if (isStrong.test(type$4)) { cur$1 = type$4; }\n    }\n\n    // N1. A sequence of neutrals takes the direction of the\n    // surrounding strong text if the text on both sides has the same\n    // direction. European and Arabic numbers act as if they were R in\n    // terms of their influence on neutrals. Start-of-level-run (sor)\n    // and end-of-level-run (eor) are used at level run boundaries.\n    // N2. Any remaining neutrals take the embedding direction.\n    for (var i$6 = 0; i$6 < len; ++i$6) {\n      if (isNeutral.test(types[i$6])) {\n        var end$1 = (void 0);\n        for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n        var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n        var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n        var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n        for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n        i$6 = end$1 - 1;\n      }\n    }\n\n    // Here we depart from the documented algorithm, in order to avoid\n    // building up an actual levels array. Since there are only three\n    // levels (0, 1, 2) in an implementation that doesn't take\n    // explicit embedding into account, we can build up the order on\n    // the fly, without following the level-based algorithm.\n    var order = [], m;\n    for (var i$7 = 0; i$7 < len;) {\n      if (countsAsLeft.test(types[i$7])) {\n        var start = i$7;\n        for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n        order.push(new BidiSpan(0, start, i$7));\n      } else {\n        var pos = i$7, at = order.length;\n        for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n        for (var j$2 = pos; j$2 < i$7;) {\n          if (countsAsNum.test(types[j$2])) {\n            if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n            var nstart = j$2;\n            for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n            order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n            pos = j$2;\n          } else { ++j$2; }\n        }\n        if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n      }\n    }\n    if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n      order[0].from = m[0].length;\n      order.unshift(new BidiSpan(0, 0, m[0].length));\n    }\n    if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n      lst(order).to -= m[0].length;\n      order.push(new BidiSpan(0, len - m[0].length, len));\n    }\n\n    return direction == \"rtl\" ? order.reverse() : order\n  }\n})();\n\n// Get the bidi ordering for the given line (and cache it). Returns\n// false for lines that are fully left-to-right, and an array of\n// BidiSpan objects otherwise.\nfunction getOrder(line, direction) {\n  var order = line.order;\n  if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n  return order\n}\n\nfunction moveCharLogically(line, ch, dir) {\n  var target = skipExtendingChars(line.text, ch + dir, dir);\n  return target < 0 || target > line.text.length ? null : target\n}\n\nfunction moveLogically(line, start, dir) {\n  var ch = moveCharLogically(line, start.ch, dir);\n  return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n}\n\nfunction endOfLine(visually, cm, lineObj, lineNo, dir) {\n  if (visually) {\n    var order = getOrder(lineObj, cm.doc.direction);\n    if (order) {\n      var part = dir < 0 ? lst(order) : order[0];\n      var moveInStorageOrder = (dir < 0) == (part.level == 1);\n      var sticky = moveInStorageOrder ? \"after\" : \"before\";\n      var ch;\n      // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n      // it could be that the last bidi part is not on the last visual line,\n      // since visual lines contain content order-consecutive chunks.\n      // Thus, in rtl, we are looking for the first (content-order) character\n      // in the rtl chunk that is on the last line (that is, the same line\n      // as the last (content-order) character).\n      if (part.level > 0) {\n        var prep = prepareMeasureForLine(cm, lineObj);\n        ch = dir < 0 ? lineObj.text.length - 1 : 0;\n        var targetTop = measureCharPrepared(cm, prep, ch).top;\n        ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n        if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1, true); }\n      } else { ch = dir < 0 ? part.to : part.from; }\n      return new Pos(lineNo, ch, sticky)\n    }\n  }\n  return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n}\n\nfunction moveVisually(cm, line, start, dir) {\n  var bidi = getOrder(line, cm.doc.direction);\n  if (!bidi) { return moveLogically(line, start, dir) }\n  if (start.ch >= line.text.length) {\n    start.ch = line.text.length;\n    start.sticky = \"before\";\n  } else if (start.ch <= 0) {\n    start.ch = 0;\n    start.sticky = \"after\";\n  }\n  var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n  if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n    // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n    // nothing interesting happens.\n    return moveLogically(line, start, dir)\n  }\n\n  var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n  var prep;\n  var getWrappedLineExtent = function (ch) {\n    if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n    prep = prep || prepareMeasureForLine(cm, line);\n    return wrappedLineExtentChar(cm, line, prep, ch)\n  };\n  var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n  if (cm.doc.direction == \"rtl\" || part.level == 1) {\n    var moveInStorageOrder = (part.level == 1) == (dir < 0);\n    var ch = mv(start, moveInStorageOrder ? 1 : -1);\n    if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n      // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n      var sticky = moveInStorageOrder ? \"before\" : \"after\";\n      return new Pos(start.line, ch, sticky)\n    }\n  }\n\n  // Case 3: Could not move within this bidi part in this visual line, so leave\n  // the current bidi part\n\n  var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n    var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n      ? new Pos(start.line, mv(ch, 1), \"before\")\n      : new Pos(start.line, ch, \"after\"); };\n\n    for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n      var part = bidi[partPos];\n      var moveInStorageOrder = (dir > 0) == (part.level != 1);\n      var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n      if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n      ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n      if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n    }\n  };\n\n  // Case 3a: Look for other bidi parts on the same visual line\n  var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n  if (res) { return res }\n\n  // Case 3b: Look for other bidi parts on the next visual line\n  var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n  if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n    res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n    if (res) { return res }\n  }\n\n  // Case 4: Nowhere to move\n  return null\n}\n\n// EVENT HANDLING\n\n// Lightweight event framework. on/off also work on DOM nodes,\n// registering native DOM handlers.\n\nvar noHandlers = [];\n\nvar on = function(emitter, type, f) {\n  if (emitter.addEventListener) {\n    emitter.addEventListener(type, f, false);\n  } else if (emitter.attachEvent) {\n    emitter.attachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers || (emitter._handlers = {});\n    map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n  }\n};\n\nfunction getHandlers(emitter, type) {\n  return emitter._handlers && emitter._handlers[type] || noHandlers\n}\n\nfunction off(emitter, type, f) {\n  if (emitter.removeEventListener) {\n    emitter.removeEventListener(type, f, false);\n  } else if (emitter.detachEvent) {\n    emitter.detachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n    if (arr) {\n      var index = indexOf(arr, f);\n      if (index > -1)\n        { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n    }\n  }\n}\n\nfunction signal(emitter, type /*, values...*/) {\n  var handlers = getHandlers(emitter, type);\n  if (!handlers.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2);\n  for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n}\n\n// The DOM events that CodeMirror handles can be overridden by\n// registering a (non-DOM) handler on the editor for the event name,\n// and preventDefault-ing the event in that handler.\nfunction signalDOMEvent(cm, e, override) {\n  if (typeof e == \"string\")\n    { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n  signal(cm, override || e.type, cm, e);\n  return e_defaultPrevented(e) || e.codemirrorIgnore\n}\n\nfunction signalCursorActivity(cm) {\n  var arr = cm._handlers && cm._handlers.cursorActivity;\n  if (!arr) { return }\n  var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n  for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n    { set.push(arr[i]); } }\n}\n\nfunction hasHandler(emitter, type) {\n  return getHandlers(emitter, type).length > 0\n}\n\n// Add on and off methods to a constructor's prototype, to make\n// registering events on such objects more convenient.\nfunction eventMixin(ctor) {\n  ctor.prototype.on = function(type, f) {on(this, type, f);};\n  ctor.prototype.off = function(type, f) {off(this, type, f);};\n}\n\n// Due to the fact that we still support jurassic IE versions, some\n// compatibility wrappers are needed.\n\nfunction e_preventDefault(e) {\n  if (e.preventDefault) { e.preventDefault(); }\n  else { e.returnValue = false; }\n}\nfunction e_stopPropagation(e) {\n  if (e.stopPropagation) { e.stopPropagation(); }\n  else { e.cancelBubble = true; }\n}\nfunction e_defaultPrevented(e) {\n  return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n}\nfunction e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\nfunction e_target(e) {return e.target || e.srcElement}\nfunction e_button(e) {\n  var b = e.which;\n  if (b == null) {\n    if (e.button & 1) { b = 1; }\n    else if (e.button & 2) { b = 3; }\n    else if (e.button & 4) { b = 2; }\n  }\n  if (mac && e.ctrlKey && b == 1) { b = 3; }\n  return b\n}\n\n// Detect drag-and-drop\nvar dragAndDrop = function() {\n  // There is *some* kind of drag-and-drop support in IE6-8, but I\n  // couldn't get it to work yet.\n  if (ie && ie_version < 9) { return false }\n  var div = elt('div');\n  return \"draggable\" in div || \"dragDrop\" in div\n}();\n\nvar zwspSupported;\nfunction zeroWidthElement(measure) {\n  if (zwspSupported == null) {\n    var test = elt(\"span\", \"\\u200b\");\n    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n    if (measure.firstChild.offsetHeight != 0)\n      { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n  }\n  var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n    elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n  node.setAttribute(\"cm-text\", \"\");\n  return node\n}\n\n// Feature-detect IE's crummy client rect reporting for bidi text\nvar badBidiRects;\nfunction hasBadBidiRects(measure) {\n  if (badBidiRects != null) { return badBidiRects }\n  var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n  var r0 = range(txt, 0, 1).getBoundingClientRect();\n  var r1 = range(txt, 1, 2).getBoundingClientRect();\n  removeChildren(measure);\n  if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n  return badBidiRects = (r1.right - r0.right < 3)\n}\n\n// See if \"\".split is the broken IE version, if so, provide an\n// alternative way to split lines.\nvar splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n  var pos = 0, result = [], l = string.length;\n  while (pos <= l) {\n    var nl = string.indexOf(\"\\n\", pos);\n    if (nl == -1) { nl = string.length; }\n    var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n    var rt = line.indexOf(\"\\r\");\n    if (rt != -1) {\n      result.push(line.slice(0, rt));\n      pos += rt + 1;\n    } else {\n      result.push(line);\n      pos = nl + 1;\n    }\n  }\n  return result\n} : function (string) { return string.split(/\\r\\n?|\\n/); };\n\nvar hasSelection = window.getSelection ? function (te) {\n  try { return te.selectionStart != te.selectionEnd }\n  catch(e) { return false }\n} : function (te) {\n  var range$$1;\n  try {range$$1 = te.ownerDocument.selection.createRange();}\n  catch(e) {}\n  if (!range$$1 || range$$1.parentElement() != te) { return false }\n  return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n};\n\nvar hasCopyEvent = (function () {\n  var e = elt(\"div\");\n  if (\"oncopy\" in e) { return true }\n  e.setAttribute(\"oncopy\", \"return;\");\n  return typeof e.oncopy == \"function\"\n})();\n\nvar badZoomedRects = null;\nfunction hasBadZoomedRects(measure) {\n  if (badZoomedRects != null) { return badZoomedRects }\n  var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n  var normal = node.getBoundingClientRect();\n  var fromRange = range(node, 0, 1).getBoundingClientRect();\n  return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n}\n\n// Known modes, by name and by MIME\nvar modes = {};\nvar mimeModes = {};\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nfunction defineMode(name, mode) {\n  if (arguments.length > 2)\n    { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n  modes[name] = mode;\n}\n\nfunction defineMIME(mime, spec) {\n  mimeModes[mime] = spec;\n}\n\n// Given a MIME type, a {name, ...options} config object, or a name\n// string, return a mode config object.\nfunction resolveMode(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    var found = mimeModes[spec.name];\n    if (typeof found == \"string\") { found = {name: found}; }\n    spec = createObj(found, spec);\n    spec.name = found.name;\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n    return resolveMode(\"application/xml\")\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n    return resolveMode(\"application/json\")\n  }\n  if (typeof spec == \"string\") { return {name: spec} }\n  else { return spec || {name: \"null\"} }\n}\n\n// Given a mode spec (anything that resolveMode accepts), find and\n// initialize an actual mode object.\nfunction getMode(options, spec) {\n  spec = resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) { return getMode(options, \"text/plain\") }\n  var modeObj = mfactory(options, spec);\n  if (modeExtensions.hasOwnProperty(spec.name)) {\n    var exts = modeExtensions[spec.name];\n    for (var prop in exts) {\n      if (!exts.hasOwnProperty(prop)) { continue }\n      if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n      modeObj[prop] = exts[prop];\n    }\n  }\n  modeObj.name = spec.name;\n  if (spec.helperType) { modeObj.helperType = spec.helperType; }\n  if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n    { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n  return modeObj\n}\n\n// This can be used to attach properties to mode objects from\n// outside the actual mode definition.\nvar modeExtensions = {};\nfunction extendMode(mode, properties) {\n  var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n  copyObj(properties, exts);\n}\n\nfunction copyState(mode, state) {\n  if (state === true) { return state }\n  if (mode.copyState) { return mode.copyState(state) }\n  var nstate = {};\n  for (var n in state) {\n    var val = state[n];\n    if (val instanceof Array) { val = val.concat([]); }\n    nstate[n] = val;\n  }\n  return nstate\n}\n\n// Given a mode and a state (for that mode), find the inner mode and\n// state at the position that the state refers to.\nfunction innerMode(mode, state) {\n  var info;\n  while (mode.innerMode) {\n    info = mode.innerMode(state);\n    if (!info || info.mode == mode) { break }\n    state = info.state;\n    mode = info.mode;\n  }\n  return info || {mode: mode, state: state}\n}\n\nfunction startState(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true\n}\n\n// STRING STREAM\n\n// Fed to the mode parsers, provides helper functions to make\n// parsers more succinct.\n\nvar StringStream = function(string, tabSize) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.tabSize = tabSize || 8;\n  this.lastColumnPos = this.lastColumnValue = 0;\n  this.lineStart = 0;\n};\n\nStringStream.prototype.eol = function () {return this.pos >= this.string.length};\nStringStream.prototype.sol = function () {return this.pos == this.lineStart};\nStringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\nStringStream.prototype.next = function () {\n  if (this.pos < this.string.length)\n    { return this.string.charAt(this.pos++) }\n};\nStringStream.prototype.eat = function (match) {\n  var ch = this.string.charAt(this.pos);\n  var ok;\n  if (typeof match == \"string\") { ok = ch == match; }\n  else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n  if (ok) {++this.pos; return ch}\n};\nStringStream.prototype.eatWhile = function (match) {\n  var start = this.pos;\n  while (this.eat(match)){}\n  return this.pos > start\n};\nStringStream.prototype.eatSpace = function () {\n    var this$1 = this;\n\n  var start = this.pos;\n  while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n  return this.pos > start\n};\nStringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\nStringStream.prototype.skipTo = function (ch) {\n  var found = this.string.indexOf(ch, this.pos);\n  if (found > -1) {this.pos = found; return true}\n};\nStringStream.prototype.backUp = function (n) {this.pos -= n;};\nStringStream.prototype.column = function () {\n  if (this.lastColumnPos < this.start) {\n    this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n    this.lastColumnPos = this.start;\n  }\n  return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.indentation = function () {\n  return countColumn(this.string, null, this.tabSize) -\n    (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n  if (typeof pattern == \"string\") {\n    var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n    var substr = this.string.substr(this.pos, pattern.length);\n    if (cased(substr) == cased(pattern)) {\n      if (consume !== false) { this.pos += pattern.length; }\n      return true\n    }\n  } else {\n    var match = this.string.slice(this.pos).match(pattern);\n    if (match && match.index > 0) { return null }\n    if (match && consume !== false) { this.pos += match[0].length; }\n    return match\n  }\n};\nStringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\nStringStream.prototype.hideFirstChars = function (n, inner) {\n  this.lineStart += n;\n  try { return inner() }\n  finally { this.lineStart -= n; }\n};\n\n// Compute a style array (an array starting with a mode generation\n// -- for invalidation -- followed by pairs of end positions and\n// style strings), which is used to highlight the tokens on the\n// line.\nfunction highlightLine(cm, line, state, forceToEnd) {\n  // A styles array always starts with a number identifying the\n  // mode/overlays that it is based on (for easy invalidation).\n  var st = [cm.state.modeGen], lineClasses = {};\n  // Compute the base array of styles\n  runMode(cm, line.text, cm.doc.mode, state, function (end, style) { return st.push(end, style); },\n    lineClasses, forceToEnd);\n\n  // Run overlays, adjust style array.\n  var loop = function ( o ) {\n    var overlay = cm.state.overlays[o], i = 1, at = 0;\n    runMode(cm, line.text, overlay.mode, true, function (end, style) {\n      var start = i;\n      // Ensure there's a token end at the current position, and that i points at it\n      while (at < end) {\n        var i_end = st[i];\n        if (i_end > end)\n          { st.splice(i, 1, end, st[i+1], i_end); }\n        i += 2;\n        at = Math.min(end, i_end);\n      }\n      if (!style) { return }\n      if (overlay.opaque) {\n        st.splice(start, i - start, end, \"overlay \" + style);\n        i = start + 2;\n      } else {\n        for (; start < i; start += 2) {\n          var cur = st[start+1];\n          st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n        }\n      }\n    }, lineClasses);\n  };\n\n  for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n  return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n}\n\nfunction getLineStyles(cm, line, updateFrontier) {\n  if (!line.styles || line.styles[0] != cm.state.modeGen) {\n    var state = getStateBefore(cm, lineNo(line));\n    var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state);\n    line.stateAfter = state;\n    line.styles = result.styles;\n    if (result.classes) { line.styleClasses = result.classes; }\n    else if (line.styleClasses) { line.styleClasses = null; }\n    if (updateFrontier === cm.doc.frontier) { cm.doc.frontier++; }\n  }\n  return line.styles\n}\n\nfunction getStateBefore(cm, n, precise) {\n  var doc = cm.doc, display = cm.display;\n  if (!doc.mode.startState) { return true }\n  var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;\n  if (!state) { state = startState(doc.mode); }\n  else { state = copyState(doc.mode, state); }\n  doc.iter(pos, n, function (line) {\n    processLine(cm, line.text, state);\n    var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;\n    line.stateAfter = save ? copyState(doc.mode, state) : null;\n    ++pos;\n  });\n  if (precise) { doc.frontier = pos; }\n  return state\n}\n\n// Lightweight form of highlight -- proceed over this line and\n// update state, but don't save a style array. Used for lines that\n// aren't currently visible.\nfunction processLine(cm, text, state, startAt) {\n  var mode = cm.doc.mode;\n  var stream = new StringStream(text, cm.options.tabSize);\n  stream.start = stream.pos = startAt || 0;\n  if (text == \"\") { callBlankLine(mode, state); }\n  while (!stream.eol()) {\n    readToken(mode, stream, state);\n    stream.start = stream.pos;\n  }\n}\n\nfunction callBlankLine(mode, state) {\n  if (mode.blankLine) { return mode.blankLine(state) }\n  if (!mode.innerMode) { return }\n  var inner = innerMode(mode, state);\n  if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n}\n\nfunction readToken(mode, stream, state, inner) {\n  for (var i = 0; i < 10; i++) {\n    if (inner) { inner[0] = innerMode(mode, state).mode; }\n    var style = mode.token(stream, state);\n    if (stream.pos > stream.start) { return style }\n  }\n  throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n}\n\n// Utility for getTokenAt and getLineTokens\nfunction takeToken(cm, pos, precise, asArray) {\n  var getObj = function (copy) { return ({\n    start: stream.start, end: stream.pos,\n    string: stream.current(),\n    type: style || null,\n    state: copy ? copyState(doc.mode, state) : state\n  }); };\n\n  var doc = cm.doc, mode = doc.mode, style;\n  pos = clipPos(doc, pos);\n  var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise);\n  var stream = new StringStream(line.text, cm.options.tabSize), tokens;\n  if (asArray) { tokens = []; }\n  while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n    stream.start = stream.pos;\n    style = readToken(mode, stream, state);\n    if (asArray) { tokens.push(getObj(true)); }\n  }\n  return asArray ? tokens : getObj()\n}\n\nfunction extractLineClasses(type, output) {\n  if (type) { for (;;) {\n    var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n    if (!lineClass) { break }\n    type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n    var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n    if (output[prop] == null)\n      { output[prop] = lineClass[2]; }\n    else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n      { output[prop] += \" \" + lineClass[2]; }\n  } }\n  return type\n}\n\n// Run the given mode's parser over a line, calling f for each token.\nfunction runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {\n  var flattenSpans = mode.flattenSpans;\n  if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n  var curStart = 0, curStyle = null;\n  var stream = new StringStream(text, cm.options.tabSize), style;\n  var inner = cm.options.addModeClass && [null];\n  if (text == \"\") { extractLineClasses(callBlankLine(mode, state), lineClasses); }\n  while (!stream.eol()) {\n    if (stream.pos > cm.options.maxHighlightLength) {\n      flattenSpans = false;\n      if (forceToEnd) { processLine(cm, text, state, stream.pos); }\n      stream.pos = text.length;\n      style = null;\n    } else {\n      style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses);\n    }\n    if (inner) {\n      var mName = inner[0].name;\n      if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n    }\n    if (!flattenSpans || curStyle != style) {\n      while (curStart < stream.start) {\n        curStart = Math.min(stream.start, curStart + 5000);\n        f(curStart, curStyle);\n      }\n      curStyle = style;\n    }\n    stream.start = stream.pos;\n  }\n  while (curStart < stream.pos) {\n    // Webkit seems to refuse to render text nodes longer than 57444\n    // characters, and returns inaccurate measurements in nodes\n    // starting around 5000 chars.\n    var pos = Math.min(stream.pos, curStart + 5000);\n    f(pos, curStyle);\n    curStart = pos;\n  }\n}\n\n// Finds the line to start with when starting a parse. Tries to\n// find a line with a stateAfter, so that it can start with a\n// valid state. If that fails, it returns the line with the\n// smallest indentation, which tends to need the least context to\n// parse correctly.\nfunction findStartLine(cm, n, precise) {\n  var minindent, minline, doc = cm.doc;\n  var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n  for (var search = n; search > lim; --search) {\n    if (search <= doc.first) { return doc.first }\n    var line = getLine(doc, search - 1);\n    if (line.stateAfter && (!precise || search <= doc.frontier)) { return search }\n    var indented = countColumn(line.text, null, cm.options.tabSize);\n    if (minline == null || minindent > indented) {\n      minline = search - 1;\n      minindent = indented;\n    }\n  }\n  return minline\n}\n\n// LINE DATA STRUCTURE\n\n// Line objects. These hold state related to a line, including\n// highlighting info (the styles array).\nvar Line = function(text, markedSpans, estimateHeight) {\n  this.text = text;\n  attachMarkedSpans(this, markedSpans);\n  this.height = estimateHeight ? estimateHeight(this) : 1;\n};\n\nLine.prototype.lineNo = function () { return lineNo(this) };\neventMixin(Line);\n\n// Change the content (text, markers) of a line. Automatically\n// invalidates cached information and tries to re-estimate the\n// line's height.\nfunction updateLine(line, text, markedSpans, estimateHeight) {\n  line.text = text;\n  if (line.stateAfter) { line.stateAfter = null; }\n  if (line.styles) { line.styles = null; }\n  if (line.order != null) { line.order = null; }\n  detachMarkedSpans(line);\n  attachMarkedSpans(line, markedSpans);\n  var estHeight = estimateHeight ? estimateHeight(line) : 1;\n  if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n}\n\n// Detach a line from the document tree and its markers.\nfunction cleanUpLine(line) {\n  line.parent = null;\n  detachMarkedSpans(line);\n}\n\n// Convert a style as returned by a mode (either null, or a string\n// containing one or more styles) to a CSS style. This is cached,\n// and also looks for line-wide styles.\nvar styleToClassCache = {};\nvar styleToClassCacheWithMode = {};\nfunction interpretTokenStyle(style, options) {\n  if (!style || /^\\s*$/.test(style)) { return null }\n  var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n  return cache[style] ||\n    (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n}\n\n// Render the DOM representation of the text of a line. Also builds\n// up a 'line map', which points at the DOM nodes that represent\n// specific stretches of text, and is used by the measuring code.\n// The returned object contains the DOM node, this map, and\n// information about line-wide styles that were set by the mode.\nfunction buildLineContent(cm, lineView) {\n  // The padding-right forces the element to have a 'border', which\n  // is needed on Webkit to be able to get line-level bounding\n  // rectangles for it (in measureChar).\n  var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n  var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                 col: 0, pos: 0, cm: cm,\n                 trailingSpace: false,\n                 splitSpaces: (ie || webkit) && cm.getOption(\"lineWrapping\")};\n  lineView.measure = {};\n\n  // Iterate over the logical lines that make up this visual line.\n  for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n    var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n    builder.pos = 0;\n    builder.addToken = buildToken;\n    // Optionally wire in some hacks into the token-rendering\n    // algorithm, to deal with browser quirks.\n    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n      { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n    builder.map = [];\n    var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n    if (line.styleClasses) {\n      if (line.styleClasses.bgClass)\n        { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n      if (line.styleClasses.textClass)\n        { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n    }\n\n    // Ensure at least a single node is present, for measuring.\n    if (builder.map.length == 0)\n      { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n    // Store the map and a cache object for the current logical line\n    if (i == 0) {\n      lineView.measure.map = builder.map;\n      lineView.measure.cache = {};\n    } else {\n      (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n      ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n    }\n  }\n\n  // See issue #2901\n  if (webkit) {\n    var last = builder.content.lastChild;\n    if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n      { builder.content.className = \"cm-tab-wrap-hack\"; }\n  }\n\n  signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n  if (builder.pre.className)\n    { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n  return builder\n}\n\nfunction defaultSpecialCharPlaceholder(ch) {\n  var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n  token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n  token.setAttribute(\"aria-label\", token.title);\n  return token\n}\n\n// Build up the DOM representation for a single token, and add it to\n// the line map. Takes care to render special characters separately.\nfunction buildToken(builder, text, style, startStyle, endStyle, title, css) {\n  if (!text) { return }\n  var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n  var special = builder.cm.state.specialChars, mustWrap = false;\n  var content;\n  if (!special.test(text)) {\n    builder.col += text.length;\n    content = document.createTextNode(displayText);\n    builder.map.push(builder.pos, builder.pos + text.length, content);\n    if (ie && ie_version < 9) { mustWrap = true; }\n    builder.pos += text.length;\n  } else {\n    content = document.createDocumentFragment();\n    var pos = 0;\n    while (true) {\n      special.lastIndex = pos;\n      var m = special.exec(text);\n      var skipped = m ? m.index - pos : text.length - pos;\n      if (skipped) {\n        var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n        else { content.appendChild(txt); }\n        builder.map.push(builder.pos, builder.pos + skipped, txt);\n        builder.col += skipped;\n        builder.pos += skipped;\n      }\n      if (!m) { break }\n      pos += skipped + 1;\n      var txt$1 = (void 0);\n      if (m[0] == \"\\t\") {\n        var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n        txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n        txt$1.setAttribute(\"role\", \"presentation\");\n        txt$1.setAttribute(\"cm-text\", \"\\t\");\n        builder.col += tabWidth;\n      } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n        txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        builder.col += 1;\n      } else {\n        txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n        else { content.appendChild(txt$1); }\n        builder.col += 1;\n      }\n      builder.map.push(builder.pos, builder.pos + 1, txt$1);\n      builder.pos++;\n    }\n  }\n  builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n  if (style || startStyle || endStyle || mustWrap || css) {\n    var fullStyle = style || \"\";\n    if (startStyle) { fullStyle += startStyle; }\n    if (endStyle) { fullStyle += endStyle; }\n    var token = elt(\"span\", [content], fullStyle, css);\n    if (title) { token.title = title; }\n    return builder.content.appendChild(token)\n  }\n  builder.content.appendChild(content);\n}\n\nfunction splitSpaces(text, trailingBefore) {\n  if (text.length > 1 && !/  /.test(text)) { return text }\n  var spaceBefore = trailingBefore, result = \"\";\n  for (var i = 0; i < text.length; i++) {\n    var ch = text.charAt(i);\n    if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n      { ch = \"\\u00a0\"; }\n    result += ch;\n    spaceBefore = ch == \" \";\n  }\n  return result\n}\n\n// Work around nonsense dimensions being reported for stretches of\n// right-to-left text.\nfunction buildTokenBadBidi(inner, order) {\n  return function (builder, text, style, startStyle, endStyle, title, css) {\n    style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n    var start = builder.pos, end = start + text.length;\n    for (;;) {\n      // Find the part that overlaps with the start of this text\n      var part = (void 0);\n      for (var i = 0; i < order.length; i++) {\n        part = order[i];\n        if (part.to > start && part.from <= start) { break }\n      }\n      if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) }\n      inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);\n      startStyle = null;\n      text = text.slice(part.to - start);\n      start = part.to;\n    }\n  }\n}\n\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n  var widget = !ignoreWidget && marker.widgetNode;\n  if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n  if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n    if (!widget)\n      { widget = builder.content.appendChild(document.createElement(\"span\")); }\n    widget.setAttribute(\"cm-marker\", marker.id);\n  }\n  if (widget) {\n    builder.cm.display.input.setUneditable(widget);\n    builder.content.appendChild(widget);\n  }\n  builder.pos += size;\n  builder.trailingSpace = false;\n}\n\n// Outputs a number of spans to make up a line, taking highlighting\n// and marked text into account.\nfunction insertLineContent(line, builder, styles) {\n  var spans = line.markedSpans, allText = line.text, at = 0;\n  if (!spans) {\n    for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n      { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n    return\n  }\n\n  var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n  var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n  for (;;) {\n    if (nextChange == pos) { // Update current marker set\n      spanStyle = spanEndStyle = spanStartStyle = title = css = \"\";\n      collapsed = null; nextChange = Infinity;\n      var foundBookmarks = [], endStyles = (void 0);\n      for (var j = 0; j < spans.length; ++j) {\n        var sp = spans[j], m = sp.marker;\n        if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n          foundBookmarks.push(m);\n        } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n          if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n            nextChange = sp.to;\n            spanEndStyle = \"\";\n          }\n          if (m.className) { spanStyle += \" \" + m.className; }\n          if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n          if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n          if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n          if (m.title && !title) { title = m.title; }\n          if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n            { collapsed = sp; }\n        } else if (sp.from > pos && nextChange > sp.from) {\n          nextChange = sp.from;\n        }\n      }\n      if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n        { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n      if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n        { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n      if (collapsed && (collapsed.from || 0) == pos) {\n        buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                           collapsed.marker, collapsed.from == null);\n        if (collapsed.to == null) { return }\n        if (collapsed.to == pos) { collapsed = false; }\n      }\n    }\n    if (pos >= len) { break }\n\n    var upto = Math.min(len, nextChange);\n    while (true) {\n      if (text) {\n        var end = pos + text.length;\n        if (!collapsed) {\n          var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n          builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                           spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title, css);\n        }\n        if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n        pos = end;\n        spanStartStyle = \"\";\n      }\n      text = allText.slice(at, at = styles[i++]);\n      style = interpretTokenStyle(styles[i++], builder.cm.options);\n    }\n  }\n}\n\n\n// These objects are used to represent the visible (currently drawn)\n// part of the document. A LineView may correspond to multiple\n// logical lines, if those are connected by collapsed ranges.\nfunction LineView(doc, line, lineN) {\n  // The starting line\n  this.line = line;\n  // Continuing lines, if any\n  this.rest = visualLineContinued(line);\n  // Number of logical lines in this visual line\n  this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n  this.node = this.text = null;\n  this.hidden = lineIsHidden(doc, line);\n}\n\n// Create a range of LineView objects for the given lines.\nfunction buildViewArray(cm, from, to) {\n  var array = [], nextPos;\n  for (var pos = from; pos < to; pos = nextPos) {\n    var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n    nextPos = pos + view.size;\n    array.push(view);\n  }\n  return array\n}\n\nvar operationGroup = null;\n\nfunction pushOperation(op) {\n  if (operationGroup) {\n    operationGroup.ops.push(op);\n  } else {\n    op.ownsGroup = operationGroup = {\n      ops: [op],\n      delayedCallbacks: []\n    };\n  }\n}\n\nfunction fireCallbacksForOps(group) {\n  // Calls delayed callbacks and cursorActivity handlers until no\n  // new ones appear\n  var callbacks = group.delayedCallbacks, i = 0;\n  do {\n    for (; i < callbacks.length; i++)\n      { callbacks[i].call(null); }\n    for (var j = 0; j < group.ops.length; j++) {\n      var op = group.ops[j];\n      if (op.cursorActivityHandlers)\n        { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n          { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n    }\n  } while (i < callbacks.length)\n}\n\nfunction finishOperation(op, endCb) {\n  var group = op.ownsGroup;\n  if (!group) { return }\n\n  try { fireCallbacksForOps(group); }\n  finally {\n    operationGroup = null;\n    endCb(group);\n  }\n}\n\nvar orphanDelayedCallbacks = null;\n\n// Often, we want to signal events at a point where we are in the\n// middle of some work, but don't want the handler to start calling\n// other methods on the editor, which might be in an inconsistent\n// state or simply not expect any other events to happen.\n// signalLater looks whether there are any handlers, and schedules\n// them to be executed when the last operation ends, or, if no\n// operation is active, when a timeout fires.\nfunction signalLater(emitter, type /*, values...*/) {\n  var arr = getHandlers(emitter, type);\n  if (!arr.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2), list;\n  if (operationGroup) {\n    list = operationGroup.delayedCallbacks;\n  } else if (orphanDelayedCallbacks) {\n    list = orphanDelayedCallbacks;\n  } else {\n    list = orphanDelayedCallbacks = [];\n    setTimeout(fireOrphanDelayed, 0);\n  }\n  var loop = function ( i ) {\n    list.push(function () { return arr[i].apply(null, args); });\n  };\n\n  for (var i = 0; i < arr.length; ++i)\n    loop( i );\n}\n\nfunction fireOrphanDelayed() {\n  var delayed = orphanDelayedCallbacks;\n  orphanDelayedCallbacks = null;\n  for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n}\n\n// When an aspect of a line changes, a string is added to\n// lineView.changes. This updates the relevant part of the line's\n// DOM structure.\nfunction updateLineForChanges(cm, lineView, lineN, dims) {\n  for (var j = 0; j < lineView.changes.length; j++) {\n    var type = lineView.changes[j];\n    if (type == \"text\") { updateLineText(cm, lineView); }\n    else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n    else if (type == \"class\") { updateLineClasses(cm, lineView); }\n    else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n  }\n  lineView.changes = null;\n}\n\n// Lines with gutter elements, widgets or a background class need to\n// be wrapped, and have the extra elements added to the wrapper div\nfunction ensureLineWrapped(lineView) {\n  if (lineView.node == lineView.text) {\n    lineView.node = elt(\"div\", null, null, \"position: relative\");\n    if (lineView.text.parentNode)\n      { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n    lineView.node.appendChild(lineView.text);\n    if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n  }\n  return lineView.node\n}\n\nfunction updateLineBackground(cm, lineView) {\n  var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n  if (cls) { cls += \" CodeMirror-linebackground\"; }\n  if (lineView.background) {\n    if (cls) { lineView.background.className = cls; }\n    else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n  } else if (cls) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    cm.display.input.setUneditable(lineView.background);\n  }\n}\n\n// Wrapper around buildLineContent which will reuse the structure\n// in display.externalMeasured when possible.\nfunction getLineContent(cm, lineView) {\n  var ext = cm.display.externalMeasured;\n  if (ext && ext.line == lineView.line) {\n    cm.display.externalMeasured = null;\n    lineView.measure = ext.measure;\n    return ext.built\n  }\n  return buildLineContent(cm, lineView)\n}\n\n// Redraw the line's text. Interacts with the background and text\n// classes because the mode may output tokens that influence these\n// classes.\nfunction updateLineText(cm, lineView) {\n  var cls = lineView.text.className;\n  var built = getLineContent(cm, lineView);\n  if (lineView.text == lineView.node) { lineView.node = built.pre; }\n  lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n  lineView.text = built.pre;\n  if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n    lineView.bgClass = built.bgClass;\n    lineView.textClass = built.textClass;\n    updateLineClasses(cm, lineView);\n  } else if (cls) {\n    lineView.text.className = cls;\n  }\n}\n\nfunction updateLineClasses(cm, lineView) {\n  updateLineBackground(cm, lineView);\n  if (lineView.line.wrapClass)\n    { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n  else if (lineView.node != lineView.text)\n    { lineView.node.className = \"\"; }\n  var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n  lineView.text.className = textClass || \"\";\n}\n\nfunction updateLineGutter(cm, lineView, lineN, dims) {\n  if (lineView.gutter) {\n    lineView.node.removeChild(lineView.gutter);\n    lineView.gutter = null;\n  }\n  if (lineView.gutterBackground) {\n    lineView.node.removeChild(lineView.gutterBackground);\n    lineView.gutterBackground = null;\n  }\n  if (lineView.line.gutterClass) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                    (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(lineView.gutterBackground);\n    wrap.insertBefore(lineView.gutterBackground, lineView.text);\n  }\n  var markers = lineView.line.gutterMarkers;\n  if (cm.options.lineNumbers || markers) {\n    var wrap$1 = ensureLineWrapped(lineView);\n    var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(gutterWrap);\n    wrap$1.insertBefore(gutterWrap, lineView.text);\n    if (lineView.line.gutterClass)\n      { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n      { lineView.lineNumber = gutterWrap.appendChild(\n        elt(\"div\", lineNumberFor(cm.options, lineN),\n            \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n            (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n    if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n      var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n      if (found)\n        { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                   (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n    } }\n  }\n}\n\nfunction updateLineWidgets(cm, lineView, dims) {\n  if (lineView.alignable) { lineView.alignable = null; }\n  for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n    next = node.nextSibling;\n    if (node.className == \"CodeMirror-linewidget\")\n      { lineView.node.removeChild(node); }\n  }\n  insertLineWidgets(cm, lineView, dims);\n}\n\n// Build a line's DOM representation from scratch\nfunction buildLineElement(cm, lineView, lineN, dims) {\n  var built = getLineContent(cm, lineView);\n  lineView.text = lineView.node = built.pre;\n  if (built.bgClass) { lineView.bgClass = built.bgClass; }\n  if (built.textClass) { lineView.textClass = built.textClass; }\n\n  updateLineClasses(cm, lineView);\n  updateLineGutter(cm, lineView, lineN, dims);\n  insertLineWidgets(cm, lineView, dims);\n  return lineView.node\n}\n\n// A lineView may contain multiple logical lines (when merged by\n// collapsed spans). The widgets for all of them need to be drawn.\nfunction insertLineWidgets(cm, lineView, dims) {\n  insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n  if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n    { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n}\n\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n  if (!line.widgets) { return }\n  var wrap = ensureLineWrapped(lineView);\n  for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n    var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n    if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n    positionLineWidget(widget, node, lineView, dims);\n    cm.display.input.setUneditable(node);\n    if (allowAbove && widget.above)\n      { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n    else\n      { wrap.appendChild(node); }\n    signalLater(widget, \"redraw\");\n  }\n}\n\nfunction positionLineWidget(widget, node, lineView, dims) {\n  if (widget.noHScroll) {\n    (lineView.alignable || (lineView.alignable = [])).push(node);\n    var width = dims.wrapperWidth;\n    node.style.left = dims.fixedPos + \"px\";\n    if (!widget.coverGutter) {\n      width -= dims.gutterTotalWidth;\n      node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n    }\n    node.style.width = width + \"px\";\n  }\n  if (widget.coverGutter) {\n    node.style.zIndex = 5;\n    node.style.position = \"relative\";\n    if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n  }\n}\n\nfunction widgetHeight(widget) {\n  if (widget.height != null) { return widget.height }\n  var cm = widget.doc.cm;\n  if (!cm) { return 0 }\n  if (!contains(document.body, widget.node)) {\n    var parentStyle = \"position: relative;\";\n    if (widget.coverGutter)\n      { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n    if (widget.noHScroll)\n      { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n  }\n  return widget.height = widget.node.parentNode.offsetHeight\n}\n\n// Return true when the given mouse event happened in a widget\nfunction eventInWidget(display, e) {\n  for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n    if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n        (n.parentNode == display.sizer && n != display.mover))\n      { return true }\n  }\n}\n\n// POSITION MEASUREMENT\n\nfunction paddingTop(display) {return display.lineSpace.offsetTop}\nfunction paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\nfunction paddingH(display) {\n  if (display.cachedPaddingH) { return display.cachedPaddingH }\n  var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n  var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n  var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n  if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n  return data\n}\n\nfunction scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\nfunction displayWidth(cm) {\n  return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n}\nfunction displayHeight(cm) {\n  return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n}\n\n// Ensure the lineView.wrapping.heights array is populated. This is\n// an array of bottom offsets for the lines that make up a drawn\n// line. When lineWrapping is on, there might be more than one\n// height.\nfunction ensureLineHeights(cm, lineView, rect) {\n  var wrapping = cm.options.lineWrapping;\n  var curWidth = wrapping && displayWidth(cm);\n  if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n    var heights = lineView.measure.heights = [];\n    if (wrapping) {\n      lineView.measure.width = curWidth;\n      var rects = lineView.text.firstChild.getClientRects();\n      for (var i = 0; i < rects.length - 1; i++) {\n        var cur = rects[i], next = rects[i + 1];\n        if (Math.abs(cur.bottom - next.bottom) > 2)\n          { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n      }\n    }\n    heights.push(rect.bottom - rect.top);\n  }\n}\n\n// Find a line map (mapping character offsets to text nodes) and a\n// measurement cache for the given line number. (A line view might\n// contain multiple lines when collapsed ranges are present.)\nfunction mapFromLineView(lineView, line, lineN) {\n  if (lineView.line == line)\n    { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n  for (var i = 0; i < lineView.rest.length; i++)\n    { if (lineView.rest[i] == line)\n      { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n  for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n    { if (lineNo(lineView.rest[i$1]) > lineN)\n      { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n}\n\n// Render a line into the hidden node display.externalMeasured. Used\n// when measurement is needed for a line that's not in the viewport.\nfunction updateExternalMeasurement(cm, line) {\n  line = visualLine(line);\n  var lineN = lineNo(line);\n  var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n  view.lineN = lineN;\n  var built = view.built = buildLineContent(cm, view);\n  view.text = built.pre;\n  removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n  return view\n}\n\n// Get a {top, bottom, left, right} box (in line-local coordinates)\n// for a given character.\nfunction measureChar(cm, line, ch, bias) {\n  return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n}\n\n// Find a line view that corresponds to the given line number.\nfunction findViewForLine(cm, lineN) {\n  if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n    { return cm.display.view[findViewIndex(cm, lineN)] }\n  var ext = cm.display.externalMeasured;\n  if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n    { return ext }\n}\n\n// Measurement can be split in two steps, the set-up work that\n// applies to the whole line, and the measurement of the actual\n// character. Functions like coordsChar, that need to do a lot of\n// measurements in a row, can thus ensure that the set-up work is\n// only done once.\nfunction prepareMeasureForLine(cm, line) {\n  var lineN = lineNo(line);\n  var view = findViewForLine(cm, lineN);\n  if (view && !view.text) {\n    view = null;\n  } else if (view && view.changes) {\n    updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    cm.curOp.forceUpdate = true;\n  }\n  if (!view)\n    { view = updateExternalMeasurement(cm, line); }\n\n  var info = mapFromLineView(view, line, lineN);\n  return {\n    line: line, view: view, rect: null,\n    map: info.map, cache: info.cache, before: info.before,\n    hasHeights: false\n  }\n}\n\n// Given a prepared measurement object, measures the position of an\n// actual character (or fetches it from the cache).\nfunction measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n  if (prepared.before) { ch = -1; }\n  var key = ch + (bias || \"\"), found;\n  if (prepared.cache.hasOwnProperty(key)) {\n    found = prepared.cache[key];\n  } else {\n    if (!prepared.rect)\n      { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n    if (!prepared.hasHeights) {\n      ensureLineHeights(cm, prepared.view, prepared.rect);\n      prepared.hasHeights = true;\n    }\n    found = measureCharInner(cm, prepared, ch, bias);\n    if (!found.bogus) { prepared.cache[key] = found; }\n  }\n  return {left: found.left, right: found.right,\n          top: varHeight ? found.rtop : found.top,\n          bottom: varHeight ? found.rbottom : found.bottom}\n}\n\nvar nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\nfunction nodeAndOffsetInLineMap(map$$1, ch, bias) {\n  var node, start, end, collapse, mStart, mEnd;\n  // First, search the line map for the text node corresponding to,\n  // or closest to, the target character.\n  for (var i = 0; i < map$$1.length; i += 3) {\n    mStart = map$$1[i];\n    mEnd = map$$1[i + 1];\n    if (ch < mStart) {\n      start = 0; end = 1;\n      collapse = \"left\";\n    } else if (ch < mEnd) {\n      start = ch - mStart;\n      end = start + 1;\n    } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n      end = mEnd - mStart;\n      start = end - 1;\n      if (ch >= mEnd) { collapse = \"right\"; }\n    }\n    if (start != null) {\n      node = map$$1[i + 2];\n      if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n        { collapse = bias; }\n      if (bias == \"left\" && start == 0)\n        { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n          node = map$$1[(i -= 3) + 2];\n          collapse = \"left\";\n        } }\n      if (bias == \"right\" && start == mEnd - mStart)\n        { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n          node = map$$1[(i += 3) + 2];\n          collapse = \"right\";\n        } }\n      break\n    }\n  }\n  return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n}\n\nfunction getUsefulRect(rects, bias) {\n  var rect = nullRect;\n  if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n    if ((rect = rects[i]).left != rect.right) { break }\n  } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n    if ((rect = rects[i$1]).left != rect.right) { break }\n  } }\n  return rect\n}\n\nfunction measureCharInner(cm, prepared, ch, bias) {\n  var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n  var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n  var rect;\n  if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n    for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n      while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n      while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n      if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n        { rect = node.parentNode.getBoundingClientRect(); }\n      else\n        { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n      if (rect.left || rect.right || start == 0) { break }\n      end = start;\n      start = start - 1;\n      collapse = \"right\";\n    }\n    if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n  } else { // If it is a widget, simply get the box for the whole widget.\n    if (start > 0) { collapse = bias = \"right\"; }\n    var rects;\n    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n      { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n    else\n      { rect = node.getBoundingClientRect(); }\n  }\n  if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n    var rSpan = node.parentNode.getClientRects()[0];\n    if (rSpan)\n      { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n    else\n      { rect = nullRect; }\n  }\n\n  var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n  var mid = (rtop + rbot) / 2;\n  var heights = prepared.view.measure.heights;\n  var i = 0;\n  for (; i < heights.length - 1; i++)\n    { if (mid < heights[i]) { break } }\n  var top = i ? heights[i - 1] : 0, bot = heights[i];\n  var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                top: top, bottom: bot};\n  if (!rect.left && !rect.right) { result.bogus = true; }\n  if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n  return result\n}\n\n// Work around problem with bounding client rects on ranges being\n// returned incorrectly when zoomed on IE10 and below.\nfunction maybeUpdateRectForZooming(measure, rect) {\n  if (!window.screen || screen.logicalXDPI == null ||\n      screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n    { return rect }\n  var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n  var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n  return {left: rect.left * scaleX, right: rect.right * scaleX,\n          top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n}\n\nfunction clearLineMeasurementCacheFor(lineView) {\n  if (lineView.measure) {\n    lineView.measure.cache = {};\n    lineView.measure.heights = null;\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { lineView.measure.caches[i] = {}; } }\n  }\n}\n\nfunction clearLineMeasurementCache(cm) {\n  cm.display.externalMeasure = null;\n  removeChildren(cm.display.lineMeasure);\n  for (var i = 0; i < cm.display.view.length; i++)\n    { clearLineMeasurementCacheFor(cm.display.view[i]); }\n}\n\nfunction clearCaches(cm) {\n  clearLineMeasurementCache(cm);\n  cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n  if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n  cm.display.lineNumChars = null;\n}\n\nfunction pageScrollX() {\n  // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n  // which causes page_Offset and bounding client rects to use\n  // different reference viewports and invalidate our calculations.\n  if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n  return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n}\nfunction pageScrollY() {\n  if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n  return window.pageYOffset || (document.documentElement || document.body).scrollTop\n}\n\n// Converts a {top, bottom, left, right} box from line-local\n// coordinates into another coordinate system. Context may be one of\n// \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n// or \"page\".\nfunction intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n  if (!includeWidgets && lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) {\n    var size = widgetHeight(lineObj.widgets[i]);\n    rect.top += size; rect.bottom += size;\n  } } }\n  if (context == \"line\") { return rect }\n  if (!context) { context = \"local\"; }\n  var yOff = heightAtLine(lineObj);\n  if (context == \"local\") { yOff += paddingTop(cm.display); }\n  else { yOff -= cm.display.viewOffset; }\n  if (context == \"page\" || context == \"window\") {\n    var lOff = cm.display.lineSpace.getBoundingClientRect();\n    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n    var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n    rect.left += xOff; rect.right += xOff;\n  }\n  rect.top += yOff; rect.bottom += yOff;\n  return rect\n}\n\n// Coverts a box from \"div\" coords to another coordinate system.\n// Context may be \"window\", \"page\", \"div\", or \"local\"./null.\nfunction fromCoordSystem(cm, coords, context) {\n  if (context == \"div\") { return coords }\n  var left = coords.left, top = coords.top;\n  // First move into \"page\" coordinate system\n  if (context == \"page\") {\n    left -= pageScrollX();\n    top -= pageScrollY();\n  } else if (context == \"local\" || !context) {\n    var localBox = cm.display.sizer.getBoundingClientRect();\n    left += localBox.left;\n    top += localBox.top;\n  }\n\n  var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n  return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n}\n\nfunction charCoords(cm, pos, context, lineObj, bias) {\n  if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n  return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n}\n\n// Returns a box for a given cursor position, which may have an\n// 'other' property containing the position of the secondary cursor\n// on a bidi boundary.\n// A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n// and after `char - 1` in writing order of `char - 1`\n// A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n// and before `char` in writing order of `char`\n// Examples (upper-case letters are RTL, lower-case are LTR):\n//     Pos(0, 1, ...)\n//     before   after\n// ab     a|b     a|b\n// aB     a|B     aB|\n// Ab     |Ab     A|b\n// AB     B|A     B|A\n// Every position after the last character on a line is considered to stick\n// to the last character on the line.\nfunction cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n  lineObj = lineObj || getLine(cm.doc, pos.line);\n  if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n  function get(ch, right) {\n    var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n    if (right) { m.left = m.right; } else { m.right = m.left; }\n    return intoCoordSystem(cm, lineObj, m, context)\n  }\n  var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n  if (ch >= lineObj.text.length) {\n    ch = lineObj.text.length;\n    sticky = \"before\";\n  } else if (ch <= 0) {\n    ch = 0;\n    sticky = \"after\";\n  }\n  if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n  function getBidi(ch, partPos, invert) {\n    var part = order[partPos], right = (part.level % 2) != 0;\n    return get(invert ? ch - 1 : ch, right != invert)\n  }\n  var partPos = getBidiPartAt(order, ch, sticky);\n  var other = bidiOther;\n  var val = getBidi(ch, partPos, sticky == \"before\");\n  if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n  return val\n}\n\n// Used to cheaply estimate the coordinates for a position. Used for\n// intermediate scroll updates.\nfunction estimateCoords(cm, pos) {\n  var left = 0;\n  pos = clipPos(cm.doc, pos);\n  if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n  var lineObj = getLine(cm.doc, pos.line);\n  var top = heightAtLine(lineObj) + paddingTop(cm.display);\n  return {left: left, right: left, top: top, bottom: top + lineObj.height}\n}\n\n// Positions returned by coordsChar contain some extra information.\n// xRel is the relative x position of the input coordinates compared\n// to the found position (so xRel > 0 means the coordinates are to\n// the right of the character position, for example). When outside\n// is true, that means the coordinates lie outside the line's\n// vertical range.\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\n  var pos = Pos(line, ch, sticky);\n  pos.xRel = xRel;\n  if (outside) { pos.outside = true; }\n  return pos\n}\n\n// Compute the character position closest to the given coordinates.\n// Input must be lineSpace-local (\"div\" coordinate system).\nfunction coordsChar(cm, x, y) {\n  var doc = cm.doc;\n  y += cm.display.viewOffset;\n  if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n  var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n  if (lineN > last)\n    { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n  if (x < 0) { x = 0; }\n\n  var lineObj = getLine(doc, lineN);\n  for (;;) {\n    var found = coordsCharInner(cm, lineObj, lineN, x, y);\n    var merged = collapsedSpanAtEnd(lineObj);\n    var mergedPos = merged && merged.find(0, true);\n    if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n      { lineN = lineNo(lineObj = mergedPos.to.line); }\n    else\n      { return found }\n  }\n}\n\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n  var measure = function (ch) { return intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\"); };\n  var end = lineObj.text.length;\n  var begin = findFirst(function (ch) { return measure(ch - 1).bottom <= y; }, end, 0);\n  end = findFirst(function (ch) { return measure(ch).top > y; }, begin, end);\n  return {begin: begin, end: end}\n}\n\nfunction wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n  var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n  return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n}\n\nfunction coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n  y -= heightAtLine(lineObj);\n  var begin = 0, end = lineObj.text.length;\n  var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n  var pos;\n  var order = getOrder(lineObj, cm.doc.direction);\n  if (order) {\n    if (cm.options.lineWrapping) {\n      var assign;\n      ((assign = wrappedLineExtent(cm, lineObj, preparedMeasure, y), begin = assign.begin, end = assign.end, assign));\n    }\n    pos = new Pos(lineNo$$1, begin);\n    var beginLeft = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left;\n    var dir = beginLeft < x ? 1 : -1;\n    var prevDiff, diff = beginLeft - x, prevPos;\n    do {\n      prevDiff = diff;\n      prevPos = pos;\n      pos = moveVisually(cm, lineObj, pos, dir);\n      if (pos == null || pos.ch < begin || end <= (pos.sticky == \"before\" ? pos.ch - 1 : pos.ch)) {\n        pos = prevPos;\n        break\n      }\n      diff = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left - x;\n    } while ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff)))\n    if (Math.abs(diff) > Math.abs(prevDiff)) {\n      if ((diff < 0) == (prevDiff < 0)) { throw new Error(\"Broke out of infinite loop in coordsCharInner\") }\n      pos = prevPos;\n    }\n  } else {\n    var ch = findFirst(function (ch) {\n      var box = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\");\n      if (box.top > y) {\n        // For the cursor stickiness\n        end = Math.min(ch, end);\n        return true\n      }\n      else if (box.bottom <= y) { return false }\n      else if (box.left > x) { return true }\n      else if (box.right < x) { return false }\n      else { return (x - box.left < box.right - x) }\n    }, begin, end);\n    ch = skipExtendingChars(lineObj.text, ch, 1);\n    pos = new Pos(lineNo$$1, ch, ch == end ? \"before\" : \"after\");\n  }\n  var coords = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure);\n  if (y < coords.top || coords.bottom < y) { pos.outside = true; }\n  pos.xRel = x < coords.left ? -1 : (x > coords.right ? 1 : 0);\n  return pos\n}\n\nvar measureText;\n// Compute the default text height.\nfunction textHeight(display) {\n  if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n  if (measureText == null) {\n    measureText = elt(\"pre\");\n    // Measure a bunch of lines, for browsers that compute\n    // fractional heights.\n    for (var i = 0; i < 49; ++i) {\n      measureText.appendChild(document.createTextNode(\"x\"));\n      measureText.appendChild(elt(\"br\"));\n    }\n    measureText.appendChild(document.createTextNode(\"x\"));\n  }\n  removeChildrenAndAdd(display.measure, measureText);\n  var height = measureText.offsetHeight / 50;\n  if (height > 3) { display.cachedTextHeight = height; }\n  removeChildren(display.measure);\n  return height || 1\n}\n\n// Compute the default character width.\nfunction charWidth(display) {\n  if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n  var anchor = elt(\"span\", \"xxxxxxxxxx\");\n  var pre = elt(\"pre\", [anchor]);\n  removeChildrenAndAdd(display.measure, pre);\n  var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n  if (width > 2) { display.cachedCharWidth = width; }\n  return width || 10\n}\n\n// Do a bulk-read of the DOM positions and sizes needed to draw the\n// view, so that we don't interleave reading and writing to the DOM.\nfunction getDimensions(cm) {\n  var d = cm.display, left = {}, width = {};\n  var gutterLeft = d.gutters.clientLeft;\n  for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n    left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n    width[cm.options.gutters[i]] = n.clientWidth;\n  }\n  return {fixedPos: compensateForHScroll(d),\n          gutterTotalWidth: d.gutters.offsetWidth,\n          gutterLeft: left,\n          gutterWidth: width,\n          wrapperWidth: d.wrapper.clientWidth}\n}\n\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n// but using getBoundingClientRect to get a sub-pixel-accurate\n// result.\nfunction compensateForHScroll(display) {\n  return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n}\n\n// Returns a function that estimates the height of a line, to use as\n// first approximation until the line becomes visible (and is thus\n// properly measurable).\nfunction estimateHeight(cm) {\n  var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n  var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n  return function (line) {\n    if (lineIsHidden(cm.doc, line)) { return 0 }\n\n    var widgetsHeight = 0;\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n      if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n    } }\n\n    if (wrapping)\n      { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n    else\n      { return widgetsHeight + th }\n  }\n}\n\nfunction estimateLineHeights(cm) {\n  var doc = cm.doc, est = estimateHeight(cm);\n  doc.iter(function (line) {\n    var estHeight = est(line);\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  });\n}\n\n// Given a mouse event, find the corresponding position. If liberal\n// is false, it checks whether a gutter or scrollbar was clicked,\n// and returns null if it was. forRect is used by rectangular\n// selections, and tries to estimate a character position even for\n// coordinates beyond the right of the text.\nfunction posFromMouse(cm, e, liberal, forRect) {\n  var display = cm.display;\n  if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n  var x, y, space = display.lineSpace.getBoundingClientRect();\n  // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n  try { x = e.clientX - space.left; y = e.clientY - space.top; }\n  catch (e) { return null }\n  var coords = coordsChar(cm, x, y), line;\n  if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n    var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n  }\n  return coords\n}\n\n// Find the view element corresponding to a given line. Return null\n// when the line isn't visible.\nfunction findViewIndex(cm, n) {\n  if (n >= cm.display.viewTo) { return null }\n  n -= cm.display.viewFrom;\n  if (n < 0) { return null }\n  var view = cm.display.view;\n  for (var i = 0; i < view.length; i++) {\n    n -= view[i].size;\n    if (n < 0) { return i }\n  }\n}\n\nfunction updateSelection(cm) {\n  cm.display.input.showSelection(cm.display.input.prepareSelection());\n}\n\nfunction prepareSelection(cm, primary) {\n  var doc = cm.doc, result = {};\n  var curFragment = result.cursors = document.createDocumentFragment();\n  var selFragment = result.selection = document.createDocumentFragment();\n\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    if (primary === false && i == doc.sel.primIndex) { continue }\n    var range$$1 = doc.sel.ranges[i];\n    if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n    var collapsed = range$$1.empty();\n    if (collapsed || cm.options.showCursorWhenSelecting)\n      { drawSelectionCursor(cm, range$$1.head, curFragment); }\n    if (!collapsed)\n      { drawSelectionRange(cm, range$$1, selFragment); }\n  }\n  return result\n}\n\n// Draws a cursor for the given range\nfunction drawSelectionCursor(cm, head, output) {\n  var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n  var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n  cursor.style.left = pos.left + \"px\";\n  cursor.style.top = pos.top + \"px\";\n  cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n  if (pos.other) {\n    // Secondary cursor, shown when on a 'jump' in bi-directional text\n    var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n    otherCursor.style.display = \"\";\n    otherCursor.style.left = pos.other.left + \"px\";\n    otherCursor.style.top = pos.other.top + \"px\";\n    otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n  }\n}\n\n// Draws the given range as a highlighted selection\nfunction drawSelectionRange(cm, range$$1, output) {\n  var display = cm.display, doc = cm.doc;\n  var fragment = document.createDocumentFragment();\n  var padding = paddingH(cm.display), leftSide = padding.left;\n  var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n\n  function add(left, top, width, bottom) {\n    if (top < 0) { top = 0; }\n    top = Math.round(top);\n    bottom = Math.round(bottom);\n    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n  }\n\n  function drawForLine(line, fromArg, toArg) {\n    var lineObj = getLine(doc, line);\n    var lineLen = lineObj.text.length;\n    var start, end;\n    function coords(ch, bias) {\n      return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n    }\n\n    iterateBidiSections(getOrder(lineObj, doc.direction), fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir) {\n      var leftPos = coords(from, \"left\"), rightPos, left, right;\n      if (from == to) {\n        rightPos = leftPos;\n        left = right = leftPos.left;\n      } else {\n        rightPos = coords(to - 1, \"right\");\n        if (dir == \"rtl\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\n        left = leftPos.left;\n        right = rightPos.right;\n      }\n      if (fromArg == null && from == 0) { left = leftSide; }\n      if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\n        add(left, leftPos.top, null, leftPos.bottom);\n        left = leftSide;\n        if (leftPos.bottom < rightPos.top) { add(left, leftPos.bottom, null, rightPos.top); }\n      }\n      if (toArg == null && to == lineLen) { right = rightSide; }\n      if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\n        { start = leftPos; }\n      if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\n        { end = rightPos; }\n      if (left < leftSide + 1) { left = leftSide; }\n      add(left, rightPos.top, right - left, rightPos.bottom);\n    });\n    return {start: start, end: end}\n  }\n\n  var sFrom = range$$1.from(), sTo = range$$1.to();\n  if (sFrom.line == sTo.line) {\n    drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n  } else {\n    var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n    var singleVLine = visualLine(fromLine) == visualLine(toLine);\n    var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n    var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n    if (singleVLine) {\n      if (leftEnd.top < rightStart.top - 2) {\n        add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n        add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n      } else {\n        add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n      }\n    }\n    if (leftEnd.bottom < rightStart.top)\n      { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n  }\n\n  output.appendChild(fragment);\n}\n\n// Cursor-blinking\nfunction restartBlink(cm) {\n  if (!cm.state.focused) { return }\n  var display = cm.display;\n  clearInterval(display.blinker);\n  var on = true;\n  display.cursorDiv.style.visibility = \"\";\n  if (cm.options.cursorBlinkRate > 0)\n    { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n      cm.options.cursorBlinkRate); }\n  else if (cm.options.cursorBlinkRate < 0)\n    { display.cursorDiv.style.visibility = \"hidden\"; }\n}\n\nfunction ensureFocus(cm) {\n  if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n}\n\nfunction delayBlurEvent(cm) {\n  cm.state.delayingBlurEvent = true;\n  setTimeout(function () { if (cm.state.delayingBlurEvent) {\n    cm.state.delayingBlurEvent = false;\n    onBlur(cm);\n  } }, 100);\n}\n\nfunction onFocus(cm, e) {\n  if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n  if (cm.options.readOnly == \"nocursor\") { return }\n  if (!cm.state.focused) {\n    signal(cm, \"focus\", cm, e);\n    cm.state.focused = true;\n    addClass(cm.display.wrapper, \"CodeMirror-focused\");\n    // This test prevents this from firing when a context\n    // menu is closed (since the input reset would kill the\n    // select-all detection hack)\n    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n      cm.display.input.reset();\n      if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n    }\n    cm.display.input.receivedFocus();\n  }\n  restartBlink(cm);\n}\nfunction onBlur(cm, e) {\n  if (cm.state.delayingBlurEvent) { return }\n\n  if (cm.state.focused) {\n    signal(cm, \"blur\", cm, e);\n    cm.state.focused = false;\n    rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n  }\n  clearInterval(cm.display.blinker);\n  setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n}\n\n// Re-align line numbers and gutter marks to compensate for\n// horizontal scrolling.\nfunction alignHorizontally(cm) {\n  var display = cm.display, view = display.view;\n  if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n  var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n  var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n  for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n    if (cm.options.fixedGutter) {\n      if (view[i].gutter)\n        { view[i].gutter.style.left = left; }\n      if (view[i].gutterBackground)\n        { view[i].gutterBackground.style.left = left; }\n    }\n    var align = view[i].alignable;\n    if (align) { for (var j = 0; j < align.length; j++)\n      { align[j].style.left = left; } }\n  } }\n  if (cm.options.fixedGutter)\n    { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n}\n\n// Used to ensure that the line number gutter is still the right\n// size for the current document size. Returns true when an update\n// is needed.\nfunction maybeUpdateLineNumberWidth(cm) {\n  if (!cm.options.lineNumbers) { return false }\n  var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n  if (last.length != display.lineNumChars) {\n    var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                               \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n    var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n    display.lineGutter.style.width = \"\";\n    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n    display.lineNumWidth = display.lineNumInnerWidth + padding;\n    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n    display.lineGutter.style.width = display.lineNumWidth + \"px\";\n    updateGutterSpace(cm);\n    return true\n  }\n  return false\n}\n\n// Read the actual heights of the rendered lines, and update their\n// stored heights to match.\nfunction updateHeightsInViewport(cm) {\n  var display = cm.display;\n  var prevBottom = display.lineDiv.offsetTop;\n  for (var i = 0; i < display.view.length; i++) {\n    var cur = display.view[i], height = (void 0);\n    if (cur.hidden) { continue }\n    if (ie && ie_version < 8) {\n      var bot = cur.node.offsetTop + cur.node.offsetHeight;\n      height = bot - prevBottom;\n      prevBottom = bot;\n    } else {\n      var box = cur.node.getBoundingClientRect();\n      height = box.bottom - box.top;\n    }\n    var diff = cur.line.height - height;\n    if (height < 2) { height = textHeight(display); }\n    if (diff > .001 || diff < -.001) {\n      updateLineHeight(cur.line, height);\n      updateWidgetHeight(cur.line);\n      if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n        { updateWidgetHeight(cur.rest[j]); } }\n    }\n  }\n}\n\n// Read and store the height of line widgets associated with the\n// given line.\nfunction updateWidgetHeight(line) {\n  if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i)\n    { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } }\n}\n\n// Compute the lines that are visible in a given viewport (defaults\n// the the current scroll position). viewport may contain top,\n// height, and ensure (see op.scrollToPos) properties.\nfunction visibleLines(display, doc, viewport) {\n  var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n  top = Math.floor(top - paddingTop(display));\n  var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n  var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n  // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n  // forces those lines into the viewport (if possible).\n  if (viewport && viewport.ensure) {\n    var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n    if (ensureFrom < from) {\n      from = ensureFrom;\n      to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n      from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n      to = ensureTo;\n    }\n  }\n  return {from: from, to: Math.max(to, from + 1)}\n}\n\n// Sync the scrollable area and scrollbars, ensure the viewport\n// covers the visible area.\nfunction setScrollTop(cm, val) {\n  if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n  cm.doc.scrollTop = val;\n  if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n  if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n  cm.display.scrollbars.setScrollTop(val);\n  if (gecko) { updateDisplaySimple(cm); }\n  startWorker(cm, 100);\n}\n// Sync scroller and scrollbar, ensure the gutter elements are\n// aligned.\nfunction setScrollLeft(cm, val, isScroller) {\n  if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) { return }\n  val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n  cm.doc.scrollLeft = val;\n  alignHorizontally(cm);\n  if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n  cm.display.scrollbars.setScrollLeft(val);\n}\n\n// Since the delta values reported on mouse wheel events are\n// unstandardized between browsers and even browser versions, and\n// generally horribly unpredictable, this code starts by measuring\n// the scroll effect that the first few mouse wheel events have,\n// and, from that, detects the way it can convert deltas to pixel\n// offsets afterwards.\n//\n// The reason we want to know the amount a wheel event will scroll\n// is that it gives us a chance to update the display before the\n// actual scrolling happens, reducing flickering.\n\nvar wheelSamples = 0;\nvar wheelPixelsPerUnit = null;\n// Fill in a browser-detected starting value on browsers where we\n// know one. These don't have to be accurate -- the result of them\n// being wrong would just be a slight flicker on the first wheel\n// scroll (if it is large enough).\nif (ie) { wheelPixelsPerUnit = -.53; }\nelse if (gecko) { wheelPixelsPerUnit = 15; }\nelse if (chrome) { wheelPixelsPerUnit = -.7; }\nelse if (safari) { wheelPixelsPerUnit = -1/3; }\n\nfunction wheelEventDelta(e) {\n  var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n  if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n  if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n  else if (dy == null) { dy = e.wheelDelta; }\n  return {x: dx, y: dy}\n}\nfunction wheelEventPixels(e) {\n  var delta = wheelEventDelta(e);\n  delta.x *= wheelPixelsPerUnit;\n  delta.y *= wheelPixelsPerUnit;\n  return delta\n}\n\nfunction onScrollWheel(cm, e) {\n  var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n  var display = cm.display, scroll = display.scroller;\n  // Quit if there's nothing to scroll here\n  var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n  var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n  if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n  // Webkit browsers on OS X abort momentum scrolls when the target\n  // of the scroll event is removed from the scrollable element.\n  // This hack (see related code in patchDisplay) makes sure the\n  // element is kept around.\n  if (dy && mac && webkit) {\n    outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n      for (var i = 0; i < view.length; i++) {\n        if (view[i].node == cur) {\n          cm.display.currentWheelTarget = cur;\n          break outer\n        }\n      }\n    }\n  }\n\n  // On some browsers, horizontal scrolling will cause redraws to\n  // happen before the gutter has been realigned, causing it to\n  // wriggle around in a most unseemly way. When we have an\n  // estimated pixels/delta value, we just handle horizontal\n  // scrolling entirely here. It'll be slightly off from native, but\n  // better than glitching out.\n  if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n    if (dy && canScrollY)\n      { setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); }\n    setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));\n    // Only prevent default scrolling if vertical scrolling is\n    // actually possible. Otherwise, it causes vertical scroll\n    // jitter on OSX trackpads when deltaX is small and deltaY\n    // is large (issue #3579)\n    if (!dy || (dy && canScrollY))\n      { e_preventDefault(e); }\n    display.wheelStartX = null; // Abort measurement, if in progress\n    return\n  }\n\n  // 'Project' the visible viewport to cover the area that is being\n  // scrolled into view (if we know enough to estimate it).\n  if (dy && wheelPixelsPerUnit != null) {\n    var pixels = dy * wheelPixelsPerUnit;\n    var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n    if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n    else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n    updateDisplaySimple(cm, {top: top, bottom: bot});\n  }\n\n  if (wheelSamples < 20) {\n    if (display.wheelStartX == null) {\n      display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n      display.wheelDX = dx; display.wheelDY = dy;\n      setTimeout(function () {\n        if (display.wheelStartX == null) { return }\n        var movedX = scroll.scrollLeft - display.wheelStartX;\n        var movedY = scroll.scrollTop - display.wheelStartY;\n        var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n          (movedX && display.wheelDX && movedX / display.wheelDX);\n        display.wheelStartX = display.wheelStartY = null;\n        if (!sample) { return }\n        wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n        ++wheelSamples;\n      }, 200);\n    } else {\n      display.wheelDX += dx; display.wheelDY += dy;\n    }\n  }\n}\n\n// SCROLLBARS\n\n// Prepare DOM reads needed to update the scrollbars. Done in one\n// shot to minimize update/measure roundtrips.\nfunction measureForScrollbars(cm) {\n  var d = cm.display, gutterW = d.gutters.offsetWidth;\n  var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n  return {\n    clientHeight: d.scroller.clientHeight,\n    viewHeight: d.wrapper.clientHeight,\n    scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n    viewWidth: d.wrapper.clientWidth,\n    barLeft: cm.options.fixedGutter ? gutterW : 0,\n    docHeight: docH,\n    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n    nativeBarWidth: d.nativeBarWidth,\n    gutterWidth: gutterW\n  }\n}\n\nvar NativeScrollbars = function(place, scroll, cm) {\n  this.cm = cm;\n  var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n  var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n  place(vert); place(horiz);\n\n  on(vert, \"scroll\", function () {\n    if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n  });\n  on(horiz, \"scroll\", function () {\n    if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n  });\n\n  this.checkedZeroWidth = false;\n  // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n  if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n};\n\nNativeScrollbars.prototype.update = function (measure) {\n  var needsH = measure.scrollWidth > measure.clientWidth + 1;\n  var needsV = measure.scrollHeight > measure.clientHeight + 1;\n  var sWidth = measure.nativeBarWidth;\n\n  if (needsV) {\n    this.vert.style.display = \"block\";\n    this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n    var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n    // A bug in IE8 can cause this value to be negative, so guard it.\n    this.vert.firstChild.style.height =\n      Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n  } else {\n    this.vert.style.display = \"\";\n    this.vert.firstChild.style.height = \"0\";\n  }\n\n  if (needsH) {\n    this.horiz.style.display = \"block\";\n    this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n    this.horiz.style.left = measure.barLeft + \"px\";\n    var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n    this.horiz.firstChild.style.width =\n      Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n  } else {\n    this.horiz.style.display = \"\";\n    this.horiz.firstChild.style.width = \"0\";\n  }\n\n  if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n    if (sWidth == 0) { this.zeroWidthHack(); }\n    this.checkedZeroWidth = true;\n  }\n\n  return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n};\n\nNativeScrollbars.prototype.setScrollLeft = function (pos) {\n  if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n  if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n};\n\nNativeScrollbars.prototype.setScrollTop = function (pos) {\n  if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n  if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n};\n\nNativeScrollbars.prototype.zeroWidthHack = function () {\n  var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n  this.horiz.style.height = this.vert.style.width = w;\n  this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n  this.disableHoriz = new Delayed;\n  this.disableVert = new Delayed;\n};\n\nNativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n  bar.style.pointerEvents = \"auto\";\n  function maybeDisable() {\n    // To find out whether the scrollbar is still visible, we\n    // check whether the element under the pixel in the bottom\n    // right corner of the scrollbar box is the scrollbar box\n    // itself (when the bar is still visible) or its filler child\n    // (when the bar is hidden). If it is still visible, we keep\n    // it enabled, if it's hidden, we disable pointer events.\n    var box = bar.getBoundingClientRect();\n    var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n        : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n    if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n    else { delay.set(1000, maybeDisable); }\n  }\n  delay.set(1000, maybeDisable);\n};\n\nNativeScrollbars.prototype.clear = function () {\n  var parent = this.horiz.parentNode;\n  parent.removeChild(this.horiz);\n  parent.removeChild(this.vert);\n};\n\nvar NullScrollbars = function () {};\n\nNullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\nNullScrollbars.prototype.setScrollLeft = function () {};\nNullScrollbars.prototype.setScrollTop = function () {};\nNullScrollbars.prototype.clear = function () {};\n\nfunction updateScrollbars(cm, measure) {\n  if (!measure) { measure = measureForScrollbars(cm); }\n  var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n  updateScrollbarsInner(cm, measure);\n  for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n    if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n      { updateHeightsInViewport(cm); }\n    updateScrollbarsInner(cm, measureForScrollbars(cm));\n    startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n  }\n}\n\n// Re-synchronize the fake scrollbars with the actual size of the\n// content.\nfunction updateScrollbarsInner(cm, measure) {\n  var d = cm.display;\n  var sizes = d.scrollbars.update(measure);\n\n  d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n  d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n  d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n  if (sizes.right && sizes.bottom) {\n    d.scrollbarFiller.style.display = \"block\";\n    d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n    d.scrollbarFiller.style.width = sizes.right + \"px\";\n  } else { d.scrollbarFiller.style.display = \"\"; }\n  if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n    d.gutterFiller.style.display = \"block\";\n    d.gutterFiller.style.height = sizes.bottom + \"px\";\n    d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n  } else { d.gutterFiller.style.display = \"\"; }\n}\n\nvar scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\nfunction initScrollbars(cm) {\n  if (cm.display.scrollbars) {\n    cm.display.scrollbars.clear();\n    if (cm.display.scrollbars.addClass)\n      { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n    // Prevent clicks in the scrollbars from killing focus\n    on(node, \"mousedown\", function () {\n      if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n    });\n    node.setAttribute(\"cm-not-content\", \"true\");\n  }, function (pos, axis) {\n    if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n    else { setScrollTop(cm, pos); }\n  }, cm);\n  if (cm.display.scrollbars.addClass)\n    { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n}\n\n// SCROLLING THINGS INTO VIEW\n\n// If an editor sits on the top or bottom of the window, partially\n// scrolled out of view, this ensures that the cursor is visible.\nfunction maybeScrollWindow(cm, rect) {\n  if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n  var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n  if (rect.top + box.top < 0) { doScroll = true; }\n  else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n  if (doScroll != null && !phantom) {\n    var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n    cm.display.lineSpace.appendChild(scrollNode);\n    scrollNode.scrollIntoView(doScroll);\n    cm.display.lineSpace.removeChild(scrollNode);\n  }\n}\n\n// Scroll a given position into view (immediately), verifying that\n// it actually became visible (as line heights are accurately\n// measured, the position of something may 'drift' during drawing).\nfunction scrollPosIntoView(cm, pos, end, margin) {\n  if (margin == null) { margin = 0; }\n  var rect;\n  for (var limit = 0; limit < 5; limit++) {\n    var changed = false;\n    var coords = cursorCoords(cm, pos);\n    var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n    rect = {left: Math.min(coords.left, endCoords.left),\n            top: Math.min(coords.top, endCoords.top) - margin,\n            right: Math.max(coords.left, endCoords.left),\n            bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n    var scrollPos = calculateScrollPos(cm, rect);\n    var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n    if (scrollPos.scrollTop != null) {\n      setScrollTop(cm, scrollPos.scrollTop);\n      if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n    }\n    if (scrollPos.scrollLeft != null) {\n      setScrollLeft(cm, scrollPos.scrollLeft);\n      if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n    }\n    if (!changed) { break }\n  }\n  return rect\n}\n\n// Scroll a given set of coordinates into view (immediately).\nfunction scrollIntoView(cm, rect) {\n  var scrollPos = calculateScrollPos(cm, rect);\n  if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop); }\n  if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n}\n\n// Calculate a new scroll position needed to scroll the given\n// rectangle into view. Returns an object with scrollTop and\n// scrollLeft properties. When these are undefined, the\n// vertical/horizontal position does not need to be adjusted.\nfunction calculateScrollPos(cm, rect) {\n  var display = cm.display, snapMargin = textHeight(cm.display);\n  if (rect.top < 0) { rect.top = 0; }\n  var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n  var screen = displayHeight(cm), result = {};\n  if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n  var docBottom = cm.doc.height + paddingVert(display);\n  var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n  if (rect.top < screentop) {\n    result.scrollTop = atTop ? 0 : rect.top;\n  } else if (rect.bottom > screentop + screen) {\n    var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n    if (newTop != screentop) { result.scrollTop = newTop; }\n  }\n\n  var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n  var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n  var tooWide = rect.right - rect.left > screenw;\n  if (tooWide) { rect.right = rect.left + screenw; }\n  if (rect.left < 10)\n    { result.scrollLeft = 0; }\n  else if (rect.left < screenleft)\n    { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n  else if (rect.right > screenw + screenleft - 3)\n    { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n  return result\n}\n\n// Store a relative adjustment to the scroll position in the current\n// operation (to be applied when the operation finishes).\nfunction addToScrollPos(cm, left, top) {\n  if (left != null || top != null) { resolveScrollToPos(cm); }\n  if (left != null)\n    { cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; }\n  if (top != null)\n    { cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; }\n}\n\n// Make sure that at the end of the operation the current cursor is\n// shown.\nfunction ensureCursorVisible(cm) {\n  resolveScrollToPos(cm);\n  var cur = cm.getCursor(), from = cur, to = cur;\n  if (!cm.options.lineWrapping) {\n    from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;\n    to = Pos(cur.line, cur.ch + 1);\n  }\n  cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin};\n}\n\n// When an operation has its scrollToPos property set, and another\n// scroll action is applied before the end of the operation, this\n// 'simulates' scrolling that position into view in a cheap way, so\n// that the effect of intermediate scroll commands is not ignored.\nfunction resolveScrollToPos(cm) {\n  var range$$1 = cm.curOp.scrollToPos;\n  if (range$$1) {\n    cm.curOp.scrollToPos = null;\n    var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n    var sPos = calculateScrollPos(cm, {\n      left: Math.min(from.left, to.left),\n      top: Math.min(from.top, to.top) - range$$1.margin,\n      right: Math.max(from.right, to.right),\n      bottom: Math.max(from.bottom, to.bottom) + range$$1.margin\n    });\n    cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n  }\n}\n\n// Operations are used to wrap a series of changes to the editor\n// state in such a way that each change won't have to update the\n// cursor and display (which would be awkward, slow, and\n// error-prone). Instead, display updates are batched and then all\n// combined and executed at once.\n\nvar nextOpId = 0;\n// Start a new operation.\nfunction startOperation(cm) {\n  cm.curOp = {\n    cm: cm,\n    viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n    startHeight: cm.doc.height, // Used to detect need to update scrollbar\n    forceUpdate: false,      // Used to force a redraw\n    updateInput: null,       // Whether to reset the input textarea\n    typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n    changeObjs: null,        // Accumulated changes, for firing change events\n    cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n    cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n    selectionChanged: false, // Whether the selection needs to be redrawn\n    updateMaxLine: false,    // Set when the widest line needs to be determined anew\n    scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n    scrollToPos: null,       // Used to scroll to a specific position\n    focus: false,\n    id: ++nextOpId           // Unique ID\n  };\n  pushOperation(cm.curOp);\n}\n\n// Finish an operation, updating the display and signalling delayed events\nfunction endOperation(cm) {\n  var op = cm.curOp;\n  finishOperation(op, function (group) {\n    for (var i = 0; i < group.ops.length; i++)\n      { group.ops[i].cm.curOp = null; }\n    endOperations(group);\n  });\n}\n\n// The DOM updates done when an operation finishes are batched so\n// that the minimum number of relayouts are required.\nfunction endOperations(group) {\n  var ops = group.ops;\n  for (var i = 0; i < ops.length; i++) // Read DOM\n    { endOperation_R1(ops[i]); }\n  for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n    { endOperation_W1(ops[i$1]); }\n  for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n    { endOperation_R2(ops[i$2]); }\n  for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n    { endOperation_W2(ops[i$3]); }\n  for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n    { endOperation_finish(ops[i$4]); }\n}\n\nfunction endOperation_R1(op) {\n  var cm = op.cm, display = cm.display;\n  maybeClipScrollbars(cm);\n  if (op.updateMaxLine) { findMaxLine(cm); }\n\n  op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n    op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                       op.scrollToPos.to.line >= display.viewTo) ||\n    display.maxLineChanged && cm.options.lineWrapping;\n  op.update = op.mustUpdate &&\n    new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n}\n\nfunction endOperation_W1(op) {\n  op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n}\n\nfunction endOperation_R2(op) {\n  var cm = op.cm, display = cm.display;\n  if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n  op.barMeasure = measureForScrollbars(cm);\n\n  // If the max line changed since it was last measured, measure it,\n  // and ensure the document's width matches it.\n  // updateDisplay_W2 will use these properties to do the actual resizing\n  if (display.maxLineChanged && !cm.options.lineWrapping) {\n    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n    cm.display.sizerWidth = op.adjustWidthTo;\n    op.barMeasure.scrollWidth =\n      Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n  }\n\n  if (op.updatedDisplay || op.selectionChanged)\n    { op.preparedSelection = display.input.prepareSelection(op.focus); }\n}\n\nfunction endOperation_W2(op) {\n  var cm = op.cm;\n\n  if (op.adjustWidthTo != null) {\n    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n    if (op.maxScrollLeft < cm.doc.scrollLeft)\n      { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n    cm.display.maxLineChanged = false;\n  }\n\n  var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus());\n  if (op.preparedSelection)\n    { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n  if (op.updatedDisplay || op.startHeight != cm.doc.height)\n    { updateScrollbars(cm, op.barMeasure); }\n  if (op.updatedDisplay)\n    { setDocumentHeight(cm, op.barMeasure); }\n\n  if (op.selectionChanged) { restartBlink(cm); }\n\n  if (cm.state.focused && op.updateInput)\n    { cm.display.input.reset(op.typing); }\n  if (takeFocus) { ensureFocus(op.cm); }\n}\n\nfunction endOperation_finish(op) {\n  var cm = op.cm, display = cm.display, doc = cm.doc;\n\n  if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n  // Abort mouse wheel delta measurement, when scrolling explicitly\n  if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n    { display.wheelStartX = display.wheelStartY = null; }\n\n  // Propagate the scroll position to the actual DOM scroller\n  if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {\n    doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));\n    display.scrollbars.setScrollTop(doc.scrollTop);\n    display.scroller.scrollTop = doc.scrollTop;\n  }\n  if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {\n    doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));\n    display.scrollbars.setScrollLeft(doc.scrollLeft);\n    display.scroller.scrollLeft = doc.scrollLeft;\n    alignHorizontally(cm);\n  }\n  // If we need to scroll a specific position into view, do so.\n  if (op.scrollToPos) {\n    var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n    maybeScrollWindow(cm, rect);\n  }\n\n  // Fire events for markers that are hidden/unidden by editing or\n  // undoing\n  var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n  if (hidden) { for (var i = 0; i < hidden.length; ++i)\n    { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n  if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n    { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n  if (display.wrapper.offsetHeight)\n    { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n  // Fire change events, and delayed event handlers\n  if (op.changeObjs)\n    { signal(cm, \"changes\", cm, op.changeObjs); }\n  if (op.update)\n    { op.update.finish(); }\n}\n\n// Run the given function in an operation\nfunction runInOp(cm, f) {\n  if (cm.curOp) { return f() }\n  startOperation(cm);\n  try { return f() }\n  finally { endOperation(cm); }\n}\n// Wraps a function in an operation. Returns the wrapped function.\nfunction operation(cm, f) {\n  return function() {\n    if (cm.curOp) { return f.apply(cm, arguments) }\n    startOperation(cm);\n    try { return f.apply(cm, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n// Used to add methods to editor and doc instances, wrapping them in\n// operations.\nfunction methodOp(f) {\n  return function() {\n    if (this.curOp) { return f.apply(this, arguments) }\n    startOperation(this);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(this); }\n  }\n}\nfunction docMethodOp(f) {\n  return function() {\n    var cm = this.cm;\n    if (!cm || cm.curOp) { return f.apply(this, arguments) }\n    startOperation(cm);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n\n// Updates the display.view data structure for a given change to the\n// document. From and to are in pre-change coordinates. Lendiff is\n// the amount of lines added or subtracted by the change. This is\n// used for changes that span multiple lines, or change the way\n// lines are divided into visual lines. regLineChange (below)\n// registers single-line changes.\nfunction regChange(cm, from, to, lendiff) {\n  if (from == null) { from = cm.doc.first; }\n  if (to == null) { to = cm.doc.first + cm.doc.size; }\n  if (!lendiff) { lendiff = 0; }\n\n  var display = cm.display;\n  if (lendiff && to < display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers > from))\n    { display.updateLineNumbers = from; }\n\n  cm.curOp.viewChanged = true;\n\n  if (from >= display.viewTo) { // Change after\n    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n      { resetView(cm); }\n  } else if (to <= display.viewFrom) { // Change before\n    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n      resetView(cm);\n    } else {\n      display.viewFrom += lendiff;\n      display.viewTo += lendiff;\n    }\n  } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n    resetView(cm);\n  } else if (from <= display.viewFrom) { // Top overlap\n    var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cut) {\n      display.view = display.view.slice(cut.index);\n      display.viewFrom = cut.lineN;\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  } else if (to >= display.viewTo) { // Bottom overlap\n    var cut$1 = viewCuttingPoint(cm, from, from, -1);\n    if (cut$1) {\n      display.view = display.view.slice(0, cut$1.index);\n      display.viewTo = cut$1.lineN;\n    } else {\n      resetView(cm);\n    }\n  } else { // Gap in the middle\n    var cutTop = viewCuttingPoint(cm, from, from, -1);\n    var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cutTop && cutBot) {\n      display.view = display.view.slice(0, cutTop.index)\n        .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n        .concat(display.view.slice(cutBot.index));\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  }\n\n  var ext = display.externalMeasured;\n  if (ext) {\n    if (to < ext.lineN)\n      { ext.lineN += lendiff; }\n    else if (from < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n  }\n}\n\n// Register a change to a single line. Type must be one of \"text\",\n// \"gutter\", \"class\", \"widget\"\nfunction regLineChange(cm, line, type) {\n  cm.curOp.viewChanged = true;\n  var display = cm.display, ext = cm.display.externalMeasured;\n  if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n    { display.externalMeasured = null; }\n\n  if (line < display.viewFrom || line >= display.viewTo) { return }\n  var lineView = display.view[findViewIndex(cm, line)];\n  if (lineView.node == null) { return }\n  var arr = lineView.changes || (lineView.changes = []);\n  if (indexOf(arr, type) == -1) { arr.push(type); }\n}\n\n// Clear the view.\nfunction resetView(cm) {\n  cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n  cm.display.view = [];\n  cm.display.viewOffset = 0;\n}\n\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\n  var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n  if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n    { return {index: index, lineN: newN} }\n  var n = cm.display.viewFrom;\n  for (var i = 0; i < index; i++)\n    { n += view[i].size; }\n  if (n != oldN) {\n    if (dir > 0) {\n      if (index == view.length - 1) { return null }\n      diff = (n + view[index].size) - oldN;\n      index++;\n    } else {\n      diff = n - oldN;\n    }\n    oldN += diff; newN += diff;\n  }\n  while (visualLineNo(cm.doc, newN) != newN) {\n    if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n    newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n    index += dir;\n  }\n  return {index: index, lineN: newN}\n}\n\n// Force the view to cover a given range, adding empty view element\n// or clipping off existing ones as needed.\nfunction adjustView(cm, from, to) {\n  var display = cm.display, view = display.view;\n  if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n    display.view = buildViewArray(cm, from, to);\n    display.viewFrom = from;\n  } else {\n    if (display.viewFrom > from)\n      { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n    else if (display.viewFrom < from)\n      { display.view = display.view.slice(findViewIndex(cm, from)); }\n    display.viewFrom = from;\n    if (display.viewTo < to)\n      { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n    else if (display.viewTo > to)\n      { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n  }\n  display.viewTo = to;\n}\n\n// Count the number of lines in the view whose DOM representation is\n// out of date (or nonexistent).\nfunction countDirtyView(cm) {\n  var view = cm.display.view, dirty = 0;\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n  }\n  return dirty\n}\n\n// HIGHLIGHT WORKER\n\nfunction startWorker(cm, time) {\n  if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)\n    { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n}\n\nfunction highlightWorker(cm) {\n  var doc = cm.doc;\n  if (doc.frontier < doc.first) { doc.frontier = doc.first; }\n  if (doc.frontier >= cm.display.viewTo) { return }\n  var end = +new Date + cm.options.workTime;\n  var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));\n  var changedLines = [];\n\n  doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n    if (doc.frontier >= cm.display.viewFrom) { // Visible\n      var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength;\n      var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true);\n      line.styles = highlighted.styles;\n      var oldCls = line.styleClasses, newCls = highlighted.classes;\n      if (newCls) { line.styleClasses = newCls; }\n      else if (oldCls) { line.styleClasses = null; }\n      var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n        oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n      for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n      if (ischange) { changedLines.push(doc.frontier); }\n      line.stateAfter = tooLong ? state : copyState(doc.mode, state);\n    } else {\n      if (line.text.length <= cm.options.maxHighlightLength)\n        { processLine(cm, line.text, state); }\n      line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;\n    }\n    ++doc.frontier;\n    if (+new Date > end) {\n      startWorker(cm, cm.options.workDelay);\n      return true\n    }\n  });\n  if (changedLines.length) { runInOp(cm, function () {\n    for (var i = 0; i < changedLines.length; i++)\n      { regLineChange(cm, changedLines[i], \"text\"); }\n  }); }\n}\n\n// DISPLAY DRAWING\n\nvar DisplayUpdate = function(cm, viewport, force) {\n  var display = cm.display;\n\n  this.viewport = viewport;\n  // Store some values that we'll need later (but don't want to force a relayout for)\n  this.visible = visibleLines(display, cm.doc, viewport);\n  this.editorIsHidden = !display.wrapper.offsetWidth;\n  this.wrapperHeight = display.wrapper.clientHeight;\n  this.wrapperWidth = display.wrapper.clientWidth;\n  this.oldDisplayWidth = displayWidth(cm);\n  this.force = force;\n  this.dims = getDimensions(cm);\n  this.events = [];\n};\n\nDisplayUpdate.prototype.signal = function (emitter, type) {\n  if (hasHandler(emitter, type))\n    { this.events.push(arguments); }\n};\nDisplayUpdate.prototype.finish = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.events.length; i++)\n    { signal.apply(null, this$1.events[i]); }\n};\n\nfunction maybeClipScrollbars(cm) {\n  var display = cm.display;\n  if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n    display.heightForcer.style.height = scrollGap(cm) + \"px\";\n    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n    display.scrollbarsClipped = true;\n  }\n}\n\n// Does the actual updating of the line display. Bails out\n// (returning false) when there is nothing to be done and forced is\n// false.\nfunction updateDisplayIfNeeded(cm, update) {\n  var display = cm.display, doc = cm.doc;\n\n  if (update.editorIsHidden) {\n    resetView(cm);\n    return false\n  }\n\n  // Bail out if the visible area is already rendered and nothing changed.\n  if (!update.force &&\n      update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n      display.renderedView == display.view && countDirtyView(cm) == 0)\n    { return false }\n\n  if (maybeUpdateLineNumberWidth(cm)) {\n    resetView(cm);\n    update.dims = getDimensions(cm);\n  }\n\n  // Compute a suitable new viewport (from & to)\n  var end = doc.first + doc.size;\n  var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n  var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n  if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n  if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n  if (sawCollapsedSpans) {\n    from = visualLineNo(cm.doc, from);\n    to = visualLineEndNo(cm.doc, to);\n  }\n\n  var different = from != display.viewFrom || to != display.viewTo ||\n    display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n  adjustView(cm, from, to);\n\n  display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n  // Position the mover div to align with the current scroll position\n  cm.display.mover.style.top = display.viewOffset + \"px\";\n\n  var toUpdate = countDirtyView(cm);\n  if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n    { return false }\n\n  // For big changes, we hide the enclosing element during the\n  // update, since that speeds up the operations on most browsers.\n  var focused = activeElt();\n  if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n  patchDisplay(cm, display.updateLineNumbers, update.dims);\n  if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n  display.renderedView = display.view;\n  // There might have been a widget with a focused element that got\n  // hidden or updated, if so re-focus it.\n  if (focused && activeElt() != focused && focused.offsetHeight) { focused.focus(); }\n\n  // Prevent selection and cursors from interfering with the scroll\n  // width and height.\n  removeChildren(display.cursorDiv);\n  removeChildren(display.selectionDiv);\n  display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n  if (different) {\n    display.lastWrapHeight = update.wrapperHeight;\n    display.lastWrapWidth = update.wrapperWidth;\n    startWorker(cm, 400);\n  }\n\n  display.updateLineNumbers = null;\n\n  return true\n}\n\nfunction postUpdateDisplay(cm, update) {\n  var viewport = update.viewport;\n\n  for (var first = true;; first = false) {\n    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n      // Clip forced viewport to actual scrollable area.\n      if (viewport && viewport.top != null)\n        { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n      // Updated line heights might result in the drawn area not\n      // actually covering the viewport. Keep looping until it does.\n      update.visible = visibleLines(cm.display, cm.doc, viewport);\n      if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n        { break }\n    }\n    if (!updateDisplayIfNeeded(cm, update)) { break }\n    updateHeightsInViewport(cm);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n  }\n\n  update.signal(cm, \"update\", cm);\n  if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n    cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n  }\n}\n\nfunction updateDisplaySimple(cm, viewport) {\n  var update = new DisplayUpdate(cm, viewport);\n  if (updateDisplayIfNeeded(cm, update)) {\n    updateHeightsInViewport(cm);\n    postUpdateDisplay(cm, update);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n    update.finish();\n  }\n}\n\n// Sync the actual display DOM structure with display.view, removing\n// nodes for lines that are no longer in view, and creating the ones\n// that are not there yet, and updating the ones that are out of\n// date.\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\n  var display = cm.display, lineNumbers = cm.options.lineNumbers;\n  var container = display.lineDiv, cur = container.firstChild;\n\n  function rm(node) {\n    var next = node.nextSibling;\n    // Works around a throw-scroll bug in OS X Webkit\n    if (webkit && mac && cm.display.currentWheelTarget == node)\n      { node.style.display = \"none\"; }\n    else\n      { node.parentNode.removeChild(node); }\n    return next\n  }\n\n  var view = display.view, lineN = display.viewFrom;\n  // Loop over the elements in the view, syncing cur (the DOM nodes\n  // in display.lineDiv) with the view as we go.\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (lineView.hidden) {\n    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n      var node = buildLineElement(cm, lineView, lineN, dims);\n      container.insertBefore(node, cur);\n    } else { // Already drawn\n      while (cur != lineView.node) { cur = rm(cur); }\n      var updateNumber = lineNumbers && updateNumbersFrom != null &&\n        updateNumbersFrom <= lineN && lineView.lineNumber;\n      if (lineView.changes) {\n        if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n        updateLineForChanges(cm, lineView, lineN, dims);\n      }\n      if (updateNumber) {\n        removeChildren(lineView.lineNumber);\n        lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n      }\n      cur = lineView.node.nextSibling;\n    }\n    lineN += lineView.size;\n  }\n  while (cur) { cur = rm(cur); }\n}\n\nfunction updateGutterSpace(cm) {\n  var width = cm.display.gutters.offsetWidth;\n  cm.display.sizer.style.marginLeft = width + \"px\";\n}\n\nfunction setDocumentHeight(cm, measure) {\n  cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n  cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n  cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n}\n\n// Rebuild the gutter elements, ensure the margin to the left of the\n// code matches their width.\nfunction updateGutters(cm) {\n  var gutters = cm.display.gutters, specs = cm.options.gutters;\n  removeChildren(gutters);\n  var i = 0;\n  for (; i < specs.length; ++i) {\n    var gutterClass = specs[i];\n    var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n    if (gutterClass == \"CodeMirror-linenumbers\") {\n      cm.display.lineGutter = gElt;\n      gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n    }\n  }\n  gutters.style.display = i ? \"\" : \"none\";\n  updateGutterSpace(cm);\n}\n\n// Make sure the gutters options contains the element\n// \"CodeMirror-linenumbers\" when the lineNumbers option is true.\nfunction setGuttersForLineNumbers(options) {\n  var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n  if (found == -1 && options.lineNumbers) {\n    options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n  } else if (found > -1 && !options.lineNumbers) {\n    options.gutters = options.gutters.slice(0);\n    options.gutters.splice(found, 1);\n  }\n}\n\n// Selection objects are immutable. A new one is created every time\n// the selection changes. A selection is one or more non-overlapping\n// (and non-touching) ranges, sorted, and an integer that indicates\n// which one is the primary selection (the one that's scrolled into\n// view, that getCursor returns, etc).\nvar Selection = function(ranges, primIndex) {\n  this.ranges = ranges;\n  this.primIndex = primIndex;\n};\n\nSelection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\nSelection.prototype.equals = function (other) {\n    var this$1 = this;\n\n  if (other == this) { return true }\n  if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var here = this$1.ranges[i], there = other.ranges[i];\n    if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n  }\n  return true\n};\n\nSelection.prototype.deepCopy = function () {\n    var this$1 = this;\n\n  var out = [];\n  for (var i = 0; i < this.ranges.length; i++)\n    { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n  return new Selection(out, this.primIndex)\n};\n\nSelection.prototype.somethingSelected = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.ranges.length; i++)\n    { if (!this$1.ranges[i].empty()) { return true } }\n  return false\n};\n\nSelection.prototype.contains = function (pos, end) {\n    var this$1 = this;\n\n  if (!end) { end = pos; }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var range = this$1.ranges[i];\n    if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n      { return i }\n  }\n  return -1\n};\n\nvar Range = function(anchor, head) {\n  this.anchor = anchor; this.head = head;\n};\n\nRange.prototype.from = function () { return minPos(this.anchor, this.head) };\nRange.prototype.to = function () { return maxPos(this.anchor, this.head) };\nRange.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n// Take an unsorted, potentially overlapping set of ranges, and\n// build a selection out of it. 'Consumes' ranges array (modifying\n// it).\nfunction normalizeSelection(ranges, primIndex) {\n  var prim = ranges[primIndex];\n  ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n  primIndex = indexOf(ranges, prim);\n  for (var i = 1; i < ranges.length; i++) {\n    var cur = ranges[i], prev = ranges[i - 1];\n    if (cmp(prev.to(), cur.from()) >= 0) {\n      var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n      var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n      if (i <= primIndex) { --primIndex; }\n      ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n    }\n  }\n  return new Selection(ranges, primIndex)\n}\n\nfunction simpleSelection(anchor, head) {\n  return new Selection([new Range(anchor, head || anchor)], 0)\n}\n\n// Compute the position of the end of a change (its 'to' property\n// refers to the pre-change end).\nfunction changeEnd(change) {\n  if (!change.text) { return change.to }\n  return Pos(change.from.line + change.text.length - 1,\n             lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n}\n\n// Adjust a position to refer to the post-change position of the\n// same text, or the end of the change if the change covers it.\nfunction adjustForChange(pos, change) {\n  if (cmp(pos, change.from) < 0) { return pos }\n  if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n  var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n  if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n  return Pos(line, ch)\n}\n\nfunction computeSelAfterChange(doc, change) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    var range = doc.sel.ranges[i];\n    out.push(new Range(adjustForChange(range.anchor, change),\n                       adjustForChange(range.head, change)));\n  }\n  return normalizeSelection(out, doc.sel.primIndex)\n}\n\nfunction offsetPos(pos, old, nw) {\n  if (pos.line == old.line)\n    { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n  else\n    { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n}\n\n// Used by replaceSelections to allow moving the selection to the\n// start or around the replaced test. Hint may be \"start\" or \"around\".\nfunction computeReplacedSel(doc, changes, hint) {\n  var out = [];\n  var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n    var from = offsetPos(change.from, oldPrev, newPrev);\n    var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n    oldPrev = change.to;\n    newPrev = to;\n    if (hint == \"around\") {\n      var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n      out[i] = new Range(inv ? to : from, inv ? from : to);\n    } else {\n      out[i] = new Range(from, from);\n    }\n  }\n  return new Selection(out, doc.sel.primIndex)\n}\n\n// Used to get the editor into a consistent state again when options change.\n\nfunction loadMode(cm) {\n  cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n  resetModeState(cm);\n}\n\nfunction resetModeState(cm) {\n  cm.doc.iter(function (line) {\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n  });\n  cm.doc.frontier = cm.doc.first;\n  startWorker(cm, 100);\n  cm.state.modeGen++;\n  if (cm.curOp) { regChange(cm); }\n}\n\n// DOCUMENT DATA STRUCTURE\n\n// By default, updates that start and end at the beginning of a line\n// are treated specially, in order to make the association of line\n// widgets and marker elements with the text behave more intuitive.\nfunction isWholeLineUpdate(doc, change) {\n  return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n    (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n}\n\n// Perform a change on the document data structure.\nfunction updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n  function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n  function update(line, text, spans) {\n    updateLine(line, text, spans, estimateHeight$$1);\n    signalLater(line, \"change\", line, change);\n  }\n  function linesFor(start, end) {\n    var result = [];\n    for (var i = start; i < end; ++i)\n      { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n    return result\n  }\n\n  var from = change.from, to = change.to, text = change.text;\n  var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n  var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n  // Adjust the line structure\n  if (change.full) {\n    doc.insert(0, linesFor(0, text.length));\n    doc.remove(text.length, doc.size - text.length);\n  } else if (isWholeLineUpdate(doc, change)) {\n    // This is a whole-line replace. Treated specially to make\n    // sure line objects move the way they are supposed to.\n    var added = linesFor(0, text.length - 1);\n    update(lastLine, lastLine.text, lastSpans);\n    if (nlines) { doc.remove(from.line, nlines); }\n    if (added.length) { doc.insert(from.line, added); }\n  } else if (firstLine == lastLine) {\n    if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n    } else {\n      var added$1 = linesFor(1, text.length - 1);\n      added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      doc.insert(from.line + 1, added$1);\n    }\n  } else if (text.length == 1) {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n    doc.remove(from.line + 1, nlines);\n  } else {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n    var added$2 = linesFor(1, text.length - 1);\n    if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n    doc.insert(from.line + 1, added$2);\n  }\n\n  signalLater(doc, \"change\", doc, change);\n}\n\n// Call f for all linked documents.\nfunction linkedDocs(doc, f, sharedHistOnly) {\n  function propagate(doc, skip, sharedHist) {\n    if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n      var rel = doc.linked[i];\n      if (rel.doc == skip) { continue }\n      var shared = sharedHist && rel.sharedHist;\n      if (sharedHistOnly && !shared) { continue }\n      f(rel.doc, shared);\n      propagate(rel.doc, doc, shared);\n    } }\n  }\n  propagate(doc, null, true);\n}\n\n// Attach a document to an editor.\nfunction attachDoc(cm, doc) {\n  if (doc.cm) { throw new Error(\"This document is already in use.\") }\n  cm.doc = doc;\n  doc.cm = cm;\n  estimateLineHeights(cm);\n  loadMode(cm);\n  setDirectionClass(cm);\n  if (!cm.options.lineWrapping) { findMaxLine(cm); }\n  cm.options.mode = doc.modeOption;\n  regChange(cm);\n}\n\nfunction setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n}\n\nfunction directionChanged(cm) {\n  runInOp(cm, function () {\n    setDirectionClass(cm);\n    regChange(cm);\n  });\n}\n\nfunction History(startGen) {\n  // Arrays of change events and selections. Doing something adds an\n  // event to done and clears undo. Undoing moves events from done\n  // to undone, redoing moves them in the other direction.\n  this.done = []; this.undone = [];\n  this.undoDepth = Infinity;\n  // Used to track when changes can be merged into a single undo\n  // event\n  this.lastModTime = this.lastSelTime = 0;\n  this.lastOp = this.lastSelOp = null;\n  this.lastOrigin = this.lastSelOrigin = null;\n  // Used by the isClean() method\n  this.generation = this.maxGeneration = startGen || 1;\n}\n\n// Create a history change event from an updateDoc-style change\n// object.\nfunction historyChangeFromChange(doc, change) {\n  var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n  attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n  linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n  return histChange\n}\n\n// Pop all selection events off the end of a history array. Stop at\n// a change event.\nfunction clearSelectionEvents(array) {\n  while (array.length) {\n    var last = lst(array);\n    if (last.ranges) { array.pop(); }\n    else { break }\n  }\n}\n\n// Find the top change event in the history. Pop off selection\n// events that are in the way.\nfunction lastChangeEvent(hist, force) {\n  if (force) {\n    clearSelectionEvents(hist.done);\n    return lst(hist.done)\n  } else if (hist.done.length && !lst(hist.done).ranges) {\n    return lst(hist.done)\n  } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n    hist.done.pop();\n    return lst(hist.done)\n  }\n}\n\n// Register a change in the history. Merges changes that are within\n// a single operation, or are close together with an origin that\n// allows merging (starting with \"+\") into a single event.\nfunction addChangeToHistory(doc, change, selAfter, opId) {\n  var hist = doc.history;\n  hist.undone.length = 0;\n  var time = +new Date, cur;\n  var last;\n\n  if ((hist.lastOp == opId ||\n       hist.lastOrigin == change.origin && change.origin &&\n       ((change.origin.charAt(0) == \"+\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\n        change.origin.charAt(0) == \"*\")) &&\n      (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n    // Merge this change into the last event\n    last = lst(cur.changes);\n    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n      // Optimized case for simple insertion -- don't want to add\n      // new changesets for every character typed\n      last.to = changeEnd(change);\n    } else {\n      // Add new sub-event\n      cur.changes.push(historyChangeFromChange(doc, change));\n    }\n  } else {\n    // Can not be merged, start a new event.\n    var before = lst(hist.done);\n    if (!before || !before.ranges)\n      { pushSelectionToHistory(doc.sel, hist.done); }\n    cur = {changes: [historyChangeFromChange(doc, change)],\n           generation: hist.generation};\n    hist.done.push(cur);\n    while (hist.done.length > hist.undoDepth) {\n      hist.done.shift();\n      if (!hist.done[0].ranges) { hist.done.shift(); }\n    }\n  }\n  hist.done.push(selAfter);\n  hist.generation = ++hist.maxGeneration;\n  hist.lastModTime = hist.lastSelTime = time;\n  hist.lastOp = hist.lastSelOp = opId;\n  hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n  if (!last) { signal(doc, \"historyAdded\"); }\n}\n\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\n  var ch = origin.charAt(0);\n  return ch == \"*\" ||\n    ch == \"+\" &&\n    prev.ranges.length == sel.ranges.length &&\n    prev.somethingSelected() == sel.somethingSelected() &&\n    new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n}\n\n// Called whenever the selection changes, sets the new selection as\n// the pending selection in the history, and pushes the old pending\n// selection into the 'done' array when it was significantly\n// different (in number of selected ranges, emptiness, or time).\nfunction addSelectionToHistory(doc, sel, opId, options) {\n  var hist = doc.history, origin = options && options.origin;\n\n  // A new event is started when the previous origin does not match\n  // the current, or the origins don't allow matching. Origins\n  // starting with * are always merged, those starting with + are\n  // merged when similar and close together in time.\n  if (opId == hist.lastSelOp ||\n      (origin && hist.lastSelOrigin == origin &&\n       (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n        selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n    { hist.done[hist.done.length - 1] = sel; }\n  else\n    { pushSelectionToHistory(sel, hist.done); }\n\n  hist.lastSelTime = +new Date;\n  hist.lastSelOrigin = origin;\n  hist.lastSelOp = opId;\n  if (options && options.clearRedo !== false)\n    { clearSelectionEvents(hist.undone); }\n}\n\nfunction pushSelectionToHistory(sel, dest) {\n  var top = lst(dest);\n  if (!(top && top.ranges && top.equals(sel)))\n    { dest.push(sel); }\n}\n\n// Used to store marked span information in the history.\nfunction attachLocalSpans(doc, change, from, to) {\n  var existing = change[\"spans_\" + doc.id], n = 0;\n  doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n    if (line.markedSpans)\n      { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n    ++n;\n  });\n}\n\n// When un/re-doing restores text containing marked spans, those\n// that have been explicitly cleared should not be restored.\nfunction removeClearedSpans(spans) {\n  if (!spans) { return null }\n  var out;\n  for (var i = 0; i < spans.length; ++i) {\n    if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n    else if (out) { out.push(spans[i]); }\n  }\n  return !out ? spans : out.length ? out : null\n}\n\n// Retrieve and filter the old marked spans stored in a change event.\nfunction getOldSpans(doc, change) {\n  var found = change[\"spans_\" + doc.id];\n  if (!found) { return null }\n  var nw = [];\n  for (var i = 0; i < change.text.length; ++i)\n    { nw.push(removeClearedSpans(found[i])); }\n  return nw\n}\n\n// Used for un/re-doing changes from the history. Combines the\n// result of computing the existing spans with the set of spans that\n// existed in the history (so that deleting around a span and then\n// undoing brings back the span).\nfunction mergeOldSpans(doc, change) {\n  var old = getOldSpans(doc, change);\n  var stretched = stretchSpansOverChange(doc, change);\n  if (!old) { return stretched }\n  if (!stretched) { return old }\n\n  for (var i = 0; i < old.length; ++i) {\n    var oldCur = old[i], stretchCur = stretched[i];\n    if (oldCur && stretchCur) {\n      spans: for (var j = 0; j < stretchCur.length; ++j) {\n        var span = stretchCur[j];\n        for (var k = 0; k < oldCur.length; ++k)\n          { if (oldCur[k].marker == span.marker) { continue spans } }\n        oldCur.push(span);\n      }\n    } else if (stretchCur) {\n      old[i] = stretchCur;\n    }\n  }\n  return old\n}\n\n// Used both to provide a JSON-safe object in .getHistory, and, when\n// detaching a document, to split the history in two\nfunction copyHistoryArray(events, newGroup, instantiateSel) {\n  var copy = [];\n  for (var i = 0; i < events.length; ++i) {\n    var event = events[i];\n    if (event.ranges) {\n      copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n      continue\n    }\n    var changes = event.changes, newChanges = [];\n    copy.push({changes: newChanges});\n    for (var j = 0; j < changes.length; ++j) {\n      var change = changes[j], m = (void 0);\n      newChanges.push({from: change.from, to: change.to, text: change.text});\n      if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n        if (indexOf(newGroup, Number(m[1])) > -1) {\n          lst(newChanges)[prop] = change[prop];\n          delete change[prop];\n        }\n      } } }\n    }\n  }\n  return copy\n}\n\n// The 'scroll' parameter given to many of these indicated whether\n// the new cursor position should be scrolled into view after\n// modifying the selection.\n\n// If shift is held or the extend flag is set, extends a range to\n// include a given position (and optionally a second position).\n// Otherwise, simply returns the range between the given positions.\n// Used for cursor motion and such.\nfunction extendRange(doc, range, head, other) {\n  if (doc.cm && doc.cm.display.shift || doc.extend) {\n    var anchor = range.anchor;\n    if (other) {\n      var posBefore = cmp(head, anchor) < 0;\n      if (posBefore != (cmp(other, anchor) < 0)) {\n        anchor = head;\n        head = other;\n      } else if (posBefore != (cmp(head, other) < 0)) {\n        head = other;\n      }\n    }\n    return new Range(anchor, head)\n  } else {\n    return new Range(other || head, head)\n  }\n}\n\n// Extend the primary selection range, discard the rest.\nfunction extendSelection(doc, head, other, options) {\n  setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);\n}\n\n// Extend all selections (pos is an array of selections with length\n// equal the number of selections)\nfunction extendSelections(doc, heads, options) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++)\n    { out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); }\n  var newSel = normalizeSelection(out, doc.sel.primIndex);\n  setSelection(doc, newSel, options);\n}\n\n// Updates a single range in the selection.\nfunction replaceOneSelection(doc, i, range, options) {\n  var ranges = doc.sel.ranges.slice(0);\n  ranges[i] = range;\n  setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n}\n\n// Reset the selection to a single range.\nfunction setSimpleSelection(doc, anchor, head, options) {\n  setSelection(doc, simpleSelection(anchor, head), options);\n}\n\n// Give beforeSelectionChange handlers a change to influence a\n// selection update.\nfunction filterSelectionChange(doc, sel, options) {\n  var obj = {\n    ranges: sel.ranges,\n    update: function(ranges) {\n      var this$1 = this;\n\n      this.ranges = [];\n      for (var i = 0; i < ranges.length; i++)\n        { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                   clipPos(doc, ranges[i].head)); }\n    },\n    origin: options && options.origin\n  };\n  signal(doc, \"beforeSelectionChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n  if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }\n  else { return sel }\n}\n\nfunction setSelectionReplaceHistory(doc, sel, options) {\n  var done = doc.history.done, last = lst(done);\n  if (last && last.ranges) {\n    done[done.length - 1] = sel;\n    setSelectionNoUndo(doc, sel, options);\n  } else {\n    setSelection(doc, sel, options);\n  }\n}\n\n// Set a new selection.\nfunction setSelection(doc, sel, options) {\n  setSelectionNoUndo(doc, sel, options);\n  addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n}\n\nfunction setSelectionNoUndo(doc, sel, options) {\n  if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n    { sel = filterSelectionChange(doc, sel, options); }\n\n  var bias = options && options.bias ||\n    (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n  setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n  if (!(options && options.scroll === false) && doc.cm)\n    { ensureCursorVisible(doc.cm); }\n}\n\nfunction setSelectionInner(doc, sel) {\n  if (sel.equals(doc.sel)) { return }\n\n  doc.sel = sel;\n\n  if (doc.cm) {\n    doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n    signalCursorActivity(doc.cm);\n  }\n  signalLater(doc, \"cursorActivity\", doc);\n}\n\n// Verify that the selection does not partially select any atomic\n// marked ranges.\nfunction reCheckSelection(doc) {\n  setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);\n}\n\n// Return a selection that does not partially select any atomic\n// ranges.\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\n  var out;\n  for (var i = 0; i < sel.ranges.length; i++) {\n    var range = sel.ranges[i];\n    var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n    var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n    var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n    if (out || newAnchor != range.anchor || newHead != range.head) {\n      if (!out) { out = sel.ranges.slice(0, i); }\n      out[i] = new Range(newAnchor, newHead);\n    }\n  }\n  return out ? normalizeSelection(out, sel.primIndex) : sel\n}\n\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n  var line = getLine(doc, pos.line);\n  if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n    var sp = line.markedSpans[i], m = sp.marker;\n    if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n        (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n      if (mayClear) {\n        signal(m, \"beforeCursorEnter\");\n        if (m.explicitlyCleared) {\n          if (!line.markedSpans) { break }\n          else {--i; continue}\n        }\n      }\n      if (!m.atomic) { continue }\n\n      if (oldPos) {\n        var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n        if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n          { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n          { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n      }\n\n      var far = m.find(dir < 0 ? -1 : 1);\n      if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n        { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n      return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n    }\n  } }\n  return pos\n}\n\n// Ensure a given position is not inside an atomic range.\nfunction skipAtomic(doc, pos, oldPos, bias, mayClear) {\n  var dir = bias || 1;\n  var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n      skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n  if (!found) {\n    doc.cantEdit = true;\n    return Pos(doc.first, 0)\n  }\n  return found\n}\n\nfunction movePos(doc, pos, dir, line) {\n  if (dir < 0 && pos.ch == 0) {\n    if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n    else { return null }\n  } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n    if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n    else { return null }\n  } else {\n    return new Pos(pos.line, pos.ch + dir)\n  }\n}\n\nfunction selectAll(cm) {\n  cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n}\n\n// UPDATING\n\n// Allow \"beforeChange\" event handlers to influence a change\nfunction filterChange(doc, change, update) {\n  var obj = {\n    canceled: false,\n    from: change.from,\n    to: change.to,\n    text: change.text,\n    origin: change.origin,\n    cancel: function () { return obj.canceled = true; }\n  };\n  if (update) { obj.update = function (from, to, text, origin) {\n    if (from) { obj.from = clipPos(doc, from); }\n    if (to) { obj.to = clipPos(doc, to); }\n    if (text) { obj.text = text; }\n    if (origin !== undefined) { obj.origin = origin; }\n  }; }\n  signal(doc, \"beforeChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n  if (obj.canceled) { return null }\n  return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n}\n\n// Apply a change to a document, and add it to the document's\n// history, and propagating it to all linked documents.\nfunction makeChange(doc, change, ignoreReadOnly) {\n  if (doc.cm) {\n    if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n    if (doc.cm.state.suppressEdits) { return }\n  }\n\n  if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n    change = filterChange(doc, change, true);\n    if (!change) { return }\n  }\n\n  // Possibly split or suppress the update based on the presence\n  // of read-only spans in its range.\n  var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n  if (split) {\n    for (var i = split.length - 1; i >= 0; --i)\n      { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text}); }\n  } else {\n    makeChangeInner(doc, change);\n  }\n}\n\nfunction makeChangeInner(doc, change) {\n  if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n  var selAfter = computeSelAfterChange(doc, change);\n  addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n  makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n  var rebased = [];\n\n  linkedDocs(doc, function (doc, sharedHist) {\n    if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n      rebaseHist(doc.history, change);\n      rebased.push(doc.history);\n    }\n    makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n  });\n}\n\n// Revert a change stored in a document's history.\nfunction makeChangeFromHistory(doc, type, allowSelectionOnly) {\n  if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return }\n\n  var hist = doc.history, event, selAfter = doc.sel;\n  var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n  // Verify that there is a useable event (so that ctrl-z won't\n  // needlessly clear selection events)\n  var i = 0;\n  for (; i < source.length; i++) {\n    event = source[i];\n    if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n      { break }\n  }\n  if (i == source.length) { return }\n  hist.lastOrigin = hist.lastSelOrigin = null;\n\n  for (;;) {\n    event = source.pop();\n    if (event.ranges) {\n      pushSelectionToHistory(event, dest);\n      if (allowSelectionOnly && !event.equals(doc.sel)) {\n        setSelection(doc, event, {clearRedo: false});\n        return\n      }\n      selAfter = event;\n    }\n    else { break }\n  }\n\n  // Build up a reverse change object to add to the opposite history\n  // stack (redo when undoing, and vice versa).\n  var antiChanges = [];\n  pushSelectionToHistory(selAfter, dest);\n  dest.push({changes: antiChanges, generation: hist.generation});\n  hist.generation = event.generation || ++hist.maxGeneration;\n\n  var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n  var loop = function ( i ) {\n    var change = event.changes[i];\n    change.origin = type;\n    if (filter && !filterChange(doc, change, false)) {\n      source.length = 0;\n      return {}\n    }\n\n    antiChanges.push(historyChangeFromChange(doc, change));\n\n    var after = i ? computeSelAfterChange(doc, change) : lst(source);\n    makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n    if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n    var rebased = [];\n\n    // Propagate to the linked documents\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n    });\n  };\n\n  for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n    var returned = loop( i$1 );\n\n    if ( returned ) return returned.v;\n  }\n}\n\n// Sub-views need their line numbers shifted when text is added\n// above or below them in the parent document.\nfunction shiftDoc(doc, distance) {\n  if (distance == 0) { return }\n  doc.first += distance;\n  doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n    Pos(range.anchor.line + distance, range.anchor.ch),\n    Pos(range.head.line + distance, range.head.ch)\n  ); }), doc.sel.primIndex);\n  if (doc.cm) {\n    regChange(doc.cm, doc.first, doc.first - distance, distance);\n    for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n      { regLineChange(doc.cm, l, \"gutter\"); }\n  }\n}\n\n// More lower-level change function, handling only a single document\n// (not linked ones).\nfunction makeChangeSingleDoc(doc, change, selAfter, spans) {\n  if (doc.cm && !doc.cm.curOp)\n    { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n  if (change.to.line < doc.first) {\n    shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n    return\n  }\n  if (change.from.line > doc.lastLine()) { return }\n\n  // Clip the change to the size of this doc\n  if (change.from.line < doc.first) {\n    var shift = change.text.length - 1 - (doc.first - change.from.line);\n    shiftDoc(doc, shift);\n    change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n              text: [lst(change.text)], origin: change.origin};\n  }\n  var last = doc.lastLine();\n  if (change.to.line > last) {\n    change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n              text: [change.text[0]], origin: change.origin};\n  }\n\n  change.removed = getBetween(doc, change.from, change.to);\n\n  if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n  if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n  else { updateDoc(doc, change, spans); }\n  setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n}\n\n// Handle the interaction of a change to a document with the editor\n// that this document is part of.\nfunction makeChangeSingleDocInEditor(cm, change, spans) {\n  var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n  var recomputeMaxLength = false, checkWidthStart = from.line;\n  if (!cm.options.lineWrapping) {\n    checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n    doc.iter(checkWidthStart, to.line + 1, function (line) {\n      if (line == display.maxLine) {\n        recomputeMaxLength = true;\n        return true\n      }\n    });\n  }\n\n  if (doc.sel.contains(change.from, change.to) > -1)\n    { signalCursorActivity(cm); }\n\n  updateDoc(doc, change, spans, estimateHeight(cm));\n\n  if (!cm.options.lineWrapping) {\n    doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n      var len = lineLength(line);\n      if (len > display.maxLineLength) {\n        display.maxLine = line;\n        display.maxLineLength = len;\n        display.maxLineChanged = true;\n        recomputeMaxLength = false;\n      }\n    });\n    if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n  }\n\n  // Adjust frontier, schedule worker\n  doc.frontier = Math.min(doc.frontier, from.line);\n  startWorker(cm, 400);\n\n  var lendiff = change.text.length - (to.line - from.line) - 1;\n  // Remember that these lines changed, for updating the display\n  if (change.full)\n    { regChange(cm); }\n  else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n    { regLineChange(cm, from.line, \"text\"); }\n  else\n    { regChange(cm, from.line, to.line + 1, lendiff); }\n\n  var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n  if (changeHandler || changesHandler) {\n    var obj = {\n      from: from, to: to,\n      text: change.text,\n      removed: change.removed,\n      origin: change.origin\n    };\n    if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n    if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n  }\n  cm.display.selForContextMenu = null;\n}\n\nfunction replaceRange(doc, code, from, to, origin) {\n  if (!to) { to = from; }\n  if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\n  if (typeof code == \"string\") { code = doc.splitLines(code); }\n  makeChange(doc, {from: from, to: to, text: code, origin: origin});\n}\n\n// Rebasing/resetting history to deal with externally-sourced changes\n\nfunction rebaseHistSelSingle(pos, from, to, diff) {\n  if (to < pos.line) {\n    pos.line += diff;\n  } else if (from < pos.line) {\n    pos.line = from;\n    pos.ch = 0;\n  }\n}\n\n// Tries to rebase an array of history events given a change in the\n// document. If the change touches the same lines as the event, the\n// event, and everything 'behind' it, is discarded. If the change is\n// before the event, the event's positions are updated. Uses a\n// copy-on-write scheme for the positions, to avoid having to\n// reallocate them all on every rebase, but also avoid problems with\n// shared position objects being unsafely updated.\nfunction rebaseHistArray(array, from, to, diff) {\n  for (var i = 0; i < array.length; ++i) {\n    var sub = array[i], ok = true;\n    if (sub.ranges) {\n      if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n      for (var j = 0; j < sub.ranges.length; j++) {\n        rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n        rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n      }\n      continue\n    }\n    for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n      var cur = sub.changes[j$1];\n      if (to < cur.from.line) {\n        cur.from = Pos(cur.from.line + diff, cur.from.ch);\n        cur.to = Pos(cur.to.line + diff, cur.to.ch);\n      } else if (from <= cur.to.line) {\n        ok = false;\n        break\n      }\n    }\n    if (!ok) {\n      array.splice(0, i + 1);\n      i = 0;\n    }\n  }\n}\n\nfunction rebaseHist(hist, change) {\n  var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n  rebaseHistArray(hist.done, from, to, diff);\n  rebaseHistArray(hist.undone, from, to, diff);\n}\n\n// Utility for applying a change to a line by handle or number,\n// returning the number and optionally registering the line as\n// changed.\nfunction changeLine(doc, handle, changeType, op) {\n  var no = handle, line = handle;\n  if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n  else { no = lineNo(handle); }\n  if (no == null) { return null }\n  if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n  return line\n}\n\n// The document is represented as a BTree consisting of leaves, with\n// chunk of lines in them, and branches, with up to ten leaves or\n// other branch nodes below them. The top node is always a branch\n// node, and is the document object itself (meaning it has\n// additional methods and properties).\n//\n// All nodes have parent links. The tree is used both to go from\n// line numbers to line objects, and to go from objects to numbers.\n// It also indexes by height, and is used to convert between height\n// and line object, and to find the total height of the document.\n//\n// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\nvar LeafChunk = function(lines) {\n  var this$1 = this;\n\n  this.lines = lines;\n  this.parent = null;\n  var height = 0;\n  for (var i = 0; i < lines.length; ++i) {\n    lines[i].parent = this$1;\n    height += lines[i].height;\n  }\n  this.height = height;\n};\n\nLeafChunk.prototype.chunkSize = function () { return this.lines.length };\n\n// Remove the n lines at offset 'at'.\nLeafChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  for (var i = at, e = at + n; i < e; ++i) {\n    var line = this$1.lines[i];\n    this$1.height -= line.height;\n    cleanUpLine(line);\n    signalLater(line, \"delete\");\n  }\n  this.lines.splice(at, n);\n};\n\n// Helper used to collapse a small branch into a single leaf.\nLeafChunk.prototype.collapse = function (lines) {\n  lines.push.apply(lines, this.lines);\n};\n\n// Insert the given array of lines at offset 'at', count them as\n// having the given height.\nLeafChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.height += height;\n  this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n  for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n};\n\n// Used to iterate over a part of the tree.\nLeafChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var e = at + n; at < e; ++at)\n    { if (op(this$1.lines[at])) { return true } }\n};\n\nvar BranchChunk = function(children) {\n  var this$1 = this;\n\n  this.children = children;\n  var size = 0, height = 0;\n  for (var i = 0; i < children.length; ++i) {\n    var ch = children[i];\n    size += ch.chunkSize(); height += ch.height;\n    ch.parent = this$1;\n  }\n  this.size = size;\n  this.height = height;\n  this.parent = null;\n};\n\nBranchChunk.prototype.chunkSize = function () { return this.size };\n\nBranchChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  this.size -= n;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var rm = Math.min(n, sz - at), oldHeight = child.height;\n      child.removeInner(at, rm);\n      this$1.height -= oldHeight - child.height;\n      if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n      if ((n -= rm) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n  // If the result is smaller than 25 lines, ensure that it is a\n  // single leaf node.\n  if (this.size - n < 25 &&\n      (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n    var lines = [];\n    this.collapse(lines);\n    this.children = [new LeafChunk(lines)];\n    this.children[0].parent = this;\n  }\n};\n\nBranchChunk.prototype.collapse = function (lines) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n};\n\nBranchChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.size += lines.length;\n  this.height += height;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at <= sz) {\n      child.insertInner(at, lines, height);\n      if (child.lines && child.lines.length > 50) {\n        // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n        // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n        var remaining = child.lines.length % 25 + 25;\n        for (var pos = remaining; pos < child.lines.length;) {\n          var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n          child.height -= leaf.height;\n          this$1.children.splice(++i, 0, leaf);\n          leaf.parent = this$1;\n        }\n        child.lines = child.lines.slice(0, remaining);\n        this$1.maybeSpill();\n      }\n      break\n    }\n    at -= sz;\n  }\n};\n\n// When a node has grown, check whether it should be split.\nBranchChunk.prototype.maybeSpill = function () {\n  if (this.children.length <= 10) { return }\n  var me = this;\n  do {\n    var spilled = me.children.splice(me.children.length - 5, 5);\n    var sibling = new BranchChunk(spilled);\n    if (!me.parent) { // Become the parent node\n      var copy = new BranchChunk(me.children);\n      copy.parent = me;\n      me.children = [copy, sibling];\n      me = copy;\n   } else {\n      me.size -= sibling.size;\n      me.height -= sibling.height;\n      var myIndex = indexOf(me.parent.children, me);\n      me.parent.children.splice(myIndex + 1, 0, sibling);\n    }\n    sibling.parent = me.parent;\n  } while (me.children.length > 10)\n  me.parent.maybeSpill();\n};\n\nBranchChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var used = Math.min(n, sz - at);\n      if (child.iterN(at, used, op)) { return true }\n      if ((n -= used) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n};\n\n// Line widgets are block elements displayed above or below a line.\n\nvar LineWidget = function(doc, node, options) {\n  var this$1 = this;\n\n  if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n    { this$1[opt] = options[opt]; } } }\n  this.doc = doc;\n  this.node = node;\n};\n\nLineWidget.prototype.clear = function () {\n    var this$1 = this;\n\n  var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n  if (no == null || !ws) { return }\n  for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n  if (!ws.length) { line.widgets = null; }\n  var height = widgetHeight(this);\n  updateLineHeight(line, Math.max(0, line.height - height));\n  if (cm) {\n    runInOp(cm, function () {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n    });\n    signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n  }\n};\n\nLineWidget.prototype.changed = function () {\n    var this$1 = this;\n\n  var oldH = this.height, cm = this.doc.cm, line = this.line;\n  this.height = null;\n  var diff = widgetHeight(this) - oldH;\n  if (!diff) { return }\n  updateLineHeight(line, line.height + diff);\n  if (cm) {\n    runInOp(cm, function () {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n    });\n  }\n};\neventMixin(LineWidget);\n\nfunction adjustScrollWhenAboveVisible(cm, line, diff) {\n  if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n    { addToScrollPos(cm, null, diff); }\n}\n\nfunction addLineWidget(doc, handle, node, options) {\n  var widget = new LineWidget(doc, node, options);\n  var cm = doc.cm;\n  if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n  changeLine(doc, handle, \"widget\", function (line) {\n    var widgets = line.widgets || (line.widgets = []);\n    if (widget.insertAt == null) { widgets.push(widget); }\n    else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n    widget.line = line;\n    if (cm && !lineIsHidden(doc, line)) {\n      var aboveVisible = heightAtLine(line) < doc.scrollTop;\n      updateLineHeight(line, line.height + widgetHeight(widget));\n      if (aboveVisible) { addToScrollPos(cm, null, widget.height); }\n      cm.curOp.forceUpdate = true;\n    }\n    return true\n  });\n  signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n  return widget\n}\n\n// TEXTMARKERS\n\n// Created with markText and setBookmark methods. A TextMarker is a\n// handle that can be used to clear or find a marked position in the\n// document. Line objects hold arrays (markedSpans) containing\n// {from, to, marker} object pointing to such marker objects, and\n// indicating that such a marker is present on that line. Multiple\n// lines may point to the same marker when it spans across lines.\n// The spans will have null for their from/to properties when the\n// marker continues beyond the start/end of the line. Markers have\n// links back to the lines they currently touch.\n\n// Collapsed markers have unique ids, in order to be able to order\n// them, which is needed for uniquely determining an outer marker\n// when they overlap (they may nest, but not partially overlap).\nvar nextMarkerId = 0;\n\nvar TextMarker = function(doc, type) {\n  this.lines = [];\n  this.type = type;\n  this.doc = doc;\n  this.id = ++nextMarkerId;\n};\n\n// Clear the marker.\nTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  var cm = this.doc.cm, withOp = cm && !cm.curOp;\n  if (withOp) { startOperation(cm); }\n  if (hasHandler(this, \"clear\")) {\n    var found = this.find();\n    if (found) { signalLater(this, \"clear\", found.from, found.to); }\n  }\n  var min = null, max = null;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n    else if (cm) {\n      if (span.to != null) { max = lineNo(line); }\n      if (span.from != null) { min = lineNo(line); }\n    }\n    line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n    if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n      { updateLineHeight(line, textHeight(cm.display)); }\n  }\n  if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n    var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n    if (len > cm.display.maxLineLength) {\n      cm.display.maxLine = visual;\n      cm.display.maxLineLength = len;\n      cm.display.maxLineChanged = true;\n    }\n  } }\n\n  if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n  this.lines.length = 0;\n  this.explicitlyCleared = true;\n  if (this.atomic && this.doc.cantEdit) {\n    this.doc.cantEdit = false;\n    if (cm) { reCheckSelection(cm.doc); }\n  }\n  if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n  if (withOp) { endOperation(cm); }\n  if (this.parent) { this.parent.clear(); }\n};\n\n// Find the position of the marker in the document. Returns a {from,\n// to} object by default. Side can be passed to get a specific side\n// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n// Pos objects returned contain a line object, rather than a line\n// number (used to prevent looking up the same line twice).\nTextMarker.prototype.find = function (side, lineObj) {\n    var this$1 = this;\n\n  if (side == null && this.type == \"bookmark\") { side = 1; }\n  var from, to;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (span.from != null) {\n      from = Pos(lineObj ? line : lineNo(line), span.from);\n      if (side == -1) { return from }\n    }\n    if (span.to != null) {\n      to = Pos(lineObj ? line : lineNo(line), span.to);\n      if (side == 1) { return to }\n    }\n  }\n  return from && {from: from, to: to}\n};\n\n// Signals that the marker's widget changed, and surrounding layout\n// should be recomputed.\nTextMarker.prototype.changed = function () {\n    var this$1 = this;\n\n  var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n  if (!pos || !cm) { return }\n  runInOp(cm, function () {\n    var line = pos.line, lineN = lineNo(pos.line);\n    var view = findViewForLine(cm, lineN);\n    if (view) {\n      clearLineMeasurementCacheFor(view);\n      cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n    }\n    cm.curOp.updateMaxLine = true;\n    if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n      var oldHeight = widget.height;\n      widget.height = null;\n      var dHeight = widgetHeight(widget) - oldHeight;\n      if (dHeight)\n        { updateLineHeight(line, line.height + dHeight); }\n    }\n    signalLater(cm, \"markerChanged\", cm, this$1);\n  });\n};\n\nTextMarker.prototype.attachLine = function (line) {\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;\n    if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n      { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n  }\n  this.lines.push(line);\n};\n\nTextMarker.prototype.detachLine = function (line) {\n  this.lines.splice(indexOf(this.lines, line), 1);\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n  }\n};\neventMixin(TextMarker);\n\n// Create a marker, wire it up to the right lines, and\nfunction markText(doc, from, to, options, type) {\n  // Shared markers (across linked documents) are handled separately\n  // (markTextShared will call out to this again, once per\n  // document).\n  if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n  // Ensure we are in an operation.\n  if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n  var marker = new TextMarker(doc, type), diff = cmp(from, to);\n  if (options) { copyObj(options, marker, false); }\n  // Don't connect empty markers unless clearWhenEmpty is false\n  if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n    { return marker }\n  if (marker.replacedWith) {\n    // Showing up as a widget implies collapsed (widget replaces text)\n    marker.collapsed = true;\n    marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n    if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n    if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n  }\n  if (marker.collapsed) {\n    if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n        from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n      { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n    seeCollapsedSpans();\n  }\n\n  if (marker.addToHistory)\n    { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n  var curLine = from.line, cm = doc.cm, updateMaxLine;\n  doc.iter(curLine, to.line + 1, function (line) {\n    if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n      { updateMaxLine = true; }\n    if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n    addMarkedSpan(line, new MarkedSpan(marker,\n                                       curLine == from.line ? from.ch : null,\n                                       curLine == to.line ? to.ch : null));\n    ++curLine;\n  });\n  // lineIsHidden depends on the presence of the spans, so needs a second pass\n  if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n    if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n  }); }\n\n  if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n  if (marker.readOnly) {\n    seeReadOnlySpans();\n    if (doc.history.done.length || doc.history.undone.length)\n      { doc.clearHistory(); }\n  }\n  if (marker.collapsed) {\n    marker.id = ++nextMarkerId;\n    marker.atomic = true;\n  }\n  if (cm) {\n    // Sync editor state\n    if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n    if (marker.collapsed)\n      { regChange(cm, from.line, to.line + 1); }\n    else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\n      { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n    if (marker.atomic) { reCheckSelection(cm.doc); }\n    signalLater(cm, \"markerAdded\", cm, marker);\n  }\n  return marker\n}\n\n// SHARED TEXTMARKERS\n\n// A shared marker spans multiple linked documents. It is\n// implemented as a meta-marker-object controlling multiple normal\n// markers.\nvar SharedTextMarker = function(markers, primary) {\n  var this$1 = this;\n\n  this.markers = markers;\n  this.primary = primary;\n  for (var i = 0; i < markers.length; ++i)\n    { markers[i].parent = this$1; }\n};\n\nSharedTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  this.explicitlyCleared = true;\n  for (var i = 0; i < this.markers.length; ++i)\n    { this$1.markers[i].clear(); }\n  signalLater(this, \"clear\");\n};\n\nSharedTextMarker.prototype.find = function (side, lineObj) {\n  return this.primary.find(side, lineObj)\n};\neventMixin(SharedTextMarker);\n\nfunction markTextShared(doc, from, to, options, type) {\n  options = copyObj(options);\n  options.shared = false;\n  var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n  var widget = options.widgetNode;\n  linkedDocs(doc, function (doc) {\n    if (widget) { options.widgetNode = widget.cloneNode(true); }\n    markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n    for (var i = 0; i < doc.linked.length; ++i)\n      { if (doc.linked[i].isParent) { return } }\n    primary = lst(markers);\n  });\n  return new SharedTextMarker(markers, primary)\n}\n\nfunction findSharedMarkers(doc) {\n  return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n}\n\nfunction copySharedMarkers(doc, markers) {\n  for (var i = 0; i < markers.length; i++) {\n    var marker = markers[i], pos = marker.find();\n    var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n    if (cmp(mFrom, mTo)) {\n      var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n      marker.markers.push(subMark);\n      subMark.parent = marker;\n    }\n  }\n}\n\nfunction detachSharedMarkers(markers) {\n  var loop = function ( i ) {\n    var marker = markers[i], linked = [marker.primary.doc];\n    linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n    for (var j = 0; j < marker.markers.length; j++) {\n      var subMarker = marker.markers[j];\n      if (indexOf(linked, subMarker.doc) == -1) {\n        subMarker.parent = null;\n        marker.markers.splice(j--, 1);\n      }\n    }\n  };\n\n  for (var i = 0; i < markers.length; i++) loop( i );\n}\n\nvar nextDocId = 0;\nvar Doc = function(text, mode, firstLine, lineSep, direction) {\n  if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n  if (firstLine == null) { firstLine = 0; }\n\n  BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n  this.first = firstLine;\n  this.scrollTop = this.scrollLeft = 0;\n  this.cantEdit = false;\n  this.cleanGeneration = 1;\n  this.frontier = firstLine;\n  var start = Pos(firstLine, 0);\n  this.sel = simpleSelection(start);\n  this.history = new History(null);\n  this.id = ++nextDocId;\n  this.modeOption = mode;\n  this.lineSep = lineSep;\n  this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n  this.extend = false;\n\n  if (typeof text == \"string\") { text = this.splitLines(text); }\n  updateDoc(this, {from: start, to: start, text: text});\n  setSelection(this, simpleSelection(start), sel_dontScroll);\n};\n\nDoc.prototype = createObj(BranchChunk.prototype, {\n  constructor: Doc,\n  // Iterate over the document. Supports two forms -- with only one\n  // argument, it calls that for each line in the document. With\n  // three, it iterates over the range given by the first two (with\n  // the second being non-inclusive).\n  iter: function(from, to, op) {\n    if (op) { this.iterN(from - this.first, to - from, op); }\n    else { this.iterN(this.first, this.first + this.size, from); }\n  },\n\n  // Non-public interface for adding and removing lines.\n  insert: function(at, lines) {\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n    this.insertInner(at - this.first, lines, height);\n  },\n  remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n  // From here, the methods are part of the public interface. Most\n  // are also available from CodeMirror (editor) instances.\n\n  getValue: function(lineSep) {\n    var lines = getLines(this, this.first, this.first + this.size);\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n  setValue: docMethodOp(function(code) {\n    var top = Pos(this.first, 0), last = this.first + this.size - 1;\n    makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                      text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n    if (this.cm) { this.cm.scrollTo(0, 0); }\n    setSelection(this, simpleSelection(top), sel_dontScroll);\n  }),\n  replaceRange: function(code, from, to, origin) {\n    from = clipPos(this, from);\n    to = to ? clipPos(this, to) : from;\n    replaceRange(this, code, from, to, origin);\n  },\n  getRange: function(from, to, lineSep) {\n    var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n\n  getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n  getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n  getLineNumber: function(line) {return lineNo(line)},\n\n  getLineHandleVisualStart: function(line) {\n    if (typeof line == \"number\") { line = getLine(this, line); }\n    return visualLine(line)\n  },\n\n  lineCount: function() {return this.size},\n  firstLine: function() {return this.first},\n  lastLine: function() {return this.first + this.size - 1},\n\n  clipPos: function(pos) {return clipPos(this, pos)},\n\n  getCursor: function(start) {\n    var range$$1 = this.sel.primary(), pos;\n    if (start == null || start == \"head\") { pos = range$$1.head; }\n    else if (start == \"anchor\") { pos = range$$1.anchor; }\n    else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n    else { pos = range$$1.from(); }\n    return pos\n  },\n  listSelections: function() { return this.sel.ranges },\n  somethingSelected: function() {return this.sel.somethingSelected()},\n\n  setCursor: docMethodOp(function(line, ch, options) {\n    setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n  }),\n  setSelection: docMethodOp(function(anchor, head, options) {\n    setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n  }),\n  extendSelection: docMethodOp(function(head, other, options) {\n    extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n  }),\n  extendSelections: docMethodOp(function(heads, options) {\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  extendSelectionsBy: docMethodOp(function(f, options) {\n    var heads = map(this.sel.ranges, f);\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  setSelections: docMethodOp(function(ranges, primary, options) {\n    var this$1 = this;\n\n    if (!ranges.length) { return }\n    var out = [];\n    for (var i = 0; i < ranges.length; i++)\n      { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n                         clipPos(this$1, ranges[i].head)); }\n    if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n    setSelection(this, normalizeSelection(out, primary), options);\n  }),\n  addSelection: docMethodOp(function(anchor, head, options) {\n    var ranges = this.sel.ranges.slice(0);\n    ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n    setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n  }),\n\n  getSelection: function(lineSep) {\n    var this$1 = this;\n\n    var ranges = this.sel.ranges, lines;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      lines = lines ? lines.concat(sel) : sel;\n    }\n    if (lineSep === false) { return lines }\n    else { return lines.join(lineSep || this.lineSeparator()) }\n  },\n  getSelections: function(lineSep) {\n    var this$1 = this;\n\n    var parts = [], ranges = this.sel.ranges;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n      parts[i] = sel;\n    }\n    return parts\n  },\n  replaceSelection: function(code, collapse, origin) {\n    var dup = [];\n    for (var i = 0; i < this.sel.ranges.length; i++)\n      { dup[i] = code; }\n    this.replaceSelections(dup, collapse, origin || \"+input\");\n  },\n  replaceSelections: docMethodOp(function(code, collapse, origin) {\n    var this$1 = this;\n\n    var changes = [], sel = this.sel;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range$$1 = sel.ranges[i];\n      changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n    }\n    var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n    for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n      { makeChange(this$1, changes[i$1]); }\n    if (newSel) { setSelectionReplaceHistory(this, newSel); }\n    else if (this.cm) { ensureCursorVisible(this.cm); }\n  }),\n  undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n  redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n  undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n  redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n  setExtending: function(val) {this.extend = val;},\n  getExtending: function() {return this.extend},\n\n  historySize: function() {\n    var hist = this.history, done = 0, undone = 0;\n    for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n    for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n    return {undo: done, redo: undone}\n  },\n  clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n  markClean: function() {\n    this.cleanGeneration = this.changeGeneration(true);\n  },\n  changeGeneration: function(forceSplit) {\n    if (forceSplit)\n      { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n    return this.history.generation\n  },\n  isClean: function (gen) {\n    return this.history.generation == (gen || this.cleanGeneration)\n  },\n\n  getHistory: function() {\n    return {done: copyHistoryArray(this.history.done),\n            undone: copyHistoryArray(this.history.undone)}\n  },\n  setHistory: function(histData) {\n    var hist = this.history = new History(this.history.maxGeneration);\n    hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n    hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n  },\n\n  setGutterMarker: docMethodOp(function(line, gutterID, value) {\n    return changeLine(this, line, \"gutter\", function (line) {\n      var markers = line.gutterMarkers || (line.gutterMarkers = {});\n      markers[gutterID] = value;\n      if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n      return true\n    })\n  }),\n\n  clearGutter: docMethodOp(function(gutterID) {\n    var this$1 = this;\n\n    this.iter(function (line) {\n      if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n        changeLine(this$1, line, \"gutter\", function () {\n          line.gutterMarkers[gutterID] = null;\n          if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n          return true\n        });\n      }\n    });\n  }),\n\n  lineInfo: function(line) {\n    var n;\n    if (typeof line == \"number\") {\n      if (!isLine(this, line)) { return null }\n      n = line;\n      line = getLine(this, line);\n      if (!line) { return null }\n    } else {\n      n = lineNo(line);\n      if (n == null) { return null }\n    }\n    return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n            textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n            widgets: line.widgets}\n  },\n\n  addLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      if (!line[prop]) { line[prop] = cls; }\n      else if (classTest(cls).test(line[prop])) { return false }\n      else { line[prop] += \" \" + cls; }\n      return true\n    })\n  }),\n  removeLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      var cur = line[prop];\n      if (!cur) { return false }\n      else if (cls == null) { line[prop] = null; }\n      else {\n        var found = cur.match(classTest(cls));\n        if (!found) { return false }\n        var end = found.index + found[0].length;\n        line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n      }\n      return true\n    })\n  }),\n\n  addLineWidget: docMethodOp(function(handle, node, options) {\n    return addLineWidget(this, handle, node, options)\n  }),\n  removeLineWidget: function(widget) { widget.clear(); },\n\n  markText: function(from, to, options) {\n    return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n  },\n  setBookmark: function(pos, options) {\n    var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                    insertLeft: options && options.insertLeft,\n                    clearWhenEmpty: false, shared: options && options.shared,\n                    handleMouseEvents: options && options.handleMouseEvents};\n    pos = clipPos(this, pos);\n    return markText(this, pos, pos, realOpts, \"bookmark\")\n  },\n  findMarksAt: function(pos) {\n    pos = clipPos(this, pos);\n    var markers = [], spans = getLine(this, pos.line).markedSpans;\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if ((span.from == null || span.from <= pos.ch) &&\n          (span.to == null || span.to >= pos.ch))\n        { markers.push(span.marker.parent || span.marker); }\n    } }\n    return markers\n  },\n  findMarks: function(from, to, filter) {\n    from = clipPos(this, from); to = clipPos(this, to);\n    var found = [], lineNo$$1 = from.line;\n    this.iter(from.line, to.line + 1, function (line) {\n      var spans = line.markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; i++) {\n        var span = spans[i];\n        if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n              span.from == null && lineNo$$1 != from.line ||\n              span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n            (!filter || filter(span.marker)))\n          { found.push(span.marker.parent || span.marker); }\n      } }\n      ++lineNo$$1;\n    });\n    return found\n  },\n  getAllMarks: function() {\n    var markers = [];\n    this.iter(function (line) {\n      var sps = line.markedSpans;\n      if (sps) { for (var i = 0; i < sps.length; ++i)\n        { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n    });\n    return markers\n  },\n\n  posFromIndex: function(off) {\n    var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n    this.iter(function (line) {\n      var sz = line.text.length + sepSize;\n      if (sz > off) { ch = off; return true }\n      off -= sz;\n      ++lineNo$$1;\n    });\n    return clipPos(this, Pos(lineNo$$1, ch))\n  },\n  indexFromPos: function (coords) {\n    coords = clipPos(this, coords);\n    var index = coords.ch;\n    if (coords.line < this.first || coords.ch < 0) { return 0 }\n    var sepSize = this.lineSeparator().length;\n    this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n      index += line.text.length + sepSize;\n    });\n    return index\n  },\n\n  copy: function(copyHistory) {\n    var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                      this.modeOption, this.first, this.lineSep, this.direction);\n    doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n    doc.sel = this.sel;\n    doc.extend = false;\n    if (copyHistory) {\n      doc.history.undoDepth = this.history.undoDepth;\n      doc.setHistory(this.getHistory());\n    }\n    return doc\n  },\n\n  linkedDoc: function(options) {\n    if (!options) { options = {}; }\n    var from = this.first, to = this.first + this.size;\n    if (options.from != null && options.from > from) { from = options.from; }\n    if (options.to != null && options.to < to) { to = options.to; }\n    var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n    if (options.sharedHist) { copy.history = this.history\n    ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n    copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n    copySharedMarkers(copy, findSharedMarkers(this));\n    return copy\n  },\n  unlinkDoc: function(other) {\n    var this$1 = this;\n\n    if (other instanceof CodeMirror$1) { other = other.doc; }\n    if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n      var link = this$1.linked[i];\n      if (link.doc != other) { continue }\n      this$1.linked.splice(i, 1);\n      other.unlinkDoc(this$1);\n      detachSharedMarkers(findSharedMarkers(this$1));\n      break\n    } }\n    // If the histories were shared, split them again\n    if (other.history == this.history) {\n      var splitIds = [other.id];\n      linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n      other.history = new History(null);\n      other.history.done = copyHistoryArray(this.history.done, splitIds);\n      other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n    }\n  },\n  iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n  getMode: function() {return this.mode},\n  getEditor: function() {return this.cm},\n\n  splitLines: function(str) {\n    if (this.lineSep) { return str.split(this.lineSep) }\n    return splitLinesAuto(str)\n  },\n  lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n  setDirection: docMethodOp(function (dir) {\n    if (dir != \"rtl\") { dir = \"ltr\"; }\n    if (dir == this.direction) { return }\n    this.direction = dir;\n    this.iter(function (line) { return line.order = null; });\n    if (this.cm) { directionChanged(this.cm); }\n  })\n});\n\n// Public alias.\nDoc.prototype.eachLine = Doc.prototype.iter;\n\n// Kludge to work around strange IE behavior where it'll sometimes\n// re-fire a series of drag-related events right after the drop (#1551)\nvar lastDrop = 0;\n\nfunction onDrop(e) {\n  var cm = this;\n  clearDragCursor(cm);\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n    { return }\n  e_preventDefault(e);\n  if (ie) { lastDrop = +new Date; }\n  var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n  if (!pos || cm.isReadOnly()) { return }\n  // Might be a file drop, in which case we simply extract the text\n  // and insert it.\n  if (files && files.length && window.FileReader && window.File) {\n    var n = files.length, text = Array(n), read = 0;\n    var loadFile = function (file, i) {\n      if (cm.options.allowDropFileTypes &&\n          indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n        { return }\n\n      var reader = new FileReader;\n      reader.onload = operation(cm, function () {\n        var content = reader.result;\n        if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n        text[i] = content;\n        if (++read == n) {\n          pos = clipPos(cm.doc, pos);\n          var change = {from: pos, to: pos,\n                        text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n                        origin: \"paste\"};\n          makeChange(cm.doc, change);\n          setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n        }\n      });\n      reader.readAsText(file);\n    };\n    for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n  } else { // Normal drop\n    // Don't do a replace if the drop happened inside of the selected text.\n    if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n      cm.state.draggingText(e);\n      // Ensure the editor is re-focused\n      setTimeout(function () { return cm.display.input.focus(); }, 20);\n      return\n    }\n    try {\n      var text$1 = e.dataTransfer.getData(\"Text\");\n      if (text$1) {\n        var selected;\n        if (cm.state.draggingText && !cm.state.draggingText.copy)\n          { selected = cm.listSelections(); }\n        setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n        if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n          { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n        cm.replaceSelection(text$1, \"around\", \"paste\");\n        cm.display.input.focus();\n      }\n    }\n    catch(e){}\n  }\n}\n\nfunction onDragStart(cm, e) {\n  if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n  e.dataTransfer.setData(\"Text\", cm.getSelection());\n  e.dataTransfer.effectAllowed = \"copyMove\";\n\n  // Use dummy image instead of default browsers image.\n  // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n  if (e.dataTransfer.setDragImage && !safari) {\n    var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n    img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n    if (presto) {\n      img.width = img.height = 1;\n      cm.display.wrapper.appendChild(img);\n      // Force a relayout, or Opera won't use our image for some obscure reason\n      img._top = img.offsetTop;\n    }\n    e.dataTransfer.setDragImage(img, 0, 0);\n    if (presto) { img.parentNode.removeChild(img); }\n  }\n}\n\nfunction onDragOver(cm, e) {\n  var pos = posFromMouse(cm, e);\n  if (!pos) { return }\n  var frag = document.createDocumentFragment();\n  drawSelectionCursor(cm, pos, frag);\n  if (!cm.display.dragCursor) {\n    cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n    cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n  }\n  removeChildrenAndAdd(cm.display.dragCursor, frag);\n}\n\nfunction clearDragCursor(cm) {\n  if (cm.display.dragCursor) {\n    cm.display.lineSpace.removeChild(cm.display.dragCursor);\n    cm.display.dragCursor = null;\n  }\n}\n\n// These must be handled carefully, because naively registering a\n// handler for each editor will cause the editors to never be\n// garbage collected.\n\nfunction forEachCodeMirror(f) {\n  if (!document.body.getElementsByClassName) { return }\n  var byClass = document.body.getElementsByClassName(\"CodeMirror\");\n  for (var i = 0; i < byClass.length; i++) {\n    var cm = byClass[i].CodeMirror;\n    if (cm) { f(cm); }\n  }\n}\n\nvar globalsRegistered = false;\nfunction ensureGlobalHandlers() {\n  if (globalsRegistered) { return }\n  registerGlobalHandlers();\n  globalsRegistered = true;\n}\nfunction registerGlobalHandlers() {\n  // When the window resizes, we need to refresh active editors.\n  var resizeTimer;\n  on(window, \"resize\", function () {\n    if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n      resizeTimer = null;\n      forEachCodeMirror(onResize);\n    }, 100); }\n  });\n  // When the window loses focus, we want to show the editor as blurred\n  on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n}\n// Called when the window resizes\nfunction onResize(cm) {\n  var d = cm.display;\n  if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\n    { return }\n  // Might be a text scaling operation, clear size caches.\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n  d.scrollbarsClipped = false;\n  cm.setSize();\n}\n\nvar keyNames = {\n  3: \"Enter\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n  106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\",\n  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n};\n\n// Number keys\nfor (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n// Alphabetic keys\nfor (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n// Function keys\nfor (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\nvar keyMap = {};\n\nkeyMap.basic = {\n  \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n  \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n  \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n  \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n  \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n  \"Esc\": \"singleSelection\"\n};\n// Note that the save and find-related commands aren't defined by\n// default. User code or addons can define them. Unknown commands\n// are simply ignored.\nkeyMap.pcDefault = {\n  \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n  \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n  \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n  \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n  \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n  \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n  \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n  fallthrough: \"basic\"\n};\n// Very basic readline/emacs-style bindings, which are standard on Mac.\nkeyMap.emacsy = {\n  \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n  \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n  \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n  \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n  \"Ctrl-O\": \"openLine\"\n};\nkeyMap.macDefault = {\n  \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n  \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n  \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n  \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n  \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n  \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n  \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n  fallthrough: [\"basic\", \"emacsy\"]\n};\nkeyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n// KEYMAP DISPATCH\n\nfunction normalizeKeyName(name) {\n  var parts = name.split(/-(?!$)/);\n  name = parts[parts.length - 1];\n  var alt, ctrl, shift, cmd;\n  for (var i = 0; i < parts.length - 1; i++) {\n    var mod = parts[i];\n    if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n    else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n    else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n    else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n    else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n  }\n  if (alt) { name = \"Alt-\" + name; }\n  if (ctrl) { name = \"Ctrl-\" + name; }\n  if (cmd) { name = \"Cmd-\" + name; }\n  if (shift) { name = \"Shift-\" + name; }\n  return name\n}\n\n// This is a kludge to keep keymaps mostly working as raw objects\n// (backwards compatibility) while at the same time support features\n// like normalization and multi-stroke key bindings. It compiles a\n// new normalized keymap, and then updates the old object to reflect\n// this.\nfunction normalizeKeyMap(keymap) {\n  var copy = {};\n  for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n    var value = keymap[keyname];\n    if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n    if (value == \"...\") { delete keymap[keyname]; continue }\n\n    var keys = map(keyname.split(\" \"), normalizeKeyName);\n    for (var i = 0; i < keys.length; i++) {\n      var val = (void 0), name = (void 0);\n      if (i == keys.length - 1) {\n        name = keys.join(\" \");\n        val = value;\n      } else {\n        name = keys.slice(0, i + 1).join(\" \");\n        val = \"...\";\n      }\n      var prev = copy[name];\n      if (!prev) { copy[name] = val; }\n      else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n    }\n    delete keymap[keyname];\n  } }\n  for (var prop in copy) { keymap[prop] = copy[prop]; }\n  return keymap\n}\n\nfunction lookupKey(key, map$$1, handle, context) {\n  map$$1 = getKeyMap(map$$1);\n  var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n  if (found === false) { return \"nothing\" }\n  if (found === \"...\") { return \"multi\" }\n  if (found != null && handle(found)) { return \"handled\" }\n\n  if (map$$1.fallthrough) {\n    if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n      { return lookupKey(key, map$$1.fallthrough, handle, context) }\n    for (var i = 0; i < map$$1.fallthrough.length; i++) {\n      var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n      if (result) { return result }\n    }\n  }\n}\n\n// Modifier key presses don't count as 'real' key presses for the\n// purpose of keymap fallthrough.\nfunction isModifierKey(value) {\n  var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n  return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n}\n\n// Look up the name of a key as indicated by an event object.\nfunction keyName(event, noShift) {\n  if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n  var base = keyNames[event.keyCode], name = base;\n  if (name == null || event.altGraphKey) { return false }\n  if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n  if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n  if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n  if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n  return name\n}\n\nfunction getKeyMap(val) {\n  return typeof val == \"string\" ? keyMap[val] : val\n}\n\n// Helper for deleting text near the selection(s), used to implement\n// backspace, delete, and similar functionality.\nfunction deleteNearSelection(cm, compute) {\n  var ranges = cm.doc.sel.ranges, kill = [];\n  // Build up a set of ranges to kill first, merging overlapping\n  // ranges.\n  for (var i = 0; i < ranges.length; i++) {\n    var toKill = compute(ranges[i]);\n    while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n      var replaced = kill.pop();\n      if (cmp(replaced.from, toKill.from) < 0) {\n        toKill.from = replaced.from;\n        break\n      }\n    }\n    kill.push(toKill);\n  }\n  // Next, remove those actual ranges.\n  runInOp(cm, function () {\n    for (var i = kill.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n    ensureCursorVisible(cm);\n  });\n}\n\n// Commands are parameter-less actions that can be performed on an\n// editor, mostly used for keybindings.\nvar commands = {\n  selectAll: selectAll,\n  singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n  killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n    if (range.empty()) {\n      var len = getLine(cm.doc, range.head.line).text.length;\n      if (range.head.ch == len && range.head.line < cm.lastLine())\n        { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n      else\n        { return {from: range.head, to: Pos(range.head.line, len)} }\n    } else {\n      return {from: range.from(), to: range.to()}\n    }\n  }); },\n  deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0),\n    to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n  }); }); },\n  delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0), to: range.from()\n  }); }); },\n  delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n    return {from: leftPos, to: range.from()}\n  }); },\n  delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n    return {from: range.from(), to: rightPos }\n  }); },\n  undo: function (cm) { return cm.undo(); },\n  redo: function (cm) { return cm.redo(); },\n  undoSelection: function (cm) { return cm.undoSelection(); },\n  redoSelection: function (cm) { return cm.redoSelection(); },\n  goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n  goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n  goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n    {origin: \"+move\", bias: -1}\n  ); },\n  goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: 0, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n    if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n    return pos\n  }, sel_move); },\n  goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n  goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n  goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n  goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n  goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n  goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n  goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n  goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n  goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n  goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n  goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n  goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n  delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n  delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n  delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n  delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n  delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n  delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n  indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n  indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n  indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n  insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n  insertSoftTab: function (cm) {\n    var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].from();\n      var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n      spaces.push(spaceStr(tabSize - col % tabSize));\n    }\n    cm.replaceSelections(spaces);\n  },\n  defaultTab: function (cm) {\n    if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n    else { cm.execCommand(\"insertTab\"); }\n  },\n  // Swap the two chars left and right of each selection's head.\n  // Move cursor behind the two swapped characters afterwards.\n  //\n  // Doesn't consider line feeds a character.\n  // Doesn't scan more than one line above to find a character.\n  // Doesn't do anything on an empty line.\n  // Doesn't do anything with non-empty selections.\n  transposeChars: function (cm) { return runInOp(cm, function () {\n    var ranges = cm.listSelections(), newSel = [];\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) { continue }\n      var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n      if (line) {\n        if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n        if (cur.ch > 0) {\n          cur = new Pos(cur.line, cur.ch + 1);\n          cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                          Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n        } else if (cur.line > cm.doc.first) {\n          var prev = getLine(cm.doc, cur.line - 1).text;\n          if (prev) {\n            cur = new Pos(cur.line, 1);\n            cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                            prev.charAt(prev.length - 1),\n                            Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n          }\n        }\n      }\n      newSel.push(new Range(cur, cur));\n    }\n    cm.setSelections(newSel);\n  }); },\n  newlineAndIndent: function (cm) { return runInOp(cm, function () {\n    var sels = cm.listSelections();\n    for (var i = sels.length - 1; i >= 0; i--)\n      { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n    sels = cm.listSelections();\n    for (var i$1 = 0; i$1 < sels.length; i$1++)\n      { cm.indentLine(sels[i$1].from().line, null, true); }\n    ensureCursorVisible(cm);\n  }); },\n  openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n  toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n};\n\n\nfunction lineStart(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLine(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, visual, lineN, 1)\n}\nfunction lineEnd(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLineEnd(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, line, lineN, -1)\n}\nfunction lineStartSmart(cm, pos) {\n  var start = lineStart(cm, pos.line);\n  var line = getLine(cm.doc, start.line);\n  var order = getOrder(line, cm.doc.direction);\n  if (!order || order[0].level == 0) {\n    var firstNonWS = Math.max(0, line.text.search(/\\S/));\n    var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n    return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n  }\n  return start\n}\n\n// Run a handler that was bound to a key.\nfunction doHandleBinding(cm, bound, dropShift) {\n  if (typeof bound == \"string\") {\n    bound = commands[bound];\n    if (!bound) { return false }\n  }\n  // Ensure previous input has been read, so that the handler sees a\n  // consistent view of the document\n  cm.display.input.ensurePolled();\n  var prevShift = cm.display.shift, done = false;\n  try {\n    if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n    if (dropShift) { cm.display.shift = false; }\n    done = bound(cm) != Pass;\n  } finally {\n    cm.display.shift = prevShift;\n    cm.state.suppressEdits = false;\n  }\n  return done\n}\n\nfunction lookupKeyForEditor(cm, name, handle) {\n  for (var i = 0; i < cm.state.keyMaps.length; i++) {\n    var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n    if (result) { return result }\n  }\n  return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n    || lookupKey(name, cm.options.keyMap, handle, cm)\n}\n\nvar stopSeq = new Delayed;\nfunction dispatchKey(cm, name, e, handle) {\n  var seq = cm.state.keySeq;\n  if (seq) {\n    if (isModifierKey(name)) { return \"handled\" }\n    stopSeq.set(50, function () {\n      if (cm.state.keySeq == seq) {\n        cm.state.keySeq = null;\n        cm.display.input.reset();\n      }\n    });\n    name = seq + \" \" + name;\n  }\n  var result = lookupKeyForEditor(cm, name, handle);\n\n  if (result == \"multi\")\n    { cm.state.keySeq = name; }\n  if (result == \"handled\")\n    { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n  if (result == \"handled\" || result == \"multi\") {\n    e_preventDefault(e);\n    restartBlink(cm);\n  }\n\n  if (seq && !result && /\\'$/.test(name)) {\n    e_preventDefault(e);\n    return true\n  }\n  return !!result\n}\n\n// Handle a key from the keydown event.\nfunction handleKeyBinding(cm, e) {\n  var name = keyName(e, true);\n  if (!name) { return false }\n\n  if (e.shiftKey && !cm.state.keySeq) {\n    // First try to resolve full name (including 'Shift-'). Failing\n    // that, see if there is a cursor-motion command (starting with\n    // 'go') bound to the keyname without 'Shift-'.\n    return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n        || dispatchKey(cm, name, e, function (b) {\n             if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n               { return doHandleBinding(cm, b) }\n           })\n  } else {\n    return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n  }\n}\n\n// Handle a key from the keypress event\nfunction handleCharBinding(cm, e, ch) {\n  return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n}\n\nvar lastStoppedKey = null;\nfunction onKeyDown(e) {\n  var cm = this;\n  cm.curOp.focus = activeElt();\n  if (signalDOMEvent(cm, e)) { return }\n  // IE does strange things with escape.\n  if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n  var code = e.keyCode;\n  cm.display.shift = code == 16 || e.shiftKey;\n  var handled = handleKeyBinding(cm, e);\n  if (presto) {\n    lastStoppedKey = handled ? code : null;\n    // Opera has no cut event... we try to at least catch the key combo\n    if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n      { cm.replaceSelection(\"\", null, \"cut\"); }\n  }\n\n  // Turn mouse into crosshair when Alt is held on Mac.\n  if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n    { showCrossHair(cm); }\n}\n\nfunction showCrossHair(cm) {\n  var lineDiv = cm.display.lineDiv;\n  addClass(lineDiv, \"CodeMirror-crosshair\");\n\n  function up(e) {\n    if (e.keyCode == 18 || !e.altKey) {\n      rmClass(lineDiv, \"CodeMirror-crosshair\");\n      off(document, \"keyup\", up);\n      off(document, \"mouseover\", up);\n    }\n  }\n  on(document, \"keyup\", up);\n  on(document, \"mouseover\", up);\n}\n\nfunction onKeyUp(e) {\n  if (e.keyCode == 16) { this.doc.sel.shift = false; }\n  signalDOMEvent(this, e);\n}\n\nfunction onKeyPress(e) {\n  var cm = this;\n  if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n  var keyCode = e.keyCode, charCode = e.charCode;\n  if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n  if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n  var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n  // Some browsers fire keypress events for backspace\n  if (ch == \"\\x08\") { return }\n  if (handleCharBinding(cm, e, ch)) { return }\n  cm.display.input.onKeyPress(e);\n}\n\n// A mouse down can be a single click, double click, triple click,\n// start of selection drag, start of text drag, new cursor\n// (ctrl-click), rectangle drag (alt-drag), or xwin\n// middle-click-paste. Or it might be a click on something we should\n// not interfere with, such as a scrollbar or widget.\nfunction onMouseDown(e) {\n  var cm = this, display = cm.display;\n  if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n  display.input.ensurePolled();\n  display.shift = e.shiftKey;\n\n  if (eventInWidget(display, e)) {\n    if (!webkit) {\n      // Briefly turn off draggability, to allow widgets to do\n      // normal dragging things.\n      display.scroller.draggable = false;\n      setTimeout(function () { return display.scroller.draggable = true; }, 100);\n    }\n    return\n  }\n  if (clickInGutter(cm, e)) { return }\n  var start = posFromMouse(cm, e);\n  window.focus();\n\n  switch (e_button(e)) {\n  case 1:\n    // #3261: make sure, that we're not starting a second selection\n    if (cm.state.selectingText)\n      { cm.state.selectingText(e); }\n    else if (start)\n      { leftButtonDown(cm, e, start); }\n    else if (e_target(e) == display.scroller)\n      { e_preventDefault(e); }\n    break\n  case 2:\n    if (webkit) { cm.state.lastMiddleDown = +new Date; }\n    if (start) { extendSelection(cm.doc, start); }\n    setTimeout(function () { return display.input.focus(); }, 20);\n    e_preventDefault(e);\n    break\n  case 3:\n    if (captureRightClick) { onContextMenu(cm, e); }\n    else { delayBlurEvent(cm); }\n    break\n  }\n}\n\nvar lastClick;\nvar lastDoubleClick;\nfunction leftButtonDown(cm, e, start) {\n  if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n  else { cm.curOp.focus = activeElt(); }\n\n  var now = +new Date, type;\n  if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {\n    type = \"triple\";\n  } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {\n    type = \"double\";\n    lastDoubleClick = {time: now, pos: start};\n  } else {\n    type = \"single\";\n    lastClick = {time: now, pos: start};\n  }\n\n  var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;\n  if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n      type == \"single\" && (contained = sel.contains(start)) > -1 &&\n      (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) &&\n      (cmp(contained.to(), start) > 0 || start.xRel < 0))\n    { leftButtonStartDrag(cm, e, start, modifier); }\n  else\n    { leftButtonSelect(cm, e, start, type, modifier); }\n}\n\n// Start a text drag. When it ends, see if any dragging actually\n// happen, and treat as a click if it didn't.\nfunction leftButtonStartDrag(cm, e, start, modifier) {\n  var display = cm.display, moved = false;\n  var dragEnd = operation(cm, function (e) {\n    if (webkit) { display.scroller.draggable = false; }\n    cm.state.draggingText = false;\n    off(document, \"mouseup\", dragEnd);\n    off(document, \"mousemove\", mouseMove);\n    off(display.scroller, \"dragstart\", dragStart);\n    off(display.scroller, \"drop\", dragEnd);\n    if (!moved) {\n      e_preventDefault(e);\n      if (!modifier)\n        { extendSelection(cm.doc, start); }\n      // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n      if (webkit || ie && ie_version == 9)\n        { setTimeout(function () {document.body.focus(); display.input.focus();}, 20); }\n      else\n        { display.input.focus(); }\n    }\n  });\n  var mouseMove = function(e2) {\n    moved = moved || Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) >= 10;\n  };\n  var dragStart = function () { return moved = true; };\n  // Let the drag handler handle this.\n  if (webkit) { display.scroller.draggable = true; }\n  cm.state.draggingText = dragEnd;\n  dragEnd.copy = mac ? e.altKey : e.ctrlKey;\n  // IE's approach to draggable\n  if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n  on(document, \"mouseup\", dragEnd);\n  on(document, \"mousemove\", mouseMove);\n  on(display.scroller, \"dragstart\", dragStart);\n  on(display.scroller, \"drop\", dragEnd);\n\n  delayBlurEvent(cm);\n  setTimeout(function () { return display.input.focus(); }, 20);\n}\n\n// Normal selection, as opposed to text dragging.\nfunction leftButtonSelect(cm, e, start, type, addNew) {\n  var display = cm.display, doc = cm.doc;\n  e_preventDefault(e);\n\n  var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n  if (addNew && !e.shiftKey) {\n    ourIndex = doc.sel.contains(start);\n    if (ourIndex > -1)\n      { ourRange = ranges[ourIndex]; }\n    else\n      { ourRange = new Range(start, start); }\n  } else {\n    ourRange = doc.sel.primary();\n    ourIndex = doc.sel.primIndex;\n  }\n\n  if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) {\n    type = \"rect\";\n    if (!addNew) { ourRange = new Range(start, start); }\n    start = posFromMouse(cm, e, true, true);\n    ourIndex = -1;\n  } else if (type == \"double\") {\n    var word = cm.findWordAt(start);\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, word.anchor, word.head); }\n    else\n      { ourRange = word; }\n  } else if (type == \"triple\") {\n    var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, line.anchor, line.head); }\n    else\n      { ourRange = line; }\n  } else {\n    ourRange = extendRange(doc, ourRange, start);\n  }\n\n  if (!addNew) {\n    ourIndex = 0;\n    setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n    startSel = doc.sel;\n  } else if (ourIndex == -1) {\n    ourIndex = ranges.length;\n    setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\n                 {scroll: false, origin: \"*mouse\"});\n  } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == \"single\" && !e.shiftKey) {\n    setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                 {scroll: false, origin: \"*mouse\"});\n    startSel = doc.sel;\n  } else {\n    replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n  }\n\n  var lastPos = start;\n  function extendTo(pos) {\n    if (cmp(lastPos, pos) == 0) { return }\n    lastPos = pos;\n\n    if (type == \"rect\") {\n      var ranges = [], tabSize = cm.options.tabSize;\n      var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n      var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n      var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n      for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n           line <= end; line++) {\n        var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n        if (left == right)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n        else if (text.length > leftPos)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n      }\n      if (!ranges.length) { ranges.push(new Range(start, start)); }\n      setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                   {origin: \"*mouse\", scroll: false});\n      cm.scrollIntoView(pos);\n    } else {\n      var oldRange = ourRange;\n      var anchor = oldRange.anchor, head = pos;\n      if (type != \"single\") {\n        var range$$1;\n        if (type == \"double\")\n          { range$$1 = cm.findWordAt(pos); }\n        else\n          { range$$1 = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); }\n        if (cmp(range$$1.anchor, anchor) > 0) {\n          head = range$$1.head;\n          anchor = minPos(oldRange.from(), range$$1.anchor);\n        } else {\n          head = range$$1.anchor;\n          anchor = maxPos(oldRange.to(), range$$1.head);\n        }\n      }\n      var ranges$1 = startSel.ranges.slice(0);\n      ranges$1[ourIndex] = new Range(clipPos(doc, anchor), head);\n      setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);\n    }\n  }\n\n  var editorSize = display.wrapper.getBoundingClientRect();\n  // Used to ensure timeout re-tries don't fire when another extend\n  // happened in the meantime (clearTimeout isn't reliable -- at\n  // least on Chrome, the timeouts still happen even when cleared,\n  // if the clear happens after their scheduled firing time).\n  var counter = 0;\n\n  function extend(e) {\n    var curCount = ++counter;\n    var cur = posFromMouse(cm, e, true, type == \"rect\");\n    if (!cur) { return }\n    if (cmp(cur, lastPos) != 0) {\n      cm.curOp.focus = activeElt();\n      extendTo(cur);\n      var visible = visibleLines(display, doc);\n      if (cur.line >= visible.to || cur.line < visible.from)\n        { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n    } else {\n      var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n      if (outside) { setTimeout(operation(cm, function () {\n        if (counter != curCount) { return }\n        display.scroller.scrollTop += outside;\n        extend(e);\n      }), 50); }\n    }\n  }\n\n  function done(e) {\n    cm.state.selectingText = false;\n    counter = Infinity;\n    e_preventDefault(e);\n    display.input.focus();\n    off(document, \"mousemove\", move);\n    off(document, \"mouseup\", up);\n    doc.history.lastSelOrigin = null;\n  }\n\n  var move = operation(cm, function (e) {\n    if (!e_button(e)) { done(e); }\n    else { extend(e); }\n  });\n  var up = operation(cm, done);\n  cm.state.selectingText = up;\n  on(document, \"mousemove\", move);\n  on(document, \"mouseup\", up);\n}\n\n\n// Determines whether an event happened in the gutter, and fires the\n// handlers for the corresponding event.\nfunction gutterEvent(cm, e, type, prevent) {\n  var mX, mY;\n  try { mX = e.clientX; mY = e.clientY; }\n  catch(e) { return false }\n  if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n  if (prevent) { e_preventDefault(e); }\n\n  var display = cm.display;\n  var lineBox = display.lineDiv.getBoundingClientRect();\n\n  if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n  mY -= lineBox.top - display.viewOffset;\n\n  for (var i = 0; i < cm.options.gutters.length; ++i) {\n    var g = display.gutters.childNodes[i];\n    if (g && g.getBoundingClientRect().right >= mX) {\n      var line = lineAtHeight(cm.doc, mY);\n      var gutter = cm.options.gutters[i];\n      signal(cm, type, cm, line, gutter, e);\n      return e_defaultPrevented(e)\n    }\n  }\n}\n\nfunction clickInGutter(cm, e) {\n  return gutterEvent(cm, e, \"gutterClick\", true)\n}\n\n// CONTEXT MENU HANDLING\n\n// To make the context menu work, we need to briefly unhide the\n// textarea (making it as unobtrusive as possible) to let the\n// right-click take effect on it.\nfunction onContextMenu(cm, e) {\n  if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n  if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n  cm.display.input.onContextMenu(e);\n}\n\nfunction contextMenuInGutter(cm, e) {\n  if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n  return gutterEvent(cm, e, \"gutterContextMenu\", false)\n}\n\nfunction themeChanged(cm) {\n  cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n    cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n  clearCaches(cm);\n}\n\nvar Init = {toString: function(){return \"CodeMirror.Init\"}};\n\nvar defaults = {};\nvar optionHandlers = {};\n\nfunction defineOptions(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) { optionHandlers[name] =\n      notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n  }\n\n  CodeMirror.defineOption = option;\n\n  // Passed to option handlers when there is no old value.\n  CodeMirror.Init = Init;\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n  option(\"mode\", null, function (cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function (cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n  option(\"lineSeparator\", null, function (cm, val) {\n    cm.doc.lineSep = val;\n    if (!val) { return }\n    var newBreaks = [], lineNo = cm.doc.first;\n    cm.doc.iter(function (line) {\n      for (var pos = 0;;) {\n        var found = line.text.indexOf(val, pos);\n        if (found == -1) { break }\n        pos = found + val.length;\n        newBreaks.push(Pos(lineNo, found));\n      }\n      lineNo++;\n    });\n    for (var i = newBreaks.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n  });\n  option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n    cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    if (old != Init) { cm.refresh(); }\n  });\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n  option(\"electricChars\", true);\n  option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n    throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n  }, true);\n  option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function (cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", function (cm, val, old) {\n    var next = getKeyMap(val);\n    var prev = old != Init && getKeyMap(old);\n    if (prev && prev.detach) { prev.detach(cm, next); }\n    if (next.attach) { next.attach(cm, prev || null); }\n  });\n  option(\"extraKeys\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function (cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n  option(\"scrollbarStyle\", \"native\", function (cm) {\n    initScrollbars(cm);\n    updateScrollbars(cm);\n    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n  }, true);\n  option(\"lineNumbers\", false, function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n  option(\"lineWiseCopyCut\", true);\n\n  option(\"readOnly\", false, function (cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n      cm.display.disabled = true;\n    } else {\n      cm.display.disabled = false;\n    }\n    cm.display.input.readOnlyChanged(val);\n  });\n  option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n  option(\"dragDrop\", true, dragDropChanged);\n  option(\"allowDropFileTypes\", null);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function (cm, val) {\n    if (!val) { cm.display.input.resetPosition(); }\n  });\n\n  option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n  option(\"autofocus\", null);\n  option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n}\n\nfunction guttersChanged(cm) {\n  updateGutters(cm);\n  regChange(cm);\n  alignHorizontally(cm);\n}\n\nfunction dragDropChanged(cm, value, old) {\n  var wasOn = old && old != Init;\n  if (!value != !wasOn) {\n    var funcs = cm.display.dragFunctions;\n    var toggle = value ? on : off;\n    toggle(cm.display.scroller, \"dragstart\", funcs.start);\n    toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n    toggle(cm.display.scroller, \"dragover\", funcs.over);\n    toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n    toggle(cm.display.scroller, \"drop\", funcs.drop);\n  }\n}\n\nfunction wrappingChanged(cm) {\n  if (cm.options.lineWrapping) {\n    addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    cm.display.sizer.style.minWidth = \"\";\n    cm.display.sizerWidth = null;\n  } else {\n    rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    findMaxLine(cm);\n  }\n  estimateLineHeights(cm);\n  regChange(cm);\n  clearCaches(cm);\n  setTimeout(function () { return updateScrollbars(cm); }, 100);\n}\n\n// A CodeMirror instance represents an editor. This is the object\n// that user code is usually dealing with.\n\nfunction CodeMirror$1(place, options) {\n  var this$1 = this;\n\n  if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) }\n\n  this.options = options = options ? copyObj(options) : {};\n  // Determine effective options based on given values and defaults.\n  copyObj(defaults, options, false);\n  setGuttersForLineNumbers(options);\n\n  var doc = options.value;\n  if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n  this.doc = doc;\n\n  var input = new CodeMirror$1.inputStyles[options.inputStyle](this);\n  var display = this.display = new Display(place, doc, input);\n  display.wrapper.CodeMirror = this;\n  updateGutters(this);\n  themeChanged(this);\n  if (options.lineWrapping)\n    { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n  initScrollbars(this);\n\n  this.state = {\n    keyMaps: [],  // stores maps added by addKeyMap\n    overlays: [], // highlighting overlays, as added by addOverlay\n    modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n    overwrite: false,\n    delayingBlurEvent: false,\n    focused: false,\n    suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n    pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\n    selectingText: false,\n    draggingText: false,\n    highlight: new Delayed(), // stores highlight worker timeout\n    keySeq: null,  // Unfinished key sequence\n    specialChars: null\n  };\n\n  if (options.autofocus && !mobile) { display.input.focus(); }\n\n  // Override magic textarea content restore that IE sometimes does\n  // on our hidden textarea on reload\n  if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n  registerEventHandlers(this);\n  ensureGlobalHandlers();\n\n  startOperation(this);\n  this.curOp.forceUpdate = true;\n  attachDoc(this, doc);\n\n  if ((options.autofocus && !mobile) || this.hasFocus())\n    { setTimeout(bind(onFocus, this), 20); }\n  else\n    { onBlur(this); }\n\n  for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n    { optionHandlers[opt](this$1, options[opt], Init); } }\n  maybeUpdateLineNumberWidth(this);\n  if (options.finishInit) { options.finishInit(this); }\n  for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n  endOperation(this);\n  // Suppress optimizelegibility in Webkit, since it breaks text\n  // measuring on line wrapping boundaries.\n  if (webkit && options.lineWrapping &&\n      getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n    { display.lineDiv.style.textRendering = \"auto\"; }\n}\n\n// The default configuration options.\nCodeMirror$1.defaults = defaults;\n// Functions to run when options are changed.\nCodeMirror$1.optionHandlers = optionHandlers;\n\n// Attach the necessary event handlers when initializing the editor\nfunction registerEventHandlers(cm) {\n  var d = cm.display;\n  on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n  // Older IE's will not fire a second mousedown for a double click\n  if (ie && ie_version < 11)\n    { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n      if (signalDOMEvent(cm, e)) { return }\n      var pos = posFromMouse(cm, e);\n      if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n      e_preventDefault(e);\n      var word = cm.findWordAt(pos);\n      extendSelection(cm.doc, word.anchor, word.head);\n    })); }\n  else\n    { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n  // Some browsers fire contextmenu *after* opening the menu, at\n  // which point we can't mess with it anymore. Context menu is\n  // handled in onMouseDown for these browsers.\n  if (!captureRightClick) { on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); }); }\n\n  // Used to suppress mouse event handling when a touch happens\n  var touchFinished, prevTouch = {end: 0};\n  function finishTouch() {\n    if (d.activeTouch) {\n      touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n      prevTouch = d.activeTouch;\n      prevTouch.end = +new Date;\n    }\n  }\n  function isMouseLikeTouchEvent(e) {\n    if (e.touches.length != 1) { return false }\n    var touch = e.touches[0];\n    return touch.radiusX <= 1 && touch.radiusY <= 1\n  }\n  function farAway(touch, other) {\n    if (other.left == null) { return true }\n    var dx = other.left - touch.left, dy = other.top - touch.top;\n    return dx * dx + dy * dy > 20 * 20\n  }\n  on(d.scroller, \"touchstart\", function (e) {\n    if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {\n      d.input.ensurePolled();\n      clearTimeout(touchFinished);\n      var now = +new Date;\n      d.activeTouch = {start: now, moved: false,\n                       prev: now - prevTouch.end <= 300 ? prevTouch : null};\n      if (e.touches.length == 1) {\n        d.activeTouch.left = e.touches[0].pageX;\n        d.activeTouch.top = e.touches[0].pageY;\n      }\n    }\n  });\n  on(d.scroller, \"touchmove\", function () {\n    if (d.activeTouch) { d.activeTouch.moved = true; }\n  });\n  on(d.scroller, \"touchend\", function (e) {\n    var touch = d.activeTouch;\n    if (touch && !eventInWidget(d, e) && touch.left != null &&\n        !touch.moved && new Date - touch.start < 300) {\n      var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n      if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n        { range = new Range(pos, pos); }\n      else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n        { range = cm.findWordAt(pos); }\n      else // Triple tap\n        { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n      cm.setSelection(range.anchor, range.head);\n      cm.focus();\n      e_preventDefault(e);\n    }\n    finishTouch();\n  });\n  on(d.scroller, \"touchcancel\", finishTouch);\n\n  // Sync scrolling between fake scrollbars and real scrollable\n  // area, ensure viewport is updated when scrolling.\n  on(d.scroller, \"scroll\", function () {\n    if (d.scroller.clientHeight) {\n      setScrollTop(cm, d.scroller.scrollTop);\n      setScrollLeft(cm, d.scroller.scrollLeft, true);\n      signal(cm, \"scroll\", cm);\n    }\n  });\n\n  // Listen to wheel events in order to try and update the viewport on time.\n  on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n  on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n  // Prevent wrapper from ever scrolling\n  on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n  d.dragFunctions = {\n    enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n    over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n    start: function (e) { return onDragStart(cm, e); },\n    drop: operation(cm, onDrop),\n    leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n  };\n\n  var inp = d.input.getField();\n  on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n  on(inp, \"keydown\", operation(cm, onKeyDown));\n  on(inp, \"keypress\", operation(cm, onKeyPress));\n  on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n  on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n}\n\nvar initHooks = [];\nCodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); };\n\n// Indent the given line. The how parameter can be \"smart\",\n// \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n// (typically set to true for forced single-line indents), empty\n// lines are not indented, and places where the mode returns Pass\n// are left alone.\nfunction indentLine(cm, n, how, aggressive) {\n  var doc = cm.doc, state;\n  if (how == null) { how = \"add\"; }\n  if (how == \"smart\") {\n    // Fall back to \"prev\" when the mode doesn't have an indentation\n    // method.\n    if (!doc.mode.indent) { how = \"prev\"; }\n    else { state = getStateBefore(cm, n); }\n  }\n\n  var tabSize = cm.options.tabSize;\n  var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n  if (line.stateAfter) { line.stateAfter = null; }\n  var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n  if (!aggressive && !/\\S/.test(line.text)) {\n    indentation = 0;\n    how = \"not\";\n  } else if (how == \"smart\") {\n    indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n    if (indentation == Pass || indentation > 150) {\n      if (!aggressive) { return }\n      how = \"prev\";\n    }\n  }\n  if (how == \"prev\") {\n    if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n    else { indentation = 0; }\n  } else if (how == \"add\") {\n    indentation = curSpace + cm.options.indentUnit;\n  } else if (how == \"subtract\") {\n    indentation = curSpace - cm.options.indentUnit;\n  } else if (typeof how == \"number\") {\n    indentation = curSpace + how;\n  }\n  indentation = Math.max(0, indentation);\n\n  var indentString = \"\", pos = 0;\n  if (cm.options.indentWithTabs)\n    { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n  if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n  if (indentString != curSpaceString) {\n    replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    line.stateAfter = null;\n    return true\n  } else {\n    // Ensure that, if the cursor was in the whitespace at the start\n    // of the line, it is moved to the end of that space.\n    for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n      var range = doc.sel.ranges[i$1];\n      if (range.head.line == n && range.head.ch < curSpaceString.length) {\n        var pos$1 = Pos(n, curSpaceString.length);\n        replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n        break\n      }\n    }\n  }\n}\n\n// This will be set to a {lineWise: bool, text: [string]} object, so\n// that, when pasting, we know what kind of selections the copied\n// text was made out of.\nvar lastCopied = null;\n\nfunction setLastCopied(newLastCopied) {\n  lastCopied = newLastCopied;\n}\n\nfunction applyTextInput(cm, inserted, deleted, sel, origin) {\n  var doc = cm.doc;\n  cm.display.shift = false;\n  if (!sel) { sel = doc.sel; }\n\n  var paste = cm.state.pasteIncoming || origin == \"paste\";\n  var textLines = splitLinesAuto(inserted), multiPaste = null;\n  // When pasing N lines into N selections, insert one line per selection\n  if (paste && sel.ranges.length > 1) {\n    if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n      if (sel.ranges.length % lastCopied.text.length == 0) {\n        multiPaste = [];\n        for (var i = 0; i < lastCopied.text.length; i++)\n          { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n      }\n    } else if (textLines.length == sel.ranges.length) {\n      multiPaste = map(textLines, function (l) { return [l]; });\n    }\n  }\n\n  var updateInput;\n  // Normal behavior is to insert the new text into every selection\n  for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n    var range$$1 = sel.ranges[i$1];\n    var from = range$$1.from(), to = range$$1.to();\n    if (range$$1.empty()) {\n      if (deleted && deleted > 0) // Handle deletion\n        { from = Pos(from.line, from.ch - deleted); }\n      else if (cm.state.overwrite && !paste) // Handle overwrite\n        { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n      else if (lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n        { from = to = Pos(from.line, 0); }\n    }\n    updateInput = cm.curOp.updateInput;\n    var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                       origin: origin || (paste ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\")};\n    makeChange(cm.doc, changeEvent);\n    signalLater(cm, \"inputRead\", cm, changeEvent);\n  }\n  if (inserted && !paste)\n    { triggerElectric(cm, inserted); }\n\n  ensureCursorVisible(cm);\n  cm.curOp.updateInput = updateInput;\n  cm.curOp.typing = true;\n  cm.state.pasteIncoming = cm.state.cutIncoming = false;\n}\n\nfunction handlePaste(e, cm) {\n  var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n  if (pasted) {\n    e.preventDefault();\n    if (!cm.isReadOnly() && !cm.options.disableInput)\n      { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n    return true\n  }\n}\n\nfunction triggerElectric(cm, inserted) {\n  // When an 'electric' character is inserted, immediately trigger a reindent\n  if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n  var sel = cm.doc.sel;\n\n  for (var i = sel.ranges.length - 1; i >= 0; i--) {\n    var range$$1 = sel.ranges[i];\n    if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n    var mode = cm.getModeAt(range$$1.head);\n    var indented = false;\n    if (mode.electricChars) {\n      for (var j = 0; j < mode.electricChars.length; j++)\n        { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n          indented = indentLine(cm, range$$1.head.line, \"smart\");\n          break\n        } }\n    } else if (mode.electricInput) {\n      if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n        { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n    }\n    if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n  }\n}\n\nfunction copyableRanges(cm) {\n  var text = [], ranges = [];\n  for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n    var line = cm.doc.sel.ranges[i].head.line;\n    var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n    ranges.push(lineRange);\n    text.push(cm.getRange(lineRange.anchor, lineRange.head));\n  }\n  return {text: text, ranges: ranges}\n}\n\nfunction disableBrowserMagic(field, spellcheck) {\n  field.setAttribute(\"autocorrect\", \"off\");\n  field.setAttribute(\"autocapitalize\", \"off\");\n  field.setAttribute(\"spellcheck\", !!spellcheck);\n}\n\nfunction hiddenTextarea() {\n  var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n  var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n  // The textarea is kept positioned near the cursor to prevent the\n  // fact that it'll be scrolled into view on input from scrolling\n  // our fake cursor out of view. On webkit, when wrap=off, paste is\n  // very slow. So make the area wide instead.\n  if (webkit) { te.style.width = \"1000px\"; }\n  else { te.setAttribute(\"wrap\", \"off\"); }\n  // If border: 0; -- iOS fails to open keyboard (issue #1287)\n  if (ios) { te.style.border = \"1px solid black\"; }\n  disableBrowserMagic(te);\n  return div\n}\n\n// The publicly visible API. Note that methodOp(f) means\n// 'wrap f in an operation, performed on its `this` parameter'.\n\n// This is not the complete set of editor methods. Most of the\n// methods defined on the Doc type are also injected into\n// CodeMirror.prototype, for backwards compatibility and\n// convenience.\n\nvar addEditorMethods = function(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  var helpers = CodeMirror.helpers = {};\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); this.display.input.focus();},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") { return }\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        { operation(this, optionHandlers[option])(this, value, old); }\n      signal(this, \"optionChange\", this, option);\n    },\n\n    getOption: function(option) {return this.options[option]},\n    getDoc: function() {return this.doc},\n\n    addKeyMap: function(map$$1, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n    },\n    removeKeyMap: function(map$$1) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n          maps.splice(i, 1);\n          return true\n        } }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n      insertSorted(this.state.overlays,\n                   {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                    priority: (options && options.priority) || 0},\n                   function (overlay) { return overlay.priority; });\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var this$1 = this;\n\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this$1.state.modeGen++;\n          regChange(this$1);\n          return\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n        else { dir = dir ? \"add\" : \"subtract\"; }\n      }\n      if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n    }),\n    indentSelection: methodOp(function(how) {\n      var this$1 = this;\n\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range$$1 = ranges[i];\n        if (!range$$1.empty()) {\n          var from = range$$1.from(), to = range$$1.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            { indentLine(this$1, j, how); }\n          var newRanges = this$1.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n        } else if (range$$1.head.line > end) {\n          indentLine(this$1, range$$1.head.line, how, true);\n          end = range$$1.head.line;\n          if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      return takeToken(this, pos, precise)\n    },\n\n    getLineTokens: function(line, precise) {\n      return takeToken(this, Pos(line), precise, true)\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) { type = styles[2]; }\n      else { for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n        else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n        else { type = styles[mid * 2 + 2]; break }\n      } }\n      var cut = type ? type.indexOf(\"overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) { return mode }\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0]\n    },\n\n    getHelpers: function(pos, type) {\n      var this$1 = this;\n\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) { return found }\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) { found.push(help[mode[type]]); }\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) { found.push(val); }\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n        var cur = help._global[i$1];\n        if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n          { found.push(cur.val); }\n      }\n      return found\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getStateBefore(this, line + 1, precise)\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range$$1 = this.doc.sel.primary();\n      if (start == null) { pos = range$$1.head; }\n      else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n      else { pos = start ? range$$1.from() : range$$1.to(); }\n      return cursorCoords(this, pos, mode || \"page\")\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top)\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset)\n    },\n    heightAtLine: function(line, mode, includeWidgets) {\n      var end = false, lineObj;\n      if (typeof line == \"number\") {\n        var last = this.doc.first + this.doc.size - 1;\n        if (line < this.doc.first) { line = this.doc.first; }\n        else if (line > last) { line = last; end = true; }\n        lineObj = getLine(this.doc, line);\n      } else {\n        lineObj = line;\n      }\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0)\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display) },\n    defaultCharWidth: function() { return charWidth(this.display) },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      node.setAttribute(\"cm-ignore-events\", \"true\");\n      this.display.input.setUneditable(node);\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          { top = pos.top - node.offsetHeight; }\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          { top = pos.bottom; }\n        if (left + node.offsetWidth > hspace)\n          { left = hspace - node.offsetWidth; }\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") { left = 0; }\n        else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        { return commands[cmd].call(null, this) }\n    },\n\n    triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n    findPosH: function(from, amount, unit, visually) {\n      var this$1 = this;\n\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        cur = findPosH(this$1.doc, cur, dir, unit, visually);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      this.extendSelectionsBy(function (range$$1) {\n        if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n          { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n        else\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        { doc.replaceSelection(\"\", null, \"+delete\"); }\n      else\n        { deleteNearSelection(this, function (range$$1) {\n          var other = findPosH(doc, range$$1.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n        }); }\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var this$1 = this;\n\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        var coords = cursorCoords(this$1, cur, \"div\");\n        if (x == null) { x = coords.left; }\n        else { coords.left = x; }\n        cur = findPosV(this$1, coords, dir, unit);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      var doc = this.doc, goals = [];\n      var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function (range$$1) {\n        if (collapse)\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n        var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n        if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n        goals.push(headPos.left);\n        var pos = findPosV(this$1, headPos, dir, unit);\n        if (unit == \"page\" && range$$1 == doc.sel.primary())\n          { addToScrollPos(this$1, null, charCoords(this$1, pos, \"div\").top - headPos.top); }\n        return pos\n      }, sel_move);\n      if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n        { doc.sel.ranges[i].goalColumn = goals[i]; } }\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function (ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n          : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n        while (start > 0 && check(line.charAt(start - 1))) { --start; }\n        while (end < line.length && check(line.charAt(end))) { ++end; }\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end))\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) { return }\n      if (this.state.overwrite = !this.state.overwrite)\n        { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n      else\n        { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return this.display.input.getField() == activeElt() },\n    isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n    scrollTo: methodOp(function(x, y) {\n      if (x != null || y != null) { resolveScrollToPos(this); }\n      if (x != null) { this.curOp.scrollLeft = x; }\n      if (y != null) { this.curOp.scrollTop = y; }\n    }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n              clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n    },\n\n    scrollIntoView: methodOp(function(range$$1, margin) {\n      if (range$$1 == null) {\n        range$$1 = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) { margin = this.options.cursorScrollMargin; }\n      } else if (typeof range$$1 == \"number\") {\n        range$$1 = {from: Pos(range$$1, 0), to: null};\n      } else if (range$$1.from == null) {\n        range$$1 = {from: range$$1, to: null};\n      }\n      if (!range$$1.to) { range$$1.to = range$$1.from; }\n      range$$1.margin = margin || 0;\n\n      if (range$$1.from.line != null) {\n        resolveScrollToPos(this);\n        this.curOp.scrollToPos = range$$1;\n      } else {\n        var sPos = calculateScrollPos(this, {\n          left: Math.min(range$$1.from.left, range$$1.to.left),\n          top: Math.min(range$$1.from.top, range$$1.to.top) - range$$1.margin,\n          right: Math.max(range$$1.from.right, range$$1.to.right),\n          bottom: Math.max(range$$1.from.bottom, range$$1.to.bottom) + range$$1.margin\n        });\n        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var this$1 = this;\n\n      var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n      if (width != null) { this.display.wrapper.style.width = interpret(width); }\n      if (height != null) { this.display.wrapper.style.height = interpret(height); }\n      if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n      var lineNo$$1 = this.display.viewFrom;\n      this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n        if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n          { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n        ++lineNo$$1;\n      });\n      this.curOp.forceUpdate = true;\n      signal(this, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f)},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        { estimateLineHeights(this); }\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      this.display.input.reset();\n      this.scrollTo(doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old\n    }),\n\n    getInputField: function(){return this.display.input.getField()},\n    getWrapperElement: function(){return this.display.wrapper},\n    getScrollerElement: function(){return this.display.scroller},\n    getGutterElement: function(){return this.display.gutters}\n  };\n  eventMixin(CodeMirror);\n\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n};\n\n// Used for horizontal relative motion. Dir is -1 or 1 (left or\n// right), unit can be \"char\", \"column\" (like char, but doesn't\n// cross line boundaries), \"word\" (across next word), or \"group\" (to\n// the start of next group of word or non-word-non-whitespace\n// chars). The visually param controls whether, in right-to-left\n// text, direction 1 means to move towards the next index in the\n// string, or towards the character to the right of the current\n// position. The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosH(doc, pos, dir, unit, visually) {\n  var oldPos = pos;\n  var origDir = dir;\n  var lineObj = getLine(doc, pos.line);\n  function findNextLine() {\n    var l = pos.line + dir;\n    if (l < doc.first || l >= doc.first + doc.size) { return false }\n    pos = new Pos(l, pos.ch, pos.sticky);\n    return lineObj = getLine(doc, l)\n  }\n  function moveOnce(boundToLine) {\n    var next;\n    if (visually) {\n      next = moveVisually(doc.cm, lineObj, pos, dir);\n    } else {\n      next = moveLogically(lineObj, pos, dir);\n    }\n    if (next == null) {\n      if (!boundToLine && findNextLine())\n        { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n      else\n        { return false }\n    } else {\n      pos = next;\n    }\n    return true\n  }\n\n  if (unit == \"char\") {\n    moveOnce();\n  } else if (unit == \"column\") {\n    moveOnce(true);\n  } else if (unit == \"word\" || unit == \"group\") {\n    var sawType = null, group = unit == \"group\";\n    var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n    for (var first = true;; first = false) {\n      if (dir < 0 && !moveOnce(!first)) { break }\n      var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n      var type = isWordChar(cur, helper) ? \"w\"\n        : group && cur == \"\\n\" ? \"n\"\n        : !group || /\\s/.test(cur) ? null\n        : \"p\";\n      if (group && !first && !type) { type = \"s\"; }\n      if (sawType && sawType != type) {\n        if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n        break\n      }\n\n      if (type) { sawType = type; }\n      if (dir > 0 && !moveOnce(!first)) { break }\n    }\n  }\n  var result = skipAtomic(doc, pos, oldPos, origDir, true);\n  if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n  return result\n}\n\n// For relative vertical movement. Dir may be -1 or 1. Unit can be\n// \"page\" or \"line\". The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosV(cm, pos, dir, unit) {\n  var doc = cm.doc, x = pos.left, y;\n  if (unit == \"page\") {\n    var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n    var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n    y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n  } else if (unit == \"line\") {\n    y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n  }\n  var target;\n  for (;;) {\n    target = coordsChar(cm, x, y);\n    if (!target.outside) { break }\n    if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n    y += dir * 5;\n  }\n  return target\n}\n\n// CONTENTEDITABLE INPUT STYLE\n\nvar ContentEditableInput = function(cm) {\n  this.cm = cm;\n  this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n  this.polling = new Delayed();\n  this.composing = null;\n  this.gracePeriod = false;\n  this.readDOMTimeout = null;\n};\n\nContentEditableInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = input.cm;\n  var div = input.div = display.lineDiv;\n  disableBrowserMagic(div, cm.options.spellcheck);\n\n  on(div, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n    // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n    if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n  });\n\n  on(div, \"compositionstart\", function (e) {\n    this$1.composing = {data: e.data, done: false};\n  });\n  on(div, \"compositionupdate\", function (e) {\n    if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n  });\n  on(div, \"compositionend\", function (e) {\n    if (this$1.composing) {\n      if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n      this$1.composing.done = true;\n    }\n  });\n\n  on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n  on(div, \"input\", function () {\n    if (!this$1.composing) { this$1.readFromDOMSoon(); }\n  });\n\n  function onCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.operation(function () {\n          cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n          cm.replaceSelection(\"\", null, \"cut\");\n        });\n      }\n    }\n    if (e.clipboardData) {\n      e.clipboardData.clearData();\n      var content = lastCopied.text.join(\"\\n\");\n      // iOS exposes the clipboard API, but seems to discard content inserted into it\n      e.clipboardData.setData(\"Text\", content);\n      if (e.clipboardData.getData(\"Text\") == content) {\n        e.preventDefault();\n        return\n      }\n    }\n    // Old-fashioned briefly-focus-a-textarea hack\n    var kludge = hiddenTextarea(), te = kludge.firstChild;\n    cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n    te.value = lastCopied.text.join(\"\\n\");\n    var hadFocus = document.activeElement;\n    selectInput(te);\n    setTimeout(function () {\n      cm.display.lineSpace.removeChild(kludge);\n      hadFocus.focus();\n      if (hadFocus == div) { input.showPrimarySelection(); }\n    }, 50);\n  }\n  on(div, \"copy\", onCopyCut);\n  on(div, \"cut\", onCopyCut);\n};\n\nContentEditableInput.prototype.prepareSelection = function () {\n  var result = prepareSelection(this.cm, false);\n  result.focus = this.cm.state.focused;\n  return result\n};\n\nContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n  if (!info || !this.cm.display.view.length) { return }\n  if (info.focus || takeFocus) { this.showPrimarySelection(); }\n  this.showMultipleSelections(info);\n};\n\nContentEditableInput.prototype.showPrimarySelection = function () {\n  var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n  var from = prim.from(), to = prim.to();\n\n  if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n      cmp(minPos(curAnchor, curFocus), from) == 0 &&\n      cmp(maxPos(curAnchor, curFocus), to) == 0)\n    { return }\n\n  var view = cm.display.view;\n  var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n      {node: view[0].measure.map[2], offset: 0};\n  var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n  if (!end) {\n    var measure = view[view.length - 1].measure;\n    var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n    end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n  }\n\n  if (!start || !end) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var old = sel.rangeCount && sel.getRangeAt(0), rng;\n  try { rng = range(start.node, start.offset, end.offset, end.node); }\n  catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n  if (rng) {\n    if (!gecko && cm.state.focused) {\n      sel.collapse(start.node, start.offset);\n      if (!rng.collapsed) {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n    } else {\n      sel.removeAllRanges();\n      sel.addRange(rng);\n    }\n    if (old && sel.anchorNode == null) { sel.addRange(old); }\n    else if (gecko) { this.startGracePeriod(); }\n  }\n  this.rememberSelection();\n};\n\nContentEditableInput.prototype.startGracePeriod = function () {\n    var this$1 = this;\n\n  clearTimeout(this.gracePeriod);\n  this.gracePeriod = setTimeout(function () {\n    this$1.gracePeriod = false;\n    if (this$1.selectionChanged())\n      { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n  }, 20);\n};\n\nContentEditableInput.prototype.showMultipleSelections = function (info) {\n  removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n  removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n};\n\nContentEditableInput.prototype.rememberSelection = function () {\n  var sel = window.getSelection();\n  this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n  this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n};\n\nContentEditableInput.prototype.selectionInEditor = function () {\n  var sel = window.getSelection();\n  if (!sel.rangeCount) { return false }\n  var node = sel.getRangeAt(0).commonAncestorContainer;\n  return contains(this.div, node)\n};\n\nContentEditableInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\") {\n    if (!this.selectionInEditor())\n      { this.showSelection(this.prepareSelection(), true); }\n    this.div.focus();\n  }\n};\nContentEditableInput.prototype.blur = function () { this.div.blur(); };\nContentEditableInput.prototype.getField = function () { return this.div };\n\nContentEditableInput.prototype.supportsTouch = function () { return true };\n\nContentEditableInput.prototype.receivedFocus = function () {\n  var input = this;\n  if (this.selectionInEditor())\n    { this.pollSelection(); }\n  else\n    { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n  function poll() {\n    if (input.cm.state.focused) {\n      input.pollSelection();\n      input.polling.set(input.cm.options.pollInterval, poll);\n    }\n  }\n  this.polling.set(this.cm.options.pollInterval, poll);\n};\n\nContentEditableInput.prototype.selectionChanged = function () {\n  var sel = window.getSelection();\n  return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n    sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n};\n\nContentEditableInput.prototype.pollSelection = function () {\n  if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n  var sel = window.getSelection(), cm = this.cm;\n  // On Android Chrome (version 56, at least), backspacing into an\n  // uneditable block element will put the cursor in that element,\n  // and then, because it's not editable, hide the virtual keyboard.\n  // Because Android doesn't allow us to actually detect backspace\n  // presses in a sane way, this code checks for when that happens\n  // and simulates a backspace press in this case.\n  if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n    this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n    this.blur();\n    this.focus();\n    return\n  }\n  if (this.composing) { return }\n  this.rememberSelection();\n  var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (anchor && head) { runInOp(cm, function () {\n    setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n    if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n  }); }\n};\n\nContentEditableInput.prototype.pollContent = function () {\n  if (this.readDOMTimeout != null) {\n    clearTimeout(this.readDOMTimeout);\n    this.readDOMTimeout = null;\n  }\n\n  var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n  var from = sel.from(), to = sel.to();\n  if (from.ch == 0 && from.line > cm.firstLine())\n    { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n  if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n    { to = Pos(to.line + 1, 0); }\n  if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n  var fromIndex, fromLine, fromNode;\n  if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n    fromLine = lineNo(display.view[0].line);\n    fromNode = display.view[0].node;\n  } else {\n    fromLine = lineNo(display.view[fromIndex].line);\n    fromNode = display.view[fromIndex - 1].node.nextSibling;\n  }\n  var toIndex = findViewIndex(cm, to.line);\n  var toLine, toNode;\n  if (toIndex == display.view.length - 1) {\n    toLine = display.viewTo - 1;\n    toNode = display.lineDiv.lastChild;\n  } else {\n    toLine = lineNo(display.view[toIndex + 1].line) - 1;\n    toNode = display.view[toIndex + 1].node.previousSibling;\n  }\n\n  if (!fromNode) { return false }\n  var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n  var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n  while (newText.length > 1 && oldText.length > 1) {\n    if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n    else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n    else { break }\n  }\n\n  var cutFront = 0, cutEnd = 0;\n  var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n  while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n    { ++cutFront; }\n  var newBot = lst(newText), oldBot = lst(oldText);\n  var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                           oldBot.length - (oldText.length == 1 ? cutFront : 0));\n  while (cutEnd < maxCutEnd &&\n         newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n    { ++cutEnd; }\n  // Try to move start of change to start of selection if ambiguous\n  if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n    while (cutFront && cutFront > from.ch &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n      cutFront--;\n      cutEnd++;\n    }\n  }\n\n  newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n  newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n  var chFrom = Pos(fromLine, cutFront);\n  var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n  if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n    replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n    return true\n  }\n};\n\nContentEditableInput.prototype.ensurePolled = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.reset = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.forceCompositionEnd = function () {\n  if (!this.composing) { return }\n  clearTimeout(this.readDOMTimeout);\n  this.composing = null;\n  this.updateFromDOM();\n  this.div.blur();\n  this.div.focus();\n};\nContentEditableInput.prototype.readFromDOMSoon = function () {\n    var this$1 = this;\n\n  if (this.readDOMTimeout != null) { return }\n  this.readDOMTimeout = setTimeout(function () {\n    this$1.readDOMTimeout = null;\n    if (this$1.composing) {\n      if (this$1.composing.done) { this$1.composing = null; }\n      else { return }\n    }\n    this$1.updateFromDOM();\n  }, 80);\n};\n\nContentEditableInput.prototype.updateFromDOM = function () {\n    var this$1 = this;\n\n  if (this.cm.isReadOnly() || !this.pollContent())\n    { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n};\n\nContentEditableInput.prototype.setUneditable = function (node) {\n  node.contentEditable = \"false\";\n};\n\nContentEditableInput.prototype.onKeyPress = function (e) {\n  if (e.charCode == 0) { return }\n  e.preventDefault();\n  if (!this.cm.isReadOnly())\n    { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n};\n\nContentEditableInput.prototype.readOnlyChanged = function (val) {\n  this.div.contentEditable = String(val != \"nocursor\");\n};\n\nContentEditableInput.prototype.onContextMenu = function () {};\nContentEditableInput.prototype.resetPosition = function () {};\n\nContentEditableInput.prototype.needsContentAttribute = true;\n\nfunction posToDOM(cm, pos) {\n  var view = findViewForLine(cm, pos.line);\n  if (!view || view.hidden) { return null }\n  var line = getLine(cm.doc, pos.line);\n  var info = mapFromLineView(view, line, pos.line);\n\n  var order = getOrder(line, cm.doc.direction), side = \"left\";\n  if (order) {\n    var partPos = getBidiPartAt(order, pos.ch);\n    side = partPos % 2 ? \"right\" : \"left\";\n  }\n  var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n  result.offset = result.collapse == \"right\" ? result.end : result.start;\n  return result\n}\n\nfunction isInGutter(node) {\n  for (var scan = node; scan; scan = scan.parentNode)\n    { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n  return false\n}\n\nfunction badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\nfunction domTextBetween(cm, from, to, fromLine, toLine) {\n  var text = \"\", closing = false, lineSep = cm.doc.lineSeparator();\n  function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n  function close() {\n    if (closing) {\n      text += lineSep;\n      closing = false;\n    }\n  }\n  function addText(str) {\n    if (str) {\n      close();\n      text += str;\n    }\n  }\n  function walk(node) {\n    if (node.nodeType == 1) {\n      var cmText = node.getAttribute(\"cm-text\");\n      if (cmText != null) {\n        addText(cmText || node.textContent.replace(/\\u200b/g, \"\"));\n        return\n      }\n      var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n      if (markerID) {\n        var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n        if (found.length && (range$$1 = found[0].find()))\n          { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n        return\n      }\n      if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n      var isBlock = /^(pre|div|p)$/i.test(node.nodeName);\n      if (isBlock) { close(); }\n      for (var i = 0; i < node.childNodes.length; i++)\n        { walk(node.childNodes[i]); }\n      if (isBlock) { closing = true; }\n    } else if (node.nodeType == 3) {\n      addText(node.nodeValue);\n    }\n  }\n  for (;;) {\n    walk(from);\n    if (from == to) { break }\n    from = from.nextSibling;\n  }\n  return text\n}\n\nfunction domToPos(cm, node, offset) {\n  var lineNode;\n  if (node == cm.display.lineDiv) {\n    lineNode = cm.display.lineDiv.childNodes[offset];\n    if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n    node = null; offset = 0;\n  } else {\n    for (lineNode = node;; lineNode = lineNode.parentNode) {\n      if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n      if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n    }\n  }\n  for (var i = 0; i < cm.display.view.length; i++) {\n    var lineView = cm.display.view[i];\n    if (lineView.node == lineNode)\n      { return locateNodeInLineView(lineView, node, offset) }\n  }\n}\n\nfunction locateNodeInLineView(lineView, node, offset) {\n  var wrapper = lineView.text.firstChild, bad = false;\n  if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n  if (node == wrapper) {\n    bad = true;\n    node = wrapper.childNodes[offset];\n    offset = 0;\n    if (!node) {\n      var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n      return badPos(Pos(lineNo(line), line.text.length), bad)\n    }\n  }\n\n  var textNode = node.nodeType == 3 ? node : null, topNode = node;\n  if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n    textNode = node.firstChild;\n    if (offset) { offset = textNode.nodeValue.length; }\n  }\n  while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n  var measure = lineView.measure, maps = measure.maps;\n\n  function find(textNode, topNode, offset) {\n    for (var i = -1; i < (maps ? maps.length : 0); i++) {\n      var map$$1 = i < 0 ? measure.map : maps[i];\n      for (var j = 0; j < map$$1.length; j += 3) {\n        var curNode = map$$1[j + 2];\n        if (curNode == textNode || curNode == topNode) {\n          var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n          var ch = map$$1[j] + offset;\n          if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n          return Pos(line, ch)\n        }\n      }\n    }\n  }\n  var found = find(textNode, topNode, offset);\n  if (found) { return badPos(found, bad) }\n\n  // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n  for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n    found = find(after, after.firstChild, 0);\n    if (found)\n      { return badPos(Pos(found.line, found.ch - dist), bad) }\n    else\n      { dist += after.textContent.length; }\n  }\n  for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n    found = find(before, before.firstChild, -1);\n    if (found)\n      { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n    else\n      { dist$1 += before.textContent.length; }\n  }\n}\n\n// TEXTAREA INPUT STYLE\n\nvar TextareaInput = function(cm) {\n  this.cm = cm;\n  // See input.poll and input.reset\n  this.prevInput = \"\";\n\n  // Flag that indicates whether we expect input to appear real soon\n  // now (after some event like 'keypress' or 'input') and are\n  // polling intensively.\n  this.pollingFast = false;\n  // Self-resetting timeout for the poller\n  this.polling = new Delayed();\n  // Tracks when input.reset has punted to just putting a short\n  // string into the textarea instead of the full selection.\n  this.inaccurateSelection = false;\n  // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n  this.hasSelection = false;\n  this.composing = null;\n};\n\nTextareaInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = this.cm;\n\n  // Wraps and hides input textarea\n  var div = this.wrapper = hiddenTextarea();\n  // The semihidden textarea that is focused when the editor is\n  // focused, and receives input.\n  var te = this.textarea = div.firstChild;\n  display.wrapper.insertBefore(div, display.wrapper.firstChild);\n\n  // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n  if (ios) { te.style.width = \"0px\"; }\n\n  on(te, \"input\", function () {\n    if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n    input.poll();\n  });\n\n  on(te, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n    cm.state.pasteIncoming = true;\n    input.fastPoll();\n  });\n\n  function prepareCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (input.inaccurateSelection) {\n        input.prevInput = \"\";\n        input.inaccurateSelection = false;\n        te.value = lastCopied.text.join(\"\\n\");\n        selectInput(te);\n      }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.setSelections(ranges.ranges, null, sel_dontScroll);\n      } else {\n        input.prevInput = \"\";\n        te.value = ranges.text.join(\"\\n\");\n        selectInput(te);\n      }\n    }\n    if (e.type == \"cut\") { cm.state.cutIncoming = true; }\n  }\n  on(te, \"cut\", prepareCopyCut);\n  on(te, \"copy\", prepareCopyCut);\n\n  on(display.scroller, \"paste\", function (e) {\n    if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n    cm.state.pasteIncoming = true;\n    input.focus();\n  });\n\n  // Prevent normal selection in the editor (we handle our own)\n  on(display.lineSpace, \"selectstart\", function (e) {\n    if (!eventInWidget(display, e)) { e_preventDefault(e); }\n  });\n\n  on(te, \"compositionstart\", function () {\n    var start = cm.getCursor(\"from\");\n    if (input.composing) { input.composing.range.clear(); }\n    input.composing = {\n      start: start,\n      range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n    };\n  });\n  on(te, \"compositionend\", function () {\n    if (input.composing) {\n      input.poll();\n      input.composing.range.clear();\n      input.composing = null;\n    }\n  });\n};\n\nTextareaInput.prototype.prepareSelection = function () {\n  // Redraw the selection and/or cursor\n  var cm = this.cm, display = cm.display, doc = cm.doc;\n  var result = prepareSelection(cm);\n\n  // Move the hidden textarea near the cursor to prevent scrolling artifacts\n  if (cm.options.moveInputWithCursor) {\n    var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n    var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n    result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                        headPos.top + lineOff.top - wrapOff.top));\n    result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                         headPos.left + lineOff.left - wrapOff.left));\n  }\n\n  return result\n};\n\nTextareaInput.prototype.showSelection = function (drawn) {\n  var cm = this.cm, display = cm.display;\n  removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n  removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n  if (drawn.teTop != null) {\n    this.wrapper.style.top = drawn.teTop + \"px\";\n    this.wrapper.style.left = drawn.teLeft + \"px\";\n  }\n};\n\n// Reset the input to correspond to the selection (or to be empty,\n// when not typing and nothing is selected)\nTextareaInput.prototype.reset = function (typing) {\n  if (this.contextMenuPending) { return }\n  var minimal, selected, cm = this.cm, doc = cm.doc;\n  if (cm.somethingSelected()) {\n    this.prevInput = \"\";\n    var range$$1 = doc.sel.primary();\n    minimal = hasCopyEvent &&\n      (range$$1.to().line - range$$1.from().line > 100 || (selected = cm.getSelection()).length > 1000);\n    var content = minimal ? \"-\" : selected || cm.getSelection();\n    this.textarea.value = content;\n    if (cm.state.focused) { selectInput(this.textarea); }\n    if (ie && ie_version >= 9) { this.hasSelection = content; }\n  } else if (!typing) {\n    this.prevInput = this.textarea.value = \"\";\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n  }\n  this.inaccurateSelection = minimal;\n};\n\nTextareaInput.prototype.getField = function () { return this.textarea };\n\nTextareaInput.prototype.supportsTouch = function () { return false };\n\nTextareaInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n    try { this.textarea.focus(); }\n    catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n  }\n};\n\nTextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\nTextareaInput.prototype.resetPosition = function () {\n  this.wrapper.style.top = this.wrapper.style.left = 0;\n};\n\nTextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n// Poll for input changes, using the normal rate of polling. This\n// runs as long as the editor is focused.\nTextareaInput.prototype.slowPoll = function () {\n    var this$1 = this;\n\n  if (this.pollingFast) { return }\n  this.polling.set(this.cm.options.pollInterval, function () {\n    this$1.poll();\n    if (this$1.cm.state.focused) { this$1.slowPoll(); }\n  });\n};\n\n// When an event has just come in that is likely to add or change\n// something in the input textarea, we poll faster, to ensure that\n// the change appears on the screen quickly.\nTextareaInput.prototype.fastPoll = function () {\n  var missed = false, input = this;\n  input.pollingFast = true;\n  function p() {\n    var changed = input.poll();\n    if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n    else {input.pollingFast = false; input.slowPoll();}\n  }\n  input.polling.set(20, p);\n};\n\n// Read input from the textarea, and update the document to match.\n// When something is selected, it is present in the textarea, and\n// selected (unless it is huge, in which case a placeholder is\n// used). When nothing is selected, the cursor sits after previously\n// seen text (can be empty), which is stored in prevInput (we must\n// not reset the textarea when typing, because that breaks IME).\nTextareaInput.prototype.poll = function () {\n    var this$1 = this;\n\n  var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n  // Since this is called a *lot*, try to bail out as cheaply as\n  // possible when it is clear that nothing happened. hasSelection\n  // will be the case when there is a lot of text in the textarea,\n  // in which case reading its value would be expensive.\n  if (this.contextMenuPending || !cm.state.focused ||\n      (hasSelection(input) && !prevInput && !this.composing) ||\n      cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n    { return false }\n\n  var text = input.value;\n  // If nothing changed, bail.\n  if (text == prevInput && !cm.somethingSelected()) { return false }\n  // Work around nonsensical selection resetting in IE9/10, and\n  // inexplicable appearance of private area unicode characters on\n  // some key combos in Mac (#2689).\n  if (ie && ie_version >= 9 && this.hasSelection === text ||\n      mac && /[\\uf700-\\uf7ff]/.test(text)) {\n    cm.display.input.reset();\n    return false\n  }\n\n  if (cm.doc.sel == cm.display.selForContextMenu) {\n    var first = text.charCodeAt(0);\n    if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n    if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n  }\n  // Find the part of the input that is actually new\n  var same = 0, l = Math.min(prevInput.length, text.length);\n  while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n  runInOp(cm, function () {\n    applyTextInput(cm, text.slice(same), prevInput.length - same,\n                   null, this$1.composing ? \"*compose\" : null);\n\n    // Don't leave long text in the textarea, since it makes further polling slow\n    if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n    else { this$1.prevInput = text; }\n\n    if (this$1.composing) {\n      this$1.composing.range.clear();\n      this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                         {className: \"CodeMirror-composing\"});\n    }\n  });\n  return true\n};\n\nTextareaInput.prototype.ensurePolled = function () {\n  if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n};\n\nTextareaInput.prototype.onKeyPress = function () {\n  if (ie && ie_version >= 9) { this.hasSelection = null; }\n  this.fastPoll();\n};\n\nTextareaInput.prototype.onContextMenu = function (e) {\n  var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n  var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n  if (!pos || presto) { return } // Opera is difficult.\n\n  // Reset the current text selection only if the click is done outside of the selection\n  // and 'resetSelectionOnContextMenu' option is true.\n  var reset = cm.options.resetSelectionOnContextMenu;\n  if (reset && cm.doc.sel.contains(pos) == -1)\n    { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n  var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n  input.wrapper.style.cssText = \"position: absolute\";\n  var wrapperBox = input.wrapper.getBoundingClientRect();\n  te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n  var oldScrollY;\n  if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n  display.input.focus();\n  if (webkit) { window.scrollTo(null, oldScrollY); }\n  display.input.reset();\n  // Adds \"Select all\" to context menu in FF\n  if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n  input.contextMenuPending = true;\n  display.selForContextMenu = cm.doc.sel;\n  clearTimeout(display.detectingSelectAll);\n\n  // Select-all will be greyed out if there's nothing to select, so\n  // this adds a zero-width space so that we can later check whether\n  // it got selected.\n  function prepareSelectAllHack() {\n    if (te.selectionStart != null) {\n      var selected = cm.somethingSelected();\n      var extval = \"\\u200b\" + (selected ? te.value : \"\");\n      te.value = \"\\u21da\"; // Used to catch context-menu undo\n      te.value = extval;\n      input.prevInput = selected ? \"\" : \"\\u200b\";\n      te.selectionStart = 1; te.selectionEnd = extval.length;\n      // Re-set this, in case some other handler touched the\n      // selection in the meantime.\n      display.selForContextMenu = cm.doc.sel;\n    }\n  }\n  function rehide() {\n    input.contextMenuPending = false;\n    input.wrapper.style.cssText = oldWrapperCSS;\n    te.style.cssText = oldCSS;\n    if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n    // Try to detect the user choosing select-all\n    if (te.selectionStart != null) {\n      if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n      var i = 0, poll = function () {\n        if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n            te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n          operation(cm, selectAll)(cm);\n        } else if (i++ < 10) {\n          display.detectingSelectAll = setTimeout(poll, 500);\n        } else {\n          display.selForContextMenu = null;\n          display.input.reset();\n        }\n      };\n      display.detectingSelectAll = setTimeout(poll, 200);\n    }\n  }\n\n  if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n  if (captureRightClick) {\n    e_stop(e);\n    var mouseup = function () {\n      off(window, \"mouseup\", mouseup);\n      setTimeout(rehide, 20);\n    };\n    on(window, \"mouseup\", mouseup);\n  } else {\n    setTimeout(rehide, 50);\n  }\n};\n\nTextareaInput.prototype.readOnlyChanged = function (val) {\n  if (!val) { this.reset(); }\n};\n\nTextareaInput.prototype.setUneditable = function () {};\n\nTextareaInput.prototype.needsContentAttribute = false;\n\nfunction fromTextArea(textarea, options) {\n  options = options ? copyObj(options) : {};\n  options.value = textarea.value;\n  if (!options.tabindex && textarea.tabIndex)\n    { options.tabindex = textarea.tabIndex; }\n  if (!options.placeholder && textarea.placeholder)\n    { options.placeholder = textarea.placeholder; }\n  // Set autofocus to true if this textarea is focused, or if it has\n  // autofocus and no other element is focused.\n  if (options.autofocus == null) {\n    var hasFocus = activeElt();\n    options.autofocus = hasFocus == textarea ||\n      textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n  }\n\n  function save() {textarea.value = cm.getValue();}\n\n  var realSubmit;\n  if (textarea.form) {\n    on(textarea.form, \"submit\", save);\n    // Deplorable hack to make the submit method do the right thing.\n    if (!options.leaveSubmitMethodAlone) {\n      var form = textarea.form;\n      realSubmit = form.submit;\n      try {\n        var wrappedSubmit = form.submit = function () {\n          save();\n          form.submit = realSubmit;\n          form.submit();\n          form.submit = wrappedSubmit;\n        };\n      } catch(e) {}\n    }\n  }\n\n  options.finishInit = function (cm) {\n    cm.save = save;\n    cm.getTextArea = function () { return textarea; };\n    cm.toTextArea = function () {\n      cm.toTextArea = isNaN; // Prevent this from being ran twice\n      save();\n      textarea.parentNode.removeChild(cm.getWrapperElement());\n      textarea.style.display = \"\";\n      if (textarea.form) {\n        off(textarea.form, \"submit\", save);\n        if (typeof textarea.form.submit == \"function\")\n          { textarea.form.submit = realSubmit; }\n      }\n    };\n  };\n\n  textarea.style.display = \"none\";\n  var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n    options);\n  return cm\n}\n\nfunction addLegacyProps(CodeMirror) {\n  CodeMirror.off = off;\n  CodeMirror.on = on;\n  CodeMirror.wheelEventPixels = wheelEventPixels;\n  CodeMirror.Doc = Doc;\n  CodeMirror.splitLines = splitLinesAuto;\n  CodeMirror.countColumn = countColumn;\n  CodeMirror.findColumn = findColumn;\n  CodeMirror.isWordChar = isWordCharBasic;\n  CodeMirror.Pass = Pass;\n  CodeMirror.signal = signal;\n  CodeMirror.Line = Line;\n  CodeMirror.changeEnd = changeEnd;\n  CodeMirror.scrollbarModel = scrollbarModel;\n  CodeMirror.Pos = Pos;\n  CodeMirror.cmpPos = cmp;\n  CodeMirror.modes = modes;\n  CodeMirror.mimeModes = mimeModes;\n  CodeMirror.resolveMode = resolveMode;\n  CodeMirror.getMode = getMode;\n  CodeMirror.modeExtensions = modeExtensions;\n  CodeMirror.extendMode = extendMode;\n  CodeMirror.copyState = copyState;\n  CodeMirror.startState = startState;\n  CodeMirror.innerMode = innerMode;\n  CodeMirror.commands = commands;\n  CodeMirror.keyMap = keyMap;\n  CodeMirror.keyName = keyName;\n  CodeMirror.isModifierKey = isModifierKey;\n  CodeMirror.lookupKey = lookupKey;\n  CodeMirror.normalizeKeyMap = normalizeKeyMap;\n  CodeMirror.StringStream = StringStream;\n  CodeMirror.SharedTextMarker = SharedTextMarker;\n  CodeMirror.TextMarker = TextMarker;\n  CodeMirror.LineWidget = LineWidget;\n  CodeMirror.e_preventDefault = e_preventDefault;\n  CodeMirror.e_stopPropagation = e_stopPropagation;\n  CodeMirror.e_stop = e_stop;\n  CodeMirror.addClass = addClass;\n  CodeMirror.contains = contains;\n  CodeMirror.rmClass = rmClass;\n  CodeMirror.keyNames = keyNames;\n}\n\n// EDITOR CONSTRUCTOR\n\ndefineOptions(CodeMirror$1);\n\naddEditorMethods(CodeMirror$1);\n\n// Set up methods on CodeMirror's prototype to redirect to the editor's document.\nvar dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\nfor (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n  { CodeMirror$1.prototype[prop] = (function(method) {\n    return function() {return method.apply(this.doc, arguments)}\n  })(Doc.prototype[prop]); } }\n\neventMixin(Doc);\n\n// INPUT HANDLING\n\nCodeMirror$1.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n// MODE DEFINITION AND QUERYING\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nCodeMirror$1.defineMode = function(name/*, mode, …*/) {\n  if (!CodeMirror$1.defaults.mode && name != \"null\") { CodeMirror$1.defaults.mode = name; }\n  defineMode.apply(this, arguments);\n};\n\nCodeMirror$1.defineMIME = defineMIME;\n\n// Minimal default mode.\nCodeMirror$1.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\nCodeMirror$1.defineMIME(\"text/plain\", \"null\");\n\n// EXTENSIONS\n\nCodeMirror$1.defineExtension = function (name, func) {\n  CodeMirror$1.prototype[name] = func;\n};\nCodeMirror$1.defineDocExtension = function (name, func) {\n  Doc.prototype[name] = func;\n};\n\nCodeMirror$1.fromTextArea = fromTextArea;\n\naddLegacyProps(CodeMirror$1);\n\nCodeMirror$1.version = \"5.25.2\";\n\nreturn CodeMirror$1;\n\n})));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the chat window.  The communication is handled by chat.js\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatroom',[ \"jquery\", \"form\", \"cm/lib/codemirror\", \"utils\", \"config\",\n\t \"modal\", \"links\",\n\t \"laconic\"\n       ],\n       function($, form, CodeMirror, utils, config, modal, links) {\n\n(function($) {\n  var pluginName = 'chatroom';\n  var lasthangoutwarning = 0;\n\n  /** @lends $.fn.chatroom */\n  var methods = {\n    /**\n     * {Object} [options]\n     * {String} [options.docid] Document identifier\n     */\n\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = { messages: [] };\t\t/* private data */\n\tvar btn, send;\n\tvar close;\n\tvar text;\n\tvar hangout = \"gitty:\"+config.swish.hangout;\n\n\tdata.docid = options.docid;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chatroom each-minute swish-event-receiver\");\n\n\t\t\t\t\t/* build DOM */\n\n\tbtn  = $.el.div({class:\"btn-group dropup\"},\n\t\t send = $.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-primary btn-xs\"\n\t\t\t\t    }, \"Send\"),\n\t\t\t$.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-info btn-xs \"+\n\t\t\t\t            \"dropdown-toggle\",\n\t\t\t\t      'data-toggle':\"dropdown\",\n\t\t\t\t      'aria-haspopup':true,\n\t\t\t\t      'aria-expanded':false\n\t\t\t\t    },\n\t\t\t\t    $.el.span({class:\"caret\"})),\n\t\t   ul = $.el.ul({class:\"dropdown-menu pull-right\"}));\n\ttext = $.el.textarea({ placeholder:\"Type chat message here ...\"\n\t\t\t     }),\n\n\telem.append($.el.div(\n\t\t      {class:\"chat-conversation\"},\n\t\t      $.el.div({class:\"chat-outer-wrapper\"},\n\t\t\t $.el.div({class:\"chat-inner-wrapper\"},\n\t\t\t   $.el.div({class:\"chat-content-wrapper\"},\n\t\t\t      $.el.div({class:\"chat-stretch\"}),\n\t\t\t      $.el.div({class:\"chat-content\"}))))),\n\t    close = $.el.span({class:\"glyphicon menu glyphicon-remove-circle\"}),\n\t\t    $.el.div({class:\"chat-input\"},\n\t\t\t     $.el.table({class:\"chat-input\"},\n\t\t\t\t\t$.el.tr($.el.td({class:\"chat-text\"}, text),\n\t\t\t\t\t\t$.el.td({class:\"chat-send\"}, btn)))));\n\n\t$(send).on(\"click\", function() {\n\t  elem.chatroom('send');\n\t});\n\n\t\t\t\t\t/* event handling */\n\tform.widgets.populateMenu($(btn), elem, {\n\t  \"Include my query\": function() {\n\t    var query = $(\".prolog-query-editor\").queryEditor('getQuery');\n\t    if ( query.trim() != \"\" ) {\n\t      this.chatroom('send',\n\t\t\t    {payload: [{type:\"query\", query:query}]});\n\t    } else {\n\t      modal.alert(\"Your query editor is empty\");\n\t    }\n\t  }\n\t});\n\tif ( options.docid != hangout ) {\n\t  form.widgets.populateMenu($(btn), elem, {\n\t    \"Broadcast to hangout\": function() {\n\t      this.chatroom('send',\n\t\t\t    { broadcast: \"gitty:\"+config.swish.hangout\n\t\t\t    });\n\t    }\n\t  });\n\t}\n\t$(close).on(\"click\", function() {\n\t  elem.tile('close');\n\t});\n\tif ( options.oneline ) {\n\t  $(text).keypress(function(ev) {\n\t    if ( ev.which == 13 ) {\n\t      elem.chatroom('send');\n\t      ev.preventDefault();\n\t      return false;\n\t    }\n\t  });\n\t} else {\n\t  $(text).on('keyup', function() {\n\t    var that = $(this);\n\t    var h;\n\n\t    if ( that.scrollTop() != 0 && (h=that.height()) < 500 ) {\n\t      h += parseFloat(that.css('line-height'));\n\n\t      that.animate({ height: h }, 200,\n\t\t\t   function() { elem.chatroom('scrollToBottom'); });\n\t    }\n\t  });\n\t}\n\tif ( options.docid == hangout ) {\n\t  $(text).focus(function() {\n\t    if ( $(text).val() == \"\" ) {\n\t      var now = new Date().getTime();\n\n\t      if ( now-lasthangoutwarning > 300000 ) {\n\t\tlasthangoutwarning = now;\n\n\t\tmodal.help({file:\"hangout.html\", notagain:\"hangout\"});\n\t      }\n\t    }\n\t  });\n\t}\n\telem.on(\"click\", \".inner button\", function(ev) {\n\t  var button = $(ev.target).closest(\"button\");\n\t  var val;\n\n\t  if ( (val = button.data(\"commit\")) ) {\n\t    elem.closest(\".swish\").swish('playFile', val);\n\t  } else if ( (val = button.data(\"diff\")) ) {\n\t    elem.chatroom('diff', val);\n\t  }\n\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\telem.on(\"click\", \".chat-content a\", links.followLink);\n\telem.on(\"pane.resize\", function() {\n\t  elem.chatroom('scrollToBottom', true);\n\t});\n\telem.on(\"minute\", function() {\n\t  elem.chatroom('update_time');\n\t});\n\telem.on(\"activate-tab\", function() {\n\t  elem.chatroom('read_until');\n\t});\n\n\t$(text).height(parseFloat($(text).css('line-height'))+5);\n\n\telem.chatroom('load_from_server');\n      });\n    },\n\n    close: function() {\n      return this.tile('close');\n    },\n\n    /**\n     * Send a chat message.\n     * @param {Object} [options]\n     * @param {Array}  [options.payload] Payloads (queries, etc)\n     * @param {String} [options.docid] Addressed document of not self\n     * @param {String} [options.broadcast] Also broadcast the message\n     * to the indicated document id.\n     * @param {Bool}   [options.clear] if `false`, do not clear the\n     * message window after sending.\n     */\n    send: function(options) {\n      options = options||{};\n      var data = this.data(pluginName);\n      var msg = {type:\"chat-message\"};\n      var ta = this.find(\"textarea\");\n      msg.text = ta.val().trim();\n      var payload = options.payload||[];\n      var has_payload = false;\n      var selection = this.chatroom('storage').storage('getSelection');\n      var hangout = \"gitty:\" + config.swish.hangout;\n\n      if ( selection )\n\tpayload.push({type:\"selection\", selection:selection});\n\n      for(var i=0; i<payload.length; i++) {\n\tif ( payload[i].type != 'about' ) {\n\t  has_payload = true;\n\t  break;\n\t}\n      }\n\t\t\t\t\t/* send first message to hangout */\n      if ( !options.broadcast &&\n\t   data.docid != hangout &&\n\t   data.messages.length == 0 )\n\toptions.broadcast = hangout;\n\n      if ( msg.text != \"\" || has_payload ) {\n\tmsg.uuid    = utils.generateUUID();\n\tmsg.payload = payload;\n\tmsg.docid   = options.docid||data.docid;\n\tif ( options.class )\n\t  msg.class = options.class;\n\n\tif ( options.clear == true ) {\n\t  this.chatroom('clear');\n\t} else {\n\t  data.clear = msg.uuid;\n\t}\n\n\t$(\"#chat\").chat('send', msg);\n\tif ( options.broadcast ) {\n\t  msg.payload.unshift({type:\"about\", docid:data.docid});\n\t  msg.docid = options.broadcast;\n\t  $(\"#chat\").chat('send', msg);\n\t}\n      } else if ( !options.payload ) {\n\tmodal.alert(\"No message to send\");\n      }\n    },\n\n    /**\n     * Get the related storage object\n     */\n    storage: function() {\n      return this.closest(\".tab-pane\").find(\".storage\");\n    },\n\n    /**\n     * @param {Object} msg is the chat message object\n     * @return {Bool} `true` if the msg is sent by the current user.\n     */\n    is_self: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      var self = $(\"#chat\").chat('self');\n\n      return ((muser.id && muser.id == self.id) ||\n\t      (muser.avatar && muser.avatar == self.avatar) ||\n\t      (muser.profile_id && muser.profile_id == suser.profile_id));\n    },\n\n    /**\n     * Indicate we have read all content\n     */\n    read_until: function(msg) {\n      var data;\n\n      if ( msg == undefined &&\n\t   (data = this.data(pluginName)) &&\n\t   data.messages.length > 0 )\n\tmsg = data.messages[data.messages.length-1];\n\n      if ( msg ) {\n\t$(\"#chat\").chat('read_until', msg.docid, msg.time);\n\t$(\".chat-bell\").chatbell('read_until', msg.docid, msg.time);\n      }\n    },\n\n    /**\n     * Render a chat message.\n     * @param {Object} msg\n     * @param {String} msg.html is the HTML content of the object\n     * @param {String} msg.text is the ext of the object\n     * @param {Object} msg.user Sender description\n     */\n    render: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      if ( msg.is_self === undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      elem = $($.el.div({class:\"chat-message\"+(msg.is_self ? \" self\" : \"\"),\n\t\t\t 'data-userid':muser.wsid}));\n      if ( !msg.is_self && muser.avatar ) {\n\telem.append($.el.img({ class:\"avatar\", src:muser.avatar }));\n      }\n      elem.append($.el.span({class:\"chat-sender\"},\n\t\t\t    msg.is_self ? \"Me\" : muser.name));\n\n      if ( msg.time ) {\n\tvar title = new Date(msg.time*1000).toLocaleString();\n\telem.append($.el.span({class:\"chat-time\", title:title},\n\t\t\t      \"(\", ago(msg.time), \") \"));\n\telem.data('time', msg.time);\n      }\n\n      if ( msg.payload ) {\n\tfor(var i=0; i<msg.payload.length; i++) {\n\t  var pl = msg.payload[i];\n\t  if ( payload_handlers[pl.type] )\n\t    payload_handlers[pl.type].call(elem, pl);\n\t  else\n\t    console.log(pl);\n\t}\n      }\n\n      var html;\n      if ( msg.html ) {\n\thtml = msg.html;\n      } else if ( msg.text ) {\n\thtml = $($.el.span(msg.text)).html();\n\thtml = markdown(html);\n      }\n\n      if ( html ) {\n\tvar span = $.el.span({class:\"chat-message html\"});\n\t$(span).html(html);\n\telem.append(span);\n      }\n\n      return elem;\n    },\n\n    /**\n     * Add a message to the chatroom.\n     * @param {Object} msg is the message to display\n     * @param {Bool} [seen] if `true`, claim that the message is read.\n     * When omitted it is `true` if the chatroom is visible.\n     */\n    add: function(msg, seen) {\n      var data = this.data(pluginName);\n\n      if ( msg.docid == data.docid )\n      { var elem;\n\n\tif ( seen == undefined )\n\t  seen = this.is(\":visible\");\n\n\tif ( msg.is_self == undefined )\n\t  msg.is_self = this.chatroom('is_self', msg);\n\tdata.messages.push(msg);\n\n\telem = this.chatroom('render', msg);\n\tthis.find(\".chat-content\").append(elem);\n\tthis.chatroom('scrollToBottom');\n\n\tif ( seen )\n\t  this.chatroom('read_until', msg);\n      }\n\n      if ( msg.uuid && msg.uuid == data.clear ) {\n\tthis.chatroom('clear');\n      }\n\n      return this;\n    },\n\n    clear: function() {\n      var ta = this.find(\"textarea\");\n\n      ta.val(\"\");\n      ta.height(parseFloat(ta.css('line-height')+5));\n    },\n\n    load_from_server: function(ifempty) {\n      var data = this.data(pluginName);\n      var elem = $(this);\n\n      $.get(config.http.locations.chat_messages,\n\t    { docid: data.docid\n\t    },\n\t    function(messages) {\n\t      if ( messages.length == 0 ) {\n\t\tif ( ifempty )\n\t\t  elem.chatroom('close');\n\t\telse if ( data.docid != \"gitty:\"+config.swish.hangout )\n\t\t  modal.help({file:\"newchat.html\", notagain:\"newchat\"});\n\t      } else {\n\t\tfor(var i=0; i<messages.length; i++) {\n\t\t  elem.chatroom('add', messages[i], i == messages.length-1 );\n\t\t}\n\t      }\n\t    }).fail(function(jqXHR, textStatus, errorThrown) {\n\t      modal.ajaxError(jqXHR);\n\t    });\n\n      return this;\n    },\n\n    update_time: function() {\n      return this.find(\".chat-message\").each(function() {\n\tvar elem = $(this);\n\tvar time;\n\tif ( (time=elem.data('time')) )\n\t  elem.find(\".chat-time\").text(\"(\"+ago(time)+\") \");\n      });\n    },\n\n    /**\n     * Show diff between versions\n     * @param {Object} options\n     * @param {String} options.from Base commit\n     * @param {String} options.to Target commit\n     * @param {String} options.name Name of the file\n     */\n\n    diff: function(options) {\n      function error(jqXHR) {\n\tmodal.ajaxError(jqXHR);\n      }\n\n      $.ajax({\n        url: config.http.locations.web_storage + options.from,\n\tdata: {format: \"raw\"},\n\tsuccess: function(from) {\n\t  $.ajax({\n\t    url: config.http.locations.web_storage + options.to,\n\t    data: {format: \"raw\"},\n\t    success: function(to) {\n\n\t      function diffBody() {\n\t\tvar diff = $.el.div();\n\n\t\tthis.append(diff);\n\t\t$(diff).diff({\n\t\t  base: from,\n\t\t  head: to,\n\t\t  baseName: options.name + \" (before)\",\n\t\t  headName: options.name + \" (after)\"\n\t\t});\n\t\tthis.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t      }\n\n\t      form.showDialog({\n\t        title: \"Update differences\",\n\t\tbody:  diffBody\n\t      });\n\t    },\n\t    error: error\n\t  })\n\t},\n\terror: error\n      });\n    },\n\n\n    /**\n     * Associate with a new document\n     */\n    docid: function(docid, ifempty) {\n      var data = this.data(pluginName);\n\n      if ( data.docid != docid ) {\n\tthis.find(\".chat-content\").html(\"\");\n\tdata.docid = docid;\n\tthis.chatroom('load_from_server', ifempty);\n      }\n    },\n\n    /**\n     * @param {String} docid docid of rooms we are looking for\n     * @returns {jQuery} set of chatrooms pointing at document id\n     */\n    rooms: function(docid) {\n      var rooms = [];\n\n      this.each(function() {\n\tvar room = $(this);\n\tvar data = room.data(pluginName);\n\tif ( data.docid == docid )\n\t  rooms.push(this);\n      });\n\n      return $(rooms);\n    },\n\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tscroll  =   elem.find(\"div.chat-inner-wrapper\");\n\twrap    = scroll.find(\"div.chat-content-wrapper\");\n\tcontent =   wrap.find(\"div.chat-content\");\n\tvar height = content[0].scrollHeight;\n\tvar room   = wrap.height() - height - 8;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  wrap.find(\"div.chat-stretch\").height(room > 0 ? room : 0);\n\t  scroll.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\t PAYLOAD HANDLERS\t*\n\t\t *******************************/\n\n  var payload_handlers = {\n    selection: function(selection) {\n      var label   = $().storage('getSelectionLabel', selection.selection);\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      label + \" \",\n\t\t\t      form.widgets.glyphIcon(\"eye-open\")));\n      btn.on(\"click\", function(ev) {\n\t$(ev.target).chatroom('storage')\n\t            .storage('restoreSelection', selection.selection);\n      });\n\n      this.append(\" \", btn, \" \");\n    },\n\n    query: function(query) {\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      \"Query \",\n\t\t\t      form.widgets.glyphIcon(\"download\")));\n      btn.on(\"click\", function() {\n\tvar qe = $(\".prolog-query-editor\");\n\n\tqe.queryEditor('setQuery', query.query);\n\tutils.flash(qe.find(\".CodeMirror\"));\n      });\n      sourceToolTip(btn, query.query);\n\n      this.append(\" \", btn, \" \");\n    },\n\n    update: function(update) {\n      var old, dif, nwe;\n\n      this.append(\" \", $.el.span(\n        {class:\"update\"},\n\told = btn(\"play\",    \"btn-primary\", \"Open old version\"),\n\tdif = btn(\"zoom-in\", \"btn-info\",    \"View changes\"),\n        nwe = btn(\"play\",    \"btn-primary\", \"Open new version\")), \" \");\n\n      $(old).data('commit', update.previous);\n      $(dif).data('diff',   {from:update.previous, to:update.commit,\n\t\t\t     name:update.name});\n      $(nwe).data('commit', update.commit);\n    },\n\n    about: function(about) {\n      var file = about.docid.replace(\"gitty:\", \"\");\n\n      this.append(\" \",\n\t$.el.a({\n\t  href:config.http.locations.web_storage+file,\n\t  class:\"store btn btn-primary btn-xs\"\n\t}, file), \" \");\n    }\n  };\n\n\n  // private functions\n\n  function sourceToolTip(elem, src) {\n    var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n    CodeMirror.runMode(src, \"prolog\", pre);\n\n    elem.attr(\"title\", $.el.div(pre).innerHTML);\n    elem.data(\"html\", true);\n    elem.data(\"placement\", \"bottom\");\n    elem.data(\"trigger\", \"hover\");\n    elem.tooltip();\n  }\n\n  function btn(glyph, type, title) {\n    return form.widgets.glyphIconButton(glyph,\n\t\t\t\t\t{class:\"btn-xs \"+type, title:title});\n  }\n\n  function ago(time) {\n    var ago = ((new Date().getTime())/1000) - time;\n\n    if ( ago < 20  ) return \"just now\";\n    if ( ago < 60  ) return \"less then a minute ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 120 ) return ago + \" minutes ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 48 )  return ago + \" hours ago\";\n    ago = Math.round(ago/24);\n    if ( ago < 360 ) return ago + \" days ago\";\n    ago = Math.round(ago/365);\n    return ago + \" years ago\";\n  }\n\n  /**\n   * Perform very simple regex based markdown processing\n   */\n  function markdown(text) {\n    var replace = [\n      { regex: /[a-z][a-zA-Z0-9_]*\\/[0-9]/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"/pldoc/man?predicate='+match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /[a-zA-Z0-9_-]+\\.(pl|swinb)\\b/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"'+\n\t\t config.http.locations.web_storage+\n\t         match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /`(.)`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { regex: /`([\\w\\[\\{\\(][^`]*[\\w\\]\\}\\)])`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { delim: \"\\\\*\", a: \"\\\\*\\\\b\", z: \"\\\\b\\\\*\", tag: \"b\" },\n      { delim: \"__\",  a: \"\\\\b__\",  z: \"__\\\\b\",  tag: \"b\" },\n      { delim: \"_\",   a: \"\\\\b_\",   z: \"_\\\\b\",   tag: \"i\" }\n    ];\n\n    function wrap(tag) {\n      return function(match, content) {\n\treturn \"<\"+tag+\">\"+content+\"</\"+tag+\">\";\n      };\n    }\n\n    for(var i=0; i<replace.length; i++) {\n      var r = replace[i];\n\n      if ( r.regex ) {\n\ttext = text.replace(r.regex, r.func);\n      } else if ( r.delim ) {\n\ttext = text.replace(RegExp(r.a+\"([^\"+r.delim+\"]+)\"+r.z,\"g\"),\n\t\t\t    wrap(r.tag));\n      }\n    }\n\n    return text;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chatroom\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatroom = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * <Description of the File>\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatbell',[ \"jquery\", \"form\", \"modal\", \"config\", \"preferences\",\n\t \"laconic\", \"chatroom\"\n       ],\n       function($, form, modal, config, preferences) {\n\n(function($) {\n  var pluginName = 'chatbell';\n\n  /** @lends $.fn.chatbell */\n  var methods = {\n    /**\n     * @param {Object} [options]\n     * @param {String} [options.docid] Associate with a document id.\n     * If default, try the `data-document` attribute.\n     * @param {String} [options.empty_title] Title attribute if there\n     * are no new messages\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, options); /* private data */\n\n\tdata.docid = options.docid||elem.data('document');\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chat-bell\");\n\telem.attr('title', \"Messages available\");\n\telem.append(form.widgets.glyphIcon(\"bell\"),\n\t\t    $.el.span({class:\"chat-bell-count\"}, \"-\"));\n\telem.chatbell('update');\n      });\n    },\n\n    /**\n     * Set the chat counter and optionally associate the chat bell\n     * with a document (`docid`)\n     * @param {Object} chats\n     * @param {Number} chats.count number of chat messages to report\n     * @param {String} [chats.docid] associate bell with document\n     */\n    chats: function(chats) {\n      var data = this.data(pluginName);\n      var span = this.find(\".chat-bell-count\");\n      var elem = this;\n\n      function empty() {\n\tspan.text(\"-\");\n\telem.removeClass('chat-available chat-alert');\n\telem.attr('title', data.empty_title||\"No messages available\");\n      }\n\n      if ( chats == undefined ) {\n\tdelete data.docid;\n\tdelete data.count;\n\tdelete data.total;\n\n\tempty();\n      } else {\n\tvar count = chats.count == undefined ? chats.total : chats.count;\n\n\tif ( chats.docid ) data.docid = chats.docid;\n\tif ( chats.count ) data.count = chats.count;\n\tif ( chats.total ) data.total = chats.total;\n\n\tif ( chats.total > 0 ) {\n\t  this.addClass('chat-available');\n\t  if ( count > 0 ) {\n\t    span.text(count);\n\t    this.addClass('chat-alert');\n\t    this.attr('title', count + \" new messages\");\n\t  } else {\n\t    span.text(chats.total);\n\t    this.removeClass('chat-alert');\n\t    this.attr('title', chats.total + \" old messages\");\n\t  }\n\t} else {\n\t  empty();\n\t}\n      }\n\n      return this;\n    },\n\n    'chats++': function(docid) {\n      var data = this.data(pluginName);\n\n      if ( data.total != undefined ) data.total++; else data.total = 1;\n      if ( data.count != undefined ) data.count++;\n      if (      docid != undefined ) data.docid = docid;\n\n      if ( data.total ) {\n\tthis.chatbell('chats', {\n\t  total: data.total,\n\t  count: data.count\n\t});\n      }\n\n      return this;\n    },\n\n    /**\n     * Update the chat bell.\n     * @param {Object} [chats]\n     * @param {Number} [chats.total]\n     * @param {Number} [chats.count]\n     * @param {Number} [chats.docid]\n     */\n    update: function(chats) {\n      var data = this.data(pluginName);\n\n      chats = chats||{};\n\n      if ( chats.total != undefined &&\n\t   chats.count != undefined ) {\n\tthis.chatbell('chats', chats);\n      } else {\n\tvar docid = chats.docid||data.docid;\n\tvar after = preferences.getDocVal(docid, 'chatBar', 0);\n\n\t\t\t/* fetch if we want unread or we don't know total */\n\tif ( docid && (after || chats.total == undefined) ) {\n\t  var elem = $(this);\n\n\t  $.get(config.http.locations.chat_status,\n\t\t{ docid: docid,\n\t\t  after: after\n\t\t},\n\t\tfunction(chats) {\n\t\t  elem.chatbell('chats', chats);\n\t\t});\n\t} else if ( chats.total != undefined ) {\n\t  this.chatbell('chats', chats);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Sent by the chatroom if the user saw the last message.\n     */\n    read_until: function(docid, time) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.docid == docid && data.total ) {\n\t  elem.chatbell('chats', {total: data.total, count:0});\n\t}\n      });\n    },\n\n    /**\n     * Handle an incomming chat message.  If the message is not from\n     * myself, display as a short notification.\n     */\n    'chat-message': function(msg) {\n      if ( msg.is_self == undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      this.chatbell('chats++');\n\n      if ( !msg.is_self ) {\n\tvar elem = this.chatroom('render', msg);\n\tvar options = {\n\t  dom: elem\n\t};\n\n\tmodal.notify(this, options);\n      }\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class chatbell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatbell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * This file deals with tabbed panes.  It implements dynamic tabs on top\n * if Bootstrap.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('tabbed',[ \"jquery\", \"form\", \"config\", \"preferences\", \"modal\",\n\t \"laconic\", \"search\", \"chatbell\" ],\n       function($, form, config, preferences, modal) {\nvar tabbed = {\n  tabTypes: {},\n  type: function(from) {\n    var ext = from.split('.').pop();\n\n    for(var k in tabbed.tabTypes) {\n      if ( tabbed.tabTypes.hasOwnProperty(k) &&\n\t   tabbed.tabTypes[k].dataType == ext )\n\treturn tabbed.tabTypes[k];\n    }\n  }\n};\n\n(function($) {\n  var pluginName = 'tabbed';\n  var tabid = 0;\n\n  /** @lends $.fn.tabbed */\n  var methods = {\n    /**\n     * Turn the current element into a Bootstrap tabbed pane. All\n     * children of the current element are changed into tabs.  The\n     * child can control the mapping using:\n     *\n     *   - `data-label = \"Label\"`\n     *   - `data-close = \"disabled\"`\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\tdata.newTab   = options.newTab;\n\tdata.tabTypes = options.tabTypes || tabbed.tabTypes;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"tabbed\");\n\telem.tabbed('makeTabbed');\n\telem.on(\"trace-location\", function(ev, prompt) {\n\t  elem.tabbed('showTracePort', prompt);\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  var tab = $(ev.target).closest(\".tab-pane\");\n\t  var a   = elem.tabbed('navTab', tab.attr('id'));\n\n\t  if ( a )\n\t  { if ( clean )\n\t      a.removeClass(\"data-dirty\");\n\t    else\n\t      a.addClass(\"data-dirty\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * Turn the pane into a tabbed pane\n     */\n    makeTabbed: function() {\n      var children = this.children();\n      var ul = $.el.ul({ class:\"nav nav-tabs\",\n\t\t\t role:\"tablist\"\n\t\t       });\n      var contents = $.el.div({class:\"tab-content\"});\n\n      this.prepend(contents);\n      this.prepend(ul);\n\n      $(ul).on(\"click\", \"span.xclose\", function(ev) {\n\tvar id = $(ev.target).parent().attr(\"data-id\");\n\t$(ev.target).parents(\".tabbed\").first().tabbed('removeTab', id);\n\tev.preventDefault();\n      });\n      $(ul).on(\"click\", \"a\", function(ev) {\n\t$(ev.target).closest(\"a\").tab('show');\n\tev.preventDefault();\n      });\n\n\t\t\t/* Turn children into tabs */\n      for(var i=0; i<children.length; i++) {\n\tvar child = $(children[i]);\n\tvar id = genId();\n\tvar label = child.attr(\"data-label\") || \"Unknown\";\n\tvar close = child.attr(\"data-close\") != \"disabled\";\n\tvar active = (i == children.length-1);\t/* activate last */\n\n\tvar li = this.tabbed('tabLabel', id, label, close);\n\tif ( active )\n\t  $(li).addClass(\"active\");\n\t$(ul).append(li);\n\t$(contents).append(wrapInTab($(children[i]), id, active));\n      }\n\n\t\t\t/* Create and handle \"+\" button */\n      var create = $.el.a({ class: \"tab-new compact\",\n\t\t\t    title: \"Open a new tab\"\n\t\t\t  },\n\t\t\t  glyphicon(\"plus\"));\n      $(ul).append($.el.li({ role:\"presentation\" }, create));\n      $(create).on(\"click\", function(ev) {\n\tvar tabbed = $(ev.target).parents(\".tabbed\").first();\n\n\ttabbed.tabbed('newTab');\n\tev.preventDefault();\n\treturn false;\n      });\n\n\t\t\t/* Handle tab-switching */\n      $(ul).on(\"shown.bs.tab\", \"a\", function(ev) {\n\tvar newContentID  = $(ev.target).data(\"id\");\n\t$(\"#\"+newContentID+\" .swish-event-receiver\").trigger(\"activate-tab\");\n      });\n\n      if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n    },\n\n    /**\n     * Add an empty new tab from the \"+\" button.  This calls\n     * options.newTab() to return a DOM element for the new\n     * tab.\n     * @param {HTMLElement} [content] Content for the new tab\n     * If omitted, it calls `options.newTab` or uses the method\n     * `tabSelect`.\n     * @return {jQuery} object representing the created tab\n     */\n    newTab: function(dom) {\n      var data = this.data(pluginName);\n\n      if ( dom == undefined ) {\n\tif ( data.newTab ) {\n\t  dom = data.newTab();\n\t} else {\n\t  dom = this.tabbed('tabSelect');\n\t  $(dom).append(this.tabbed('profileForm'),\n\t\t\t$.el.hr(),\n\t\t\tthis.tabbed('searchForm'));\n\t}\n      }\n\n      return this.tabbed('addTab', dom, {active:true,close:true});\n    },\n\n    /**\n     * Add a new tab from the provided source.  If there is a _select_\n     * (new) tab, open the data in this tab.\n     */\n    tabFromSource: function(src) {\n      var elem = this;\n      var select = this.find(\"div.tabbed-select\");\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      function inNewTab() {\n\tvar tab = elem.tabbed('newTab', $(\"<span></span>\"));\n\tif ( !elem.tabbed('setSource', tab, src) ) {\n\t  elem.tabbed('removeTab', tab.attr(\"id\"));\n\t}\n      }\n\n      if ( select.length > 0 ) {\n\tvar tab = select.first().closest(\".tab-pane\");\n\tthis.tabbed('show', tab.attr(\"id\"));\n\tthis.tabbed('setSource', tab, src);\n      } else if ( src.newTab ) {\n\tinNewTab();\n      } else\n      { var tab;\n\n\tthis.find(\".storage\").each(function(i, st) {\n\t  if ( $(st).storage('setSource', src) ) {\n\t    tab = $(st).closest(\".tab-pane\");\n\t    return false;\n\t  }\n        });\n\n\tif ( tab )\n\t  this.tabbed('show', tab.attr(\"id\"));\n\telse\n\t  inNewTab();\n      }\n\n      return this;\n    },\n\n    /**\n     * Transform the new tab into a tab that can hold the requested\n     * source.\n     * @return {Boolean} `true` if a suitable type was found\n     */\n    setSource: function(tab, src) {\n      if ( typeof(src) == \"object\" &&\n\t   ((src.meta && src.meta.name) || src.url) )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar tabType = tabbed.type(name);\n\tvar content = $.el.div();\n\n\ttab.html(\"\");\n\ttab.tabbed('title', tabType.label, tabType.dataType);\n\ttab.append(content);\n\ttabType.create(content);\n\t$(content).storage('setSource', src);\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Show a tracer port. This implies finding the proper editor,\n     * making sure it is visible and ask it to show to port or, if\n     * no editor is displaying this source, create a new one.\n     * @param {Object} prompt\n     * @param {Object} [prompt.source]\n     * @param {Object} [prompt.source.file] is the file associated\n     * with the debug event.  Currently, we accept\n     *\n     *   - `pengine://<pengine>/src` refers to the editor that provided\n     *     the source for pengine <pengine>\n     *\t - `swish://<file>.pl` refers to an included file from the\n     *\t   store.\n     */\n    showTracePort: function(prompt) {\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file = prompt.source.file;\n\tvar pengineID, store;\n\tvar editors;\n\n\tfunction isPengineSrc() {\n\t  var id;\n\n\t  if ( file.startsWith(\"pengine://\") )\n\t    return file.split(\"/\")[2];\n\t}\n\n\tfunction isStoreSrc() {\n\t  var prefix = \"swish://\";\n\t  if ( file.startsWith(prefix) )\n\t    return file.slice(prefix.length);\n\t}\n\n\tif ( (pengineID=isPengineSrc()) ) {\n\t  editors = this.find(\".prolog-editor\")\n\t\t\t.filter(function(i, e) {\n\t\t\t  return $(e).prologEditor('pengine', {has:pengineID});\n\t\t\t});\n\t} else if ( (store=isStoreSrc()) ) {\n\t  editors = this.find(\".storage\")\n\t\t\t.storage('match', {file:store});\n\n\t  if ( !editors ) {\n\t    this.closest(\".swish\")\n\t        .swish('playFile',\n\t\t       { file: store,\n\t\t\t newTab: true,\n\t\t\t noHistory: true,\n\t\t\t prompt: prompt\n\t\t       });\n\t    return this;\n\t  }\n\t}\n\n\tif ( editors )\n\t  editors.prologEditor('showTracePort', prompt);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Add a new tab using content\n     * @param {Object} content is the DOM node to use as content for the\n     * tab.\n     * @param {Object} options\n     * @param {Boolean} [options.active] if `true`, make the new tab\n     * active\n     * @param {Boolean} [options.close] if `true`, allow closing the new\n     * tab.\n     * @return {jQuery} the created tab element\n     */\n    addTab: function(content, options) {\n      var ul  = this.tabbed('navTabs');\n      var id  = genId();\n      var tab =\twrapInTab(content, id, options.close);\n\n      this.tabbed('navContent').append(tab);\n\n      var li  = this.tabbed('tabLabel', id, \"New tab\", close, \"select\");\n\n      var create = ul.find(\"a.tab-new\");\n      if ( create.length == 1 )\n\t$(li).insertBefore(create.first().parent());\n      else\n\tul.append(li);\n\n      if ( options.active )\n\t$(li).find(\"a\").first().tab('show');\n\n      return tab;\n    },\n\n    /**\n     * Remove tab with given Id. If the tab is the active tab, make the\n     * previous tab active, or if there is no previous, the next. If the\n     * tabbed environment becomes empty, add a virgin tab.\n     *\n     * @param {String} id is the id of the tab to destroy\n     */\n    removeTab: function(id) {\n      var li  = this.tabbed('navTabs').find(\"a[data-id='\"+id+\"']\").parent();\n      var tab = $(\"#\"+id);\n      var new_active;\n\n      if ( tab.find(\".storage\").storage('unload', \"closetab\") == false )\n\treturn;\n\n      if ( tab.is(\":visible\") )\n\tnew_active = li.prev() || li.next();\n      li.remove();\n\t\t\t\t\t/* HACK: close embedded runners */\n      tab.find(\".prolog-runner\").prologRunner('close');\n      tab.find(\".storage\").storage('close');\n      tab.remove();\n      if ( new_active && new_active.length > 0 ) {\n\tnew_active.find(\"a\").first().tab('show');\n      } else if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Show indicated tab.\n     * @param {String} id is the id of the tab to show.\n     */\n    show: function(id) {\n      var a = this.tabbed('navTab', id);\n      if ( a ) {\n\ta.tab('show');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Create a label (`li`) for a new tab.\n     * @param {String} id is the identifier of the new tab\n     * @param {String} label is the textual label of the new tab\n     * @param {Boolean} close determines whether or nor a close button\n     * is added to the tab.\n     * @param {String} [type=\"pl\"] indicates the type of the tab. This\n     * is used for associating an icon with the tab.\n     */\n    tabLabel: function(id, label, close, type) {\n      var close_button;\n      var chat;\n\n      if ( close )\n      { close_button = glyphicon(\"remove\", \"xclose\");\n\t$(close_button).attr(\"title\", \"Close tab\");\n      }\n      type = type||\"pl\";\n\n      var a1 = $.el.a({class:\"compact\", href:\"#\"+id, \"data-id\":id},\n\t\t      $.el.span({class:\"tab-icon type-icon \"+type}),\n\t\t      $.el.span({class:\"tab-dirty\",\n\t\t                 title:\"Tab is modified. \"+\n\t\t\t\t       \"See File/Save and Edit/View changes\"}),\n\t       chat = $.el.a({class:'tab-chat'}),\n\t\t      $.el.span({class:\"tab-title\"}, label),\n\t\t      close_button);\n      var li = $.el.li({role:\"presentation\"}, a1);\n\n      $(chat).chatbell()\n             .on(\"click\", function(ev) {\n\tvar id = $(ev.target).closest(\"a.compact\").data(\"id\");\n\t$(\"#\"+id).find(\".storage\").storage('chat');\n\treturn false;\n      });\n\n      return li;\n    },\n\n    /**\n     * Calling obj.tabbed('anchor') finds the <a> element\n     * represeting the tab label from the node obj that appears\n     * somewhere on the tab\n     */\n    anchor: function() {\n      var tab    = this.closest(\".tab-pane\");\n\n      if ( tab.length == 0 ) {\n\treturn undefined;\t\t/* e.g., fullscreen mode */\n      }\n\n      var tabbed = tab.closest(\".tabbed\");\n      var id     = tab.attr(\"id\");\n      var ul\t = tabbed.tabbed('navTabs');\n      var a      = ul.find(\"a[data-id=\"+id+\"]\");\n\n      return a;\n    },\n\n\n    /**\n     * This method is typically _not_ called on the tab, but on some\n     * inner element of the tab.  It changes the title of the tab.\n     * @param {String} title is the new title for the tab.\n     * @param {String} [type=\"pl\"] is the new type for the tab.\n     */\n    title: function(title, type) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".tab-title\").text(title);\n\tif ( type ) {\n\t  var icon = a.find(\".tab-icon\");\n\t  icon.removeClass();\n\t  icon.addClass(\"tab-icon type-icon \"+type);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the chat message feedback for this tab\n     * @param {Object} [chats]\n     * @param {Number} [chats.count] number of available chat messages\n     * on the document.\n     */\n    chats: function(chats) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('update', chats);\n      }\n\n      return this;\n    },\n\n    /**\n     * Increment the chat count and possibly associate the bell\n     * with the document identifier.\n     * @param {String} [docid] is the document identifier to associate\n     * with.\n     */\n    'chats++': function(docid) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('chats++', docid);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Default empty tab content that allows the user to transform\n     * the tab into the desired object.\n     * @return {Object} containing content for the new tab\n     */\n    tabSelect: function() {\n      var data = this.data(pluginName);\n      var dom = $.el.div({class:\"tabbed-select\"},\n\t\t\t $.el.div({class: \"tabbed-create\"},\n\t\t\t\t  $.el.label({class: \"tabbed-left\"},\n\t\t\t\t\t     \"Create a \"),\n\t\t\t\t  g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t\t  $.el.label({class: \"tabbed-right\"}, \"here\")));\n      var types = [];\n\n      for(var k in data.tabTypes) {\n\tif ( data.tabTypes.hasOwnProperty(k) &&\n\t     data.tabTypes[k].order )\n\t  types.push(k);\n      }\n      types.sort(function(a,b) {\n\treturn data.tabTypes[a].order - data.tabTypes[b].order;\n      });\n\n      for(var i = 0; i<types.length; i++) {\n\tvar type = data.tabTypes[types[i]];\n\n\t$(g).append($.el.button({ type:\"button\",\n\t\t\t\t  class:\"btn btn-primary\",\n\t\t\t\t  \"data-type\":type.typeName,\n\t\t\t\t  \"data-ext\":type.dataType\n\t\t\t\t},\n\t\t\t\ttype.label));\n      }\n\n      $(g).on(\"click\", \".btn\", function(ev) {\n\tvar type    = $(ev.target).data('type');\n\tvar tab     = $(ev.target).closest(\".tab-pane\");\n\tvar content = $.el.div();\n\tvar options = $.extend({}, tabbed.tabTypes[type]);\n\tvar profile = tab.find(\"label.active > input[name=profile]\").val();\n\n\tif ( profile ) {\n\t  options.profile = profile;\n\t  options.value   = tab.tabbed('profileValue', profile,\n\t\t\t\t       tabbed.tabTypes[type].dataType);\n\t  if ( options.value != undefined )\n\t    preferences.setVal(\"default-profile\", profile);\n\t}\n\n\ttab.html(\"\");\n\ttab.tabbed('title', options.label, options.dataType);\n\ttab.append(content);\n\ttabbed.tabTypes[type].create(content, options);\n      });\n      $(g).addClass(\"swish-event-receiver\");\n      $(g).on(\"download save fileInfo print\", function(ev) {\n\tvar tab = $(ev.target).closest(\".tab-pane\");\n\tif ( tab.is(\":visible\") ) {\n\t  var typelabel = { \"download\" : \"you wish to download\",\n\t\t\t    \"save\"     : \"you wish to save\",\n\t\t\t    \"print\"    : \"you wish to print\",\n\t\t\t    \"fileInfo\" : \"for which you want details\"\n\t  };\n\n\t  modal.alert(\"Please activate the tab \"+typelabel[ev.type]);\n\t  ev.stopPropagation();\n\t}\n      });\n      $(g).on(\"profile-selected\", function(ev, profile) {\n\t$(ev.target).find(\"button\").each(function() {\n\t  $(this).prop('disabled',\n\t\t       profile.type.indexOf($(this).data('ext')) < 0);\n\t});\n      });\n\n      return dom;\n    },\n\n    searchForm: function() {\n      var sform = $.el.form({class: \"search-sources\"},\n\t$.el.label({class:\"control-label\"}, 'Open source file containing'),\n        $.el.div(\n\t  {class: \"input-group\"},\n\t  $.el.input({ type: \"text\",\n\t\t       class: \"form-control search\",\n\t\t       placeholder: \"Search sources\",\n\t\t       'data-search-in': \"sources store_content\",\n\t\t     }),\n\t  $.el.div({ class: \"input-group-btn\" },\n\t\t   $.el.button({class:\"btn btn-default\", type:\"submit\"},\n\t\t\t       $.el.i({class:\"glyphicon glyphicon-search\"})))),\n\t$.el.div({class: \"input-group\"},\n\t  form.fields.radio(\"smatch\",\n\t    [ { label:\"Start of line\", value:\"sol\"},\n\t      { label:\"Start of word\", value:\"sow\", active:true},\n\t      { label:\"Anywhere\", value:\"anywhere\" }\n\t    ])));\n      $(sform).find(\"input.search\").search();\n\n      return sform;\n    },\n\n    profileForm: function() {\n      if ( config.swish.profiles && config.swish.profiles.length > 0 ) {\n\tvar def;\n\n\tfor(var i=0; i<config.swish.profiles.length; i++) {\n\t  delete config.swish.profiles[i].active;\n\t}\n\n\tif ( (def=preferences.getVal(\"default-profile\")) ) {\n\t  for(var i=0; i<config.swish.profiles.length; i++) {\n\t    if ( config.swish.profiles[i].value == def )\n\t      config.swish.profiles[i].active = true\n\t  }\n\t} else {\n\t  config.swish.profiles[0].active = true;\n\t}\n\n\tvar pform =\n\t$.el.div(\n\t  {class:\"tabbed-profile\"},\n\t  $.el.label({class: \"tabbed-left\"}, \"based on\"),\n\t  $.el.div({class: \"input-group select-profile\"},\n\t\t   form.fields.radio(\"profile\", config.swish.profiles)),\n\t  $.el.label({class: \"tabbed-right\"}, \"profile\"));\n\n\t$(pform).on(\"click\", function(ev) {\n\t  var select = $(ev.target).find(\"input\").val();\n\t  var profile = profileObject(select);\n\t  $(ev.target).closest(\".tab-pane\")\n\t\t      .find(\".tabbed-create .btn-group\")\n\t\t      .trigger(\"profile-selected\", profile);\n\t});\n\n\treturn pform;\n      }\n    },\n\n    profileValue: function(name, ext) {\n      var url = config.http.locations.swish + \"profile/\" + name + \".\" + ext;\n      return $.ajax({ url: url,\n\t\t      type: \"GET\",\n\t\t      data: {format: \"raw\"},\n\t\t      async: false,\n\t\t      error: function(jqXHR) {\n\t\t\tmodal.ajaxError(jqXHR);\n\t\t      }\n      }).responseText;\n    },\n\n    /**\n     * Get the UL list that represents the nav tabs\n     */\n    navTabs: function() {\n      return this.find(\"ul.nav-tabs\").first();\n    },\n\n    navTab: function(id) {\n      var a = this.find(\"ul.nav-tabs\").first().find(\"a[data-id='\"+id+\"']\");\n      if ( a.length > 0 )\n\treturn a;\n    },\n\n    navContent: function() {\n      return this.find(\"div.tab-content\").first();\n    }\n  }; // methods\n\n  /**\n   * Wrap a content element in a Bootstrap tab content.\n   * @param {Object} dom is the object that must be wrapped\n   * @param {String} id is the identifier to give to the new content\n   * @param {Boolean} active sets the tab to active if `true`\n   * @return {jQuery} `div` object of class `tab-pane` and the\n   * passed `id`.\n   */\n  function wrapInTab(dom, id, active) {\n    $(dom).wrap('<div role=\"tabpanel\" class=\"tab-pane\" id=\"'+id+'\"></div>');\n    var wrapped = $(dom).parent();\n\n    if ( active )\n      wrapped.addClass(\"active\");\n\n    return wrapped;\n  }\n\n  function glyphicon(glyph, className) {\n    var span = $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n\n    if ( className )\n      $(span).addClass(className);\n\n    return span;\n  }\n\n  function genId()\n  { return \"tabbed-tab-\"+tabid++;\n  }\n\n  function profileObject(name) {\n    if ( config.swish.profiles ) {\n      for(var i=0; i<config.swish.profiles.length; i++) {\n\tif ( config.swish.profiles[i].value == name )\n\t  return config.swish.profiles[i];\n      }\n    }\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class tabbed\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tabbed = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  return tabbed;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for accessing\n * Prolog\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n/* Also depends on \"editor\", but requireJS cannot handle cyclic dependencies.\n   As downloadCSV() is only called after initialisation we dropped this\n   dependency.\n*/\n\ndefine('prolog',[ \"jquery\", \"config\", \"form\", \"preferences\",\n\t /* \"editor\" */\n       ],\n       function($, config, form, preferences) {\n  var prolog = {\n    /**\n     * Download query results as CSV.\n     * @param {Object} [options]\n     * @param {String} [options.projection] holds the Prolog projection\n     * variables, separated by commas, e.g., `\"X,Y\"`\n     * @param {String} [options.format=\"prolog\"] holds a string that\n     * defines the variation of the CSV format, e.g., `\"prolog\"` or\n     * `\"rdf\"`\n     * @param {String|Number} [options.limit] defines the max number of\n     * results.\n     * @param {Boolean} [options.distinct] requests only distinct\n     * results.\n     * @param {String} [options.disposition] provides the default for\n     * the download file.  If no extension is given, \".csv\" is added.\n     */\n    downloadCSV: function(query, source, options) {\n      options = options||{};\n      options.disposition = (options.disposition||\n\t\t\t     options.filename||\n\t\t\t     \"swish-results.csv\");\n\n      if ( options.projection ) {\n\tvar formel;\n\tvar format = options.format||\"prolog\";\n\n\tfunction attr(name,value) {\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n\t}\n\n\tif ( options.distinct )\n\t  query = \"distinct([\"+options.projection+\"],(\"+query+\"))\";\n\tif ( options.limit ) {\n\t  var limit = parseInt(options.limit.replace(/[ _]/g,\"\"));\n\n\t  if ( typeof(limit) == \"number\" ) {\n\t    query = \"limit(\"+limit+\",(\"+query+\"))\";\n\t  } else {\n\t    alert(\"Not an integer: \", options.limit);\n\t    return false;\n\t  }\n\t}\n\n\tformel = $.el.form({ method:\"POST\",\n                             action:config.http.locations.pengines+\"/create\",\n\t\t\t     target:\"_blank\"\n\t\t           },\n\t\t\t   attr(\"format\", \"csv\"),\n\t\t\t   attr(\"chunk\", \"10\"),\n\t\t\t   attr(\"solutions\", \"all\"),\n\t\t\t   attr(\"disposition\", options.disposition),\n\t\t\t   attr(\"application\", \"swish\"),\n\t\t\t   attr(\"ask\", query),\n\t\t\t   attr(\"src_text\", source),\n\t\t\t   attr(\"template\", format+\"(\"+options.projection+\")\"));\n\tconsole.log(formel);\n\t$(\"body\").append(formel);\n\tformel.submit();\n\t$(formel).remove();\n      } else {\n\tvar vars = $().prologEditor('variables', query);\n\tvar disposition = options.disposition;\n\tif ( disposition.indexOf(\".\") < 0 )\n\t  disposition += \".csv\";\n\n\tfunction infoBody() {\n\t  var formel = $.el.form(\n            {class:\"form-horizontal\"},\n\t    form.fields.projection(vars.join(\",\")),\n\t    form.fields.csvFormat(config.swish.csv_formats,\n\t\t\t\t  preferences.getVal(\"csvFormat\")),\n\t    form.fields.limit(\"10 000\", false),\n\t    form.fields.filename(disposition, 2),\n\t    form.fields.buttons(\n\t      { label: \"Download CSV\",\n\t\taction: function(ev, params) {\n\t\t  ev.preventDefault();\n\t\t  if ( config.swish.csv_formats.length > 1 )\n\t\t    preferences.setVal(\"csvFormat\", params.format);\n\t\t  prolog.downloadCSV(query, source, params);\n\n\t\t  return false;\n\t\t}\n\t      }));\n\t  this.append(formel);\n\t}\n\n\tform.showDialog({ title: \"Download query results as CSV\",\n\t\t\t  body:  infoBody\n\t\t        });\n      }\n\n      return this;\n      },\n\n    /**\n     * Remove the full-stop from a query string\n     */\n    trimFullStop: function(s) {\n      return s.replace(/\\.\\s*$/m, \"\");\n    },\n\n    /**\n     * Default options for $.swish()\n     */\n    options: {\n      application: \"swish\",\n      chunk: 5\n    }\n  }\n\n\t\t /*******************************\n\t\t *\t     PENGINES\t\t*\n\t\t *******************************/\n\n  /**\n   * $.swish(options) creates a new Pengine with given default\n   * options.  The default options are determined by `prolog.options`.\n   * This function expects pengines.js to be already loaded.  The\n   * bootstrapping of that is achieved in `swish.js`.\n   *\n   * @return {Pengine} the created pengine object\n   */\n  $.swish = function(options) {\n    for(var opt in prolog.options) {\n      if ( prolog.options.hasOwnProperty(opt) &&\n\t   !options.hasOwnProperty(opt) ) {\n\toptions[opt] = prolog.options[opt];\n      }\n    }\n\n    return new Pengine(options);\n  };\n\n  return prolog;\n});\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Render a single Prolog answer.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('answer',[ \"jquery\", \"laconic\" ],\n       function() {\n\n\t\t /*******************************\n\t\t *\tRENDER AN ANSWER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologAnswer';\n\n  /** @lends $.fn.prologAnswer */\n  var methods = {\n    /**\n     * Represent the binding of one or more variables to exactly the\n     * same (==) Prolog term.\n     *\n     * @typedef {Object} Binding\n     * @property {Array.String} variables represents the names of the\n     * variables.  This array is at least one long.\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent the binding of a single variable used to represent\n     * sharing, an in particular cyclic terms\n     *\n     * @typedef {Object} Subsitution\n     * @property {String} var name of the variable\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent an answer as represented by the pengines `json-html`\n     * format.\n     * @typedef {Object} Answer\n     * @property {Array.Binding} variables represents the variable\n     * bindings.\n     * @property {Array.Subsitution} [substitutions] represents substitutions\n     * needed to break cyclic terms.\n     * @property {Array.String} [residuals] represents residual goals as HTML\n     * strings.\n     */\n\n    /**\n     * Render a single answer as returned by pengines `json-html` format\n     * as an HTML string.\n     *\n     * to HTML escaping issues\n     * @param {Answer} answer represents an answer to a Prolog query\n     */\n  _init: function(answer) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( answerHasOutput(answer) ) {\n\t  if ( elem.is(\"table\") ) {\n\t    var row = $.el.tr();\n\t    elem.append(row);\n\t    row.innerHTML = renderTabledAnswer(answer, elem);\n\t    evalScripts($(row));\n\t    $(row).find(\".render-multi\").renderMulti();\n\t  } else {\n\t    elem[0].innerHTML = renderAnswer(answer);\n\t    evalScripts(elem);\n\t    elem.find(\".render-multi\").renderMulti();\n\t  }\n\t} else\n\t  elem.append($.el.span({class: \"prolog-true\"}, \"true\"));\n      });\n    }\n  };\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function renderSubstitutions(substs, html) {\n    html.push(', <span class=\"pl-comment\">% where</span><br/>');\n    for (var s = 0; s < substs.length; s++) {\n      html.push('<span class=\"where-binding\">',\n\t\t\"<span class='pl-var'>\", substs[s].var+\"</span> = \",\n\t\tsubsts[s].value, '</span>');\n      if (s < substs.length - 1)\n\thtml.push(\",<br/>\");\n    }\n  }\n\n  function renderAnswer(answer) {\n    var html = [];\n    var bindings = answer.variables;\n    for (var i = 0; i < bindings.length; i++) {\n      var vars = bindings[i].variables;\n      for (var v = 0; v < vars.length - 1; v++) {\n\thtml.push(\"<span class='pl-ovar'>\", vars[v], \"</span> = \",\n\t\t  \"<span class='pl-var'>\", vars[v + 1], \"</span>, \");\n      }\n      html.push(\"<span class='pl-ovar'>\", vars[vars.length - 1],\n\t\t\"</span> = \", bindings[i].value);\n      if (bindings[i].substitutions) {\n\trenderSubstitutions(bindings[i].substitutions, html);\n      }\n      if (i < bindings.length - 1 || answer.residuals)\n\thtml.push(\",<br/>\");\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n    }\n    return html.join(\"\");\n  }\n\n  /**\n   * Render answer as a new row to the answer table.\n   * @param {Answer} answer represents an answer to a Prolog query\n   * @param {Table} table is the jQuery table to which the answer must\n   * be added.\n   */\n  function renderTabledAnswer(answer, table) {\n    var html = [];\n\n    function findBinding(name) {\n      var bindings = answer.variables;\n      for (var i = 0; i < bindings.length; i++) {\n\tvar vars = bindings[i].variables;\n\tfor (var v = 0; v < vars.length; v++) {\n\t  if ( vars[v] == name )\n\t    return bindings[i];\n\t}\n      }\n      return null;\n    }\n\n    for(var i = 0; i<answer.projection.length; i++) {\n      var vname  = answer.projection[i];\n      var binding = findBinding(vname);\n\n      html.push(\"<td>\");\n      if ( binding ) {\n\thtml.push(binding.value);\n\tif ( binding.substitutions )\n\t  renderSubstitutions(binding.substitutions, html);\n      } else {\n\thtml.push(\"<span class='pl-var'>\", vname, \"</span>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    function ensureResidualColumn() {\n      if ( table.find(\"tr.projection th.residuals\").length == 0 ) {\n\t$(\"<th class='residuals'>Residual goals</th>\").insertBefore(\n\t   table.find(\"tr.projection th.answer-nth\"));\n\t$(\"<td></td>\").insertBefore(\n\t   table.find(\"tr td.answer-nth\"));\n      }\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      ensureResidualColumn();\n      html.push(\"<td>\");\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    if ( answer.nth )\n      html.push(\"<td class='answer-nth'>\", answer.nth, \"</td>\");\n\n    return html.join(\"\");\n  }\n\n  /**\n   * Execute scripts that are embedded in the jQuery object elem.\n   * While executing a script, the property `$.ajaxScript` points\n   * to the executing script to enable the script to find elements\n   * in the ajax DOM extension in which the script is embedded.\n   * @param {jQuery} elem is the set in which scripts are searched\n   * and executed.\n   */\n  function evalScripts(elem) {\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" ) {\n\t$.ajaxScript = $(this);\n\teval(this.textContent);\n      }\n    });\n    if ( $.ajaxScript )\n      delete $.ajaxScript;\n  }\n\n\n  /**\n   * Render a single Prolog answer. This class is the entry point for\n   * more flexible answer rendering.\n   *\n   * @class prologAnswer\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} answer Either a method name or the jQuery\n   * plugin initialization object, which is the answer to a Prolog query\n   * in pengines \"json-html\" format\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologAnswer = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t   RENDER TERMS\t\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'renderMulti';\n  var timeout = 0;\n  var hovering = false;\n\n  /** @lends $.fn.renderMulti */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {current: 0};\t\t/* private data */\n\tvar display = [];\n\tvar selector = $.el.div({class: \"render-multi-active\"});\n\n\tvar i = 0;\n\telem.children().each(function() {\n\t  var how = $(this).css(\"display\");\n\n\t  display.push(how);\n\t  if ( i++ == 0 ) {\n\t    elem.css(\"display\", how);\n\t    $(this).attr('draggable', false);\n\t  } else {\n\t    $(this).hide();\n\t  }\n\t});\n\tdata.display = display;\n\telem.append(selector);\n\n\t$(selector).hover(function(ev) { elem.renderMulti('showSelect', ev); },\n\t\t\t  function(ev) { elem.renderMulti('hideSelect', ev); });\n\telem.attr('draggable', true)\n            .bind('dragstart', dragStart);\n\n\telem.data(pluginName, data);\t/* store with element */\n      });\n    },\n\n    /**\n     * @returns {String} holding HTML with a radio button to select a\n     * rendering\n     */\n    selectMenu: function() {\n      var data = this.data(pluginName);\n      var select = [\"<label>View as</label><br>\"];\n      var children = this.children();\n\n      function downloadButton(i, name) {\n\tvar title, glyph;\n\n\tif ( name == \"Prolog term\" ) {\n\t  title = \"Copy\";\n\t  glyph = \"copy\";\n\t} else {\n\t  title = \"Download\";\n\t  glyph = \"download\";\n\t}\n\n\tbtn = '<a href=\"#\" class=\"btn btn-style btn-sm\" '+\n\t      'data-nr=\"'+i+'\" data-action=\"'+glyph+'\" title=\"'+title+'\">' +\n\t      '<span class=\"glyphicon glyphicon-'+glyph+'\"></span></a>';\n\n\treturn btn;\n      }\n\n      var i = 0;\n      for(var i=0; i<data.display.length; i++) {\n\tvar r = $(children[i]);\n\tvar name = r.attr(\"data-render\");\n\n\tif ( !name ) {\n\t  if ( i == 0 )\n\t    name = \"Default rendered\";\n\t  else\n\t    name = \"Alt rendered [\"+(i+1)+\"]\";\n\t}\n\n\tselect.push(\"<div class='render-item'>\",\n\t\t    downloadButton(i, name),\n\t\t    \"<input type='radio' name='render' value='\", i, \"'\");\n\tif ( i == data.current ) select.push(\" checked\");\n\tselect.push(\"> \", name, \"</div>\");\n      }\n\n      select.push(\"</form\");\n      return select.join(\"\");\n    },\n\n    showSelect: function(ev) {\n      var elem = this;\n      var menu = selectMenu();\n      var pos  = this.offset();\n      var target;\n\n      hovering = true;\n      if ( timeout ) {\n\tclearTimeout(timeout);\n\ttimeout = 0;\n      }\n\n      if ( (target=menu.data(\"target\")) )\n\ttarget.removeClass(\"render-selecting\");\n      menu.data(\"target\", elem);\n\n      menu.html(this.renderMulti('selectMenu'));\n      menu.css({ top:      pos.top + 5 + \"px\",\n                 left:     pos.left + 5 + \"px\"\n               }).show(400);\n\n      this.addClass(\"render-selecting\");\n    },\n\n    hideSelect: function(ev) {\n      resetHover();\n    },\n\n    /**\n     * Select the i-th (0-based) rendering alternative\n     * @param {Integer} i denotes the alternative\n     */\n    select: function(i) {\n      var data  = this.data(pluginName);\n\n      if ( data.current != i ) {\n\tvar child = this.children();\n\tvar how   = data.display[i];\n\n\t$(child[data.current]).hide(400);\n\t$(child[i]).show(400, function() { $(this).css(\"display\", how); });\n\tthis.css(\"display\", how);\n\tif ( $(child[i]).is(\"span.render-as-prolog\") ) {\n\t  this.attr(\"draggable\", false);\n\t} else {\n\t  this.attr(\"draggable\", true);\n\t}\n\n\tdata.current = i;\n      }\n\n      closeSelectMenu();\n    },\n\n    copy: function(i) {\n      var child = this.children();\n      var data  = this.data(pluginName);\n      var old   = data.current;\n\n      function selectElementText(el) {\n\tvar range = document.createRange();\n\trange.selectNodeContents(el);\n\tvar selection = window.getSelection();\n\tselection.removeAllRanges();\n\tselection.addRange(range);\n      }\n\n      this.renderMulti('select', i);\n      selectElementText(child[i]);\n      try {\n\tdocument.execCommand(\"copy\");\n      } catch(e) {\n\talert(\"Sorry, cannot copy text with this browser\");\n      }\n      this.renderMulti('select', old);\n\n      return this;\n    },\n\n    /**\n     * Download a rendered object.  The renderer can interact with this\n     * code by setting a class `export-dom` and an event-handler for the\n     * event `export-dom`. This handler is passed a plain object, for\n     * which is must set the properties `element`, `extensions` and\n     * `contentType`\n     */\n    download: function(i) {\n      var child = this.children();\n      var node  = $(child[i]);\n      var ext   = \"html\";\n      var data;\n\n      function aSupportsDownload() {\n\treturn $(\"<a>\")[0].download != undefined;\n      }\n\n      if ( node.hasClass(\"export-dom\") ) {\n\tvar r = {};\n\tnode = node.trigger(\"export-dom\", r);\n\tif ( r.element ) {\n\t  data = r.element.outerHTML;\n\t  ext  = r.extension||\"html\";\n\t  type = r.contentType||\"text/html\";\n\t} else {\n\t  alert(\"Failed to export rendered result\");\n\t}\n      } else if ( node.find(\"svg\").length == 1 ) {\n\tvar svg = node.find(\"svg\");\n\tif ( !svg.attr(\"xmlns\") )\n\t  svg.attr(\"xmlns\", \"http://www.w3.org/2000/svg\");\n\tdata = svg[0].outerHTML\n\text  = \"svg\";\n\ttype = \"image/svg+xml\";\n      } else {\n\tdata = node.html();\n\ttype = \"text/html\";\n      }\n\n      if ( !aSupportsDownload() )\n\ttype = \"application/octet-stream\";\n\n      var href\t= \"data:\"+type+\";charset=UTF-8,\"\n\t\t+ encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:\"swish-rendered.\"+ext\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @return {String} native Prolog text for a multi-rendered block\n     */\n    prologText: function() {\n      return this.find(\"span.render-as-prolog\").text();\n    }\n  }; // methods\n\n\n  function selectMenu() {\n    var menu = $(\"#render-select\");\n\n    if ( !menu[0] ) {\n      menu = $($.el.form({ id:\"render-select\",\n                           style:\"display:none\"\n\t\t         }));\n\n      menu.on(\"click\", \"a\", function(ev) {\n\tvar a = $(ev.target).closest(\"a\");\n\tvar i = a.data(\"nr\");\n\n\tmenu.data(\"target\").renderMulti(a.data(\"action\"), i);\n\treturn false;\n      });\n      menu.on(\"click\", function() {\n\tvar r = $(\"input[name=render]:checked\", $(this)).val();\n\tmenu.data(\"target\").renderMulti('select', parseInt(r));\n      });\n      menu.hover(function() { hovering = true; startMenuTimeout(); },\n\t\t function() { resetHover(); });\n\n      $(\"body\").append(menu);\n    }\n\n    return menu;\n  }\n\n  function closeSelectMenu() {\n    if ( !hovering ) {\n      var menu = selectMenu();\n      var target = menu.data(\"target\");\n\n      if ( target ) {\n\ttarget.removeClass(\"render-selecting\");\n\tmenu.data(\"target\", null);\n      }\n      menu.hide(400);\n    }\n  }\n\n  function startMenuTimeout() {\n    timeout = setTimeout(function() {\n      closeSelectMenu();\n    }, 400);\n  }\n\n  function resetHover() {\n    hovering = false;\n    startMenuTimeout();\n  }\n\n  function dragStart(ev) {\n    var dt = ev.originalEvent.dataTransfer;\n    dt.setData(\"Text\", $(ev.target).renderMulti('prologText'));\n    return true;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class renderMulti\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.renderMulti = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\n\n\n});\n\n","/**\n*\n* jquery.sparkline.js\n*\n* v2.1.2\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n    if(typeof define === 'function' && define.amd) {\n        define('sparkline',['jquery'], factory);\n    } else if (jQuery && !jQuery.fn.sparkline) {\n        factory(jQuery);\n    }\n}\n(function($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            'z-index: 10000;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n        } else {\n            if (values.length % 2 ) { // odd\n                vl = (values.length * q + q) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n            } else { //even\n                vl = (values.length * q + 2) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];\n\n            }\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (ignoreNull && arr[i] === null) continue;\n            if (arr[i] !== val) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n\n        if ($.fn.sparkline.canvas === false) {\n            // We've already determined that neither Canvas nor VML are available\n            return false;\n\n        } else if ($.fn.sparkline.canvas === undefined) {\n            // No function defined yet -- need to see if we support Canvas or VML\n            var el = document.createElement('canvas');\n            if (!!(el.getContext && el.getContext('2d'))) {\n                // Canvas is available\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_canvas(width, height, target, interact);\n                };\n            } else if (document.namespaces && !document.namespaces.v) {\n                // VML is available\n                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_vml(width, height, target);\n                };\n            } else {\n                // Neither Canvas nor VML are available\n                $.fn.sparkline.canvas = false;\n                return false;\n            }\n        }\n\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n\n        target = $.fn.sparkline.canvas(width, height, this, interact);\n\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');\n                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled ||\n                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                        }\n                        vertices.push(null);\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max, vals;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            this.values = values = normalizeValues(values);\n            // target or performance could be null\n            vals = values.slice();\n            vals[0] = vals[0] === null ? vals[2] : vals[0];\n            vals[1] = values[1] === null ? vals[2] : vals[1];\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            if (this.values[1] !== null) {\n                shape = this.renderPerformance().append();\n                this.shapes[shape.id] = 'p1';\n                this.valueShapes.p1 = shape.id;\n            }\n            if (this.values[0] !== null) {\n                shape = this.renderTarget().append();\n                this.shapes[shape.id] = 't0';\n                this.valueShapes.t0 = shape.id;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                if (values[i]) { // don't render zero values\n                    shape = this.renderSlice(i).append();\n                    this.valueShapes[i] = shape.id; // store just the shapeid\n                    this.shapes[shape.id] = i;\n                }\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] }\n            ];\n            if (this.loutlier !== undefined) {\n                result.push({ field: 'lo', value: this.loutlier});\n            }\n            if (this.routlier !== undefined) {\n                result.push({ field: 'ro', value: this.routlier});\n            }\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return '';  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            if (startx === endx && starty === endy) {\n                if ((endAngle - startAngle) < Math.PI) {\n                    // Prevent very small slices from being mistaken as a whole pie\n                    return '';\n                }\n                // essentially going to be the entire circle, so ignore startAngle\n                startx = endx = x + radius;\n                starty = endy = y;\n            }\n\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return '';\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n}))}(document, Math));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide download from the application\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('download',[ \"jquery\", \"laconic\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'downloader';\n\n  /** @lends $.fn.downloader */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {String} options.data Content to be sent.\n     * @param {String} [options.filename] (base) name of the downloaded\n     * file.\n     * @param {String} [options.type] MIME type (default\n     * `application/octet-stream`)\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({\n\t  name:\"swish-download\",\n\t  ext:\"dat\"\n\t}, options);\n\n\tvar type = data.content_type;\n\tvar name = data.filename || \"swish-download.dat\";\n\tvar chs  = data.charset  || \"charset=UTF-8\";\n\n\tfunction aSupportsDownload() {\n\t  return $(\"<a>\")[0].download != undefined;\n\t}\n\n\tif ( !aSupportsDownload() || !type )\n\t  type = \"application/octet-stream\";\n\n\tvar href      = \"data:\"+type+\";\"+chs+\",\";\n        href += (chs == \"base64\" ? data.data : encodeURIComponent(data.data));\n\n\telem.attr(\"download\", name);\n\telem.attr(\"href\", href);\n\telem.attr(\"title\", \"Download (use menu for save link as)\");\n\telem.text(name);\n\n\telem.addClass(\"btn btn-primary download\");\n\telem.append($.el.span({class:\"glyphicon glyphicon-download\"}));\n      });\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class downloader\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.downloader = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Run an manage Prolog queries and their output\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('runner',[ \"jquery\", \"config\", \"preferences\",\n\t \"cm/lib/codemirror\", \"form\", \"prolog\", \"links\", \"modal\",\n\t \"answer\", \"laconic\", \"sparkline\", \"download\", \"search\"\n       ],\n       function($, config, preferences,\n\t\tCodeMirror, form, prolog, links, modal) {\n\n\t\t /*******************************\n\t\t *\t  THE COLLECTION\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunners';\n\n  /** @lends $.fn.prologRunners */\n  var methods = {\n    /**\n     * Initialize the container for Prolog queries.\n     * @example $(\".prolog-runners\").prologRunners();\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction runnerMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"runners-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Collapse all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', true);\n\t        },\n\t\t\"Expand all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', false);\n\t\t},\n\t\t\"Stop all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('stop');\n\t\t},\n\t\t\"Clear\": function() { this.prologRunners('clear'); }\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\tdata.stretch = $($.el.div({class:\"stretch\"}));\n\tdata.inner   = $($.el.div({class:\"inner\"}));\n\n\telem.append(runnerMenu());\n\telem.append(data.stretch);\n\telem.append(data.inner);\n\n\telem.on(\"pane.resize\", function() {\n\t  elem.prologRunners('scrollToBottom', true);\n\t});\n\n\telem.data(pluginName, data);\n      });\n    },\n\n    /**\n     * Run a Prolog query.  The methods appends a `<div>` and runs the\n     * plugin `prologRunner` on the new div.\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {prologEditor} [query.editor] the source editor\n     * @param {Boolean} [query.iconifyLast=true] define whether or not\n     * to iconify the previous runner.\n     * @param {Boolean} [query.tabled=false] if `true`, make a table with\n     * the results.\n     */\n    run: function(query) {\n      var data = this.data('prologRunners');\n\n      if ( query.iconifyLast )\n\tthis.prologRunners('iconifyLast');\n\n      var runner = $.el.div({class: \"prolog-runner\"});\n\n      data.inner.append(runner);\n      $(runner).prologRunner(query);\n      this.prologRunners('scrollToBottom');\n\n      return this;\n    },\n\n    /**\n     * Destroy all runners and, if applicable, their associated\n     * pengines.\n     */\n    clear: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n    },\n\n    /**\n     * Iconify the last runner if it is not associated to an open\n     * query.\n     */\n    iconifyLast: function() {\n      var jrunner = $(this.inner).children().last();\n\n      if ( jrunner.length == 1 )\n      { var runner = jrunner.prologRunner();\n\n\tif ( !runner.alive() )\n\t  runner.toggleIconic(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Keep the content at the bottom of the window, such that the\n     * buttons remain in the same position.  The only way to achieve\n     * this is by putting something on top of the content as long as\n     * the content is lower than the window.\n     *\n     * @param {Boolean} [onlydown=false] only scroll down if we are\n     * not at the bottom.\n     */\n    // the \"- 4\" compensates for the prolog-runner top&bottom margin.\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tvar data   = elem.data('prologRunners');\n\tvar height = data.inner.height();\n\tvar room   = elem.height() - height - 4 - 2;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  data.stretch.height(room > 0 ? room : 0);\n\t  elem.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n  /**\n   * Manage a subwindow (`<div>`) that acts as a collection of runner\n   * items.  Each runner represents a Prolog query, either active or\n   * terminated.  The collection keeps the runners properly stacked and\n   * provides a menu to control the collection, such as _clear_,\n   * _iconify all_, etc.\n   *\n   * @class prologRunners\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n  $.fn.prologRunners = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t /*******************************\n\t\t *\tINDIVIDUAL RUNNER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunner';\n\n  // keyBindings rely on the jQuery normalized `which` field\n  var keyBindings = { 59:      'next',\t\t/* ; (FF) */\n\t\t      186:     'next',\t\t/* ; (Chromium) */\n\t\t      32:      'next',\t\t/* space */\n\t\t      190:     'stop',\t\t/* . */\n\t\t      13:      'stop',\t\t/* Enter */\n\t\t      65:      'stopOrAbort',\t/* a */\n\t\t      27:      'stopOrAbort',\t/* Esc */\n\t\t      46:      'close',\t\t/* Del */\n\t\t      112:     'help'\t\t/* F1 */\n                    };\n\n  /** @lends $.fn.prologRunner */\n  var methods = {\n    /**\n     * Initialize a runner for a Prolog query\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {Boolean} [query.tabled=false]  If `true`, represent the\n     * results as a table.\n     * @param {Boolean} [query.title=true] If `false`, suppress the\n     * title.\n     */\n    _init: function(query) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction titleBarButton(glyph, title, action) {\n\t  var btn = $.el.button({title:title, class:\"rtb-\"+action},\n\t\t\t\t$.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\t  $(btn).on(\"click\", function() { elem.prologRunner(action); });\n\t  return btn;\n\t}\n\n\tfunction stateButton() {\n\t  var icon = $.el.span({class:\"runner-state show-state idle\"});\n\n\t  return form.widgets.dropdownButton(icon);\n\t}\n\n\tfunction controllerDiv() {\n\t  function next()     { elem.prologRunner('next',    1); }\n\t  function next10()   { elem.prologRunner('next',   10); }\n\t  function next100()  { elem.prologRunner('next',  100); }\n\t  function next1000() { elem.prologRunner('next', 1000); }\n\t  function stop()     { data.prolog.stop(); }\n\t  function abort()    { data.prolog.abort(); }\n\n\t  function button(action, label) {\n\t    var btn = $.el.button(label);\n\t    $(btn).on(\"click\", action);\n\t    return btn;\n\t  }\n\n\t  function input() {\n\t    var inp = $.el.input({class:\"prolog-input\"});\n\t    var btn = $.el.button(\"Send\");\n\n\t    $(inp).keypress(function(ev) {\n\t\t\t      if ( ev.which == 13 &&\n\t\t\t\t   elem.prologRunner('respond', $(inp).val()) ) {\n\t\t\t\t$(inp).val(\"\");\n\t\t\t\tev.preventDefault();\n\t\t\t\treturn false;\t\t/* prevent bubbling */\n\t\t\t      } else if ( ev.key != \"Esc\" ) {\n\t\t\t\tev.stopPropagation();   /* prevent bubbling */\n\t\t\t      }\n\t\t\t    });\n\t    $(btn).on(\"click\", function() {\n\t\t\t\t elem.prologRunner('respond', $(inp).val());\n\t\t\t       });\n\n\t    return {input:inp, button:btn};\n\t  }\n\n\t  function statusChart() {\n\t    var spark = $.el.span({class:\"sparklines\"}, \"\");\n\n\t    return spark;\n\t  }\n\n\t  var inp = input();\n\t  var div = $.el.div({class:\"controller show-state\"},\n\t\t\t     $.el.span({class:\"running\"},\n\t\t\t\t       button(abort, \"Abort\")),\n\t\t\t     $.el.span({class:\"wait-next\"},\n\t\t\t\t       button(next, \"Next\"),\n\t\t\t\t       button(next10, \"10\"),\n\t\t\t\t       button(next100, \"100\"),\n\t\t\t\t       button(next1000, \"1,000\"), \" \",\n\t\t\t\t       button(stop, \"Stop\")),\n\t\t\t     $.el.span({class:\"wait-input\"},\n\t\t\t\t       button(abort, \"Abort\"), inp.button,\n\t\t\t\t       $.el.span(inp.input)),\n\t\t\t     statusChart());\n\n\t  return div;\n\t}\n\n\telem.addClass(\"prolog-runner panel panel-default\");\n\tif ( query.tabled )\n\t  elem.addClass(\"tabled\");\n\tif ( query.title != false ) {\n\t  var qspan = $.el.span({class:\"query cm-s-prolog\"});\n\t  CodeMirror.runMode(query.query, \"prolog\", qspan);\n\t  elem.append($.el.div(\n\t    {class:\"runner-title panel-heading\"},\n\t    titleBarButton(\"remove-circle\", \"Close\",        'close'),\n\t    titleBarButton(\"minus\",         \"Iconify\",      'toggleIconic'),\n\t    titleBarButton(\"download\",      \"Download CSV\", 'downloadCSV'),\n\t    stateButton(),\n\t    qspan));\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"Close\");\n\t  elem.append(close);\n\t  $(close).on(\"click\", function() {\n\t    elem.prologRunner('close');\n\t  });\n\t}\n\tif ( query.chunk )\n\t  data.chunk = query.chunk;\n\telem.append($.el.div({class:\"runner-results panel-body\"}));\n\telem.append(controllerDiv());\n\n\telem.data('prologRunner', data);\n\n\telem.prologRunner('populateActionMenu');\n\telem.keydown(function(ev) {\n\t  if ( elem.prologRunner('getState') != \"wait-input\" &&\n\t       !ev.ctrlKey && !ev.altKey ) {\n\t    if ( keyBindings[ev.which] ) {\n\t      ev.preventDefault();\n\t      elem.prologRunner(keyBindings[ev.which]);\n\t    }\n\t  }\n\t});\n\telem.on(\"click\", \"a\", links.followLink);\n\n\tdata.savedFocus = document.activeElement;\n\telem.attr('tabindex', -1);\n\telem.focus();\n\n\tdata.query   = query;\n\tdata.answers = 0;\n\n\telem.prologRunner('setScreenDimensions');\n\n\t/* Load pengines.js incrementally because we wish to ask the\n\t   one from the pengine server rather than a packaged one.\n\t*/\n\n\trequire([config.http.locations.pengines+\"/pengines.js\"],\n\t\tfunction() {\n\n\t  data.prolog = new Pengine({\n\t    server: config.http.locations.pengines,\n\t    runner: elem,\n\t    application: \"swish\",\n\t    src: query.source,\n\t    destroy: false,\n\t    format: 'json-html',\n\t    oncreate: handleCreate,\n\t    onsuccess: handleSuccess,\n\t    onfailure: handleFailure,\n\t    onstop: handleStop,\n\t    onprompt: handlePrompt,\n\t    onoutput: handleOutput,\n\t    onping: handlePing,\n\t    onerror: handleError,\n\t    onabort: handleAbort});\n\t  data.prolog.state = \"idle\";\n\t  if ( config.swish.ping && data.prolog.ping != undefined ) {\n\t    data.prolog.ping(config.swish.ping*1000);\n\t  }\n\t});\n\n\treturn this;\n      });\n    }, //_init()\n\n    setScreenDimensions: function() {\n      var data = this.data(pluginName);\n      var pre  = $.el.pre({class: \"measure\"}, \"xxxxxxxxxx\");\n      var sw   = this.width();\n      var sh;\n      var container;\n\n      container = this.closest(\".prolog-runners\");\n      if ( container.length == 0 )\n\tcontainer = this.closest(\".nb-view\");\n      if ( container.length )\n\tsh = container.height();\n\n      this.append(pre);\n      var cw = $(pre).width()/10;\n      var ch = $(pre).height();\n      $(pre).remove();\n\n      data.screen = {\n        width: sw,\n\tcols: Math.floor(sw/cw)\n      };\n      if ( sh !== undefined ) {\n\tdata.screen.height = sh;\n\tdata.screen.rows   = Math.floor(sh/ch);\n      }\n    },\n\n    /**\n     * Add a _positive_ answer to the runner.  The answer is embedded in\n     * a `<div class=\"answer\">` with an additional class `\"even\"` or\n     * `\"odd\"` to simplify styling. Note that using CSS odd/even\n     * selectors is not possible because there are other elements such\n     * as errors.\n     * @param {Answer} answer pengine response in `json-html`\n     */\n    renderAnswer: function(answer) {\n      var data = this.data('prologRunner');\n      var even = (++data.answers % 2 == 0);\n\n      if ( data.query.tabled ) {\n\tif ( data.answers == 1 ) {\n\t  if ( answer.projection && answer.projection.length > 0 ) {\n\t    var table = answerTable(answer.projection);\n\t    addAnswer(this, table);\n\t    data.table = table;\n\t    data.projection = answer.projection;\n\t    answer.nth = data.answers;\n\t    $(data.table).prologAnswer(answer);\n\t    return this;\n\t  }\n        } else\n\t{ answer.projection = data.projection;\n\t  answer.nth = data.answers;\n\t  $(data.table).prologAnswer(answer);\n\t  return this;\n\t}\n      }\n\n      var div = $.el.div({class:\"answer \"+(even ? \"even\" : \"odd\")},\n\t\t\t $.el.span({class:\"answer-no\"}, data.answers));\n\n      addAnswer(this, div);\n      $(div).prologAnswer(answer);\n    },\n\n    /**\n     * Add pengine output as `<span class=\"output\">`\n     * @param {String} data HTML that is inserted into the span.\n     * @return {DOM} the added node (a span)\n     */\n    outputHTML: function(data) {\n      var span = $.el.span({class:\"output\"});\n      addAnswer(this, span);\n      span.innerHTML = data;\n      runScripts(span);\n      return span;\n    },\n\n    /**\n     * Handle object output\n     */\n     downloadButton: function(obj) {\n       var button = $.el.a({class:\"download\"});\n       addAnswer(this, button);\n       $(button).downloader(obj);\n     },\n\n    /**\n     * Display a syntax error in the query.\n     * {Object} options\n     * {String} options.message is the message\n     * {Object} options.location contains the `line` and `ch` position\n     */\n     syntaxError: function(options) {\n       var data = this.data(pluginName);\n\n       options.data = \"<pre class=\\\"output msg-error\\\">\" +\n\t\t      options.message +\n\t\t      \"</pre>\";\n       options.location.file = true;\n       $(data.query.query_editor).prologEditor('highlightError', options);\n       return this;\n     },\n\n    /**\n     * Add an error message to the output.  The error is\n     * wrapped in a `<pre class=\"error\">` element.\n     * @param {String|Object} options If `options` is a string, it is a\n     * plain-text error message.  Otherwise it is the Pengine error\n     * object.\n     * @param {String} options.message is the plain error message\n     * @param {String} options.code is the error code\n     */\n    error: function(options) {\n      var msg;\n\n      if ( typeof(options) == 'object' ) {\n\tif ( options.code == \"died\" ) {\n\t  addAnswer(this, $.el.div({\n\t    class:\"RIP\",\n\t    title:\"Remote pengine timed out\"\n\t  }));\n\t  return this;\n\t} else if ( options.code == \"syntax_error\" )\n\t{ var m = options.message.match(/^HTTP:DATA:(\\d+):(\\d+):\\s*(.*)/);\n\n\t  if ( m && m.length == 4 ) {\n\t    this.prologRunner('syntaxError',\n\t\t\t      { location:\n\t\t\t\t{ line: parseInt(m[1])-1,\n\t\t\t\t  ch:\tparseInt(m[2])\n\t\t\t\t},\n\t\t\t\tmessage: m[3]\n\t\t\t      });\n\t    msg = \"Cannot run query due to a syntax error (check query window)\";\n\t  }\n\t}\n\tif ( !msg )\n\t  msg = options.message;\n      } else\n\tmsg = options;\n\n      addAnswer(this, $.el.pre({class:\"prolog-message msg-error\"}, msg));\n      return this;\n    },\n\n    /**\n     * Handle trace events\n     */\n    trace: function(data) {\n      var elem = this;\n      var goal = $.el.span({class:\"goal\"});\n      var prompt = data.data;\n      $(goal).html(prompt.goal);\n\n      function capitalizeFirstLetter(string) {\n\treturn string.charAt(0).toUpperCase() + string.slice(1);\n      }\n\n      function button(label, action, context) {\n\tvar btn = $.el.button({class:action,\n\t\t\t       title:label\n\t\t\t      },\n\t\t\t      $.el.span(label));\n\t$(btn).on(\"click\", function(ev) {\n\t  if ( context !== undefined ) {\n\t    action += \"(\"+Pengine.stringify(context(ev))+\")\";\n\t  }\n\t  data.pengine.respond(action);\n\t  $(ev.target).parent().remove();\n\t});\n\treturn btn;\n      }\n\n      addAnswer(this,\n\t\t$.el.div({class:\"prolog-trace\"},\n\t\t\t $.el.span({ class:\"depth\",\n\t\t\t             style:\"width:\"+(prompt.depth*5-1)+\"px\"\n\t\t\t\t   }, \"\\u00A0\"), /* &nbsp; */\n\t\t\t $.el.span({ class:\"port \"+prompt.port\n\t\t\t           },\n\t\t\t\t   capitalizeFirstLetter(prompt.port),\n\t\t\t\t   \":\"),\n\t\t\t goal));\n      if ( prompt.port == \"exception\" )\n\taddAnswer(this,\n\t\t  $.el.div({class:\"prolog-exception\"},\n\t\t\t   prompt.exception.message));\n      addAnswer(this,\n\t\t$.el.div({class:\"trace-buttons\"},\n\t\t\t button(\"Continue\",  \"nodebug\", function(ev) {\n\t\t\t   return breakpoints($(ev.target)\n\t\t\t\t    .closest(\".prolog-runner\"));\n\t\t\t }),\n\t\t\t button(\"Step into\", \"continue\"),\n\t\t\t button(\"Step over\", \"skip\"),\n\t\t\t button(\"Step out\",  \"up\"),\n\t\t\t button(\"Retry\",     \"retry\"),\n\t\t\t button(\"Abort\",     \"abort\")));\n\n      this.closest(\".swish\")\n          .find(\".tabbed\")\n          .trigger(\"trace-location\", prompt);\n\n      this.prologRunner('setState', \"wait-debug\");\n    },\n\n    /**\n     * set the placeholder of the input field.  This is normally\n     * done from the pengine's onprompt handler\n     * @param {String} p the new placeholder\n     */\n    setPrompt: function(p) {\n      this.find(\".controller input\").attr(\"placeholder\", p);\n    },\n\n    /**\n     * Support arbitrary jQuery requests from Prolog\n     */\n    jQuery: function(prompt) {\n      var request = prompt.data;\n      var receiver;\n\n      if ( typeof(request.selector) == \"string\" ) {\n\treceiver = $(request.selector);\n      } else if ( typeof(request.selector) == \"object\" ) {\n\tswitch(request.selector.root) {\n\t  case \"this\":\troot = this; break;\n\t  case \"swish\":\troot = this.closest(\".swish\"); break;\n\t}\n\tif ( request.selector.sub == \"\" ) {\n\t  receiver = root;\n\t} else {\n\t  receiver = root.find(request.selector.sub);\n\t}\n      }\n\n      console.log(receiver);\n      var result = receiver[request.method].apply(receiver, request.arguments);\n      console.log(result);\n\n      prompt.pengine.respond(Pengine.stringify(result));\n    },\n\n    /**\n     * Handle a (dashboard) form.  This opens dialog from the supplied\n     * `html`.\n     * @param {Object} prompt\n     * @param {String} prompt.html contains the HTML content of the form\n     */\n    form: function(prompt) {\n      var data = this.data('prologRunner');\n\n      modal.show({\n\ttitle: \"Please enter parameters\",\n\tbody: function() {\n\t  this.html(prompt.data.html);\n\t  this.find(\"[data-search-in]\").search({search:false});\n\n\t  this.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var button = $(ev.target).closest(\"button\");\n\t    var action = button.data('action');\n\n\t    if ( action == 'run' ) {\n\t      var formel = $(ev.target).closest(\"form\");\n\t      var fdata  = form.serializeAsObject(formel, true);\n\t      var s      = Pengine.stringify(fdata);\n\t      data.prolog.respond(s);\n\t    } else if ( action == 'cancel' ) {\n\t      data.prolog.respond(\"cancel\");\n\t    }\n\t    button.closest(\".modal\").modal('hide');\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n\n    /**\n     * send a response (to pengine onprompt handler) to the\n     * pengine and add the response to the dialogue as\n     * `div class=\"response\">`\n     * @param {String} s plain-text response\n     */\n    respond: function(text) {\n      var data = this.data('prologRunner');\n\n      if ( data.wait_for == \"term\" ) {\n\ts = termNoFullStop(text);\n\tif ( s == \"\" )\n\t  return null;\n      } else {\n\ts = Pengine.stringify(text+\"\\n\");\n      }\n\n      addAnswer(this, $.el.div({class:\"response\"}, text));\n      data.prolog.respond(s);\n      return this;\n    },\n\n    /**\n     * Stop the associated Prolog engines.\n     */\n    stop: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.stop();\n      });\n    },\n\n    /**\n     * Stop the pengine if it is waiting for a next solution,\n     * abort it if it is running or waitin for input and ignore\n     * otherwise.\n     */\n    stopOrAbort: function() {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar data  = elem.data('prologRunner');\n\tvar state = elem.prologRunner('getState');\n\n\tswitch(state)\n\t{ case \"running\":\n\t  case \"wait-input\":\n\t    data.prolog.abort();\n\t    break;\n\t  case \"wait-next\":\n\t    data.prolog.stop();\n\t}\n      });\n    },\n\n    /**\n     * Ask the associated Prolog engines for the next answer.\n     * @param {Integer} chunk maximum number of answers to return in the\n     * next chunk.\n     */\n    next: function(chunk) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.next(chunk);\n\telem.prologRunner('setState', \"running\");\n      });\n    },\n\n    /**\n     * Abort the associated Prolog engine.\n     */\n    abort: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.abort();\n      });\n    },\n\n    /**\n     * If the associated pengine is alive, send it a `destroy`.  Next,\n     * remove the runner from its container.\n     */\n    close: function() {\n      if ( this.length ) {\n\tvar runners = RS(this);\n\n\tthis.each(function() {\n\t  var elem = $(this);\n\t  var data = elem.data('prologRunner');\n\n\t  if ( elem.prologRunner('alive') ) {\n\t    $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n\t    data.prolog.abort();\n\t  }\n\t});\n\tthis.remove();\n\n\trunners.prologRunners('scrollToBottom', true);\n      }\n      return this;\n    },\n\n    /**\n     * Provide help on running a query\n     */\n     help: function() {\n       $(\".swish-event-receiver\").trigger(\"help\", {file:\"runner.html\"});\n     },\n\n    /**\n     * Toggle or set the iconic state of the runner.\n     * @param {Boolean} [on] if `true`, make iconify, `false` expanded\n     * and toggle if unspecified\n     */\n    toggleIconic: function(on) {\n      if ( on == undefined ) {\n\tthis.toggleClass(\"iconic\");\n      } else if ( on ) {\n\tthis.addClass(\"iconic\");\n      } else {\n\tthis.removeClass(\"iconic\");\n      }\n\n      RS(this).prologRunners('scrollToBottom', true);\n\n      return this;\n    },\n\n    /**\n     * Populate the menu associated with the pengine icon.\n     * @param {Object} [actions] associates labels with functions.\n     */\n    populateActionMenu: function(actions) {\n      var menu = this.find(\".runner-title .btn-group.dropdown\");\n\n      actions = $.extend({ \"Re-run\": function() { console.log(\"Re-Run \", this); }\n\t\t\t }, actions);\n\n      form.widgets.populateMenu(menu, this, actions);\n\n      return this;\n    },\n\n    /**\n     * Download query results as CSV.\n     */\n    downloadCSV: function(options) {\n      var data = this.data('prologRunner');\n      var query = termNoFullStop(data.query.query);\n\n      prolog.downloadCSV(query, data.query.source, options);\n\n      return this;\n    },\n\n  /**\n   * @param {String} state defines the new state of the pengine.\n   * Known states are:\n   *\n   *   - \"idle\"\t      - Pengine is not yet created\n   *   - \"running\"    - Pengine is running\n   *   - \"wait-next\"  - Pengine produced a non-deterministic answer\n   *   - \"wait-input\" - Pengine waits for input\n   *   - \"wait-debug\" - Pengine waits for for debugger reply\n   *   - \"true\"       - Pengine produced the last answer\n   *   - \"false\"      - Pengine failed\n   *   - \"error\"      - Pengine raised an error\n   *   - \"stopped\"    - User selected *stop* after non-det answer\n   *   - \"aborted\"    - User aborted execution\n   *\n   * The widget is brought to the new  state   by  adding the state as a\n   * class to all members of  the   class  `show-state`, which currently\n   * implies the pengines icon at the   top-left  and a _controller_ div\n   * created by controllerDiv().\n   */\n   setState: function(state) {\n     var data = this.data('prologRunner');\n\n     if ( !data )\n       return;\n\n     if ( data.prolog.state != state ) {\n       var stateful = this.find(\".show-state\");\n\n       stateful.removeClass(data.prolog.state).addClass(state);\n       data.prolog.state = state;\n       if ( !aliveState(state) && data.savedFocus ) {\n\t $(data.savedFocus).focus();\n\t data.savedFocus = null;\n       } else if ( state == \"wait-input\" ) {\n\t this.find(\"input\").focus();\n       }\n     }\n\n     var runners = RS(this);\n     if ( !aliveState(state) ) {\n       $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n       data.prolog.destroy();\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else if ( state == \"wait-next\" || state == \"true\" ) {\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else {\n       runners.prologRunners('scrollToBottom');\n     }\n\n     return this;\n   },\n\n   /** @returns {String} representing the current state of the\n    * query execution.\n    * @see {@link setState}\n    */\n   getState: function() {\n     var data = this.data('prologRunner');\n\n     return data.prolog ? data.prolog.state : \"idle\";\n   },\n\n   /**\n    * @returns {Boolean} true if the related pengine is alive.  That\n    * means it has state `\"running\"`, `\"wait-next\"`, `\"wait-input\"` or\n    * `\"wait-debug\"`\n    */\n   alive: function() {\n     return aliveState(this.prologRunner('getState'));\n   },\n\n   /**\n    * Handle ping data, updating the sparkline status\n    */\n   ping: function(stats) {\n     var data = this.data('prologRunner');\n\n     if ( data && data.prolog && data.prolog.state == \"running\" ) {\n       var spark = this.find(\".sparklines\");\n       var stacks = [\"global\", \"local\", \"trail\"];\n       var colors = [\"red\", \"blue\", \"green\"];\n       var names  = [\"Global \", \"Local \", \"Trail \"];\n       var maxlength = 10;\n\n       if ( !data.stacks )\n\t data.stacks = { global:{usage:[]}, local:{usage:[]}, trail:{usage:[]} };\n\n       for(i=0; i<stacks.length; i++) {\n\t var s = stacks[i];\n\t var limit = stats.stacks[s].limit;\n\t var usage = stats.stacks[s].usage;\n\n\t var u = Math.log10((usage/limit)*10000);\n\t function toBytes(limit, n) {\n\t   var bytes = Math.round((Math.pow(10, n)/10000)*limit);\n\n\t   function numberWithCommas(x) {\n\t     x = x.toString();\n\t     var pattern = /(-?\\d+)(\\d{3})/;\n\t     while (pattern.test(x))\n\t       x = x.replace(pattern, \"$1,$2\");\n\t     return x;\n\t   }\n\n\t   return numberWithCommas(bytes);\n\t }\n\n\t data.stacks[s].limit = limit;\n\t if ( data.stacks[s].usage.length >= maxlength )\n\t   data.stacks[s].usage = data.stacks[s].usage.slice(1);\n\t data.stacks[s].usage.push(u);\n\t spark.sparkline(data.stacks[s].usage,\n\t\t\t { height: spark.parent().height(),\n\t\t\t   composite: i>0,\n\t\t\t   chartRangeMin: 0,\n\t\t\t   chartRangeMax: 4,\n\t\t\t   lineColor: colors[i],\n\t\t\t   tooltipPrefix: names[i],\n\t\t\t   tooltipSuffix: \" bytes\",\n\t\t\t   tooltipChartTitle: i == 0 ? \"Stack usage\" : undefined,\n\t\t\t   numberFormatter: function(n) {\n\t\t\t     return toBytes(limit, n);\n\t\t\t   }\n\t\t\t });\n       }\n     }\n   }\n\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *     PRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  function RS(from) {\t\t\t/* find runners from parts */\n    return $(from).closest(\".prolog-runners\");\n  }\n\n  function addAnswer(runner, html) {\n    var results = runner.find(\".runner-results\");\n    results.append(html);\n    return this;\n  }\n\n  function aliveState(state) {\n    switch( state )\n    { case \"running\":\n      case \"wait-next\":\n      case \"wait-input\":\n      case \"wait-debug\":\n\treturn true;\n      default:\n\treturn false;\n    }\n  }\n\n  function answerTable(projection) {\n    var tds = [{class:\"projection\"}];\n\n    for(i=0; i<projection.length; i++)\n      tds.push($.el.th({class:\"pl-pvar\"}, projection[i]));\n    tds.push($.el.th({class:\"answer-nth\"}, \"\"));\n\n    var table = $.el.table({class:\"prolog-answers\"},\n\t\t\t   $.el.tbody($.el.tr.apply(this, tds)));\n\n    return table;\n  }\n\n\t\t /*******************************\n\t\t *\t SCRIPTS IN NODES\t*\n\t\t *******************************/\n\n  var node_id = 1;\n  function runScripts(elem) {\n    var scripts = [];\n    elem = $(elem);\n\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" )\n\tscripts.push(this.textContent);\n    });\n\n    if ( scripts.length > 0 ) {\n      var script = \"(function(node){\" + scripts.join(\"\\n\") + \"})\";\n      var node = new Node({\n        node: elem[0]\n      });\n\n      try {\n\teval(script)(node);\n      } catch(e) {\n\talert(e);\n      }\n    }\n  }\n\n  function Node(options) {\n    this.my_node = options.node;\n  }\n\n  Node.prototype.node = function() {\n    return $(this.my_node);\n  }\n\n  /**\n   * Provide a unique id for the node.  This can be used as prefix to\n   * avoid conflicts for `id` attributes.\n   */\n  Node.prototype.unique_id = function() {\n    if ( !this.uid )\n      this.uid = node_id++;\n    return this.uid;\n  }\n\n\n\t\t /*******************************\n\t\t *   HANDLE PROLOG CALLBACKS\t*\n\t\t *******************************/\n\n  function breakpoints(runner) {\n    var data = runner.data(pluginName);\n\n    return $(runner).parents(\".swish\").swish('breakpoints', data.prolog.id);\n  }\n\n  function registerSources(pengine) {\n    var runner = pengine.options.runner;\n    var data   = runner.data(pluginName);\n\n    if ( data.query.editor )\n      $(data.query.editor).prologEditor('pengine', {add: pengine.id});\n  }\n\n  function handleCreate() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data(pluginName);\n    var options = $.extend({}, data.screen);\n    var bps;\n    var resvar = config.swish.residuals_var || \"Residuals\";\n\n    registerSources(this.pengine);\n\n    if ( (bps = breakpoints(elem)) )\n      options.breakpoints = Pengine.stringify(bps);\n    if ( data.chunk )\n      options.chunk = data.chunk;\n\n    this.pengine.ask(\"'$swish wrapper'((\\n\" +\n\t\t     termNoFullStop(data.query.query) +\n\t\t     \"\\n), \"+resvar+\")\", options);\n    elem.prologRunner('setState', \"running\");\n  }\n\n  function handleSuccess() {\n    var elem = this.pengine.options.runner;\n\n    for(var i=0; i<this.data.length; i++) {\n      var answer = this.data[i];\n      if ( this.projection )\n\tanswer.projection = this.projection;\n\n      elem.prologRunner('renderAnswer', answer);\n    }\n    if ( this.time > 0.1 )\t/* more than 0.1 sec. CPU (TBD: preference) */\n      addAnswer(elem, $.el.div(\n\t{class:\"cputime\"},\n\t$.el.span(this.time.toFixed(3),\n\t\t  \" seconds cpu time\")));\n\n    elem.prologRunner('setState', this.more ? \"wait-next\" : \"true\");\n  }\n\n  function handleFailure() {\n    var elem = this.pengine.options.runner;\n\n    addAnswer(elem, $.el.span({class: \"prolog-false\"}, \"false\"));\n    elem.prologRunner('setState', \"false\");\n  }\n\n  function handleStop() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('setState', \"stopped\");\n  }\n\n  function handlePrompt() {\n    var elem   = this.pengine.options.runner;\n    var data   = elem.data('prologRunner');\n    var prompt = this.data || \"Please enter a Prolog term\";\n\n    data.wait_for = \"term\";\n\n    if ( typeof(prompt) == \"object\" ) {\n      if ( prompt.type == \"trace\" ) {\n\treturn elem.prologRunner('trace', this);\n      } else if ( prompt.type == \"form\" ) {\n\treturn elem.prologRunner('form', this);\n      } else if ( prompt.type == \"jQuery\" ) {\n\treturn elem.prologRunner('jQuery', this);\n      } else if ( prompt.type == \"console\" ) {\n\tprompt = prompt.prompt || \"console> \";\n\tdata.wait_for = \"line\";\n      } else {\n\tprompt = JSON.stringify(prompt);\n      }\n    }\n\n    elem.prologRunner('setPrompt', prompt);\n    elem.prologRunner('setState', \"wait-input\");\n  }\n\n  /**\n   * Make indicated source locations clickable.\n   * @param {String} msg is the HTML error message string\n   * @param {DOM} editor is the source editor; the editor for pengine://\n   * source locations\n   */\n  function clickableLocations(msg, editor) {\n    var pattern = /pengine:\\/\\/[-0-9a-f]{36}\\/src:(\\d+)/;\n\n    return msg.replace(pattern, function(matched) {\n      var line = matched.match(pattern)[1];\n      return \"<a class='goto-error' title='Goto location'>\" +\n               \"<span class='glyphicon glyphicon-hand-right'></span> \"+\n\t       \"<b>line <span class='line'>\"+line+\"</span></b></a>\";\n    });\n  }\n\n  function gotoError(ev) {\n    var a        = $(ev.target).closest(\"a.goto-error\");\n    var ctx      = $(ev.target).closest(\".error-context\");\n    var econtext = ctx.data(\"error_context\");\n\n    if ( a[0] ) {\n      var line = parseInt(a.find(\"span.line\").text());\n      var file = a.find(\"span.file\").text();\n\n      ev.preventDefault();\n\n      if ( file ) {\n\tctx.closest(\"body.swish\")\n\t   .swish('playFile', {file:file, line:line});\n      } else {\n\t$(econtext.editor).prologEditor('gotoLine', line);\n      }\n\n      return false;\n    } else if ( econtext.location.file ) {\n      ctx.closest(\"body.swish\")\n\t .swish('playFile', econtext.location);\n    } else {\n      $(econtext.editor).prologEditor('gotoLine', econtext.location.line);\n    }\n  }\n\n  /**\n   * handle `pengine_output/1`.  Note that compiler warnings and errors\n   * also end up here. If they have a location, this is provided through\n   * this.location, which contains `file`, `line` and `ch`.  We must use\n   * this to indicate the location of the error in CodeMirror.\n   */\n\n  function handleOutput(msg) {\n    var elem = msg.pengine.options.runner;\n    var data = elem.data(pluginName);\n\n    if ( !data )\t\t\t\t/* runner is gone */\n      return;\n\n    if ( typeof(msg.data) == 'string' ) {\n      var econtext = {editor: data.query.editor};\n\n      msg.data = msg.data.replace(/'[-0-9a-f]{36}':/g, \"\")  /* remove module */\n\n      if ( msg.location ) {\n\tvar loc = msg.location;\n\tvar prefix = \"swish://\";\n\tvar span;\n\n\tfunction clickableError() {\n\t  var str = loc.file+\":\"+loc.line+\":\";\n\t  if ( loc.ch ) str += loc.ch+\":\";\n\t  str += \"\\\\s*\";\n\n\t  msg.data = clickableLocations(\n\t\t\t msg.data.replace(new RegExp(str, \"g\"), \"\"),\n\t\t\t econtext.editor);\n\n\t  span = elem.prologRunner('outputHTML', msg.data);\n\n\t  $(span).addClass(\"error-context\");\n\t  $(span).append($.el.span({class:\"glyphicon glyphicon-hand-right\"}));\n\t  $(span).attr(\"title\", \"Error in program.  Click to show in context\");\n\t  $(span).on(\"click\", gotoError);\n\t  $(span).data(\"error_context\", econtext);\n\t}\n\n\tif ( loc.file.startsWith(prefix) ) {\n\t  var file = loc.file.slice(prefix.length);\n\t  econtext.location = {file:file, line:loc.line};\n\t  clickableError();\n\t} else if ( loc.file.startsWith(\"pengine://\") ) {\n\t  econtext.location = {line:loc.line};\n\t  clickableError(data.query.editor);\n\t}\n\tregisterSources(msg.pengine);\n\tmsg.error_context = econtext;\n\tmsg.error_handler = gotoError;\n\t$(\".swish-event-receiver\").trigger(\"source-error\", msg);\n      } else {\n\tvar span = elem.prologRunner('outputHTML',\n\t\t\t\t     clickableLocations(msg.data,\n\t\t\t\t\t\t\tecontext.editor));\n\t$(span).on(\"click\", gotoError);\n\t$(span).data(\"error_context\", econtext);\n      }\n    } else if ( typeof(msg.data) == 'object' ) {\n      elem.prologRunner(msg.data.action, msg.data);\n    } else {\n      console.log(msg.data);\n    }\n    RS(elem).prologRunners('scrollToBottom');\n  }\n\n  function handleError() {\n    var elem = this.pengine.options.runner;\n    var msg;\n\n    if ( this.code == \"too_many_pengines\" ) {\n      this.message = \"Too many open queries.  Please complete some\\n\"+\n\t\t     \"queries by using |Next|, |Stop| or by\\n\"+\n\t\t     \"closing some queries.\";\n    } else if ( typeof(this.data) == 'string' ) {\n      this.message = this.data\n\t\t\t .replace(new RegExp(\"'\"+this.pengine.id+\"':\", 'g'), \"\");\n    } else {\n      this.message = \"Unknown error\";\n    }\n\n    elem.prologRunner('error', this);\n    elem.prologRunner('setState', \"error\");\n  }\n\n  function handleAbort() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data('prologRunner');\n\n    if ( data ) {\n      elem.prologRunner('error', \"** Execution aborted **\");\n      elem.prologRunner('setState', \"aborted\");\n    } else {\n      this.pengine.destroy();\n    }\n  }\n\n  function handlePing() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('ping', this.data);\n  }\n\n  /**\n   * @param {Object} answer a positive answer from the Pengine\n   * @returns {Boolean} true if the answer has printable part, i.e., no\n   * variable bindings nor residual goals.\n   */\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function termNoFullStop(s) {\n    return String($.trim(s)).replace(/\\.$/, \"\");\n  }\n\n  /**\n   * Run a Prolog query by starting a remote pengine.\n   *\n   * @class prologRunner\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologRunner = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t   /*******************************\n\t\t   *\t       UTIL\t\t*\n\t\t   *******************************/\n\n  function glyphButton(glyph, title) {\n    var btn = $.el.a({href:\"#\", class:\"close btn btn-link btn-sm\",\n\t\t      title:title},\n\t\t     $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n    return btn;\n  }\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Dialog components to interact with the gitty store.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('gitty',[ \"jquery\", \"config\", \"form\", \"modal\", \"laconic\" ],\n       function($, config, form, modal) {\n\n(function($) {\n  var pluginName = 'gitty';\n\n  /** @lends $.fn.gitty */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Object.meta} provides the gitty meta-data\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName)||{};\n\tvar meta = options.meta;\n\tvar tabs;\n\n\tdata.commits = [];\n\tdata.commits[meta.commit] = meta;\n\tdata.commit  = meta.commit;\n\tdata.editor  = options.editor;\n\n\tfunction tab(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\thenabled = !Boolean(meta.previous);\n\ttabs     = $($.el.div({class:\"tab-content\"}));\n\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tab(\"Meta data\", true,  \"gitty-meta-data\"),\n\t  tab(\"History\",   false, \"gitty-history\",  henabled),\n\t  tab(\"Changes\",   false, \"gitty-diff\",     henabled)));\n\telem.append(tabs);\n\n\t/* meta-data tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade in active gitty-meta-data\",\n\t                       id:\"gitty-meta-data\"}));\n\telem.find('[href=\"#gitty-meta-data\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showMetaData');\n\t});\n\n\t/* history tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-history\",\n\t                       id:\"gitty-history\"}));\n\telem.find('[href=\"#gitty-history\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showHistory');\n\t});\n\n\t/* diff/changes tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-diff\",\n\t                       id:\"gitty-diff\"}));\n\telem.find('[href=\"#gitty-diff\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showDiff');\n\t});\n\n\telem.data(pluginName, data);\n\n\telem.gitty('showMetaData');\n      });\n    },\n\n    /**\n     * @param is the gitty meta-object\n     * @return {DOM} node holding the title\n     */\n    title: function(meta) {\n      var title = $.el.span(\"File \", $.el.span({class:\"filename\"}, meta.name));\n      if ( meta.symbolic != \"HEAD\" && meta.commit )\n\t$(title).append(\"@\", $.el.span({class:\"sha1 abbrev\"},\n\t\t\t\t       meta.commit.substring(0,7)));\n\n      return title;\n    },\n\n\n\t\t /*******************************\n\t\t *\t     META DATA\t\t*\n\t\t *******************************/\n\n    /**\n     * Show meta data for the current version.  If this is the HEAD,\n     * allow updating the meta-data\n     */\n    showMetaData: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-meta-data\");\n\tvar formel;\n\tvar meta = data.commits[data.commit];\n\n\tif ( data.metaData == data.commit )\n\t  return;\n\tdata.metaData = data.commit;\n\n\ttab.html(\"\");\n\tformel = $.el.form({class:\"form-horizontal\"},\n\t\t      form.fields.fileName(meta.name, meta.public, meta.example,\n\t\t\t\t\t   true), // disabled\n\t\t      form.fields.title(meta.title),\n\t\t      form.fields.author(meta.author),\n\t\t      form.fields.date(meta.time, \"Date\", \"date\"),\n\t\t      form.fields.tags(meta.tags));\n\n\tif ( meta.symbolic == \"HEAD\" ) {\n\t  $(formel).append(\n\t      form.fields.buttons(\n\t\t{ label: \"Update meta data\",\n\t\t  action: function(ev, newMetaData) {\n\t\t    data.editor.storage('save', newMetaData, \"only-meta-data\");\n\t\t    return false;\n\t\t  }\n\t\t}));\n\t}\n\n\ttab.append(formel);\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t     COMMIT LOG\t\t*\n\t\t *******************************/\n\n    /**\n     * Fill the commit log tab\n     */\n    showHistory: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-history\");\n\tvar meta = data.commits[data.commit];\n\tvar playButton;\n\n\tif ( data.history )\n\t  return;\n\n\ttab.html(\"\");\n\ttab.append($.el.table(\n\t  { class:\"table table-striped table-condensed gitty-history\",\n\t    'data-click-to-select':true,\n\t    'data-single-select':true\n\t  },\n\t  $.el.tr($.el.th(\"Comment\"),\n\t\t  $.el.th(\"Date\"),\n\t\t  $.el.th(\"User\"),\n\t\t  $.el.th(\"Changed\")),\n\t  $.el.tbody()));\n\n\tplayButton = form.widgets.glyphIconButton(\n           \"play\",\n\t   { title:\"Open the highlighted version in SWISH\",\n\t     class:\"btn-primary\"\n\t   });\n\ttab.append(playButton);\n\t$(playButton).on(\"click\", function(ev) {\n\t  var row = elem.find(\"tr.success\");\n\t  if ( row.length == 1 ) {\n\t    var commit = row.data('commit');\n\n\t    if ( data.commits[commit].symbolic == \"HEAD\" )\n\t      file = data.commits[commit].name;\n\t    else\n\t      file = commit;\n\n\t    elem.parents(\".swish\").swish('playFile', file);\n\t    $(\"#ajaxModal\").modal('hide');\n\t  }\n\t  return false;\n\t});\n\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(meta.name);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"history\",\n\t\t         depth: 6,\t\t/* might skip last */\n\t\t         to: data.commit\n\t\t       },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillHistoryTable', reply);\n\t\t   data.history = data.commit;\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    /**\n     * Fill the history table\n     */\n    fillHistoryTable: function(history) {\n      var gitty = this;\n      var data  = this.data(pluginName);\n      var table = this.find(\".table.gitty-history tbody\");\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\n\tif ( !data.commits[h.commit] )\n\t  data.commits[h.commit] = h;\n      }\n\n      function changedAttributes(m1) {\n\tvar m2, diff;\n\tvar elem = $.el.span();\n\n\tif ( m1.previous ) {\n\t  if ( (m2 = data.commits[m1.previous]) &&\n\t       (diff = diffMeta(m1, m2)) ) {\n\t    var change = 0;\n\n\t    for( var d in diff ) {\n\t      if ( diff.hasOwnProperty(d) ) {\n\t\tvar ch = (d == \"name\" ? \"forked \"+m2.name : d);\n\t\t$(elem).append((change++ == 0 ? undefined : \", \"),\n\t\t\t       $.el.span({class:\"change-type\"}, ch));\n\t      }\n\t    }\n\t  }\n\t} else {\n\t  $(elem).append(\"initial\");\n\t}\n\n\treturn elem;\n      }\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\tvar tr;\n\n\tif ( i == history.length-1 &&\n\t     h.previous && !data.commit[h.previous] )\n\t  break;\n\n\tvar attrs = {'data-commit':h.commit};\n\tif ( data.commit == h.commit )\n\t  attrs.class = \"success\";\n\n\ttr = $.el.tr(attrs,\n\t\t     $.el.td({class:\"commit-message\"},\n\t\t\t     h.commit_message||\"No comment\"),\n\t\t     $.el.td({class:\"date\"},\n\t\t\t     new Date(h.time*1000).toLocaleString()),\n\t\t     $.el.td({class:\"author\"},\n\t\t\t     h.author||\"No author\"),\n\t\t     $.el.td({class:\"changes\"},\n\t\t\t     changedAttributes(h)));\n\ttable.append(tr);\n      }\n\n      table.on(\"click\", \"tr\", function(ev) {\n\tvar tr = $(ev.target).parents(\"tr\");\n\tvar commit = tr.data('commit');\n\n\tgitty.gitty('setCommit', commit);\n      });\n    },\n\n    /**\n     * Select a row in the table and set the title.\n     * @param {String} version is the SHA1 of the new version\n     */\n\n    setCommit: function(commit) {\n      var data = this.data(pluginName);\t/* private data */\n      var h2   = this.parent(\".modal-content\").find(\"h2\");\n\n      h2.html(\"\");\n      h2.append(this.gitty('title', data.commits[commit]));\n      this.find(\"tr.success\").removeClass(\"success\");\n      this.find(\"tr[data-commit=\"+commit+\"]\").addClass(\"success\");\n      data.commit = commit;\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t       DIFFS\t\t*\n\t\t *******************************/\n\n    /**\n     * Show diff of a given file\n     * @param {Object} options\n     * @param {String} options.file is the file for which to show diffs\n     * @param {String} [options.base] is the base SHA1 (defaults to\n     * HEAD^)\n     */\n\n    showDiff: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.diff == data.commit )\n\t  return;\n\n\telem.find(\".gitty-diff\").html(\"\");\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(data.commit);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"diff\"\n\t\t },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillDiff', reply);\n\t\t   data.diff = data.commit;\n\t\t },\n\t\t error: function(jqXHR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    fillDiff: function(diff) {\n      if ( diff.tags ) this.gitty('diffTags', diff.tags);\n      if ( diff.data ) this.gitty('udiffData', diff.data);\n    },\n\n    diffTags: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var div = $($.el.div({class:\"diff-tags\"},\n\t\t\t    $.el.label(\"Tags\")));\n      var span = $($.el.span({class:\"diff-tags\"}));\n\n      div.append(span);\n\n      function addTag(tag, className) {\n\tspan.append($.el.span({class: \"diff-tag \"+className}, tag));\n      }\n\n      if ( diff.deleted.length ) {\n\tspan.append(\"Removed: \");\n\tfor(var i=0; i<diff.deleted.length; i++)\n\t  addTag(diff.deleted[i], \"deleted\");\n      }\n      if ( diff.added.length ) {\n\tspan.append(diff.deleted.length ? \", \" : \"\", \"Added: \");\n\tfor(var i=0; i<diff.added.length; i++)\n\t  addTag(diff.added[i], \"added\");\n      }\n\n      tab.append(div);\n\n      return this;\n    },\n\n    udiffData: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n\n      tab.append(pre);\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class gitty\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.gitty = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  /**\n   * Diff meta data\n   * @returns {Object|null}, where object holds `author`, `title` and/or\n   * `tags`\n   */\n\n  function diffMeta(m1, m2) {\n    var diff = {};\n\n    function diffAttr(a) {\n      if ( (m1[a] || m2[a]) && m1[a] != m2[a] )\n\tdiff[a] = {from: m1[a], to: m2[a]};\n    }\n\n    diffAttr(\"author\");\n    diffAttr(\"title\");\n    diffAttr(\"data\");\n    diffAttr(\"public\");\n    diffAttr(\"example\");\n    diffAttr(\"name\");\n\n    if ( (d=diffTags(m1.tags, m2.tags)) )\n      diff.tags = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  function reduceMeta(meta, old) {\n    var r = {};\n\n    for( var k in meta ) {\n      if ( meta.hasOwnProperty(k) ) {\n\tswitch(typeof(meta[k])) {\n\t  case \"object\":\n\t    if ( $.isArray(meta[k]) ) {\n\t      if ( !diffTags(meta[k], old[k]) )\n\t\tcontinue;\n\t    }\n\t    break;\n\t  case \"string\":\n\t  case \"boolean\":\n\t    if ( old[k] == meta[k] )\n\t      continue;\n\t}\n\n\tr[k] = meta[k];\n      }\n    }\n\n    return r;\n  }\n\n  /**\n   * Diff two tag arrays (arrays of strings)\n   * @returns {Object|null}, where object.added is an array with new\n   * tags and object.deleted contains deleted tags.\n   */\n  function diffTags(t1, t2) {\n    var d, diff = {};\n\n    t1 = t1||[];\n    t2 = t2||[];\n\n    function added(t1, t2) {\n      var a = [];\n\n      for(var i=0; i<t2.length; i++) {\n\tif ( t1.indexOf(t2[i]) < 0 )\n\t  a.push(t2[i]);\n      }\n\n      return a;\n    }\n\n    if ( (d=added(t1,t2)).length > 0 ) diff.added = d;\n    if ( (d=added(t2,t1)).length > 0 ) diff.deleted = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  return {\n    diffMeta:   diffMeta,\n    reduceMeta: reduceMeta,\n    diffTags:   diffTags\n  };\n});\n\n","/***\nThis is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>\n\nCopyright (c) 2007, Snowtide Informatics Systems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright notice, this\n\t\tlist of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright notice,\n\t\tthis list of conditions and the following disclaimer in the documentation\n\t\tand/or other materials provided with the distribution.\n\t* Neither the name of the Snowtide Informatics Systems nor the names of its\n\t\tcontributors may be used to endorse or promote products derived from this\n\t\tsoftware without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n/* Author: Chas Emerick <cemerick@snowtide.com> */\nvar __whitespace = {\" \":true, \"\\t\":true, \"\\n\":true, \"\\f\":true, \"\\r\":true};\n\nvar difflib = {\n\tdefaultJunkFunction: function (c) {\n\t\treturn __whitespace.hasOwnProperty(c);\n\t},\n\t\n\tstripLinebreaks: function (str) { return str.replace(/^[\\n\\r]*|[\\n\\r]*$/g, \"\"); },\n\t\n\tstringAsLines: function (str) {\n\t\tvar lfpos = str.indexOf(\"\\n\");\n\t\tvar crpos = str.indexOf(\"\\r\");\n\t\tvar linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? \"\\n\" : \"\\r\";\n\t\t\n\t\tvar lines = str.split(linebreak);\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = difflib.stripLinebreaks(lines[i]);\n\t\t}\n\t\t\n\t\treturn lines;\n\t},\n\t\n\t// iteration-based reduce implementation\n\t__reduce: function (func, list, initial) {\n\t\tif (initial != null) {\n\t\t\tvar value = initial;\n\t\t\tvar idx = 0;\n\t\t} else if (list) {\n\t\t\tvar value = list[0];\n\t\t\tvar idx = 1;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tfor (; idx < list.length; idx++) {\n\t\t\tvalue = func(value, list[idx]);\n\t\t}\n\t\t\n\t\treturn value;\n\t},\n\t\n\t// comparison function for sorting lists of numeric tuples\n\t__ntuplecomp: function (a, b) {\n\t\tvar mlen = Math.max(a.length, b.length);\n\t\tfor (var i = 0; i < mlen; i++) {\n\t\t\tif (a[i] < b[i]) return -1;\n\t\t\tif (a[i] > b[i]) return 1;\n\t\t}\n\t\t\n\t\treturn a.length == b.length ? 0 : (a.length < b.length ? -1 : 1);\n\t},\n\t\n\t__calculate_ratio: function (matches, length) {\n\t\treturn length ? 2.0 * matches / length : 1.0;\n\t},\n\t\n\t// returns a function that returns true if a key passed to the returned function\n\t// is in the dict (js object) provided to this function; replaces being able to\n\t// carry around dict.has_key in python...\n\t__isindict: function (dict) {\n\t\treturn function (key) { return dict.hasOwnProperty(key); };\n\t},\n\t\n\t// replacement for python's dict.get function -- need easy default values\n\t__dictget: function (dict, key, defaultValue) {\n\t\treturn dict.hasOwnProperty(key) ? dict[key] : defaultValue;\n\t},\t\n\t\n\tSequenceMatcher: function (a, b, isjunk) {\n\t\tthis.set_seqs = function (a, b) {\n\t\t\tthis.set_seq1(a);\n\t\t\tthis.set_seq2(b);\n\t\t}\n\t\t\n\t\tthis.set_seq1 = function (a) {\n\t\t\tif (a == this.a) return;\n\t\t\tthis.a = a;\n\t\t\tthis.matching_blocks = this.opcodes = null;\n\t\t}\n\t\t\n\t\tthis.set_seq2 = function (b) {\n\t\t\tif (b == this.b) return;\n\t\t\tthis.b = b;\n\t\t\tthis.matching_blocks = this.opcodes = this.fullbcount = null;\n\t\t\tthis.__chain_b();\n\t\t}\n\t\t\n\t\tthis.__chain_b = function () {\n\t\t\tvar b = this.b;\n\t\t\tvar n = b.length;\n\t\t\tvar b2j = this.b2j = {};\n\t\t\tvar populardict = {};\n\t\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\t\tvar elt = b[i];\n\t\t\t\tif (b2j.hasOwnProperty(elt)) {\n\t\t\t\t\tvar indices = b2j[elt];\n\t\t\t\t\tif (n >= 200 && indices.length * 100 > n) {\n\t\t\t\t\t\tpopulardict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindices.push(i);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb2j[elt] = [i];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (var elt in populardict) {\n\t\t\t\tif (populardict.hasOwnProperty(elt)) {\n\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar isjunk = this.isjunk;\n\t\t\tvar junkdict = {};\n\t\t\tif (isjunk) {\n\t\t\t\tfor (var elt in populardict) {\n\t\t\t\t\tif (populardict.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete populardict[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var elt in b2j) {\n\t\t\t\t\tif (b2j.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.isbjunk = difflib.__isindict(junkdict);\n\t\t\tthis.isbpopular = difflib.__isindict(populardict);\n\t\t}\n\t\t\n\t\tthis.find_longest_match = function (alo, ahi, blo, bhi) {\n\t\t\tvar a = this.a;\n\t\t\tvar b = this.b;\n\t\t\tvar b2j = this.b2j;\n\t\t\tvar isbjunk = this.isbjunk;\n\t\t\tvar besti = alo;\n\t\t\tvar bestj = blo;\n\t\t\tvar bestsize = 0;\n\t\t\tvar j = null;\n\t\t\tvar k;\n\t\n\t\t\tvar j2len = {};\n\t\t\tvar nothing = [];\n\t\t\tfor (var i = alo; i < ahi; i++) {\n\t\t\t\tvar newj2len = {};\n\t\t\t\tvar jdict = difflib.__dictget(b2j, a[i], nothing);\n\t\t\t\tfor (var jkey in jdict) {\n\t\t\t\t\tif (jdict.hasOwnProperty(jkey)) {\n\t\t\t\t\t\tj = jdict[jkey];\n\t\t\t\t\t\tif (j < blo) continue;\n\t\t\t\t\t\tif (j >= bhi) break;\n\t\t\t\t\t\tnewj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1;\n\t\t\t\t\t\tif (k > bestsize) {\n\t\t\t\t\t\t\tbesti = i - k + 1;\n\t\t\t\t\t\t\tbestj = j - k + 1;\n\t\t\t\t\t\t\tbestsize = k;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tj2len = newj2len;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi &&\n\t\t\t\t\t!isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\treturn [besti, bestj, bestsize];\n\t\t}\n\t\t\n\t\tthis.get_matching_blocks = function () {\n\t\t\tif (this.matching_blocks != null) return this.matching_blocks;\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\n\t\t\tvar queue = [[0, la, 0, lb]];\n\t\t\tvar matching_blocks = [];\n\t\t\tvar alo, ahi, blo, bhi, qi, i, j, k, x;\n\t\t\twhile (queue.length) {\n\t\t\t\tqi = queue.pop();\n\t\t\t\talo = qi[0];\n\t\t\t\tahi = qi[1];\n\t\t\t\tblo = qi[2];\n\t\t\t\tbhi = qi[3];\n\t\t\t\tx = this.find_longest_match(alo, ahi, blo, bhi);\n\t\t\t\ti = x[0];\n\t\t\t\tj = x[1];\n\t\t\t\tk = x[2];\n\t\n\t\t\t\tif (k) {\n\t\t\t\t\tmatching_blocks.push(x);\n\t\t\t\t\tif (alo < i && blo < j)\n\t\t\t\t\t\tqueue.push([alo, i, blo, j]);\n\t\t\t\t\tif (i+k < ahi && j+k < bhi)\n\t\t\t\t\t\tqueue.push([i + k, ahi, j + k, bhi]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmatching_blocks.sort(difflib.__ntuplecomp);\n\t\n\t\t\tvar i1 = 0, j1 = 0, k1 = 0, block = 0;\n\t\t\tvar i2, j2, k2;\n\t\t\tvar non_adjacent = [];\n\t\t\tfor (var idx in matching_blocks) {\n\t\t\t\tif (matching_blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = matching_blocks[idx];\n\t\t\t\t\ti2 = block[0];\n\t\t\t\t\tj2 = block[1];\n\t\t\t\t\tk2 = block[2];\n\t\t\t\t\tif (i1 + k1 == i2 && j1 + k1 == j2) {\n\t\t\t\t\t\tk1 += k2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\t\t\t\t\ti1 = i2;\n\t\t\t\t\t\tj1 = j2;\n\t\t\t\t\t\tk1 = k2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\n\t\t\tnon_adjacent.push([la, lb, 0]);\n\t\t\tthis.matching_blocks = non_adjacent;\n\t\t\treturn this.matching_blocks;\n\t\t}\n\t\t\n\t\tthis.get_opcodes = function () {\n\t\t\tif (this.opcodes != null) return this.opcodes;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\tvar answer = [];\n\t\t\tthis.opcodes = answer;\n\t\t\tvar block, ai, bj, size, tag;\n\t\t\tvar blocks = this.get_matching_blocks();\n\t\t\tfor (var idx in blocks) {\n\t\t\t\tif (blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = blocks[idx];\n\t\t\t\t\tai = block[0];\n\t\t\t\t\tbj = block[1];\n\t\t\t\t\tsize = block[2];\n\t\t\t\t\ttag = '';\n\t\t\t\t\tif (i < ai && j < bj) {\n\t\t\t\t\t\ttag = 'replace';\n\t\t\t\t\t} else if (i < ai) {\n\t\t\t\t\t\ttag = 'delete';\n\t\t\t\t\t} else if (j < bj) {\n\t\t\t\t\t\ttag = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (tag) answer.push([tag, i, ai, j, bj]);\n\t\t\t\t\ti = ai + size;\n\t\t\t\t\tj = bj + size;\n\t\t\t\t\t\n\t\t\t\t\tif (size) answer.push(['equal', ai, i, bj, j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn answer;\n\t\t}\n\t\t\n\t\t// this is a generator function in the python lib, which of course is not supported in javascript\n\t\t// the reimplementation builds up the grouped opcodes into a list in their entirety and returns that.\n\t\tthis.get_grouped_opcodes = function (n) {\n\t\t\tif (!n) n = 3;\n\t\t\tvar codes = this.get_opcodes();\n\t\t\tif (!codes) codes = [[\"equal\", 0, 1, 0, 1]];\n\t\t\tvar code, tag, i1, i2, j1, j2;\n\t\t\tif (codes[0][0] == 'equal') {\n\t\t\t\tcode = codes[0];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2];\n\t\t\t}\n\t\t\tif (codes[codes.length - 1][0] == 'equal') {\n\t\t\t\tcode = codes[codes.length - 1];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)];\n\t\t\t}\n\t\n\t\t\tvar nn = n + n;\n\t\t\tvar group = [];\n\t\t\tvar groups = [];\n\t\t\tfor (var idx in codes) {\n\t\t\t\tif (codes.hasOwnProperty(idx)) {\n\t\t\t\t\tcode = codes[idx];\n\t\t\t\t\ttag = code[0];\n\t\t\t\t\ti1 = code[1];\n\t\t\t\t\ti2 = code[2];\n\t\t\t\t\tj1 = code[3];\n\t\t\t\t\tj2 = code[4];\n\t\t\t\t\tif (tag == 'equal' && i2 - i1 > nn) {\n\t\t\t\t\t\tgroup.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]);\n\t\t\t\t\t\tgroups.push(group);\n\t\t\t\t\t\tgroup = [];\n\t\t\t\t\t\ti1 = Math.max(i1, i2-n);\n\t\t\t\t\t\tj1 = Math.max(j1, j2-n);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tgroup.push([tag, i1, i2, j1, j2]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group)\n\t\t\t\n\t\t\treturn groups;\n\t\t}\n\t\t\n\t\tthis.ratio = function () {\n\t\t\tmatches = difflib.__reduce(\n\t\t\t\t\t\t\tfunction (sum, triple) { return sum + triple[triple.length - 1]; },\n\t\t\t\t\t\t\tthis.get_matching_blocks(), 0);\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.quick_ratio = function () {\n\t\t\tvar fullbcount, elt;\n\t\t\tif (this.fullbcount == null) {\n\t\t\t\tthis.fullbcount = fullbcount = {};\n\t\t\t\tfor (var i = 0; i < this.b.length; i++) {\n\t\t\t\t\telt = this.b[i];\n\t\t\t\t\tfullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfullbcount = this.fullbcount;\n\t\n\t\t\tvar avail = {};\n\t\t\tvar availhas = difflib.__isindict(avail);\n\t\t\tvar matches = numb = 0;\n\t\t\tfor (var i = 0; i < this.a.length; i++) {\n\t\t\t\telt = this.a[i];\n\t\t\t\tif (availhas(elt)) {\n\t\t\t\t\tnumb = avail[elt];\n\t\t\t\t} else {\n\t\t\t\t\tnumb = difflib.__dictget(fullbcount, elt, 0);\n\t\t\t\t}\n\t\t\t\tavail[elt] = numb - 1;\n\t\t\t\tif (numb > 0) matches++;\n\t\t\t}\n\t\t\t\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.real_quick_ratio = function () {\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\t\treturn _calculate_ratio(Math.min(la, lb), la + lb);\n\t\t}\n\t\t\n\t\tthis.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction;\n\t\tthis.a = this.b = null;\n\t\tthis.set_seqs(a, b);\n\t}\n};\n\n\ndefine(\"difflib\", function(){});\n\n","/*\nThis is part of jsdifflib v1.0. <http://github.com/cemerick/jsdifflib>\n\nCopyright 2007 - 2011 Chas Emerick <cemerick@snowtide.com>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are\npermitted provided that the following conditions are met:\n\n   1. Redistributions of source code must retain the above copyright notice, this list of\n      conditions and the following disclaimer.\n\n   2. Redistributions in binary form must reproduce the above copyright notice, this list\n      of conditions and the following disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED\nWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThe views and conclusions contained in the software and documentation are those of the\nauthors and should not be interpreted as representing official policies, either expressed\nor implied, of Chas Emerick.\n*/\ndiffview = {\n\t/**\n\t * Builds and returns a visual diff view.  The single parameter, `params', should contain\n\t * the following values:\n\t *\n\t * - baseTextLines: the array of strings that was used as the base text input to SequenceMatcher\n\t * - newTextLines: the array of strings that was used as the new text input to SequenceMatcher\n\t * - opcodes: the array of arrays returned by SequenceMatcher.get_opcodes()\n\t * - baseTextName: the title to be displayed above the base text listing in the diff view; defaults\n\t *\t   to \"Base Text\"\n\t * - newTextName: the title to be displayed above the new text listing in the diff view; defaults\n\t *\t   to \"New Text\"\n\t * - contextSize: the number of lines of context to show around differences; by default, all lines\n\t *\t   are shown\n\t * - viewType: if 0, a side-by-side diff view is generated (default); if 1, an inline diff view is\n\t *\t   generated\n\t */\n\tbuildView: function (params) {\n\t\tvar baseTextLines = params.baseTextLines;\n\t\tvar newTextLines = params.newTextLines;\n\t\tvar opcodes = params.opcodes;\n\t\tvar baseTextName = params.baseTextName ? params.baseTextName : \"Base Text\";\n\t\tvar newTextName = params.newTextName ? params.newTextName : \"New Text\";\n\t\tvar contextSize = params.contextSize;\n\t\tvar inline = (params.viewType == 0 || params.viewType == 1) ? params.viewType : 0;\n\n\t\tif (baseTextLines == null)\n\t\t\tthrow \"Cannot build diff view; baseTextLines is not defined.\";\n\t\tif (newTextLines == null)\n\t\t\tthrow \"Cannot build diff view; newTextLines is not defined.\";\n\t\tif (!opcodes)\n\t\t\tthrow \"Canno build diff view; opcodes is not defined.\";\n\t\t\n\t\tfunction celt (name, clazz) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction telt (name, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction ctelt (name, clazz, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\n\t\tvar tdata = document.createElement(\"thead\");\n\t\tvar node = document.createElement(\"tr\");\n\t\ttdata.appendChild(node);\n\t\tif (inline) {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName + \" vs. \" + newTextName));\n\t\t} else {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", newTextName));\n\t\t}\n\t\ttdata = [tdata];\n\t\t\n\t\tvar rows = [];\n\t\tvar node2;\n\t\t\n\t\t/**\n\t\t * Adds two cells to the given row; if the given row corresponds to a real\n\t\t * line number (based on the line index tidx and the endpoint of the \n\t\t * range in question tend), then the cells will contain the line number\n\t\t * and the line of text from textLines at position tidx (with the class of\n\t\t * the second cell set to the name of the change represented), and tidx + 1 will\n\t\t * be returned.\t Otherwise, tidx is returned, and two empty cells are added\n\t\t * to the given row.\n\t\t */\n\t\tfunction addCells (row, tidx, tend, textLines, change) {\n\t\t\tif (tidx < tend) {\n\t\t\t\trow.appendChild(telt(\"th\", (tidx + 1).toString()));\n\t\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t\t\treturn tidx + 1;\n\t\t\t} else {\n\t\t\t\trow.appendChild(document.createElement(\"th\"));\n\t\t\t\trow.appendChild(celt(\"td\", \"empty\"));\n\t\t\t\treturn tidx;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction addCellsInline (row, tidx, tidx2, textLines, change) {\n\t\t\trow.appendChild(telt(\"th\", tidx == null ? \"\" : (tidx + 1).toString()));\n\t\t\trow.appendChild(telt(\"th\", tidx2 == null ? \"\" : (tidx2 + 1).toString()));\n\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx != null ? tidx : tidx2].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t}\n\t\t\n\t\tfor (var idx = 0; idx < opcodes.length; idx++) {\n\t\t\tcode = opcodes[idx];\n\t\t\tchange = code[0];\n\t\t\tvar b = code[1];\n\t\t\tvar be = code[2];\n\t\t\tvar n = code[3];\n\t\t\tvar ne = code[4];\n\t\t\tvar rowcnt = Math.max(be - b, ne - n);\n\t\t\tvar toprows = [];\n\t\t\tvar botrows = [];\n\t\t\tfor (var i = 0; i < rowcnt; i++) {\n\t\t\t\t// jump ahead if we've alredy provided leading context or if this is the first range\n\t\t\t\tif (contextSize && opcodes.length > 1 && ((idx > 0 && i == contextSize) || (idx == 0 && i == 0)) && change==\"equal\") {\n\t\t\t\t\tvar jump = rowcnt - ((idx == 0 ? 1 : 2) * contextSize);\n\t\t\t\t\tif (jump > 1) {\n\t\t\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\tb += jump;\n\t\t\t\t\t\tn += jump;\n\t\t\t\t\t\ti += jump - 1;\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tif (!inline) node.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tnode.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skip last lines if they're all equal\n\t\t\t\t\t\tif (idx + 1 == opcodes.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\tif (inline) {\n\t\t\t\t\tif (change == \"insert\") {\n\t\t\t\t\t\taddCellsInline(node, null, n++, newTextLines, change);\n\t\t\t\t\t} else if (change == \"replace\") {\n\t\t\t\t\t\tbotrows.push(node2 = document.createElement(\"tr\"));\n\t\t\t\t\t\tif (b < be) addCellsInline(node, b++, null, baseTextLines, \"delete\");\n\t\t\t\t\t\tif (n < ne) addCellsInline(node2, null, n++, newTextLines, \"insert\");\n\t\t\t\t\t} else if (change == \"delete\") {\n\t\t\t\t\t\taddCellsInline(node, b++, null, baseTextLines, change);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// equal\n\t\t\t\t\t\taddCellsInline(node, b++, n++, baseTextLines, change);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb = addCells(node, b, be, baseTextLines, change);\n\t\t\t\t\tn = addCells(node, n, ne, newTextLines, change);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < toprows.length; i++) rows.push(toprows[i]);\n\t\t\tfor (var i = 0; i < botrows.length; i++) rows.push(botrows[i]);\n\t\t}\n\t\t\n\t\trows.push(node = ctelt(\"th\", \"author\", \"diff view generated by \"));\n\t\tnode.setAttribute(\"colspan\", inline ? 3 : 4);\n\t\tnode.appendChild(node2 = telt(\"a\", \"jsdifflib\"));\n\t\tnode2.setAttribute(\"href\", \"http://github.com/cemerick/jsdifflib\");\n\t\t\n\t\ttdata.push(node = document.createElement(\"tbody\"));\n\t\tfor (var idx in rows) rows.hasOwnProperty(idx) && node.appendChild(rows[idx]);\n\t\t\n\t\tnode = celt(\"table\", \"diff\" + (inline ? \" inlinediff\" : \"\"));\n\t\tfor (var idx in tdata) tdata.hasOwnProperty(idx) && node.appendChild(tdata[idx]);\n\t\treturn node;\n\t}\n};\n\n\ndefine(\"diffview\", function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * View diffs between versions\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('diff',[ \"jquery\", \"difflib\", \"diffview\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'diff';\n\n  /** @lends $.fn.diff */\n  var methods = {\n    /**\n     * Render diff between two strings in the target element (must\n     * be a `<div>`).\n     *\n     * @param {Object} [options]\n     * @param {String} [base] Old version\n     * @param {String} [head] New version\n     * @param {String} [baseName=\"Base text\"] Name for old version\n     * @param {String} [headName=\"Current text\"] Name for current version\n     * @param {Number} [context=3] Number of context lines\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar base        = difflib.stringAsLines(options.base);\n\tvar newtxt      = difflib.stringAsLines(options.head);\n\tvar sm          = new difflib.SequenceMatcher(base, newtxt);\n\tvar opcodes     = sm.get_opcodes();\n\tvar contextSize = options.contextSize == undefined\n\t\t\t\t? 3 : options.contextSize;\n\n\tthis.appendChild(diffview.buildView(\n\t  { baseTextLines: base,\n\t    newTextLines: newtxt,\n\t    opcodes: opcodes,\n\t    baseTextName: options.baseName || \"Base text\",\n\t    newTextName:  options.headName || \"Current text\",\n\t    contextSize: contextSize,\n\t    viewType: $(\"inline\").checked ? 1 : 0\n\t  }));\n      });\n    }\n  }; // methods\n\n  /**\n   * This class is a jQuery wrapper around\n   *\n   * @class diff\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.diff = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Defines the interaction with the `File` menu and gitty storage\n * module of the server.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('storage',[ \"jquery\", \"config\", \"modal\", \"form\", \"gitty\",\n\t \"history\", \"tabbed\", \"utils\",\n\t \"laconic\", \"diff\"\n       ],\n       function($, config, modal, form, gitty, history, tabbed, utils) {\n\n(function($) {\n  var pluginName = 'storage';\n\n  var defaults = {\n    typeName: \"program\",\n    is_clean: true,\n    markClean: function(clean) {}\n  }\n\n  /** @lends $.fn.storage */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Function} options.setValue sets the new document value\n     * @param {Function} options.getValue gets the current document value\n     * @param {Function} options.changeGen identifies the current state\n     * @param {String}   options.cleanData identifies the clean state\n     * @param {String}\t options.cleanCheckpoint is the action that\n     * caused the clean state\n     * @param {Any}\t options.cleanGeneration identifies the clean\n     * state.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, defaults, options);\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.addClass(\"storage\");\n\telem.storage('update_tab_title');\n\n\t/**\n\t * Execute a method on the storage plugin. This particularly\n\t * avoids handling events that have bubbled up from children\n\t * that have a storage plugin attached, which may happen in\n\t * notebooks.\n\t */\n\tfunction onStorage(ev, method) {\n\t  var target = $(ev.target);\n\n\t  if ( target.hasClass(\"storage\") && target.is(\":visible\") ) {\n\t    var rc = target.storage.apply(\n\t\t       target,\n\t\t       Array.prototype.slice.call(arguments, 1));\n\t    if ( rc == \"propagate\" )\n\t      return;\n\t  }\n\t  ev.stopPropagation();\n\t}\n\n\telem.on(\"save\", function(ev, data) {\n\t  onStorage(ev, 'save', data);\n\t});\n\telem.on(\"download\", function(ev) {\n\t  onStorage(ev, 'download');\n\t});\n\telem.on(\"fileInfo\", function(ev) {\n\t  onStorage(ev, 'info');\n\t});\n\telem.on(\"diff\", function(ev) {\n\t  onStorage(ev, 'diff');\n\t});\n\telem.on(\"revert\", function(ev) {\n\t  onStorage(ev, 'revert');\n\t});\n\telem.on(\"reload\", function(ev) {\n\t  onStorage(ev, 'reload');\n\t});\n\telem.on(\"chat-about-file\", function(ev) {\n\t  onStorage(ev, 'chat');\n\t});\n\telem.on(\"follow-file\", function(ev) {\n\t  onStorage(ev, 'follow');\n\t});\n\telem.on(\"activate-tab\", function(ev) {\n\t\t\t\t\t\t/* TBD: What exactly? */\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  elem.storage('markClean', clean);\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  if ( !val )\n\t    elem.storage('update_tab_title');\n\t});\n\n\t$(window).bind(\"beforeunload\", function(ev) {\n\t  return elem.storage('unload', \"beforeunload\", ev);\n\t});\n\n\telem.storage('chat', (data.meta||{}).chat||'update');\n      });\n    },\n\n    /**\n     * @returns {Boolean} `true` if the storage can represent the\n     * requested type\n     */\n    supportsType: function(src) {\n      var data = this.data(pluginName);\n      var type = tabbed.tabTypes[data.typeName];\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( (src.meta && src.meta.name) || src.url )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar ext  = name.split('.').pop();\n\n\tif ( ext != type.dataType )\n\t  return false;\n      }\n\n      return true;\n    },\n\n    /**\n     * @param {String|Object} src becomes the new contents of the editor\n     * @param {String} src.data contains the data in the case that\n     * `src` is an object.\n     * @return {Object|String} The string `\"propagate\"` is\n     * returned if the provided src does not match the supported type.\n     */\n    setSource: function(src) {\n      var data = this.data(pluginName);\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( !this.storage('supportsType', src) )\n\treturn undefined;\n\n      if ( this.storage('unload', \"setSource\") == false )\n\treturn false;\n\n      if ( src.meta ) {\n\tdata.file = src.meta.name;\n\tdata.meta = src.meta;\n\tdata.url  = null;\n\tif ( src.meta.symbolic == \"HEAD\" )\n\t  src.url = config.http.locations.web_storage + src.meta.name;\n      } else {\n\tdata.file = null;\n\tdata.meta = null;\n      }\n      data.url     = src.url;\n      data.st_type = src.st_type;\n      data.chats   = src.chats;\n\n      data.setValue(src);\n      data.cleanGeneration = data.changeGen();\n      data.cleanData       = data.getValue();\n      data.cleanCheckpoint = src.cleanCheckpoint || \"load\";\n\n      this.storage('update_tab_title');\n\n      if ( !src.url       ) src.url = config.http.locations.swish;\n      if ( !src.noHistory ) history.push(src);\n\n      this.storage('chat', src.chat||(src.meta||{}).chat||'update');\n      $(\".storage\").storage('chat_status', true);\n\n      return this;\n    },\n\n    /**\n     * Update the label and icon shown in the tab\n     */\n    update_tab_title: function(action) {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar docid = elem.storage('docid');\n\n\tif ( action == 'chats++' ) {\n\t  elem.tabbed('chats++', docid);\n\t} else {\n\t  var data  = elem.data(pluginName);\n\t  var type  = tabbed.tabTypes[data.typeName];\n\n\t  var title = (filebase(data.file) ||\n\t\t       filebase(basename(data.url)) ||\n\t\t       type.label);\n\n\t  if ( docid && data.chats )\n\t    data.chats.docid = docid;\n\n\t  elem.tabbed('title', title, type.dataType);\n\t  elem.tabbed('chats', data.chats);\n\t}\n      });\n    },\n\n    /**\n     * Load document from the server.\n     */\n    load: function(file) {\n      if ( file ) {\n\tvar that = this;\n\tvar options = this.data(pluginName);\n\n\t$.ajax({ url: config.http.locations.web_storage + file,\n\t\t dataType: \"text\",\n\t\t success: function(data) {\n\t\t   that.storage('setSource',\n\t\t\t\t{ data: data,\n\t\t\t\t  meta: { name:file\n\t\t\t\t        }\n\t\t\t\t});\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      }\n      return this;\n    },\n\n    /**\n     * Revert to upstream version\n     */\n    revert: function() {\n      var data = this.data(pluginName);\n\n      data.setValue(data.cleanData);\n      data.cleanGeneration = data.changeGen();\n      data.markClean(true);\n      return this;\n    },\n\n    /**\n     * Reload from server\n     */\n    reload: function() {\n      var elem = this;\n      var data = elem.data(pluginName);\n      var url  = config.http.locations.web_storage +\n\t\t encodeURI(data.file);\n\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: { format: \"json\" },\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\t\t reply.noHistory = true;\n\t\t elem.storage('setSource', reply);\n\t\t $(\"#chat\").trigger('send',\n\t\t\t\t    { type:'reloaded',\n\t\t\t\t      file:data.file,\n\t\t\t\t      commit:reply.meta.commit\n\t\t\t\t    });\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Save the current document to the server.  Depending on the\n     * arguments, this function implements several forms of saving:\n     *\n     *   - Without arguments arguments, it implements \"Save\".\n     *   - With (\"as\"), it implements \"Save as\", which opens a\n     *     dialog which calls this method again, but now with\n     *     meta-data in the first argument.\n     *   - With ({...}) it performs the save operation of \"Save as\"\n     *   - With ({...}, \"only-meta-data\") it only updates the meta\n     *     data on the server.\n     *\n     * @param {Object} [meta] provides additional meta-information.\n     * Currently defined fields are `author`, `email`,\n     * `title`, `keywords` and `description`. Illegal fields are ignored\n     * by the server.\n     * @param {String} [what] If `\"only-meta-data\"`, only the meta-data\n     * is updated.\n     */\n    save: function(meta, what) {\n      var data   = this.data(pluginName);\n      var type   = tabbed.tabTypes[data.typeName];\n      var url    = config.http.locations.web_storage;\n      var method = \"POST\";\n      var elem   = this;\n      var post;\n\n      if ( (data.st_type == \"filesys\" || data.st_type == \"external\") && data.url )\n\treturn this.storage('saveURL');\n\n      if ( meta == \"as\" ) {\n\tthis.storage('saveAs');\n\treturn this;\n      }\n\n      if ( data.file &&\n\t   !(meta && meta.default) &&\n\t   (!meta || meta.name == data.file) ) {\n\turl += encodeURI(data.file);\n\tmethod = \"PUT\";\n      }\n\n      if ( what == \"only-meta-data\" ) {\n\tmeta = gitty.reduceMeta(meta, data.meta)\n\tif ( $.isEmptyObject(meta) ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n\tpost = { update: \"meta-data\" };\n      } else if ( method == \"POST\" ) {\n\tpost = { data: data.getValue(),\n\t\t type: type.dataType\n\t       };\n      } else {\n\tif ( !data.isClean(data.cleanGeneration) ) {\n\t  post = { data: data.getValue(),\n\t\t   type: type.dataType\n\t\t };\n\t} else if ( gitty.diffTags(data.meta.tags, meta.tags) == null ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n      }\n\n      if ( meta )\n\tpost.meta = meta;\n      if ( data.meta )\n\tpost.previous = data.meta.commit;\n\n      $.ajax({ url: url,\n               dataType: \"json\",\n\t       contentType: \"application/json\",\n\t       type: method,\n\t       data: JSON.stringify(post),\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   if ( data.meta &&\n\t\t\tdata.meta.example != reply.meta.example ) {\n\t\t     elem.closest(\".swish\").trigger('examples-changed');\n\t\t   }\n\t\t   data.file = reply.file;\n\t\t   data.meta = reply.meta;\n\t\t   data.st_type = \"gitty\";\n\t\t   data.cleanGeneration = data.changeGen();\n\t\t   data.cleanData       = data.getValue();\n\t\t   data.cleanCheckpoint = \"save\";\n\t\t   data.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\n\t\t   if ( method == \"POST\" )\n\t\t     data.chats = {\t\t/* forked file has no chats */\n\t\t       docid: elem.storage('docid'),\n\t\t       total: 0\n\t\t     };\n\t\t   elem.storage('update_tab_title');\n\t\t   elem.storage('chat', (data.meta||{}).chat||'update');\n\t\t   $(\".storage\").storage('chat_status', true);\n\t\t   history.push(reply);\n\t\t }\n\t       },\n\t       error: function(jqXHR, textStatus, errorThrown) {\n\t\t if ( jqXHR.status == 409 ) {\n\t\t   elem.storage('resolveEditConflict',\n\t\t\t\tJSON.parse(jqXHR.responseText));\n\t\t } else if ( jqXHR.status == 403 ) {\n\t\t   modal.alert(\"Permission denied.  Please try a different name\");\n\t\t } else {\n\t\t   alert('Save failed; click \"ok\" to try again');\n\t\t   elem.storage('saveAs');\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Provide a Save As dialog\n     */\n    saveAs: function(options) {\n      var data = this.data(pluginName);\n      var meta    = data.meta||{};\n      var editor  = this;\n      var update  = Boolean(data.file);\n      var fork    = data.meta && meta.symbolic != \"HEAD\" && !meta.default;\n      var type    = tabbed.tabTypes[data.typeName];\n      var profile = $(\"#login\").login('get_profile',\n\t\t\t\t      [ \"display_name\", \"avatar\", \"email\",\n\t\t\t\t\t\"identity\"\n\t\t\t\t      ]);\n      var author  = profile.display_name;\n      var modify  = meta.modify;\n      var canmodify;\n\n      if ( meta.public === undefined )\n\tmeta.public = true;\n\n      if ( profile.identity ) {\n\tif ( !modify )\n\t  modify = [\"login\", \"owner\"];\n      } else\n      { modify = [\"any\", \"login\", \"owner\"];\n      }\n\n      canmodify = ( profile.identity == meta.identity ||\n\t\t    (profile.identity && !(meta.identity||meta.user)) );\n\n      options = options||{};\n\n      function saveAsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"},\n\t    form.fields.hidden(\"identity\", profile.identity),\n\t    form.fields.hidden(\"default\", meta.default),\n\t    form.fields.hidden(\"chat\", meta.chat),\n\t    profile.identity ? undefined :\n\t\t\t       form.fields.hidden(\"avatar\", profile.avatar),\n\t    form.fields.fileName(fork ? null: data.file,\n\t\t\t\t meta.public, meta.example),\n\t    form.fields.title(meta.title),\n\t    form.fields.author(author, profile.identity),\n\t    update ? form.fields.commit_message() : undefined,\n\t    form.fields.tags(meta.tags),\n\t    form.fields.modify(modify, canmodify),\n\t    form.fields.follow(profile.email),\n\t    form.fields.buttons(\n\t      { label: fork   ? \"Fork \"+type.label :\n\t\t       update ? \"Update \"+type.label :\n\t\t\t\t\"Save \"+type.label,\n\t\taction: function(ev, as) {\n\t\t\t  editor.storage('save', as);\n\t\t\t  return false;\n\t\t\t}\n\t      })));\n      }\n\n      form.showDialog({ title: options.title ? options.title :\n\t\t\t       fork   ? \"Fork from \"+meta.commit.substring(0,7) :\n\t\t\t       update ? \"Save new version\" :\n\t\t\t                \"Save \"+type.label+\" as\",\n\t\t\tbody:  saveAsBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Save data to the URL it was loaded from.\n     * FIXME: feedback, allow recompilation (if Prolog source)\n     */\n    saveURL: function() {\n      var options = this.data(pluginName);\n      var data = options.getValue();\n      var type = tabbed.type(options.url)||{};\n      var elem = this;\n\n      if ( options.isClean(options.cleanGeneration) ) {\n\talert(\"No change\");\n\treturn this;\n      }\n\n      $.ajax({ url: options.url,\n               dataType: \"json\",\n\t       contentType: type.contentType||\"text/plain\",\n\t       type: \"PUT\",\n\t       data: data,\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   options.cleanGeneration = options.changeGen();\n\t\t   options.cleanData       = options.getValue();\n\t\t   options.cleanCheckpoint = \"save\";\n\t\t   options.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t if ( jqXHR.status == 403 ) {\n\t\t   var url = options.url;\n\t\t   delete(options.meta);\n\t\t   delete(options.st_type);\n\t\t   delete(options.url);\n\t\t   elem.storage('saveAs', {\n\t\t     title: \"<div class='warning'>Could not save to \"+url+\n\t\t\t    \"</div> Save a copy as\"\n\t\t   });\n\t\t } else\n\t\t { modal.ajaxError(jqXHR);\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t    EDIT CONFLICTS\t*\n\t\t *******************************/\n\n    resolveEditConflict: function(options) {\n      var bdiv;\n\n      options.storage = this;\n\n      function body() {\n\tvar elem = $(this);\n\n\telem.addClass(\"edit-conflict\");\n\n\tfunction tabLabel(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\ttabs = $($.el.div({class:\"tab-content\"}));\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tabLabel(\"My edits\",    true,  \"merge-my-edits\"),\n\t  tabLabel(\"Their edits\", false, \"merge-server-edits\"),\n\t  tabLabel(\"Conflicts\",   false, \"merge-conflicts\")));\n\telem.append(tabs);\n\n\tfunction tabContent(id, cls) {\n\t  tabs.append($.el.div({class:\"tab-pane fade \"+id+\" \"+cls, id:id}));\n\t  elem.find('[href=\"#'+id+'\"]').on(\"show.bs.tab\", function(ev) {\n\t    elem.storage(id);\n\t  });\n\t}\n\n\ttabContent(\"merge-my-edits\",    \"in active\");\n\ttabContent(\"merge-server-edits\", \"\");\n\ttabContent(\"merge-conflicts\",   \"\");\n\n\telem.data(\"edit-conflict\", options);\n\n\telem.storage('merge-my-edits');\n\n\telem.append(bdiv =\n\t  $.el.div({class:\"form-group\"},\n\t\t   $.el.button({name:\"merge\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Merge\"),\n\t\t   $.el.button({name:\"discard-my-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard my changes\"),\n\t\t   $.el.button({name:\"discard-server-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard changes on server\"),\n\t\t   $.el.button({name:\"cancel\",\n\t\t\t\tclass:\"btn btn-danger\",\n\t\t\t\t'data-dismiss':\"modal\"},\n\t\t\t       \"Cancel\")));\n\n\n\t$(bdiv).on(\"click\", \"button\", function(ev) {\n\t  elem.storage('editConflictAction', $(ev.target).attr(\"name\"));\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n      }\n\n      form.showDialog({ title: \"Edit conflict\",\n\t\t\tbody: body\n\t\t      });\n\n      return this;\n    },\n\n    'merge-my-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-my-edits\")\n        .empty()\n        .append(udiff(data.edit.me.data));\n    },\n\n    'merge-server-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-server-edits\")\n        .empty()\n        .append(udiff(data.edit.server.data));\n    },\n\n    'merge-conflicts': function() {\n      var data = $(this).data(\"edit-conflict\");\n      var tab  = $(this).find(\".merge-conflicts\");\n\n      tab.empty();\n      if ( data.patch_status != 0 ) {\n\ttab.append(editConflicts(data.merged));\n      } else {\n\ttab.html(\"No merge conflicts\");\n      }\n    },\n\n    editConflictAction: function(action) {\n      var options = $(this).data(\"edit-conflict\");\n      var data = $(options.storage).data(pluginName);\n\n      if ( action == \"merge\" ) {\n\tdata.setValue(options.merged);\n\tdata.meta.commit = options.edit.server.to.commit;\n      } else if ( action == \"discard-my-edits\" ) {\n\t$(options.storage).storage('reload');\n      } else if ( action == \"discard-server-edits\" ) {\n\tvar data = $(options.storage).data(pluginName);\n\tdata.meta.commit = options.edit.server.to.commit;\n      }\n    },\n\n\n\t\t /*******************************\n\t\t *\t   DOWNLOADING\t\t*\n\t\t *******************************/\n\n    download: function() {\n      var options = this.data(pluginName);\n      var type    = tabbed.tabTypes[options.typeName];\n      var data    = options.getValue();\n      var href    = \"data:text/plain;charset=UTF-8,\"\n\t          + encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:options.file||(\"swish.\"+type.dataType)\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {String|Boolean} [options.data=false] if `true`, always\n     * include the content of the storage.  If `\"if_modified\"`, only\n     * include the content if it is modified.\n     * @param {String} [options.type] if provided, only return objects\n     * associated with files with the given extension.\n     * @return {Array.Object}\n     */\n    getData: function(options) {\n      var result = [];\n\n      options = options||{};\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar obj = {};\n\n\tobj.type = data.type;\n\tif ( data.url ) obj.url = data.url;\n\tif ( data.meta ) {\n\t  function copyMeta(name) {\n\t    if ( data.meta[name] )\n\t      obj[name] = data.meta[name];\n\t  }\n\n\t  copyMeta(\"name\");\n\t  copyMeta(\"path\");\n\t  copyMeta(\"modified\");\n\t  copyMeta(\"loaded\");\n\t  copyMeta(\"modified_since_loaded\");\n\t  copyMeta(\"module\");\n\t}\n\n\tif ( $(this).closest(\".tab-pane.active\").length == 1 )\n\t  obj.active = true;\n\n\tif ( !options.type ||\n\t     ( options.name &&\n\t       options.name.split(\".\").pop() == options.type ) ) {\n\t  if ( options.data ) {\n\t    var value = data.getValue();\n\n\t    obj.modified = (value != data.cleanData);\n\t    if ( options.data == true ||\n\t\t (obj.modified && options.data == \"if_modified\") )\n\t      obj.data = value;\n\t  }\n\n\t  result.push(obj);\n        }\n      });\n\n      return result;\n    },\n\n    /**\n     * @return {jQuery|undefined} the jQuery storage element that\n     * matches `to`\n     */\n    match: function(to) {\n      for(var k=0; k<this.length; k++) {\n\tme = $(this[k]);\n\tvar data = me.data(pluginName);\n\n\tif ( to.file && to.file == data.file )\n\t  return me;\n\tif ( to.url && to.url == data.url )\n\t  return me;\n      }\n    },\n\n    /**\n     * Expose associateted tab\n     * @return {jQuery|undefined} storage plugin if tab could be\n     * exposed.\n     */\n    expose: function(reason) {\n      var tab = this.closest(\".tab-pane\");\n      if ( tab.length == 1 ) {\n\tvar tabbed = tab.closest(\".tabbed\");\n\ttabbed.tabbed('show', tab.attr('id'));\n\tif ( reason )\n\t  modal.feedback({ html: reason,\n\t                   owner: this\n\t                 });\n\n\treturn this;\n      }\n    },\n\n    /**\n     * Provide information about the current source in a modal\n     * dialog.\n     */\n    info: function() {\n      var data = this.data(pluginName);\n      var meta = data.meta||{};\n      var editor = this;\n      var title;\n\n      if ( data.st_type == \"gitty\" ) {\n\ttitle = $().gitty('title', meta);\n      } else if ( data.st_type == \"filesys\" ) {\n\ttitle = \"File system -- \" + basename(meta.path);\n      } else if ( data.st_type == \"external\" ) {\n\ttitle = \"External -- \" + data.url;\n      } else {\n\ttitle = \"Scratch source\";\n      }\n\n      function infoBody() {\n\tif ( data.st_type == \"gitty\" ) {\n\t  data.editor = editor;\t\t/* circular reference */\n\t  this.gitty(data);\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  filesysInfo(this, meta);\n\t} else if ( !data.st_type ) {\n\t  this.append($.el.p(\"The source is not associated with a file. \",\n\t\t\t     \"Use \",\n\t\t\t     $.el.b(\"Save ...\"),\n\t\t\t     \" to save the source with meta information.\"\n\t\t\t    ));\n\t}\n      }\n\n      form.showDialog({ title: title,\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Generate diff relative to last checkpoint.\n     */\n    diff: function() {\n      var data = this.data(pluginName);\n      var baseName = { load: \"Loaded text\",\n\t\t       new: \"New text\",\n\t\t       save: \"Saved text\"\n\t\t     };\n\n      function infoBody() {\n\tvar diff = $.el.div();\n\tvar current = data.getValue();\n\n\tthis.append(diff);\n\n\tif ( current == data.cleanData ) {\n\t  $(diff).append($.el.p(\"No changes\"));\n\t} else {\n\t  var rb;\n\t  var buttons = $.el.div({ class:\"btn-group diff\",\n\t\t\t           role:\"group\"\n\t\t\t\t },\n\t\t\t\t $.el.button({ name:\"close\",\n\t\t\t\t\t       'data-dismiss':\"modal\",\n\t\t\t\t               class:\"btn btn-primary\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Close\"),\n\t\t\t\t rb=\n\t\t\t\t $.el.button({ name:\"revert\",\n\t\t\t\t               class:\"btn btn-danger\",\n\t\t\t\t\t       'data-dismiss':\"modal\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Revert changes\"));\n\t  $(diff).diff({ base: data.cleanData,\n\t\t\t head: current,\n\t\t\t baseName: baseName[data.cleanCheckpoint]\n\t\t       });\n\t  this.append($.el.div({class: \"wrapper text-center\"}, buttons));\n\t  $(rb).on(\"click\", function(ev) {\n\t    $(\".swish-event-receiver\").trigger(\"revert\");\n\t  });\n\t  this.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t}\n      }\n\n      form.showDialog({ title: \"Changes since \" + baseName[data.cleanCheckpoint],\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Get a description of the selection to be transferred with a\n     * chat message.\n     */\n    getSelection: function() {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\tvar sel = this.prologEditor('getSelection');\n\treturn sel ? sel[0].selections : null;\n      } else if ( this.hasClass(\"notebook\") ) {\n\treturn this.notebook('getSelection');\n      } else {\n\tconsole.log(\"Don't know how to get selection from\", this);\n      }\n    },\n\n    /**\n     * @returns {String} description of the selection to use inside\n     * a link or button\n     */\n    getSelectionLabel: function(sel) {\n      function editorLabel(sels) {\n\tvar label = \"\";\n\tfor(var i=0; i<sels.length; i++) {\n\t  var s = sels[i];\n\t  if ( label != \"\" )\n\t    label += \";\";\n\t  label += \"@L\"+(s.from.line+1);\n\t  if ( s.to.line != s.from.line )\n\t    label += \"-\"+(s.to.line+1);\n\t}\n\treturn label;\n      }\n\n      if ( sel[0].selections ) {\n\tvar label = \"\";\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var ed = sel[i];\n\t  if ( label != \"\" )\n\t    label += \",\";\n\t  label += (ed.cell||\"\") + editorLabel(ed.selections);\n\t}\n\treturn label;\n      } else {\n\treturn editorLabel(sel);\n      }\n    },\n\n    /**\n     * Restore a selection retrieved using `getSelection`.\n     */\n    restoreSelection: function(sel) {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\treturn this.prologEditor('restoreSelection', sel);\n      } else if ( this.hasClass(\"notebook\") ) { /* notebook */\n\treturn this.notebook('restoreSelection', sel);\n      } else {\n\tconsole.log(sel);\n      }\n    },\n\n    /**\n     * Get a document identification string for chats, status, etc.\n     * @param {String} [type] defines the type of storage supported\n     * @param {Object} [data] is the data object from which to derive\n     * the id.\n     * @return {String} identifier for the document\n     */\n    docid: function(type, data) {\n      data = data||this.data(pluginName);\n\n      if ( !type || type == data.st_type ) {\n\tvar meta = data.meta||{};\n\n\tif ( data.st_type == \"gitty\" ) {\n\t  return \"gitty:\"+meta.name;\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  return \"filesys:\"+meta.path;\n\t} else if ( data.st_type == \"external\" ) {\n\t  return \"url:\"+data.url;\n\t}\n      }\n    },\n\n    /**\n     * Open the chat window for the current file\n     */\n    chat: function(action) {\n      var data = this.data(pluginName);\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tvar chat = this.closest(\".tab-pane\").find(\".chatroom\");\n\n\tif ( chat.length > 0 ) {\n\t  if ( action == 'update' )\n\t    chat.chatroom('docid', docid, 'close');\n\t  else\n\t    utils.flash(chat);\n\t} else if ( action != 'update' ) {\n\t  var percentage = (action == 'large' ? 80 : 20);\n\t  chat = $($.el.div({class:\"chatroom\"}));\n\n\t  chat.chatroom({docid:docid});\n\t  this.tile('split', chat, \"below\", percentage, 150)\n\t      .addClass(\"chat-container\");\n\t}\n      } else if ( action == 'update' ) {\n\tthis.storage('close_chat');\n      } else if ( !data.st_type ) {\n\tmodal.alert(\"You can only chat about a saved document.<br>\"+\n\t\t    \"Please save your document and try again.\");\n      } else {\n\tmodal.alert(\"The chat facility is only available for \"+\n\t\t    \"user-saved files.<br>\"+\n\t\t    \"You can use the <b>Open hangout</b> menu from \"+\n\t\t    \"the top-right bell to access the hangout room.\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Close associated chat\n     */\n    close_chat: function() {\n      this.closest(\".chat-container\").find(\".chatroom\").chatroom('close');\n    },\n\n    /**\n     * Act upon the arrival of a chat message.  Update the tab title.\n     * If the message is not displayed and it is not permanent\n     * (`create == false`) we should not update the counter.\n     */\n    chat_message: function(msg) {\n      if ( !msg.displayed && msg.create == false )\n\treturn this;\n\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( msg.docid == elem.storage('docid') ) {\n\t  var data = elem.data(pluginName);\n\n\t  if ( data.chats ) {\n\t    if ( data.chats.total != undefined ) data.chats.total++;\n\t    if ( data.chats.count != undefined ) data.chats.count++;\n\t  } else {\n\t    data.chats = {total:1};\n\t  }\n\n\t  elem.storage('update_tab_title', 'chats++');\n\t}\n      });\n    },\n\n    /**\n     * Edit the _follow_ options for this file.\n     */\n\n    follow: function() {\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tmodal.server_form({\n\t  title: \"Follow file options\",\n\t  url:   config.http.locations.follow_file_options,\n\t  data:  {docid: docid}\n\t});\n      } else {\n\tmodal.alert(\"Sorry, can only follow files\");\n      }\n    },\n\n    /**\n     * Called if the editor is destroyed to see whether it has pending\n     * modifications.\n     *\n     * @param {String} why is one of `\"beforeunload\" if the window is\n     * left or \"setSource\" if the source will be replaced.\n     */\n    unload: function(why, ev) {\n      var data = this.data(pluginName);\n\n      if ( !data )\t\t\t\t/* how can this happen? */\n\treturn undefined;\n\n      if ( data.meta ) {\n\thistory.addRecent({ st_type: \"gitty\",\n\t\t\t    id:\t  data.meta.name\t/* FIXME: add hash? */\n\t\t\t  });\n      }\n\n      if ( data.cleanData != data.getValue() ) {\n\tif ( why == \"beforeunload\" ) {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost if you leave the page\";\n\n\t  ev = ev||window.event;\n\t  if ( ev )\n\t    ev.returnValue = message;\n\n\t  return message;\n\t} else {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost\"+\n\t\t\t( why == \"setSource\" ? \" if you load a new program\" :\n\t\t\t  why == \"closetab\"  ? \" close this tab\" : \"\"\n\t\t\t);\n\n\t  return confirm(message);\n\t}\n      }\n\n      return undefined;\n    },\n\n    /**\n     * Called if this element is inside a tab this is being closed\n     */\n    close: function() {\n    },\n\n    /**\n     * maintain `data.is_clean`\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      data.is_clean = clean;\n    },\n\n    /**\n     * Broadcast all open (gitty) files. This is used to synchronise\n     * state.  Each state object has the property `file`.  If the file\n     * is locally modified, `state.modified` is `true` and if the file\n     * is the visible one, `state.visible` is true\n     * @param {Bool} [always] if `true`, also report if no files are\n     * open.\n     */\n    chat_status: function(always) {\n      var opened = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\n\tif ( data.st_type == \"gitty\" && data.meta && data.meta.name ) {\n\t  var state = { file:  data.meta.name };\n\n\t  if ( !data.is_clean ) state.modified = true;\n\t  if ( $(this).is(\":visible\") ) state.visible = true;\n\t  opened.push(state);\n\t}\n      });\n\n      if ( always || opened.length > 0 )\n\t$(\"#chat\").trigger('send',\n\t\t\t   { type:'has-open-files',\n\t\t\t     files:opened\n\t\t\t   });\n    }\n  }; // methods\n\n  function capitalizeFirstLetter(string) {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  function filesysInfo(form, meta) {\n    var table = $.el.table({class:\"table table-striped\"});\n\n    $(table).append($.el.tr($.el.th(\"Path\"),\n\t\t\t    $.el.td(meta.path)));\n    $(table).append($.el.tr($.el.th(\"Modified\"),\n\t\t\t    $.el.td(new Date(meta.last_modified*1000)\n\t\t\t\t    .toLocaleString())));\n    $(table).append($.el.tr($.el.th(\"Loaded\"),\n\t\t\t    $.el.td(meta.modified_since_loaded ? \"yes (modified)\":\n\t\t\t\t    meta.loaded ? \"yes\" : \"no\")));\n\n    form.append(table);\n  }\n\n  function errorString(action, error) {\n    if ( error.error == \"file_exists\" ) {\n      return action + \": file exists: \" + error.file;\n    }\n\n    return JSON.stringify(error);\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class storage\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.storage = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  function filebase(file) {\n    return file ? file.split('.').slice(0,-1).join(\".\") : null;\n  }\n\n  function basename(path) {\n    return path ? path.split('/').pop() : null;\n  }\n\n  function udiff(diff) {\n    if ( diff ) {\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n      return pre;\n    } else {\n      return $($.el.div({class:\"udiff\"}, \"No changes\"));\n    }\n  }\n\n  function editConflicts(merged) {\n    var lines = merged.split(\"\\n\");\n    var pre = $($.el.pre({class:\"udiff\"}));\n    var cls = null;\n\n    function addLine(line, cls) {\n      pre.append($.el.span({class:cls}, line),\n\t\t $.el.br());\n    }\n\n    for(var i=0; i<lines.length; i++) {\n      var line = lines[i];\n\n      if ( line == \"<<<<<<<\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-me\";\n      } else if ( cls == \"edit-conflict-me\" && line == \"=======\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-them\";\n      } else if ( cls == \"edit-conflict-them\" && line == \">>>>>>>\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = null;\n      } else if ( cls ) {\n\taddLine(line, cls);\n     }\n   }\n\n   return pre;\n  }\n});\n\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.4.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2016\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n  'use strict';\n\n  var root = typeof window === 'object' ? window : {};\n  var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n  if (NODE_JS) {\n    root = global;\n  }\n  var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n  var AMD = typeof define === 'function' && define.amd;\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var EXTRA = [-2147483648, 8388608, 32768, 128];\n  var SHIFT = [24, 16, 8, 0];\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n  var blocks = [];\n\n  var createOutputMethod = function (outputType) {\n    return function (message) {\n      return new Sha1(true).update(message)[outputType]();\n    };\n  };\n\n  var createMethod = function () {\n    var method = createOutputMethod('hex');\n    if (NODE_JS) {\n      method = nodeWrap(method);\n    }\n    method.create = function () {\n      return new Sha1();\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createOutputMethod(type);\n    }\n    return method;\n  };\n\n  var nodeWrap = function (method) {\n    var crypto = require('crypto');\n    var Buffer = require('buffer').Buffer;\n    var nodeMethod = function (message) {\n      if (typeof message === 'string') {\n        return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n      } else if (message.constructor === ArrayBuffer) {\n        message = new Uint8Array(message);\n      } else if (message.length === undefined) {\n        return method(message);\n      }\n      return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n    };\n    return nodeMethod;\n  };\n\n  function Sha1(sharedMemory) {\n    if (sharedMemory) {\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      this.blocks = blocks;\n    } else {\n      this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    }\n\n    this.h0 = 0x67452301;\n    this.h1 = 0xEFCDAB89;\n    this.h2 = 0x98BADCFE;\n    this.h3 = 0x10325476;\n    this.h4 = 0xC3D2E1F0;\n\n    this.block = this.start = this.bytes = 0;\n    this.finalized = this.hashed = false;\n    this.first = true;\n  }\n\n  Sha1.prototype.update = function (message) {\n    if (this.finalized) {\n      return;\n    }\n    var notString = typeof(message) !== 'string';\n    if (notString && message.constructor === root.ArrayBuffer) {\n      message = new Uint8Array(message);\n    }\n    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n    while (index < length) {\n      if (this.hashed) {\n        this.hashed = false;\n        blocks[0] = this.block;\n        blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      }\n\n      if(notString) {\n        for (i = this.start; index < length && i < 64; ++index) {\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < 64; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n\n      this.lastByteIndex = i;\n      this.bytes += i - this.start;\n      if (i >= 64) {\n        this.block = blocks[16];\n        this.start = i - 64;\n        this.hash();\n        this.hashed = true;\n      } else {\n        this.start = i;\n      }\n    }\n    return this;\n  };\n\n  Sha1.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex;\n    blocks[16] = this.block;\n    blocks[i >> 2] |= EXTRA[i & 3];\n    this.block = blocks[16];\n    if (i >= 56) {\n      if (!this.hashed) {\n        this.hash();\n      }\n      blocks[0] = this.block;\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n    }\n    blocks[15] = this.bytes << 3;\n    this.hash();\n  };\n\n  Sha1.prototype.hash = function () {\n    var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n    var f, j, t, blocks = this.blocks;\n\n    for(j = 16; j < 80; ++j) {\n      t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n      blocks[j] =  (t << 1) | (t >>> 31);\n    }\n\n    for(j = 0; j < 20; j += 5) {\n      f = (b & c) | ((~b) & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1518500249 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | ((~a) & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | ((~e) & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | ((~d) & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | ((~c) & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 40; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1859775393 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 60; j += 5) {\n      f = (b & c) | (b & d) | (c & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 1894007588 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | (a & c) | (b & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | (e & b) | (a & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | (d & a) | (e & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | (c & e) | (d & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 80; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 899497514 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 899497514 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 899497514 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 899497514 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 899497514 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    this.h0 = this.h0 + a << 0;\n    this.h1 = this.h1 + b << 0;\n    this.h2 = this.h2 + c << 0;\n    this.h3 = this.h3 + d << 0;\n    this.h4 = this.h4 + e << 0;\n  };\n\n  Sha1.prototype.hex = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n           HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n           HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n           HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n           HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n           HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n           HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n           HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n           HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n           HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n           HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n           HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n           HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n           HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n           HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n           HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n           HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n           HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n           HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n           HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n  };\n\n  Sha1.prototype.toString = Sha1.prototype.hex;\n\n  Sha1.prototype.digest = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return [\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n    ];\n  };\n\n  Sha1.prototype.array = Sha1.prototype.digest;\n\n  Sha1.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var buffer = new ArrayBuffer(20);\n    var dataView = new DataView(buffer);\n    dataView.setUint32(0, this.h0);\n    dataView.setUint32(4, this.h1);\n    dataView.setUint32(8, this.h2);\n    dataView.setUint32(12, this.h3);\n    dataView.setUint32(16, this.h4);\n    return buffer;\n  };\n\n  var exports = createMethod();\n\n  if (COMMON_JS) {\n    module.exports = exports;\n  } else {\n    root.sha1 = exports;\n    if (AMD) {\n      define('sha1',[],function () {\n        return exports;\n      });\n    }\n  }\n})();\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Manage the cell structure of a notebook modelled after IPython\n * NoteBook.  The nodebook consists of a toolbar with a series of\n * buttons and manages a list of cells.  The file defines two plugins\n * `notebook`, implementing the overall notebook and `nbCell`,\n * implementing a single cell.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('notebook',[ \"jquery\", \"config\", \"tabbed\", \"form\",\n\t \"preferences\", \"modal\", \"prolog\", \"links\",\n\t \"laconic\", \"runner\", \"storage\", \"sha1\"\n       ],\n       function($, config, tabbed, form, preferences, modal, prolog, links) {\n\nvar cellTypes = {\n  \"program\":  { label:\"Program\",  prefix:\"p\"   },\n  \"query\":    { label:\"Query\",    prefix:\"q\"   },\n  \"markdown\": { label:\"Markdown\", prefix:\"md\"  },\n  \"html\":     { label:\"HTML\",     prefix:\"htm\" }\n};\n\n(function($) {\n  var pluginName = 'notebook';\n  var clipboard = null;\n\n  /** @lends $.fn.notebook */\n  var methods = {\n    /**\n     * Initialize a Prolog Notebook.\n     * @param {Object} options\n     * @param {String} [options.value] provides the initial content\n     * @param {Boolean} [options.fullscreen] open notebook in fullscreen\n     * mode.\n     */\n    _init: function(options) {\n      options = options||{};\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage info */\n\tvar data = {};\t\t\t/* private data */\n\tvar toolbar, content;\n\n\telem.addClass(\"notebook\");\n\telem.addClass(\"swish-event-receiver\");\n\n\tfunction notebookMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"notebook-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Delete cell\":     function() { this.notebook('delete'); },\n\t\t\"Copy cell\":       function() { this.notebook('copy'); },\n\t\t\"Paste cell\":      function() { this.notebook('paste'); },\n\t\t\"Move cell up\":    function() { this.notebook('up'); },\n\t\t\"Move cell down\":  function() { this.notebook('down'); },\n\t\t\"Insert cell\":     function() { this.notebook('insertBelow'); },\n\t\t\"--\":\t\t   \"Notebook actions\",\n\t\t\"Exit fullscreen\": function() { this.notebook('fullscreen',false)}\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\telem.append(toolbar = $.el.div(\n            {class:\"nb-toolbar\"},\n\t    glyphButton(\"trash\", \"delete\", \"Delete cell\", \"warning\"),\n\t    glyphButton(\"copy\", \"copy\", \"Copy cell\", \"default\"),\n\t    glyphButton(\"paste\", \"paste\", \"Paste cell below\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"chevron-up\", \"up\", \"Move cell up\", \"default\"),\n\t    glyphButton(\"chevron-down\", \"down\", \"Move cell down\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"plus\", \"insertBelow\", \"Insert cell below\", \"primary\"),\n\t    glyphButton(\"fullscreen\", \"fullscreen\", \"Full screen\", \"default\")\n\t    ));\n\telem.append(notebookMenu());\n\telem.append($.el.div({class:\"nb-view\", tabIndex:\"-1\"},\n\t\t\t     content=$.el.div({class:\"nb-content\"}),\n\t\t\t     $.el.div({class:\"nb-bottom\"})));\n\n\t$(toolbar).on(\"click\", \"a.btn\", function(ev) {\n\t  var action = $(ev.target).closest(\"a\").data(\"action\");\n\t  elem.notebook(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\t$(content).on(\"click\", \".nb-cell-buttons a.btn\", function(ev) {\n\t  var a    = $(ev.target).closest(\"a\");\n\t  var cell = a.closest(\".nb-cell\");\n\n\t  var action = a.data(\"action\");\n\t  cell.nbCell(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\telem.focusin(function(ev) {\n\t  var cell = $(ev.target).closest(\".nb-cell\");\n\t  if ( cell.length > 0 ) {\n\t    elem.notebook('active', cell);\n\t  } else if ( $(ev.target).closest(\".nb-view\").length > 0 )\n\t  { elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\telem.focusout(function(ev) {\n\t  if ( $(ev.target).closest(\".notebook\")[0] != elem[0] ) {\n\t    elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\n\t/* Activate the active source or first source.  If the active\n\t * cell is a query, we could activate the source of the query?\n\t */\n\telem.on(\"activate-tab\", function(ev) {\n\t  if ( ev.target == elem[0] ) {\n\t    var eds = elem.find(\".nb-content\")\n                          .children(\".nb-cell.program\");\n\t    var aeds = eds.filter(\".active\");\n\t    var nc = aeds[0]||eds[0];\n\n\t    if ( nc ) {\n\t      $(nc).find(\".prolog-editor\").prologEditor('makeCurrent');\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t\t\t\t\t/* restore content */\n\tvar content = elem.find(\".notebook-data\");\n\tif ( options.value ) {\n\t  elem.notebook('value', options.value);\n\t} else if ( content.length > 0 ) {\n\t  function copyData(name) {\n\t    var value = content.data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  var docid      = elem.storage('docid', undefined, storage);\n\t  var fullscreen = preferences.getDocVal(docid, 'fullscreen', true);\n\n\t  elem.notebook('value', content.text(),\n\t\t\t{ fullscreen: fullscreen\n\t\t\t});\n\t  content.remove();\n\t} else {\n\t  elem.notebook('placeHolder');\n\t}\n\n\telem.notebook('setupStorage', storage);\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  if ( $(ev.target).hasClass(\"prolog-editor\") )\n\t  { elem.notebook('checkModified');\n\t    ev.stopPropagation();\n\t    return false;\n\t  }\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  preferences.setDocVal(docid, 'fullscreen', val);\n\t});\n      }); /* end .each() */\n    },\n\n\t\t /*******************************\n\t\t *\t  BUTTON ACTIONS\t*\n\t\t *******************************/\n\n    delete: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tthis.notebook('active', cell.next()||cell.prev());\n\tcell.nbCell('close');\n\tthis.notebook('updatePlaceHolder');\n      }\n      this.notebook('checkModified');\n      return this;\n    },\n\n    copy: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\t$(dom).append($(cell).nbCell('saveDOM'));\n\t$(dom).find(\".nb-cell\").removeAttr(\"name\");\n\tclipboard = stringifyNotebookDOM(dom);\n      }\n    },\n\n    paste: function(text) {\n      var nb = this;\n\n      text = text||clipboard;\n      if ( text ) {\n\tvar dom = $.el.div();\n\n\t$(dom).html(text);\n\tvar cells = $(dom).find(\".nb-cell\");\n\tif ( cells.length > 0 ) {\n\t  $(dom).find(\".nb-cell\").each(function() {\n\t    nb.notebook('insert', {\n\t      where: \"below\",\n\t      restore: $(this)\n\t    });\n\t  });\n\t  return this;\n\t} else {\n\t  modal.alert(\"Not a SWISH notebook\");\n\t}\n      } else {\n\tmodal.alert(\"Clipboard is empty\");\n      }\n    },\n\n    up: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertBefore(cell.prev());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    down: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertAfter(cell.next());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    insertAbove: function() {\n      return this.notebook('insert', { where:\"above\" });\n    },\n\n    insertBelow: function() {\n      if ( this.notebook('insert', {where:\"below\", if_visible:true}) == false ) {\n\tmodal.alert(\"<p>New cell would appear outside the visible area of the \" +\n\t\t    \"notebook.\" +\n\t\t    \"<p>Please select the cell below which you want the \"+\n\t\t    \"new cell to appear or scroll to the bottom of the \" +\n\t\t    \"notebook.\");\n      }\n\n      return this;\n    },\n\n    run: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell(\"run\");\n    },\n\n    fullscreen: function(val) {\n      if ( val == undefined )\t\t/* default: toggle */\n\tval = !this.hasClass(\"fullscreen\");\n\n      if ( val ) {\n\tvar chat_container = this.closest(\".chat-container\");\n\tvar node = chat_container.length == 1 ? chat_container : this;\n\t$(\"body.swish\").swish('fullscreen', node, this);\n      } else {\n\t$(\"body.swish\").swish('exitFullscreen');\n      }\n\n      return this;\n    },\n\n    cellType: function(cell, type) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell('type', type);\n    },\n\n\t\t /*******************************\n\t\t *\t      SELECTION\t\t*\n\t\t *******************************/\n\n    getSelection: function() {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('getSelection');\n    },\n\n    restoreSelection: function(sel) {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('restoreSelection', sel);\n    },\n\n\n\t\t /*******************************\n\t\t *\t    CLEAN/DIRTY\t\t*\n\t\t *******************************/\n\n    checkModified: function() {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar store = nb.data(\"storage\");\n\tvar clean = store.cleanGeneration == nb.notebook('changeGen');\n\n\tnb.notebook('markClean', clean);\n      });\n    },\n\n    /**\n     * Called if the notebook changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar data = nb.data(pluginName);\n\n\tif ( data.clean_signalled != clean )\n\t{ data.clean_signalled = clean;\n\t  nb.trigger(\"data-is-clean\", clean);\n\t}\n\n\tif ( clean ) {\n\t  nb.find(\".prolog-editor\").prologEditor('setIsClean');\n\t}\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t CELL MANAGEMENT\t*\n\t\t *******************************/\n\n    /**\n     * @param {jQuery} cell is the cell that must be activated\n     * @param {Boolean} [focus] if `true`, give the cell the focus\n     */\n    active: function(cell, focus) {\n      if ( cell ) {\n\tvar current = this.find(\".nb-content .nb-cell.active\");\n\n\tfunction removeNotForQuery(elem) {\n\t  elem.find(\".nb-content .nb-cell.not-for-query\")\n\t      .removeClass(\"not-for-query\");\n\t}\n\n\tif ( cell.length == 1 )\n\t{ if ( !(current.length == 1 && cell[0] == current[0]) ) {\n\t    removeNotForQuery(this);\n\t    current.nbCell('active', false);\n\t    cell.nbCell('active', true);\n\t    if ( focus )\n\t      cell.focus();\n\t  }\n\t} else\n\t{ removeNotForQuery(this);\n\t  current.nbCell('active', false);\n\t}\n      }\n    },\n\n    /**\n     * Insert a new cell\n     * @param {Object} [options]\n     * @param {String} [options.where] defines where the cell is\n     * inserted relative to the cell with the current focus.\n     * @param {jQuery} [options.restore] If provided, it must contains\n     * a save/restore node that will be used to fill the new cell.\n     * @param {Bool}   [options.if_visible]  If `true`, only insert is\n     * the insertion point is visible.\n     */\n    insert: function(options) {\n      options   = options||{};\n      var relto = currentCell(this);\n      var cell  = options.cell || $.el.div({class:\"nb-cell\"});\n      var view  = this.find(\".nb-view\")\n      var viewrect;\n\n      if ( options.if_visible ) {\n\tif ( view.find(\".nb-content > div.nb-cell\").length > 0 )\n\t  viewrect = view[0].getBoundingClientRect();\n      }\n\n      if ( relto ) {\n\tif ( options.where == 'above' ) {\n\t  if ( viewrect ) {\n\t    var seltop = relto[0].getBoundingClientRect().top;\n\t    if ( seltop < viewrect.top )\n\t      return false;\n\t  }\n\t  $(cell).insertBefore(relto);\n\t} else {\n\t  if ( viewrect ) {\n\t    var selbottom = relto[0].getBoundingClientRect().bottom;\n\n\t    if ( selbottom > viewrect.bottom - 20 )\n\t      return false;\n\t  }\n\t  $(cell).insertAfter(relto);\n\t}\n      } else {\n\tvar content = this.find(\".nb-content\");\n\n\tif ( viewrect ) {\n\t  var cbottom = content[0].getBoundingClientRect().bottom;\n\n\t  if ( cbottom > viewrect.bottom - 20 )\n\t    return false;\n\t}\n\tcontent.append(cell);\n      }\n\n      if ( !options.cell ) {\n\t$(cell).nbCell(options.restore);\n      }\n      $(cell).nbCell('assignName');\n      this.notebook('updatePlaceHolder');\n      this.notebook('active', $(cell));\n      this.notebook('checkModified');\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t   SAVE/RESTORE\t\t*\n\t\t *******************************/\n\n    /**\n     * Setup connection to the storage manager.\n     */\n    setupStorage: function(storage) {\n      var notebook = this;\n\n      storage = $.extend(storage, {\n        getValue: function() {\n\t  return notebook.notebook('value');\n\t},\n\tsetValue: function(source) {\n\t  return notebook.notebook('setSource', source);\n\t},\n\tchangeGen: function() {\n\t  return notebook.notebook('changeGen');\n\t},\n\tisClean: function(gen) {\n\t  var cgen = notebook.notebook('changeGen');\n\t  return gen == cgen;\n\t},\n\tmarkClean: function(clean) {\n\t  notebook.notebook('markClean', clean);\n\t},\n\tcleanGeneration: this.notebook('changeGen'),\n\tcleanData:       this.notebook('value'),\n\tcleanCheckpoint: \"load\",\n\ttypeName:\t \"notebook\"\n      });\n\n      return this.storage(storage);\n    },\n\n    /**\n     * Set the source\n     */\n    setSource: function(source) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      this.notebook('value', source.data);\n    },\n\n    /**\n     * Set or get the state of this notebook as a string.\n     * @param {Object} options\n     * @param {Boolean} [options.skipEmpty=false] if `true`, do not save\n     *\t\t        empty cells.\n     * @param {Boolean} [options.fullscreen] if `true', go fullscreen.\n     * Default is `true` if the toplevel `div.notebook` has a class\n     * `fullscreen`.\n     * @param [String] val is an HTML string that represents\n     * the notebook state.\n     */\n    value: function(val, options) {\n      options = options||{};\n\n      if ( val == undefined ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\n\tthis.notebook('assignCellNames', false);\n\tthis.find(\".nb-cell\").each(function() {\n\t  cell = $(this);\n\t  if ( !(options.skipEmpty && cell.nbCell('isEmpty')) )\n\t    $(dom).append(cell.nbCell('saveDOM'));\n\t});\n\n\treturn stringifyNotebookDOM(dom);\n      } else {\n\tvar notebook = this;\n\tvar content  = this.find(\".nb-content\");\n\tvar dom = $.el.div();\n\n\tcontent.html(\"\");\n\tdom.innerHTML = val;\t\t/* do not execute scripts */\n\n\tif ( options.fullscreen == undefined )\n\t  options.fullscreen = $(dom).find(\"div.notebook\").hasClass(\"fullscreen\");\n\tif ( options.fullscreen ) {\n\t  this.removeClass(\"fullscreen\");\n\t  this.notebook('fullscreen', true);\n\t}\n\n\t$(dom).find(\".nb-cell\").each(function() {\n\t  var cell = $.el.div({class:\"nb-cell\"});\n\t  content.append(cell);\n\t  $(cell).nbCell($(this));\n\t});\n\n\tthis.find(\".nb-cell\").nbCell('onload');\n\tthis.notebook('updatePlaceHolder');\n      }\n    },\n\n    /**\n     * Compute a state fingerprint for the entire notebook\n     * @return {String} SHA1 fingerprint\n     */\n    changeGen: function() {\n      var list = [];\n      this.find(\".nb-cell\").each(function() {\n\tcell = $(this);\n\tlist.push(cell.nbCell('changeGen'));\n      });\n      return sha1(list.join());\n    },\n\n    /**\n     * Assign names to all cells.  This is normally done as the\n     * notebook is created, but needs to be done for old notebooks\n     * if functions are used that require named cells.  Calling this\n     * method has no effect if all cells already have a name.\n     */\n    assignCellNames: function(check) {\n      this.find(\".nb-cell\").nbCell('assignName');\n      if ( check != false )\n\tthis.notebook('checkModified');\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t       HELP\t\t*\n\t\t *******************************/\n\n    updatePlaceHolder: function() {\n      if ( this.find(\".nb-content\").children().length == 0 )\n\tthis.notebook('placeHolder');\n      else\n\tthis.find(\".nb-placeholder\").remove();\n    },\n\n    placeHolder: function() {\n      var placeholder = $.el.div({class:\"nb-placeholder\"});\n\n      $.ajax({ url: config.http.locations.help + \"/notebook.html\",\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t $(placeholder).html(data);\n\t       }\n             });\n      this.find(\".nb-content\").append(placeholder);\n    }\n  }; // methods\n\n  // <private functions>\n\n  /**\n   * @returns {Object|null} cell that is focussed and inside our\n   * notebook.\n   * @param {Object} nb is the notebook\n   */\n  function currentCell(nb) {\n    var active = $(nb).find(\".nb-cell.active\");\n\n    if ( active.length == 1 )\n      return active.first();\n\n    return null;\n  }\n\n  function stringifyNotebookDOM(dom) {\n    /*\n     * Attributes from .html() are not ordered.  We need a canonical\n     * representation and therefore we need to reorder the HTML\n     * attributes and map the attribute names to lower case.\n     */\n    function orderAttrs(s) {\n      attrs = s.match(/[-a-z]+=\"[^\"]*\"/g);\n      if ( attrs ) {\n\tvar start = s.match(/^<[a-z]* /);\n\tfor(var i=0; i<attrs.length; i++) {\n\t  var l = attrs[i].split(/=(.*)/);\n\t  attrs[i] = l[0].toLowerCase()+\"=\"+l[1];\n\t}\n\treturn start[0]+attrs.sort().join(\" \")+\">\";\n      } else\n\treturn s;\n    }\n\n    var html = $($.el.div(dom)).html();\n    var nest = [];\n    return html.replace(/(<div [^>]*>|<\\/div>)/g, function(t) {\n      var is_cell;\n      if ( t == \"</div>\" ) {\n\tis_cell = nest.pop();\n\treturn is_cell ? \"\\n\"+t+\"\\n\" : t;\n      } else {\n\tis_cell = (t.match(/(nb-cell|notebook)/) != null);\n\tnest.push(is_cell);\n\treturn is_cell ? \"\\n\"+orderAttrs(t)+\"\\n\" : t;\n      }\n    }).slice(1);\n  }\n\n  tabbed.tabTypes.notebook = {\n    dataType: \"swinb\",\n    typeName: \"notebook\",\n    label: \"Notebook\",\n    contentType: \"text/x-prolog-notebook\",\n    order: 200,\n    create: function(dom, options) {\n      $(dom).notebook(options);\n    }\n  };\n\n  /**\n   * <Class description>\n   *\n   * @class notebook\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.notebook = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t    PLUGIN nbCell\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'nbCell';\n  var id = 0;\t\t\t\t/* generate unique cell ids */\n\n  /** @lends $.fn.nbCell */\n  var methods = {\n    /**\n     * Create a new notebook cell\n     * @param {jQuery} [dom] initialise the new cell from the saved\n     * DOM\n     */\n    _init: function(dom) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\tvar g;\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.attr(\"tabIndex\", -1);\n\telem.attr(\"id\", \"nbc\"+id++);\n\n\tif ( dom instanceof jQuery ) {\n\t  elem.nbCell('restoreDOM', dom);\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"close\", \"Close\",\n\t\t\t\t  \"default\", \"xs\");\n\t  elem.append(close);\n\t  $(close).addClass(\"close-select\");\n\t  $(close).on(\"click\", function() {\n\t    elem.nbCell('close');\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-select\"},\n\t\t\t       $.el.label(\"Create a \"),\n\t\t\t       g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t       $.el.label(\"cell here.\")));\n\n\t  for(var k in cellTypes) {\n\t    if ( cellTypes.hasOwnProperty(k) )\n\t      $(g).append($.el.button({ type:\"button\",\n\t\t\t\t\tclass:\"btn btn-default\",\n\t\t\t\t\t\"data-type\":k\n\t\t\t\t      },\n\t\t\t\t      cellTypes[k].label));\n\t  }\n\n\t  $(g).on(\"click\", \".btn\", function(ev) {\n\t    elem.nbCell('type', $(ev.target).data('type'));\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-more\"},\n\t\t\t       typeMore(),\n\t\t\t       typeLess($.el.label(\"Insert notebook from \" +\n\t\t\t\t\t\t   \"local file \"),\n\t\t\t\t\tfileInsertInput()[0])));\n\t}\n      });\n    },\n\n    /**\n     * (de)activate the current cell.\n     */\n    active: function(val) {\n      var data = this.data(pluginName);\n\n      if ( val ) {\n\tthis.addClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"program\":\n\t    this.find(\".editor\").prologEditor('makeCurrent');\n\t    break;\n\t  case \"query\":\n\t    var ed = this.prevAll(\".program\").first().find(\".editor\");\n\t    if ( ed.length == 1 )\n\t      ed.prologEditor('makeCurrent');\n\t    this.closest(\".notebook\")\n                .find(\".nb-cell.program\")\n                .not(this.nbCell(\"program_cells\"))\n                .addClass(\"not-for-query\");\n\t    break;\n\t}\n      } else if ( this.length > 0 ) {\n\tthis.removeClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"markdown\":\n\t  case \"html\":\n\t    if ( this.hasClass(\"runnable\") ) {\n\t      this.nbCell('run');\n\t    }\n\t    break;\n\t}\n      }\n    },\n\n\n    type: function(type) {\n      var data = this.data(pluginName);\n      if ( data.type != type ) {\n\tmethods.type[type].apply(this);\n\tdata.type = type;\n\tthis.addClass(type);\n\tthis.removeAttr(\"name\");\n\tthis.nbCell('assignName');\n      }\n      return this;\n    },\n\n    /**\n     * Give the cells in a jQuery set a unique name inside their\n     * notebook.\n     */\n    assignName: function() {\n      return this.each(function() {\n\tvar cell = $(this);\n\n\tif ( !cell.attr(\"name\") ) {\n\t  var data   = cell.data(pluginName);\n\t  if ( data.type ) {\n\t    var prefix = cellTypes[data.type].prefix;\n\t    var nb     = cell.closest(\".notebook\");\n\n\t    for(i=1; ; i++) {\n\t      var name = prefix+i;\n\t      if ( nb.find(\"*[name=\"+name+\"]\").length == 0 ) {\n\t\tcell.attr(\"name\", name);\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Run the current cell\n     */\n    run: function() {\n      var args = arguments;\n\n      return this.each(function() {\n\tvar cell = $(this);\n\tif ( cell.hasClass(\"runnable\") ) {\n\t  var data = cell.data(pluginName);\n\n\t  return methods.run[data.type].apply(cell, args);\n\t} else {\n\t  console.log(\"Cell is not runnable: \", cell);\n\t}\n      });\n    },\n\n    runTabled: function() {\n      return this.nbCell('run', {tabled:true});\n    },\n\n    onload: function() {\n      var args = arguments;\n\n      this.each(function() {\n\tvar cell = $(this);\n\tvar data = cell.data(pluginName);\n\n\tif ( methods.onload[data.type] )\n\t  methods.onload[data.type].apply(cell, args);\n      });\n\n      return this.nbCell('refresh');\n    },\n\n    close: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n      return this.remove();\n    },\n\n    refresh: function() {\n      if ( this.hasClass(\"program\") ) {\n\tthis.find(\"a[data-action='background']\")\n            .attr('title', this.hasClass(\"background\") ?\n\t\t\t     \"Used for all queries in this notebook\" :\n\t\t             \"Used for queries below this cell\");\n\n      }\n      return this;\n    },\n\n    getSettings: function() {\n      return {\n        tabled: this.data(\"tabled\") == \"true\",\n\trun:    this.data(\"run\")    == \"onload\",\n\tchunk:  parseInt(this.data(\"chunk\")||\"1\"),\n\tname:   this.attr(\"name\")\n      };\n    },\n\n    /**\n     * Present a modal that shows the current query properties and\n     * allows for changing them.\n     */\n    settings: function() {\n      var elem    = this;\n      var current = this.nbCell('getSettings');\n\n      function querySettingsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"\n\t  },\n\t  form.fields.checkboxes(\n\t\t[ { name: \"tabled\",\n\t\t    label: \"table results\",\n\t\t    value: current.tabled,\n\t\t    title: \"Table results\"\n\t\t  },\n\t\t  { name: \"run\",\n\t\t    label: \"run on page load\",\n\t\t    value: current.run,\n\t\t    title: \"Run when document is loaded\"\n\t\t  }\n\t\t], {col:3}),\n\t  form.fields.chunk(current.chunk),\n\t  form.fields.name(current.name||\"\"),\n\t  form.fields.buttons(\n\t  { label: \"Apply\",\n\t    offset: 3,\n\t    action: function(ev, values) {\n\t      if ( values.tabled != current.tabled ) {\n\t\tif ( values.tabled )\n\t\t  elem.data(\"tabled\", \"true\");\n\t\telse\n\t\t  elem.removeData(\"tabled\");\n\t      }\n\t      if ( values.run != current.run ) {\n\t\tif ( values.run )\n\t\t  elem.data(\"run\", \"onload\");\n\t\telse\n\t\t  elem.removeData(\"run\");\n\t      }\n\t      if ( values.chunk != current.chunk ) {\n\t\tif ( values.chunk != 1 )\n\t\t  elem.data(\"chunk\",  \"\"+values.chunk);\n\t\telse\n\t\t  elem.removeData(\"chunk\");\n\t      }\n\t      var name = values.name ? values.name.trim() : \"\";\n\t      if (  name != current.name ) {\n\t\tif ( name )\n\t\t  elem.attr(\"name\", name);\n\t\telse\n\t\t  elem.attr(\"name\", null);\n\t      }\n\t      elem.closest(\".notebook\").notebook('checkModified');\n\t    }\n\t  })));\n      }\n\n      form.showDialog({ title: \"Set options for query\",\n                        body: querySettingsBody\n                      });\n    },\n\n    /**\n     * Change the editor of a program cell to fixed (one line) height\n     */\n    singleline: function() {\n      this.toggleClass(\"singleline\");\n      this.find(\".editor\").prologEditor('refresh');\n      glyphButtonGlyph(this, \"singleline\",\n\t\t       this.hasClass(\"singleline\")\n\t\t\t\t? \"triangle-left\"\n\t\t\t\t: \"triangle-bottom\");\n      this.find(\"a[data-action=singleline]\").blur();\n      return this;\n    },\n\n    /**\n     * Toggle a program fragment to be background/non-background\n     */\n    background: function() {\n      this.toggleClass(\"background\");\n      this.find(\"a[data-action=background]\").blur();\n      this.closest(\".notebook\").notebook('checkModified');\n      this.nbCell('refresh');\n      return this;\n    },\n\n    /**\n     * Returns all program cells in current notebook that are loaded\n     * for executing the current cell.  This always starts with the\n     * background programs.  If `this` is a program cell, it is added.\n     * Otherwise the program cell before `this` is added.\n     * @return {jQuery} set of nbCell elements that form the\n     * sources for the receiving query cell.\n     */\n    program_cells: function() {\n      var data = this.data(pluginName);\n      var programs = this.closest(\".notebook\")\n\t                 .find(\".nb-cell.program.background\");\n      if ( this.hasClass(\"program\") ) {\n\tif ( !this.hasClass(\"background\") )\n\t  programs = programs.add(this);\n      } else {\n\tprograms = programs.add(this.prevAll(\".program\").first());\n      }\n      return programs;\n    },\n\n    programs: function() {\n      var cells = this.nbCell('program_cells');\n      return cells.find(\".editor\");\n    },\n\n    isEmpty: function() {\n      return methods.isEmpty[this.data(pluginName).type].call(this);\n    },\n\n    saveDOM: function() {\n      return methods.saveDOM[this.data(pluginName).type].call(this);\n    },\n\n    restoreDOM: function(dom) {\n      var data = this.data(pluginName);\n\n      function domCellType(dom) {\n\tfor(var k in cellTypes) {\n\t  if ( cellTypes.hasOwnProperty(k) && dom.hasClass(k) )\n\t    return k;\n\t}\n      }\n\n      data.type = domCellType(dom);\n      methods.restoreDOM[data.type].apply(this, arguments);\n      this.addClass(data.type);\n    },\n\n    /**\n     * Compute a state fingerprint for the current cell.\n     */\n    changeGen: function() {\n      var type = this.data(pluginName).type;\n\n      if ( type )\n\treturn methods.changeGen[type].call(this);\n      else\n\treturn 0;\n    },\n\n    text: function() {\n      return cellText(this);\n    }\n  }; // methods\n\n\t\t /*******************************\n\t\t *\t     SET TYPE\t\t*\n\t\t *******************************/\n\n  methods.type.markdown = function(options) {\t/* markdown */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"markdown\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.html = function(options) {\t/* HTML */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"htmlmixed\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.program = function(options) {\t/* program */\n    var cell = this;\n    var editor;\n\n    options = options||{};\n    options.autoCurrent = false;\n    options.getSource = function() {\n      var programs = cell.nbCell('programs');\n      return programs.prologEditor('getSource', \"source\", true);\n    };\n\n    this.html(\"\");\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"triangle-bottom\", \"singleline\", \"Show only first line\",\n\t\t  \"default\", \"xs\"),\n      imageButton(\"background\", \"Use as background program\", \"xs\"));\n    this.append(buttons,\n\t\teditor=$.el.div({class:\"editor with-buttons\"}));\n    if ( options.background )\n    { this.addClass(\"background\");\n    }\n    if ( options.singleline )\n    { this.nbCell('singleline');\n    }\n    $(editor).prologEditor(options);\n  }\n\n  methods.type.query = function(options) {\t/* query */\n    var editor;\n    var cell = this;\n\n    this.html(\"\");\n\n    options = options||{};\n    if ( options.tabled == undefined )\n      options.tabled = preferences.getVal(\"tabled_results\");\n\n    function setData(name) {\n      if ( options[name] != undefined ) {\n\tcell.data(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setData(\"tabled\");\n    setData(\"chunk\");\n    setData(\"run\");\n    setAttr(\"name\");\n\n    options = $.extend({}, options,\n      { role: \"query\",\n\tsourceID: function() {\n\t  return cell.nbCell('programs').prologEditor('getSourceID');\n\t}\n      });\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"wrench\", \"settings\", \"Settings\",\n\t\t  \"default\", \"xs\"),\n      glyphButton(\"play\", \"run\",       \"Run query\",\n\t\t  \"primary\", \"xs\"));\n\n    function wrapSolution(a)\n    { this.find(\".editor.query\").prologEditor('wrapSolution', $(a).text());\n    }\n\n    var menu = form.widgets.dropdownButton(\n      $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"}),\n      { client: cell,\n\tdivClass: \"nb-query-menu\",\n        actions: {\n\t  \"Aggregate (count all)\": wrapSolution,\n\t  \"--\":\t\t\t   null,\n\t  \"Projection\":\t\t   wrapSolution,\n\t  \"Order by\":              wrapSolution,\n\t  \"Distinct\":              wrapSolution,\n\t  \"Limit\":\t\t   wrapSolution,\n\t  \"---\":\t\t   null,\n\t  \"Download answers as CSV\": function() {\n\t    var query  = cellText(this).replace(/\\.\\s*$/,\"\");\n\t    var source = this.nbCell('programs')\n\t\t\t     .prologEditor('getSource', \"source\", true);\n\t    var options = {};\n\t    var name   = this.attr(\"name\");\n\t    if ( name )\n\t      options.disposition = name;\n\t    prolog.downloadCSV(query, source, options);\n\t  }\n        }\n      });\n\n    this.append(buttons,\n\t\t$.el.div({class:\"query with-buttons\"},\n\t\t\t menu,\n\t\t\t $.el.span({class:\"prolog-prompt\"}, \"?-\"),\n\t\t\t editor=$.el.div({class:\"editor query\"})));\n\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t    RUN BY TYPE\t\t*\n\t\t *******************************/\n\n  methods.run.markdown = function(markdownText) {\t/* markdown */\n    var cell = this;\n\n    markdownText = markdownText||cellText(this);\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('markdownText');\n      cell.removeData('markdownText');\n      methods.type.markdown.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n\n    function setHTML(data) {\n      cell.html(data);\n      cell.removeClass(\"runnable\");\n      cell.data('markdownText', markdownText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( markdownText.trim() != \"\" )\n    { $.ajax({ type: \"POST\",\n\t       url: config.http.locations.markdown,\n\t       data: markdownText,\n\t       contentType: \"text/plain; charset=UTF-8\",\n\t       success: setHTML\n\t     });\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty markdown cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.html = function(htmlText, options) {\n    var cell = this;\n\n    options = options||{};\n    if ( options.html == false )\n    { runScripts();\n      return;\n    }\n\n    htmlText = (htmlText||cellText(this)).trim();\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('htmlText');\n      cell.removeData('htmlText');\n      methods.type.html.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n    function runScripts() {\n      if ( config.swish.notebook.eval_script == true &&\n\t   options.eval_script != false ) {\n\tvar scripts = [];\n\n\tcell.find(\"script\").each(function() {\n\t  var type = this.getAttribute('type')||\"text/javascript\";\n\t  if ( type == \"text/javascript\" )\n\t    scripts.push(this.textContent);\n\t});\n\n\tif ( scripts.length > 0 ) {\n\t  var script = \"(function(notebook){\" + scripts.join(\"\\n\") + \"})\";\n\t  var nb = new Notebook({\n\t    cell: cell[0]\n\t  });\n\n\t  try {\n\t    eval(script)(nb);\n\t  } catch(e) {\n\t    alert(e);\n\t  }\n\t}\n      }\n    }\n\n    function runHTML(data) {\n      cell[0].innerHTML = data;\n      runScripts();\n    }\n\n    function setHTML(data) {\n      runHTML(data);\n      cell.removeClass(\"runnable\");\n      cell.data('htmlText', htmlText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( htmlText != \"\" )\n    { setHTML(htmlText);\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty HTML cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.program = function() {\t\t/* program */\n    modal.alert(\"Please define a query to run this program\");\n  };\n\n  /**\n   * Run a query cell.\n   * @param {Object} [options]\n   * @param {Any}    [options.bindings] Initial bindings.  If this is a\n\t\t     string, it is simply prepended to the query.  If\n\t\t     it is an object, it is translated into a sequence\n\t\t     of Prolog unifications to bind the variables.\n   */\n  methods.run.query = function(options) {\t/* query */\n    var programs = this.nbCell('programs');\n    var settings = this.nbCell('getSettings');\n    var text     = cellText(this);\n\n    options = options||{};\n    if ( options.bindings ) {\n      var pretext = \"\";\n      if ( typeof(options.bindings) === 'string' ) {\n\tpretext = options.bindings;\n      } else {\n\tfor(var k in options.bindings) {\n\t  if ( options.bindings.hasOwnProperty(k) ) {\n\t    if ( pretext )\n\t      pretext += \", \";\n\t    pretext += k + \" = \" + Pengine.stringify(options.bindings[k]);\n\t  }\n\t}\n      }\n      if ( pretext )\n\ttext = pretext + \", (\" + prolog.trimFullStop(text) + \")\";\n    }\n    var query = { source:       programs.prologEditor('getSource',\n\t\t\t\t\t\t      \"source\", true),\n                  query:        text,\n\t\t  tabled:       settings.tabled||false,\n\t\t  chunk:        settings.chunk,\n\t\t  title:        false,\n\t\t  query_editor: this.find(\".prolog-editor.query\")\n                };\n    if ( programs[0] )\n      query.editor = programs[0];\n\n    var runner = $.el.div({class: \"prolog-runner\"});\n    this.find(\".prolog-runner\").prologRunner('close');\n    this.append(runner);\n    $(runner).prologRunner(query);\n  };\n\n\t\t /*******************************\n\t\t *\t       ONLOAD\t\t*\n\t\t *******************************/\n\n/* These methods are executed after all cells have been initialised */\n\n  methods.onload.query = function() {\n    if ( this.data(\"run\") == \"onload\" )\n      this.nbCell(\"run\");\n  };\n\n  methods.onload.html = function() {\n    return methods.run.html.call(this,\n\t\t\t\t undefined,\t/* text */\n\t\t\t\t {html:false, eval_script:true});\n  };\n\n\n\t\t /*******************************\n\t\t *\tSAVE/RESTORE DOM\t*\n\t\t *******************************/\n\n/* ---------------- saveDOM ---------------- */\n\n  methods.saveDOM.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell markdown\"}, text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.html = function() {\t\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell html\"});\n\n    // assume scripts are executed when put into the DOM\n    $(dom).html(text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.program = function() {\t/* program */\n    var cell = this;\n    var dom = $.el.div({class:\"nb-cell program\"}, cellText(this));\n\n    function copyClassAttr(name) {\n      if ( cell.hasClass(name) ) {\n\t$(dom).attr(\"data-\"+name, true);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyClassAttr(\"background\");\n    copyClassAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.query = function() {\t\t/* query */\n    var cell = this;\n    var dom  = $.el.div({class:\"nb-cell query\"}, cellText(this));\n\n    function isDefault(name, value) {\n      if ( name == 'tabled' && (!value || value == \"false\") ) return true;\n      return false;\n    }\n\n    function copyData(name) {\n      var value;\n      if ( (value=cell.data(name)) && !isDefault(name,value) ) {\n\t$(dom).attr(\"data-\"+name, value);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyData(\"tabled\");\n    copyData(\"chunk\");\n    copyData(\"run\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n/* ---------------- restoreDOM ---------------- */\n\n  methods.restoreDOM.markdown = function(dom) {\t/* markdown */\n    var cell = this;\n    var text = dom.text().trim();\n\n    cell.data('markdownText', text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.markdown.call(this, text);\n  };\n\n  methods.restoreDOM.html = function(dom) {\t/* HTML */\n    var cell = this;\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.html.call(this, dom.html(), {eval_script:false});\n  };\n\n  methods.restoreDOM.program = function(dom) {\t/* program */\n    var cell = this;\n    var opts = { value:dom.text().trim() };\n\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\topts[name] = value;\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n\n    getAttr(\"background\");\n    getAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    methods.type.program.call(this, opts);\n  };\n\n  methods.restoreDOM.query = function(dom) {\t/* query */\n    var opts = { value:dom.text().trim() };\n\n    function getData(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\tif ( name == \"chunk\" )\n\t  opts.chunk = parseInt(value);\n\telse\n\t  opts[name] = value;\n      }\n    }\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) ) {\n\topts[name] = value;\n      }\n    }\n\n    getData(\"tabled\");\n    getData(\"chunk\");\n    getData(\"run\");\n    getAttr(\"name\");\n    if ( opts.tabled == undefined )\n      opts.tabled = false;\n\n    methods.type.query.call(this, opts);\n  };\n\n/* ---------------- changeGen ---------------- */\n\n  methods.changeGen.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.program = function() {\t/* program */\n    var text = \"\";\n    var cell = this;\n\n    function addClassAttr(name, key) {\n      if ( cell.hasClass(name) )\n\ttext += key;\n    }\n\n    addClassAttr(\"background\", \"B\");\n    addClassAttr(\"singleline\", \"S\");\n\n    text += \"V\"+cellText(this);\n    return sha1(text);\n  };\n\n  methods.changeGen.query = function() {\t/* query */\n    var text = \"\";\n    var cell = this;\n\n    function addData(name, key) {\n      var value;\n\n      if ( (value=cell.data(name)) )\n\ttext += key+value;\n    }\n    function addAttr(name, key) {\n      var value;\n\n      if ( (value=cell.attr(name)) )\n\ttext += key+value;\n    }\n\n    addData(\"tabled\", \"T\");\n    addData(\"chunk\", \"C\");\n    addData(\"run\", \"R\");\n    addAttr(\"name\", \"N\");\n    text += \"V\"+cellText(this);\n\n    return sha1(text);\n  };\n\n/* ---------------- isEmpty ---------------- */\n\n  methods.isEmpty.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.program = function() {\t/* program */\n    return cellText(this).trim() == \"\";\n  };\n\n  methods.isEmpty.query = function() {\t\t/* query */\n    return cellText(this).trim() == \"\";\n  };\n\n\t\t /*******************************\n\t\t *\t     UTILITIES\t\t*\n\t\t *******************************/\n\n  function cellText(cell) {\n    return cell.find(\".editor\").prologEditor('getSource', undefined, true);\n  }\n\n  /**\n   * Creates a file input that, after a file is selected, replaces\n   * the cell with the content of the local file.\n   */\n  function fileInsertInput() {\n    var form = $('<input type=\"file\" name=\"file\">');\n\n    form.on(\"change\", function(ev) {\n      var reader = new FileReader();\n      reader.onload = function(theFile) {\n\tvar cell = $(ev.target).closest(\".nb-cell\");\n\tvar nb   = cell.closest(\".notebook\");\n\n\tif ( nb.notebook('paste', reader.result) )\n\t  cell.remove();\n      };\n      reader.readAsText(ev.target.files[0]);\n\n      ev.preventDefault();\n      return false;\n    });\n\n    return form;\n  }\n\n  function typeMore() {\n    var div = $('<div class=\"form-more\">' +\n\t\t' <a href=\"#\">more<a>' +\n\t\t'</div>');\n    div.find(\"a\").on(\"click\", function(ev) {\n      var more = $(ev.target).closest(\".form-more\");\n      more.hide(400);\n      more.next().show(400);\n    });\n    return div[0];\n  }\n\n  function typeLess() {\n    var div = $('<div class=\"form-less\" style=\"display:none\">' +\n\t\t' <div><a href=\"#\" class=\"less\">less<a></div>' +\n\t\t'</div>');\n    for(var i=0; i<arguments.length; i++) {\n      div.append(arguments[i]);\n    }\n    div.find(\"a.less\").on(\"click\", function(ev) {\n      var less = $(ev.target).closest(\".form-less\");\n      less.hide(400);\n      less.prev().show(400);\n    });\n\n    return div[0];\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class nbCell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.nbCell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nfunction glyphButton(glyph, action, title, style, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-\"+style+\" btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n  return btn;\n}\n\nfunction imageButton(action, title, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-default btn-image btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"image-icon\"}));\n\n  return btn;\n}\n\nfunction glyphButtonGlyph(elem, action, glyph) {\n  var span = elem.find(\"a[data-action=\"+action+\"] > span.glyphicon\");\n\n  span.removeClass(function(i,s) {\n    return s.match(/glyphicon-[-a-z]*/g).join(\" \");\n  }).addClass(\"glyphicon-\"+glyph);\n}\n\nfunction sep() {\n  return $.el.span({class:\"thin-space\"}, \" \");\n}\n\n\t\t /*******************************\n\t\t *\t NOTEBOOK ClASS\t\t*\n\t\t *******************************/\n\nfunction Notebook(options) {\n  this.my_cell = options.cell;\n}\n\n/**\n * Create a Pengine from default arguments\n */\nNotebook.prototype.swish = function(options) {\n  var pcells = this.cell().nbCell(\"programs\");\n  var source = pcells.prologEditor('getSource', \"source\", true);\n\n  if ( source )\n    options.src = source;\n\n  return $.swish(options);\n}\n\n/**\n * @param {String} [name] Return (query) cell with given name.  If\n * name is omitted, return the current cell.\n * @return {jQuery} Notebook cells\n */\nNotebook.prototype.cell = function(name) {\n  if ( name )\n    return this.notebook().find('.nb-cell[name=\"'+name+'\"]');\n  else\n    return $(this.my_cell);\n};\n\n/**\n * @returns {jQuery} the notebook as a whole.\n */\nNotebook.prototype.notebook = function() {\n  return $(this.my_cell).closest(\".notebook\");\n};\n\n/**\n * Run named query cell with bindings\n * @param {String} cell Name of the cell to run\n * @param {Object|String} [bindings] Bindings to pass to the query.\n */\nNotebook.prototype.run = function(cell, bindings) {\n  var options = {};\n  if ( bindings )\n    options.bindings = bindings;\n\n  this.cell(cell).nbCell('run', options);\n};\n\n/**\n * Submit a form, calling a predicate\n * @param {String} formsel is the selector to find the form in the\n * notebook cell.\n * @param {Object} options\n * @param {String} options.predicate predicate to call.  The predicate\n * receives one argument, containing the form data as a dict.\n * @param {Function} options.onsuccess is the function run on successful\n * completion\n */\nNotebook.prototype.submit = function(formsel, options) {\n  var formel = this.$(formsel);\n  var data   = form.serializeAsObject(formel);\n\n  form.formError(formel, null);\n  this.swish({\n    ask: options.predicate+\"((\"+Pengine.stringify(data)+\"))\",\n    onerror: function(data) { form.formError(formel, data); },\n    onsuccess: options.onsuccess\n  });\n};\n\nNotebook.prototype.$ = function(selector) {\n  return this.cell().find(selector);\n}\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Embed the navigation bar\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n\ndefine('navbar',[ \"jquery\", \"preferences\", \"form\", \"laconic\" ],\n       function($, preferences, form) {\n\n(function($) {\n  var pluginName = 'navbar';\n\n  /** @lends $.fn.navbar */\n  var methods = {\n    /**\n     * Initialize a navigation bar.  For example:\n     *\n     *     $(\"#navbar\").navbar(\n     *       { \"File\":\n     *         { \"New\": function() { ... },\n     *           \"Save\": function() { ... }\n     *         },\n     *         \"Edit\":\n     *         { \"Undo\": function() { ... }\n     *         }\n     *       });\n     *\n     * @param {Object} actions Nested object mapping menu labels to\n     * submenus or functions.\n     */\n    _init: function(actions) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    elem.navbar('appendDropdown', p);\n\t    elem.navbar('populateDropdown', p, actions[p]);\n\t  }\n\t}\n\n\telem.on(\"click\", \"a\", function(ev) { runMenu(this, ev); } );\n      });\n    },\n\n    /**\n     * @param {String} label Name of new dropdown to add\n     */\n    appendDropdown: function(label) {\n      var ul1 = this.children(\".nav.navbar-nav.menubar\");\n      var ul2 = $.el.ul({name:label, class:\"dropdown-menu\"});\n      var li  = $.el.li({class:\"dropdown\"},\n\t\t\t$.el.a({class:\"dropdown-toggle\",\n\t\t\t\t\"data-toggle\":\"dropdown\"\n\t\t\t       },\n\t\t\t       label,\n\t\t\t       $.el.b({class:\"caret\"})),\n\t\t\tul2);\n\n      ul1.append(li);\n\n      return this;\n    },\n\n    /**\n     * @param {String} name Name of the dropdown to populate\n     * @param {Object|function} actions Object relating dropdown menu\n     * labels to functions.  If a function is passed, it is called with\n     * two arguments: the navbar and the name of the dropdown to\n     * populate.\n     */\n    populateDropdown: function(name, actions) {\n      if ( typeof(actions) == \"function\" ) {\n\tactions(this, name);\n      } else {\n\tvar ul = dropDownUL(this, name);\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    appendDropdown(ul, p, actions[p]);\n\t  }\n\t}\n      }\n    },\n\n    /**\n     * @param {String} name is the name of the dropdown to clear\n     */\n    clearDropdown: function(name) {\n      var ul = dropDownUL(this, name);\n\n      ul.html(\"\");\n      return this;\n    },\n\n    /**\n     * @example\n     * $(\"#navbar\").navbar('extendDropdown', 'File',\n     *                     'Save as', function () { ... });\n     * @param {String} name is the dropdown to extend\n     * @param {String} label is the label to add\n     * @param {function} onclick is the action to perform\n     */\n    extendDropdown: function(name, label, onclick) {\n      var ul = dropDownUL(this, name);\n\n      appendDropdown(ul, label, onclick);\n    }\n  }; // methods\n\n  /**\n   * Append something to a navbar dropdown.\n   *\n   * @param {Object} dropdown is the jQuery object representing the\n   * dropdown.\n   * @param {String} label is the label for the menu entry\n   * @param {any} options defines the action.  There are many variations:\n   *   - The string `\"--\"` creates a _divider_\n   *   - A function creates a normal menu entry that calls the function\n   *     when selected\n   *   - An object with `.type == \"checkbox\"` creates a checkbox.  In\n   *     addition\n   *\t - if `.preference` exists, the checkbox is associated with the\n   *\t   named preference, otherwise\n   *\t - if `.action' exists, it is called on change with the new\n   *\t   value as argument.\n   *   - An object with `.type == \"submenu\" creates a submenu.\n   *   - An object with `.typeIcon` gets an icon indicating the type\n   */\n  function appendDropdown(dropdown, label, options) {\n    function glyph(name) {\n      if ( name ) {\n\treturn $.el.span({\n\t  class:\"dropdown-icon glyphicon glyphicon-\" + name});\n      }\n    }\n\n    if ( options == undefined ) {\n      // ignored\n    } else if ( options == \"--\" ) {\n      dropdown.append($.el.li({class:\"divider\"}));\n    } else if ( typeof(options) == \"function\" ) {\t/* Simple action */\n      var a;\n      var i;\n\n      if ( options.typeIcon ) {\n\ta = $.el.a(form.widgets.typeIcon(options.typeIcon),\n\t\t   label);\n      } else if ( options.glyph ) {\n\ta = $.el.a(glyph(options.glyph), label);\n      } else if ( (i=label.indexOf(\"(\")) > 0 ) {\n\tvar accell = label.substr(i);\n\ta = $.el.a({class:\"accelerated\"},\n\t\t   label.substr(0,i).trim(),\n\t\t   $.el.span({class:\"accell-spacer\"},accell),\n\t\t   $.el.span({class:\"accell-text\"},accell));\n      } else {\n\ta = $.el.a(label);\n      }\n\n      $(a).data('navbar-action', options);\n      if ( options.name )\n\t$(a).attr(\"id\", options.name);\n\n      dropdown.append($.el.li(a));\n    } else {\t\t\t\t\t\t/* Checkbox item */\n      if ( options.type == \"checkbox\" ) {\n\tvar cb = $($.el.input({type:\"checkbox\"}));\n\n\tif ( options.preference !== undefined ) {\n\t  cb.addClass(\"swish-event-receiver\");\n\t  if ( preferences.getVal(options.preference) )\n\t    cb.prop(\"checked\", true);\n\t  cb.on(\"click\", function() {\n\t    preferences.setVal(options.preference, $(this).prop(\"checked\"));\n\t  });\n\t  cb.on(\"preference\", function(pref) {\n\t    if ( pref.name == options.preference )\n\t      cb.prop(\"checked\", pref.value);\n\t  });\n\t} else {\n\t  if ( options.checked )\n\t    cb.prop(\"checked\", options.checked);\n\n\t  cb.on(\"click\", function() {\n\t    options.action($(this).prop(\"checked\"));\n\t  });\n\t}\n        dropdown.append($.el.li({class:\"checkbox\"},\n\t\t\t\tcb[0],\n\t\t\t\t$.el.span(label)));\n      } else if ( options.type == \"submenu\" ) {\t\t/* Submenu */\n\tvar submenu = $.el.ul({class:\"dropdown-menu sub-menu\"});\n\n\tdropdown.append($.el.li($.el.a({class:\"trigger right-caret\"},\n\t\t\t\t       glyph(options.glyph),\n\t\t\t\t       label),\n\t\t\t\tsubmenu));\n\tif ( options.action )\n\t  $(submenu).data('navbar-action', options.action);\n\tif ( options.items ) {\n\t  for(var i=0; i<options.items.length; i++) {\n\t    $(submenu).append($.el.li($.el.a(options.items[i])));\n\t  }\n\t}\n\tif ( options.update ) {\n\t  $(submenu).on(\"update\", function(ev) {\n\t    options.update.call(ev.target);\n\t  });\n\t}\n      } else {\n\talert(\"Unknown navbar item\");\n      }\n    }\n  }\n\n  function dropDownUL(nb, name) {\n    return nb.find(\".dropdown-menu\").filter(function() {\n      return $(this).attr(\"name\") == name;\n    });\n  }\n\n  function runMenu(a, ev) {\n    if ( $(a).hasClass(\"trigger\") ) {\n      clickSubMenu.call(a, ev);\n    } else {\n      var action = ($(a).data('navbar-action') ||\n\t\t    $(a).parents(\"ul\").data('navbar-action'));\n\n      clickNotSubMenu.call(a, ev);\n\n      if ( action ) {\n\tev.preventDefault();\n\taction.call(a, ev);\n      } else if ( $(a).hasClass(\"trigger\") ) {\n\tclickSubMenu.call(a, ev);\n      }\n\n      return false;\n    }\n  }\n\n  /**\n   * Bootstrap 3 extension to provide submenus.  Inspired by\n   * http://jsfiddle.net/chirayu45/YXkUT/16/\n   * Triggers an `update` event to the submenu's <ul> just\n   * before opening it.\n   */\n  function clickSubMenu(ev) {\n    var current = $(this).next();\t\t /* the submenu <ul> */\n    var grandparent = $(this).parent().parent(); /* the main menu <ul> */\n\n    if ( $(this).hasClass('left-caret') ||\n\t $(this).hasClass('right-caret') )\n      $(this).toggleClass('right-caret left-caret');\n\n    grandparent.find('.left-caret')\n\t       .not(this)\n\t       .toggleClass('right-caret left-caret');\n    grandparent.find(\".sub-menu:visible\")\n\t       .not(current).hide();\n\n    current.trigger(\"update\");\n    current.toggle();\n    ev.stopPropagation();\n  }\n\n  function clickNotSubMenu(ev) {\n    var root = $(this).closest('.dropdown');\n\n    root.find('.left-caret').toggleClass('right-caret left-caret');\n    root.find('.sub-menu:visible').hide();\n  }\n\n/* invoke is merged in general menu callback above\n  $(function() {\n    $(\".dropdown-menu > li > a.trigger\").on(\"click\", clickSubMenu);\n    $(\".dropdown-menu > li > a:not(.trigger)\").on(\"click\", clickNotSubMenu);\n  });\n*/\n\n  /**\n   * navbar jQuery plugin populates the application navigation bar using\n   * bootstrap styling.  Menu entries are added from JavaScript objects,\n   * which directly assocuate a label with a function.  It also allows\n   * populating a dropdown from a callback.\n   *\n   * @class navbar\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} method Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.navbar = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/templates-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var templatesMap = [];\n  var Pos = CodeMirror.Pos;\n\n  function startsWith(str, token) {\n    return str.slice(0, token.length).toUpperCase() == token.toUpperCase();\n  }\n\n  function DEBUG(topic) {\n    //console.log.apply(null, Array.slice(arguments, 1));\n  }\n\n  CodeMirror.templatesHint = {};\n\n  function getLabel(proposal) {\n    var template = proposal.template;\n    return document.createTextNode(template.name);\n  }\n\n  var ourMap = {\n    Tab : selectNextVariable,\n    Enter : function(cm) { selectNextVariable(cm, true) },\n    Esc : uninstall,\n    \"Ctrl-Space\": hintValue\n  }\n\n  function TemplateState() {\n    this.marked = [];\n    this.selectableMarkers = [];\n    this.varIndex = -1;\n  }\n\n  function isNested(cm) {\n    return cm._templateStack ? cm._templateStack.length : 0;\n  }\n\n\n  // A Template instance represents an autocompletion template.\n  // It can be parsed from an eclipse-type template string,\n  // or supplied with a pre-parsed token array.\n  //\n  // The token array may consist of the following tokens:\n  //   \"\\n\" (newline character)\n  //       Single newline character per token.\n  //   text (string)\n  //       Normal text, no newline characters allowed.\n  //   { variable: \"name\" }\n  //       Variable token, to be populated by the user.\n  //   { cursor: true }\n  //       The cursor will be placed here after completing the template\n  //   { line_separator: true }\n  //       If the template surrounds existing text, the existing text will be\n  //       placed here. Not implemented currently.\n  function Template(data) {\n    this.name = data.name; // Optional\n    this.description = data.description; // Optional\n    this.text = data.text; // Optional\n    if ( data.varTemplates ) {\n      this.varTemplates = data.varTemplates;\n    }\n    if(data.template != null) {\n      this.source = data.template;\n    } else if(data.tokens != null) {\n      this._tokens = data.tokens;\n    }\n  }\n\n  Template.prototype.tokens = function() {\n    if(this._tokens == null) {\n      this._tokens = parseTemplate(this.source);\n    }\n    return this._tokens;\n  };\n\n  Template.prototype.content = function() {\n    if(this._content == null) {\n      var tokens = this.tokens();\n      var content = '';\n      for ( var i = 0; i < tokens.length; i++) {\n        var token = tokens[i];\n        if (typeof token == 'string') {\n          content += token;\n        } else if (token.variable) {\n          content += token.variable;\n        } else {\n          // Ignore special tokens\n        }\n      }\n      this._content = content;\n    }\n    return this._content;\n  };\n\n  function parseTemplate(content) {\n    var tokens = [];\n    var varParsing = false;\n    var last = null;\n    var token = '';\n    for ( var i = 0; i < content.length; i++) {\n      var current = content.charAt(i);\n      if (current == \"\\n\") {\n        if (token != '') {\n          tokens.push(token);\n        }\n        token = '';\n        tokens.push(current);\n        last = null;\n      } else {\n        var addChar = true;\n        if (varParsing) {\n          if (current == \"}\") {\n            varParsing = false;\n            addChar = false;\n            if(token == 'cursor') {\n              tokens.push({\n                \"cursor\" : true\n              });\n            } else if(token == 'line_selection') {\n              tokens.push({\n                \"line_selection\" : true\n              });\n            } else {\n              tokens.push({\n                \"variable\" : token\n              });\n            }\n            token = '';\n          }\n        } else {\n          if (current == \"$\" && (i + 1) <= content.length) {\n            i++;\n            var next = content.charAt(i);\n            if (next == \"{\") {\n              varParsing = true;\n              addChar = false;\n              if (token != '') {\n                tokens.push(token);\n              }\n              token = '';\n            }\n          }\n\n        }\n        if (addChar && last != \"$\") {\n          token += current;\n          last = current;\n        } else {\n          last = null;\n        }\n      }\n    }\n    if (token != '') {\n      tokens.push(token);\n    }\n    return tokens;\n  }\n\n\n  function getMarkerChanged(cm, textChanged) {\n    var markers = cm.findMarksAt(textChanged.from);\n    if (markers) {\n      for ( var i = 0; i < markers.length; i++) {\n        var marker = markers[i];\n        if (marker._templateVar) {\n          return marker;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Track changes.  If the change is outside any template variable,\n   * uninstall() the template editing.  If it is inside, see whether\n   * there are any other template variables with the same name and\n   * update them accordingly.\n   */\n  function onChange(cm, textChanged) {\n    var state = cm._templateState;\n    if (!textChanged.origin || !state || state.updating) {\n      return;\n    }\n    try {\n      state.updating = true;\n      var markerChanged = getMarkerChanged(cm, textChanged);\n      if (markerChanged == null) {\n        uninstall(cm);\n      } else {\n        var posChanged = markerChanged.find();\n        var newContent = cm.getRange(posChanged.from, posChanged.to);\n        for ( var i = 0; i < state.marked.length; i++) {\n          var marker = state.marked[i];\n          if (marker != markerChanged\n              && marker._templateVar == markerChanged._templateVar) {\n            var pos = marker.find();\n            cm.replaceRange(newContent, pos.from, pos.to);\n          }\n        }\n      }\n    } finally {\n      state.updating = false;\n    }\n  }\n\n  function onEndCompletion(cm) {\n    DEBUG(\"template\", \"endCompletion()\", isNested(cm));\n    if ( isNested(cm) )\n      uninstall(cm, true);\n  }\n\n  function selectNextVariable(cm, exitOnEnd) {\n    var state = cm._templateState;\n    if (state.selectableMarkers.length > 0) {\n      state.varIndex++;\n      if (state.varIndex >= state.selectableMarkers.length) {\n        // If we reach the last token and exitOnEnd is true, we exit instead of\n        // looping back to the first token.\n        if (exitOnEnd) {\n          exit(cm);\n          return;\n        }\n        state.varIndex = 0;\n      }\n      var marker = state.selectableMarkers[state.varIndex];\n      var pos = marker.find();\n      cm.setSelection(pos.from, pos.to);\n      var templateVar = marker._templateVar;\n      for ( var i = 0; i < state.marked.length; i++) {\n        var m = state.marked[i];\n        if (m == marker) {\n          m.className = \"\";\n          m.startStyle = \"\";\n          m.endStyle = \"\";\n        } else {\n          if (m._templateVar == marker._templateVar) {\n            m.className = \"CodeMirror-templates-variable-selected\";\n            m.startStyle = \"\";\n            m.endStyle = \"\";\n          } else {\n            m.className = \"CodeMirror-templates-variable\";\n            m.startStyle = \"CodeMirror-templates-variable-start\";\n            m.endStyle = \"CodeMirror-templates-variable-end\";\n          }\n        }\n      }\n      cm.refresh();\n    } else {\n      // No tokens - exit.\n      exit(cm);\n    }\n  }\n\n  /**\n   * Recursively use hinting for the values\n   */\n  function hintValue(cm) {\n    var state  = cm._templateState;\n    var marker = state.selectableMarkers[state.varIndex];\n    var prev   = {state:state};\n\n    if ( cm._hintTemplateMarker )\n      prev.marker = cm._hintTemplateMarker;\n\n    if ( !cm._templateStack )\n      cm._templateStack = [];\n    cm._templateStack.push(prev);\n    delete cm._templateState;\n\n    function samePos(p1, p2) {\n      return p1.ch == p2.ch && p1.line == p2.line;\n    }\n\n    cm._hintTemplateMarker = marker;\n    var pos = marker.find();\n    var sels = cm.listSelections();\n    if ( sels.length == 1 &&\n\t samePos(sels[0].anchor, pos.from) &&\n\t samePos(sels[0].head,   pos.to) ) {\n      cm.replaceRange(\"\\u2630\", pos.from, pos.to);\n    }\n\n    CodeMirror.commands.autocomplete(cm);\n  }\n\n  Template.prototype.insert = function(cm, data) {\n    var template = this;\n    var nested = isNested(cm);\n\n    DEBUG(\"template\", \"Insert, nested\", nested, \"template\", template);\n    if ( cm._templateState || nested ) {\n      DEBUG(\"template\", \"Uninstall from insert()\", nested);\n      uninstall(cm);\n    }\n\n    if ( template.text ) {\n      cm.replaceRange(template.text, data.from, data.to);\n      return;\n    }\n\n    var state = new TemplateState();\n    cm._templateState = state;\n\n    var tokens = this.tokens();\n    var content = '';\n    var line = data.from.line;\n    var col = data.from.ch;\n    var markers = [];\n    var variables = [];\n    var cursor = null;\n    for ( var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n      if(typeof token == 'string') {\n        content += token;\n        if (token == \"\\n\") {\n          line++;\n          col = 0;\n        } else {\n          col += token.length;\n        }\n      } else if (token.variable) {\n        content += token.variable;\n        var from = Pos(line, col);\n        var to = Pos(line, col\n            + token.variable.length);\n        var selectable = variables[token.variable] != false;\n        col += token.variable.length;\n        markers.push({\n          from : from,\n          to : to,\n          variable : token.variable,\n          selectable : selectable\n        });\n        variables[token.variable] = false;\n      } else if(token.cursor) {\n        cursor = Pos(line, col);\n      } else {\n        // Unhandled tokens, e.g. line_selection. Ignore.\n      }\n    }\n\n    var from = data.from;\n    var to = data.to;\n    var startLine = from.line;\n    cm.replaceRange(content, from, to);\n\n    for ( var i = 0; i < markers.length; i++) {\n      function subTemplate(tvar) {\n\tif ( template.varTemplates && template.varTemplates[tvar] )\n\t  return template.varTemplates[tvar];\n\treturn undefined;\n      }\n\n      var marker = markers[i], from = marker.from, to = marker.to;\n      var markText = cm.markText(from, to, {\n        className : \"CodeMirror-templates-variable\",\n        startStyle : \"CodeMirror-templates-variable-start\",\n        endStyle : \"CodeMirror-templates-variable-end\",\n        inclusiveLeft : true,\n        inclusiveRight : true,\n        clearWhenEmpty: false,  // Works in CodeMirror 4.6\n        _templateVar : marker.variable,\n\t_templates : subTemplate(marker.variable)\n      });\n      state.marked.push(markText);\n      if (marker.selectable == true) {\n        state.selectableMarkers.push(markText);\n      }\n    }\n\n    if (cursor != null) {\n      state.cursor = cm.setBookmark(cursor);\n    }\n\n    // Auto-indent everything except the first line.\n    // This will typically indent the rest of the code according\n    // to the indentation of the first line.\n    // We do the indentation after creating the markers, so that the\n    // markers are moved accordingly.\n    var lines = content.split(\"\\n\");\n    for ( var x = 1; x < lines.length; x++) {\n      var targetLine = startLine + x;\n      cm.indentLine(targetLine);\n    }\n\n    // Have to be before selectNextVariable, since selectNextVariable\n    // may exit and remove the keymap again.\n    if ( !nested ) {\n      cm.on(\"change\", onChange);\n      DEBUG(\"template\", \"Installing endCompletion\");\n      cm.on(\"endCompletion\", onEndCompletion);\n      cm.addKeyMap(ourMap);\n    }\n\n    selectNextVariable(cm, true);\n  }\n\n  function exit(cm) {\n    // Move to ${cursor} in the template, then uninstall.\n    var cursor = cm._templateState.cursor;\n    if (cursor != null) {\n      var cursorPos = cursor.find();\n      if (cursorPos != null) {\n        cm.setSelection(cursorPos, cursorPos);\n      }\n    }\n    uninstall(cm);\n  }\n\n  function uninstall(cm, canceled) {\n    var state = cm._templateState;\n\n    function canceledMarker() {\n      DEBUG(\"template\", \"Canceled?\");\n\n      for ( var i = 0; i < state.marked.length; i++) {\n\tvar mark = state.marked[i];\n\tif ( mark == cm._hintTemplateMarker ) {\n\t  var pos = mark.find();\n\t  if ( pos && cm.getRange(pos.from, pos.to) == \"\\u2630\" )\n\t    cm.replaceRange(mark._templateVar, pos.from, pos.to);\n\t}\n      }\n    }\n\n    if ( state ) {\n      DEBUG(\"template\", \"Uninstall, clearing: \", state.marked.length);\n      for ( var i = 0; i < state.marked.length; i++) {\n\tstate.marked[i].clear();\n      }\n      if (state.cursor != null) {\n\tstate.cursor.clear();\n      }\n      state.marked.length = 0;\n      state.selectableMarkers.length = 0;\n    } else {\n      DEBUG(\"template\", \"Uninstall, no state\");\n    }\n\n    if ( cm._templateStack && cm._templateStack.length > 0 ) {\n      DEBUG(\"template\", \"Popping from level\", cm._templateStack.length);\n      var prev = cm._templateStack.pop();\n      state = cm._templateState = prev.state;\n      if ( canceled && cm._hintTemplateMarker )\n\tcanceledMarker();\n      if ( prev.marker ) {\n\tcm._hintTemplateMarker = prev.marker;\n      } else {\n\tdelete cm._hintTemplateMarker;\n      }\n    } else {\n      DEBUG(\"template\", \"Leaving template mode\");\n      cm.off(\"change\", onChange);\n      cm.off(\"endCompletion\", onEndCompletion);\n      cm.removeKeyMap(ourMap);\n      delete cm._templateState;\n      delete cm._hintTemplateMarker;\n    }\n  }\n\n  CodeMirror.templatesHint.getCompletions = function(cm, completions, text) {\n    var mode = cm.doc.mode.name;\n    var list = templatesMap[mode];\n    if (list) {\n      for ( var i = 0; i < list.length; i++) {\n        var template = list[i];\n        if (startsWith(template.name, text)) {\n          var label = template.name;\n          if (template.description) {\n            label += '- ' + template.description;\n          }\n          var className = \"CodeMirror-hint-template\";\n          if (template.className)\n            className = template.className;\n          var completion = {\n            \"className\" : className,\n            \"text\" : label,\n            \"template\" : template,\n          };\n          completion.data = completion;\n          completion.hint = function(cm, data, completion) {\n            completion.template.insert(cm, data);\n          };\n          completion.info = function(completion) {\n            var content = completion.template.content();\n\n            if (CodeMirror.runMode) {\n              var result = document.createElement('div');\n              result.className = 'cm-s-default';\n              if (cm.options && cm.options.theme)\n                result.className = 'cm-s-' + cm.options.theme;\n              CodeMirror.runMode(content, cm.getMode().name, result);\n              return result;\n            }\n            return content;\n          };\n          completions.push(completion);\n        }\n      }\n    }\n  }\n\n  CodeMirror.templatesHint.Template = Template;\n\n  CodeMirror.templatesHint.addTemplates = function(templates) {\n    var context = templates.context;\n    if (context) {\n      var list = templatesMap[context];\n      if (!list) {\n        list = [];\n        templatesMap[context] = list;\n      }\n      templates.templates.forEach(function(template) {\n        list.push(new Template(template));\n      });\n    }\n  }\n\n});\n\n\n","// Loosely based on codemirror/addon/hint/xml-hint.js\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog-template-hint',[ \"../../lib/codemirror\",\n\t     \"../../addon/hint/templates-hint\",\n\t     \"jquery\", \"config\", \"laconic\"\n\t   ], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, TemplatesHint, $, config) {\n  \"use strict\";\n\n  var templates = config.swish.templates || [];\n\n  function PrologHint(options) {\n    var hint = this;\n\n    function modeToTemplate(mode) {\n      var varp = /[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g;\n      var detp = /\\bis\\s+(det|nondet|semidet|fail|multi)$/;\n\n      if ( !hint.template ) {\n\thint.template    = mode.replace(varp, \"$${$1}\")\n\t\t\t       .replace(detp, \"\");\n\tif ( !hint.template.match(/\\${cursor}/) )\n\t  hint.template += \"${cursor}\";\n      }\n\n      if ( !hint.displayText )\n\thint.displayText = mode;\n\n      if ( !hint.varTemplates ) {\n\tvar metav = mode.match(/:[A-Z][A-Za-z_0-9]*/g);\n\n\tif ( metav && metav.length > 0 ) {\n\t  var vt = {};\n\n\t  for(var i=0; i<metav.length; i++) {\n\t    vt[metav[i].substring(1)] = templates;\n\t  }\n\t  hint.varTemplates = vt;\n\t}\n      }\n    }\n\n    var copy = [ \"template\",\n\t\t \"displayText\",\n\t\t \"text\",\n\t\t {from:\"summary\", to:\"description\"},\n\t\t \"className\",\n\t\t \"varTemplates\"\n\t       ];\n\n    if ( typeof(options) == \"string\" ) {\n      this.displayText = options;\n      this.text = options;\n    } else {\n      for(var i=0; i<copy.length; i++) {\n\tvar spec = copy[i];\n\tif ( typeof(spec) == \"string\" ) {\n\t  if ( options[spec] )\n\t    this[spec] = options[spec];\n\t} else {\n\t  if ( options[spec.from] )\n\t    this[spec.to] = options[spec.from];\n\t}\n      }\n\n      if ( options.mode )\n\tmodeToTemplate(options.mode);\n\n      if ( options.classes )\n\toptions.className = options.classes.join(\" \");\n    }\n\n    /**\n     * Render a completion label inside a <li>.  This hook is called\n     * from standard CM addons/hint/show-hint.js to render the hinting\n     * alternatives.\n     * @param li is the list element\n     * @param data seems to be the result from getHints()\n     * @param me is this PrologHint instance\n     */\n    this.render = function(li, data, me) {\n      $(li).append(me.displayText);\n    }\n    /**\n     * Provide an HTML string or element that describes the completion.\n     * used by addon/hint/show-context-info.js\n     * @param me is this PrologHint instance\n     */\n    this.info = function(me) {\n      return me.description;\n    }\n  }\n\n  PrologHint.prototype.hint = function(cm, data, completion) {\n    var template = new CodeMirror.templatesHint.Template(this);\n    template.insert(cm, data);\n  };\n\n  function hintsFor(cm, state, options) {\n    var text = state.token.string;\n    var results = [];\n    var myTemplates = templates;\n\n    function startsWith(str, start) {\n      return str.slice(0, start.length) == start;\n    }\n\n    if ( cm._hintTemplateMarker ) {\n      if ( text == \"\\u2630\" )\n\ttext = \"\";\n      myTemplates = cm._hintTemplateMarker._templates;\n    }\n\n    var symbol = text.length > 0 && !text.match(/\\w/);\n\n    if ( myTemplates ) {\n      for(var i=0; i<myTemplates.length; i++) {\n\tvar templ = myTemplates[i];\n\tif ( typeof(templ) == \"string\" ) {\n\t  if ( startsWith(templ, text) )\n\t    results.push(new PrologHint(templ));\n\t} else {\n\t  var fields = [\"name\", \"mode\", \"template\", \"text\"];\n\n\t  if ( symbol ) {\n\t    if ( templ.name && templ.name.indexOf(text) >= 0 )\n\t      results.push(new PrologHint(templ));\n\t  } else {\n\t    for(var j=0; j<fields.length; j++) {\n\t      if ( templ[fields[j]] )\n\t      { if ( startsWith(templ[fields[j]], text) ) {\n\t\t  results.push(new PrologHint(templ));\n\t        }\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      }\n    }\n\n    if ( results.length == 0 ) {\t/* Include AnyWord hinting completions */\n      var anyword = CodeMirror.hint.anyword;\n      var opts = (text==\"\"&&cm._hintTemplateMarker) ?\n\t\t  { word: /[A-Z][A-Za-z0-9_]*/ } : options;\n      var anyhint = anyword(cm, opts);\n      for(var i=0; i<anyhint.list.length; i++)\n\tresults.push(new PrologHint(anyhint.list[i]));\n    }\n\n    return { list: results,\n             from: state.position.from,\n\t     to:   state.position.to\n           };\n  }\n\n  function getHints(cm, callback, options) {\n    var state = getState(cm);\n  //console.log(state);\n    var data  = hintsFor(cm, state, options);\n    CodeMirror.attachContextInfo(data);\n    callback(data);\n  }\n  getHints.async = true;\n\n  function getState(cm) {\n    var cur = cm.getCursor();\n    var token = cm.getTokenAt(cur);\n//  var enriched = cm.getEnrichedToken(token);\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"prolog\") {\n      return null;\n    }\n\n    var tokenPosition = {\n      from: new CodeMirror.Pos(cur.line, token.start),\n      to:   new CodeMirror.Pos(cur.line, token.end)\n    };\n\n    return { token:    token,\n\t     position: tokenPosition\n           };\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"prologTemplate\", getHints);\n\n  return {\n    getHints: getHints,\n    getState: getState\n  };\n});\n\n","/*  Generated file.  Do not edit!\n    Generated by Unicode/prolog_syntax_map.pl\n*/\n\ndefine('cm/mode/prolog/prolog-ctype',[], function() {\nvar UNICODE_MAP_SIZE     = 4353;\nvar U_ID_START            = 0x1;\nvar U_ID_CONTINUE         = 0x2;\nvar U_UPPERCASE           = 0x4;\nvar U_SEPARATOR           = 0x8;\nvar U_SYMBOL             = 0x10;\nvar U_OTHER              = 0x20;\nvar U_CONTROL            = 0x40;\n\n\nvar ucp0x00 = \"\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x10\\x00\\x10\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x20\\x20\\x10\\x03\\x10\\x10\\x10\\x20\\x03\\x10\\x20\\x20\\x20\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x01 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x02 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x03 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x07\\x03\\x07\\x03\\x03\\x10\\x07\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x07\\x12\\x07\\x07\\x07\\x00\\x07\\x00\\x07\\x07\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x10\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x07\\x07\";\nvar ucp0x04 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x10\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x05 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x10\\x02\\x02\\x10\\x02\\x02\\x10\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x06 = \"\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x40\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x10\\x10\\x03\";\nvar ucp0x07 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x40\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x08 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\";\nvar ucp0x09 = \"\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x0a = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0b = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0c = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0d = \"\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0e = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0f = \"\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x02\\x10\\x02\\x10\\x02\\x10\\x10\\x10\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x00\\x00\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x12 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x13 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x14 = \"\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x16 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x08\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x17 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x18 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x40\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x19 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x22\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b = \"\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\";\nvar ucp0x1c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\";\nvar ucp0x1e = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x1f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x00\\x07\\x00\\x07\\x00\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x00\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x00\";\nvar ucp0x20 = \"\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x08\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x40\\x40\\x40\\x40\\x40\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x20\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x02\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x21 = \"\\x10\\x10\\x07\\x10\\x10\\x10\\x10\\x07\\x10\\x10\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x10\\x07\\x10\\x10\\x13\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x10\\x07\\x10\\x07\\x10\\x07\\x07\\x07\\x07\\x13\\x03\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x23 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x24 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\";\nvar ucp0x27 = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x2b = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2c = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x07\\x03\\x02\\x02\\x02\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x20\\x10\\x10\";\nvar ucp0x2d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x2e = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2f = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x30 = \"\\x08\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x13\\x13\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x31 = \"\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x32 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\";\nvar ucp0x4d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x9f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa4 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\";\nvar ucp0xa6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x02\\x20\\x20\\x20\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x00\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xa8 = \"\\x03\\x03\\x02\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xa9 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xaa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xab = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xd7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xd8 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdb = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xdc = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdf = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xe0 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf8 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xfa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfb = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xfd = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\";\nvar ucp0xfe = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x12\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x40\";\nvar ucp0xff = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x12\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x10\\x10\\x00\\x00\";\nvar ucp0x100 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x101 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x00\\x00\";\nvar ucp0x102 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x103 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x104 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x108 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x109 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10a = \"\\x03\\x02\\x02\\x02\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10b = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10e = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x110 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x111 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x116 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x123 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x124 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x134 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b0 = \"\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d1 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d2 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d4 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x00\\x07\\x07\\x00\\x00\\x07\\x00\\x00\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d5 = \"\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x1d7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x1ee = \"\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f1 = \"\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f2 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f4 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\";\nvar ucp0x1f5 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f6 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2a6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2b7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x2b8 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2fa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe00 = \"\\x00\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe01 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf00 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar ucp0x1000 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10ff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar uflags_map = [ucp0x00, ucp0x01, ucp0x02, ucp0x03, ucp0x04, ucp0x05, ucp0x06, ucp0x07,\n  ucp0x08, ucp0x09, ucp0x0a, ucp0x0b, ucp0x0c, ucp0x0d, ucp0x0e, ucp0x0f,\n  ucp0x10, 0x3, ucp0x12, ucp0x13, ucp0x14, 0x3, ucp0x16, ucp0x17,\n  ucp0x18, ucp0x19, ucp0x1a, ucp0x1b, ucp0x1c, ucp0x1d, ucp0x1e, ucp0x1f,\n  ucp0x20, ucp0x21, 0x10, ucp0x23, ucp0x24, 0x10, 0x10, ucp0x27,\n  0x10, 0x10, 0x10, ucp0x2b, ucp0x2c, ucp0x2d, ucp0x2e, ucp0x2f,\n  ucp0x30, ucp0x31, ucp0x32, 0x10, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, ucp0x4d, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x9f,\n  0x3, 0x3, 0x3, 0x3, ucp0xa4, 0x3, ucp0xa6, ucp0xa7,\n  ucp0xa8, ucp0xa9, ucp0xaa, ucp0xab, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0xd7,\n  ucp0xd8, 0x0, 0x0, ucp0xdb, ucp0xdc, 0x0, 0x0, ucp0xdf,\n  ucp0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf8, 0x3, ucp0xfa, ucp0xfb, 0x3, ucp0xfd, ucp0xfe, ucp0xff,\n  ucp0x100, ucp0x101, ucp0x102, ucp0x103, ucp0x104, 0x0, 0x0, 0x0,\n  ucp0x108, ucp0x109, ucp0x10a, ucp0x10b, ucp0x10c, 0x0, ucp0x10e, 0x0,\n  ucp0x110, ucp0x111, 0x0, 0x0, 0x0, 0x0, ucp0x116, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, ucp0x123, ucp0x124, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, ucp0x134, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x16a, 0x0, 0x0, 0x0, 0x0, ucp0x16f,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1b0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1d0, ucp0x1d1, ucp0x1d2, ucp0x1d3, ucp0x1d4, ucp0x1d5, ucp0x1d6, ucp0x1d7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x1ee, 0x0,\n  ucp0x1f0, ucp0x1f1, ucp0x1f2, ucp0x1f3, ucp0x1f4, ucp0x1f5, ucp0x1f6, ucp0x1f7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2a6, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2b7,\n  ucp0x2b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x2fa, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xe00, ucp0xe01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0xfff,\n  ucp0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x10ff,\n  0x0];\n\nfunction uflagsW(chr) {\n  var code = chr.charCodeAt(0);\n  var cp = Math.floor(code/0x100);\n  if ( cp < UNICODE_MAP_SIZE ) {\n    var map = uflags_map[cp];\n\n    if ( typeof(map) == \"number\" ) {\n      return map;\n    } else {\n      return map.charCodeAt(code&0xff);\n    }\n  }\n  return 0;\n}\n\nreturn {\n  flags:       uflagsW,\n  id_start:    function(chr) { return (uflagsW(chr) & U_ID_START)    != 0 },\n  id_continue: function(chr) { return (uflagsW(chr) & U_ID_CONTINUE) != 0 },\n  uppercase:   function(chr) { return (uflagsW(chr) & U_UPPERCASE)   != 0 },\n  separator:   function(chr) { return (uflagsW(chr) & U_SEPARATOR)   != 0 },\n  symbol:      function(chr) { return (uflagsW(chr) & U_SYMBOL)      != 0 },\n  other:       function(chr) { return (uflagsW(chr) & U_OTHER)       != 0 },\n  control:     function(chr) { return (uflagsW(chr) & U_CONTROL)     != 0 }\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog',[\"../../lib/codemirror\", \"./prolog-ctype\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, ctype) {\n\"use strict\";\n\n  CodeMirror.defineMode(\"prolog\", function(cmConfig, parserConfig) {\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n\t\t /*******************************\n\t\t *\t   CONFIG DATA\t\t*\n\t\t *******************************/\n\n  var config = { quasiQuotations: true,\t\t/* {|Syntax||Quotation|} */\n\t         dicts: true,\t\t\t/* tag{k:v, ...} */\n\t\t unicodeEscape: true,\t\t/* \\uXXXX and \\UXXXXXXXX */\n\t\t multiLineQuoted: true,\t\t/* \"...\\n...\" */\n\t\t groupedIntegers: true\t\t/* 10 000 or 10_000 */\n\t       };\n\n  var quoteType = { '\"': \"string\",\n\t\t    \"'\": \"qatom\",\n\t\t    \"`\": \"bqstring\"\n\t\t  };\n\n  var isSingleEscChar = /[abref\\\\'\"nrtsv]/;\n  var isOctalDigit    = /[0-7]/;\n  var isHexDigit      = /[0-9a-fA-F]/;\n\n  var isSymbolChar = /[-#$&*+./:<=>?@\\\\^~]/;\t/* Prolog glueing symbols chars */\n  var isSoloChar   = /[[\\]{}(),;|!]/;\t\t/* Prolog solo chars */\n  var isNeck       = /^(:-|-->)$/;\n  var isControlOp  = /^(,|;|->|\\*->|\\\\+|\\|)$/;\n\n\n\t\t /*******************************\n\t\t *\t CHARACTER ESCAPES\t*\n\t\t *******************************/\n\n  function readDigits(stream, re, count) {\n    if ( count > 0 ) {\n      while( count-- > 0 ) {\n\tif ( !re.test(stream.next()) )\n\t  return false;\n      }\n    } else {\n      while ( re.test(stream.peek()) )\n\tstream.next();\n    }\n    return true;\n  }\n\n  function readEsc(stream) {\n    var next = stream.next();\n    if ( isSingleEscChar.test(next) )\n      return true;\n    switch( next )\n    { case \"u\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 4); /* SWI */\n        return false;\n      case \"U\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 8); /* SWI */\n        return false;\n      case null: return true;\t\t\t/* end of line */\n      case \"c\": stream.eatSpace(); return true;\n      case \"x\": return readDigits(stream, isHexDigit, 2);\n    }\n    if ( isOctalDigit.test(next) ) {\n      if ( !readDigits(stream, isOctalDigit, -1) )\n\treturn false;\n      if ( stream.peek() == \"\\\\\" )\t\t/* SWI: optional closing \\ */\n\tstream.next();\n      return true;\n    }\n    return false;\n  }\n\n  function nextUntilUnescaped(stream, state, end) {\n    var next;\n    while ((next = stream.next()) != null) {\n      if ( next == end && end != stream.peek() )\n      { state.nesting.pop();\n        return false;\n      }\n      if ( next == \"\\\\\" )\n      { if ( !readEsc(stream) )\n\t  return false;\n      }\n    }\n    return config.multiLineQuoted;\n  }\n\n\t\t /*******************************\n\t\t *\tCONTEXT NESTING\t\t*\n\t\t *******************************/\n\n  function nesting(state) {\n    return state.nesting.slice(-1)[0];\n  }\n\n  /* Called on every non-comment token */\n  function setArg1(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg == 0 )\t\t/* nested in a compound */\n\tnest.arg = 1;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = false;\n    } else\n      state.goalStart = false;\n  }\n\n  function setArgAlignment(state) {\n    var nest = nesting(state);\n    if ( nest && !nest.alignment && nest.arg != undefined ) {\n      if ( nest.arg == 0 )\n\tnest.alignment = nest.leftCol ? nest.leftCol+4 : nest.column+4;\n      else\n\tnest.alignment = nest.column+1;\n    }\n  }\n\n  function nextArg(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg )\t\t\t/* nested in a compound */\n\tnest.arg++;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = true;\t\t/* FIXME: also needed for ; and -> */\n    } else\n      state.goalStart = true;\n  }\n\n  function isControl(state) {\t\t/* our terms are goals */\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.type == \"control\" ) {\n\treturn true;\n      }\n      return false;\n    } else\n      return state.inBody;\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function peekSpace(stream) {\t\t/* TBD: handle block comment as space */\n    if ( stream.eol() ||\n\t /[\\s%]/.test(stream.peek()) )\n      return true;\n    return false;\n  }\n\n\n\t\t /*******************************\n\t\t *\t   SUB TOKENISERS\t*\n\t\t *******************************/\n\n  function plTokenBase(stream, state) {\n    var ch = stream.next();\n\n    if ( ch == \"(\" ) {\n      if ( state.lastType == \"functor\" ) {\n\tstate.nesting.push({ functor: state.functorName,\n\t\t\t     column: stream.column(),\n\t\t\t     leftCol: state.functorColumn,\n\t\t\t     arg: 0\n\t\t\t   });\n\tdelete state.functorName;\n\tdelete state.functorColumn;\n      } else {\n\tstate.nesting.push({ type: \"control\",\n\t\t\t     closeColumn: stream.column(),\n\t\t\t     alignment: stream.column()+4\n\t\t\t   });\n      }\n      return ret(\"solo\", null, \"(\");\n    }\n\n    if ( ch == \"{\" && state.lastType == \"tag\" ) {\n      state.nesting.push({ tag: state.tagName,\n\t\t\t   column: stream.column(),\n\t\t\t   leftCol: state.tagColumn,\n\t\t\t   arg: 0\n\t\t\t });\n      delete state.tagName;\n      delete state.tagColumn;\n      return ret(\"dict_open\", null);\n    }\n\n    if ( ch == \"/\" && stream.eat(\"*\") )\n      return chain(stream, state, plTokenComment);\n\n    if ( ch == \"%\" ) {\n      stream.skipToEnd();\n      return ret(\"comment\", \"comment\");\n    }\n\n    setArg1(state);\n\n    if ( isSoloChar.test(ch) ) {\n      switch ( ch )\n      { case \")\":\n\t  state.nesting.pop();\n\t  break;\n\tcase \"]\":\n\t  state.nesting.pop();\n\t  return ret(\"list_close\", null, \"]\");\n\tcase \"}\":\n\t{ var nest = nesting(state);\n\t  var type = (nest && nest.tag) ? \"dict_close\" : \"brace_term_close\";\n\n\t  state.nesting.pop();\n\t  return ret(type, null);\n\t}\n\tcase \",\":\n\t  if ( stream.eol() )\n\t    state.commaAtEOL = true;\n\t  nextArg(state);\n          /*FALLTHROUGH*/\n\tcase \";\":\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n\tcase \"[\":\n\t  state.nesting.push({ type: \"list\",\n\t\t\t       closeColumn: stream.column(),\n\t\t\t       alignment: stream.column()+2\n\t\t\t     });\n\t  return ret(\"list_open\", null, \"[\");\n\t  break;\n\tcase \"{\":\n\t  if ( config.quasiQuotations && stream.eat(\"|\") ) {\n\t    state.nesting.push({ type: \"quasi-quotation\",\n\t\t\t         alignment: stream.column()+1\n\t\t\t       });\n\t    return ret(\"qq_open\", \"qq_open\");\n\t  } else {\n\t    state.nesting.push({ type: \"curly\",\n\t\t\t         closeColumn: stream.column(),\n\t\t\t\t alignment: stream.column()+2\n\t\t\t       });\n\t    return ret(\"brace_term_open\", null);\n\t  }\n\t  break;\n\tcase \"|\":\n\t  if ( config.quasiQuotations ) {\n\t    if ( stream.eat(\"|\") ) {\n\t      state.tokenize = plTokenQuasiQuotation;\n\t      return ret(\"qq_sep\", \"qq_sep\");\n\t    } else if ( stream.eat(\"}\") ) {\n\t      state.nesting.pop();\n\t      return ret(\"qq_close\", \"qq_close\");\n\t    }\n\t  }\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n      }\n      return ret(\"solo\", null, ch);\n    }\n\n    if (ch == '\"' || ch == \"'\" || ch == \"`\")\n    { state.nesting.push({ type: \"quoted\",\n\t\t\t   alignment: stream.column()+1\n\t\t\t });\n      return chain(stream, state, plTokenString(ch));\n    }\n\n    if ( ch == \"0\" ) {\n      if ( stream.eat(/x/i)) {\n\tstream.eatWhile(/[\\da-f]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/o/i)) {\n\tstream.eatWhile(/[0-7]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/'/) ) {\t\t\t/* 0' */\n\tvar next = stream.next();\n\tif ( next == \"\\\\\" ) {\n\t  if ( !readEsc(stream) )\n\t    return ret(\"error\", \"error\");\n\t}\n\treturn ret(\"code\", \"code\");\n      }\n    }\n\n    if ( /\\d/.test(ch) || /[+-]/.test(ch) && stream.eat(/\\d/)) {\n      if ( config.groupedIntegers )\n\tstream.match(/^\\d*((_|\\s+)\\d+)*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      else\n\tstream.match(/^\\d*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(ch == \"-\" ? \"neg-number\" :\n\t\t ch == \"+\" ? \"pos-number\" :\n\t\t \"number\");\n    }\n\n    if ( ctype.symbol(ch) ) {\n      stream.eatWhile(ctype.symbol);\n      var atom = stream.current();\n      if ( atom == \".\" && peekSpace(stream) ) {\n\tif ( nesting(state) ) {\n\t  return ret(\"fullstop\", \"error\", atom);\n\t} else {\n\t} return ret(\"fullstop\", \"fullstop\", atom);\n      } else if ( isNeck.test(atom) ) {\n\treturn ret(\"neck\", \"neck\", atom);\n      } else if ( isControl(state) && isControlOp.test(atom) ) {\n\tstate.goalStart = true;\n\treturn ret(\"symbol\", \"operator\", atom);\n      } else\n\treturn ret(\"symbol\", \"operator\", atom);\n    }\n\n    stream.eatWhile(ctype.id_continue);\n    var word = stream.current();\n    if ( stream.peek() == \"{\" && config.dicts ) {\n      state.tagName = word;\t\t\t/* tmp state extension */\n      state.tagColumn = stream.column();\n      return ret(\"tag\", \"tag\", word);\n    } else if ( ch == \"_\" ) {\n      if ( word.length == 1 ) {\n\treturn ret(\"var\", \"anon\", word);\n      } else {\n\tvar sec = word.charAt(1);\n\tif ( ctype.uppercase(sec) )\n\t  return ret(\"var\", \"var-2\", word);\n      }\n      return ret(\"var\", \"var\", word);\n    } else if ( ctype.uppercase(ch) ) {\n      return ret(\"var\", \"var\", word);\n    } else if ( stream.peek() == \"(\" ) {\n      state.functorName = word;\t\t\t/* tmp state extension */\n      state.functorColumn = stream.column();\n      return ret(\"functor\", \"functor\", word);\n    } else\n      return ret(\"atom\", \"atom\", word);\n  }\n\n  function plTokenString(quote) {\n    return function(stream, state) {\n      if (!nextUntilUnescaped(stream, state, quote)) {\n        state.tokenize = plTokenBase;\n\tif ( stream.peek() == \"(\" ) {\t\t/* 'quoted functor'() */\n\t  var word = stream.current();\n\t  state.functorName = word;\t\t/* tmp state extension */\n\t  return ret(\"functor\", \"functor\", word);\n\t}\n\tif ( stream.peek() == \"{\" && config.dicts ) { /* 'quoted tag'{} */\n\t  var word = stream.current();\n\t  state.tagName = word;\t\t\t/* tmp state extension */\n\t  return ret(\"tag\", \"tag\", word);\n\t}\n      }\n      return ret(quoteType[quote], quoteType[quote]);\n    };\n  }\n\n  function plTokenQuasiQuotation(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"}\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n\tstream.backUp(2);\n\tbreak;\n      }\n      maybeEnd = (ch == \"|\");\n    }\n    return ret(\"qq_content\", \"qq_content\");\n  }\n\n  function plTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t   RETURN OBJECT\t*\n\t\t *******************************/\n\n  return {\n    startState: function() {\n      return {\n        tokenize: plTokenBase,\n\tinBody: false,\n\tgoalStart: false,\n\tlastType: null,\n\tnesting: new Array(),\t\t/* ([{}]) nesting FIXME: copy this */\n\tcurTerm: null,\t\t\t/* term index in metainfo */\n\tcurToken: null\t\t\t/* token in term */\n      };\n    },\n\n    token: function(stream, state) {\n      var nest;\n\n      if ( state.curTerm == null && parserConfig.metainfo ) {\n\tstate.curTerm = 0;\n\tstate.curToken = 0;\n      }\n\n      if ( stream.sol() )\n\tdelete state.commaAtEOL;\n\n      if ( state.tokenize == plTokenBase && stream.eatSpace() ) {\n\tif ( stream.eol() )\n\t  setArgAlignment(state);\n\treturn null;\n      }\n\n      var style = state.tokenize(stream, state);\n\n      if ( stream.eol() )\n\tsetArgAlignment(state);\n\n      if ( type == \"neck\" ) {\n\tstate.inBody = true;\n\tstate.goalStart = true;\n      } else if ( type == \"fullstop\" ) {\n\tstate.inBody = false;\n\tstate.goalStart = false;\n      }\n\n      state.lastType = type;\n\n      if ( typeof(parserConfig.enrich) == \"function\" )\n\tstyle = parserConfig.enrich(stream, state, type, content, style);\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == plTokenComment) return CodeMirror.Pass;\n\n      var nest;\n      if ( (nest=nesting(state)) ) {\n\tif ( nest.closeColumn && !state.commaAtEOL )\n\t  return nest.closeColumn;\n\treturn nest.alignment;\n      }\n      if ( !state.inBody )\n\treturn 0;\n\n      return 4;\n    },\n\n    theme: \"prolog\",\n\n    blockCommentStart: \"/*\",\t\t/* continuecomment.js support */\n    blockCommentEnd: \"*/\",\n    blockCommentContinue: \" * \",\n    lineComment: \"%\",\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-prolog\", \"prolog\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_keys',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n\n\t\t /*******************************\n\t\t *\t    ACTIVE KEYS\t\t*\n\t\t *******************************/\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSupport if-then-else layout like this:\n\ngoal :-\n    (\tCondition\n    ->  IfTrue\n    ;   IfFalse\n    ).\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n\n  CodeMirror.commands.prologStartIfThenElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.state.goalStart == true )\n    { cm.replaceSelection(\"(   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartThen = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    /* FIXME: These functions are copied from prolog.js.  How\n       can we reuse these?\n    */\n    function nesting(state) {\n      var len = state.nesting.length;\n      if ( len > 0 )\n\treturn state.nesting[len-1];\n      return null;\n    }\n\n    function isControl(state) {\t\t/* our terms are goals */\n      var nest = nesting(state);\n      if ( nest ) {\n\tif ( nest.type == \"control\" ) {\n\t  return true;\n\t}\n\treturn false;\n      } else\n\treturn state.inBody;\n    }\n\n    if ( start.ch == token.end &&\n\t token.type == \"operator\" &&\n\t token.string == \"-\" &&\n\t isControl(token.state) )\n    { cm.replaceSelection(\">  \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.start == 0 && start.ch == token.end &&\n\t !/\\S/.test(token.string) )\n    { cm.replaceSelection(\";   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologKeys\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prolog\");\n    if ( val ) {\n      var map = { name:     \"prolog\",\n\t\t  \"'('\":    \"prologStartIfThenElse\",\n\t\t  \"'>'\":    \"prologStartThen\",\n\t\t  \"';'\":    \"prologStartElse\",\n\t\t  \"Ctrl-L\": \"refreshHighlight\"\n\t\t};\n      cm.addKeyMap(map);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_query',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  CodeMirror.commands.prologFireQuery = function(cm) {\n    var endl  = cm.lineCount();\n    var endc  = cm.getLine(endl-1).length;\n    var token = cm.getTokenAt({line:endl, ch:endc}, true);\n\n    if ( token.type == \"fullstop\" )\n      return cm.prologFireQuery(cm.getValue());\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologQuery\", null, function(cm, func, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prologQuery\");\n    if ( typeof(func) == \"function\" ) {\n      var map = { name:         \"prologQuery\",\n\t\t  \"Enter\":      \"prologFireQuery\",\n\t\t  \"Ctrl-Enter\": \"newlineAndIndent\"\n\t\t};\n      cm.addKeyMap(map);\n      cm.prologFireQuery = func;\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/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nThis  addon  extends  the  \"prolog\"   mode  to  perform  server-assisted\nhighlighting.   Server-assisted   highlighting   provides   a   semantic\nclassification of tokens.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_server',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var DEFAULT_DELAY = 1000;\n  var USE_CHANGES_IF_LONGER_THEN = 1000;\n\n  function State(options) {\n    if (typeof options == \"object\") {\n      this.enabled = options.enabled || false;\n      this.role    = options.role    || \"source\";\n      if ( options.sourceID )\n\tthis.sourceID = options.sourceID;\n      this.url  = { change: options.url + \"change\",\n\t\t    tokens: options.url + \"tokens\",\n\t\t    leave:  options.url + \"leave\",\n\t\t    info:   options.url + \"info\"\n\t\t  },\n      this.delay = options.delay ? options.delay : DEFAULT_DELAY;\n      this.generationFromServer = -1;\n      this.tmo = null;\t\t\t/* timeout handle */\n    }\n  }\n\n  /**\n   * Trap CodeMirror change events. This asks for\n   * serverAssistedHighlight() after a configured delay.  If there\n   * is a mirror on the server, we collect the changes in an array\n   * and post them when we ask for server tokens.  Earlier versions\n   * posted immediately, but this is a waste of resources.  We might\n   * want to restore that behaviour if we want to forward changes to\n   * other users.\n   */\n  function changeEditor(cm, change) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || !state.enabled )\n      return;\n\n    if ( state.tmo ) {\t\t\t/* changing: delay refresh */\n      cm.askRefresh();\n    }\n\n    if ( state.changes !== undefined )\n      state.changes.push(change);\n\n    if ( change.origin == \"setValue\" ||\n\t state.generationFromServer == -1 ) {\n      state.changes = undefined;\t/* force a clean start */\n      cm.serverAssistedHighlight();\n    }\n  }\n\n  function leaveEditor(cm) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || state.uuid == null )\n      return;\n    var uuid = state.uuid;\n    delete state.uuid;\n\n    $.ajax({ url: state.url.leave,\n\t     async: false,  // otherwise it is killed before completion\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     dataType: \"json\",\n\t     data: JSON.stringify({ uuid: uuid\n\t\t\t\t  })\n\t   });\n  }\n\n  /**\n   * control server side highlight support. This can be in three states:\n   * (1) absent, in which case `cm.state.prologHighlightServer` is not\n   * present, (2) disabled and (3) enabled.\n   */\n  CodeMirror.defineOption(\"prologHighlightServer\", false, function(cm, val, old) {\n    function leaveCM() { leaveEditor(cm); }\n\n    if ( cm.state.prologHighlightServer ) {\n      if ( val == null ) {\t\t/* remove the highlight server */\n\tleaveEditor(cm);\n\tcm.off(\"change\", changeEditor);\n\twindow.removeEventListener(\"unload\", leaveCM);\n\tdelete cm.state.prologHighlightServer;\n\tcm.setOption(\"mode\", {name:\"prolog\"});\n      } else {\n\tif ( val.enabled != old.enabled ) {\n\t  cm.state.prologHighlightServer.enabled = val.enabled;\n\t  if ( val.enabled ) {\t\t/* enable the highlight server */\n\t    cm.on(\"change\", changeEditor);\n\t    window.addEventListener(\"unload\", leaveCM);\n\t    if ( cm.lineCount() > 0 ) {\n\t      cm.serverAssistedHighlight(true);\n\t    }\n\t  } else {\t\t\t/* disable */\n\t    leaveEditor(cm);\n\t    cm.off(\"change\", changeEditor);\n\t    window.removeEventListener(\"unload\", leaveCM);\n\t    cm.setOption(\"mode\", {name:\"prolog\"});\n\t  }\n\t}\n      }\n    } else if ( val ) {\t\t\t/* create for the first time */\n      cm.state.prologHighlightServer = new State(val);\n      if ( cm.state.prologHighlightServer.enabled ) {\n\tcm.on(\"change\", changeEditor);\n\twindow.addEventListener(\"unload\", leaveCM);\n\tif ( cm.lineCount() > 0 ) {\n\t  cm.serverAssistedHighlight(true);\n\t}\n      }\n    }\n  });\n\n\n  CodeMirror.prototype.askRefresh = function(time) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null )\n      return;\n\n    if ( time === undefined )\n      time = state.delay;\n\n    if ( state.tmo )\n      clearTimeout(state.tmo);\n\n    state.tmo = setTimeout(function() { cm.serverAssistedHighlight(); },\n\t\t\t   time);\n  };\n\n\n  CodeMirror.prototype.serverAssistedHighlight = function(always) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n    var msg = {};\n\n    state.tmo = null;\n\n    if ( state == null || state.url == null || !state.enabled ||\n\t (cm.isClean(state.generationFromServer) && !always) )\n      return;\n\n    function modeOptions() {\n      var opts = cm.getOption(\"mode\");\n\n      if ( typeof(opts) != \"object\" ) {\n\topts = { name:\"prolog\",\n\t\t enrich:enrichStyle,\n\t\t editor:cm\n\t       };\n      } else if ( !opts.enrich ) {\n\topts.enrich = enrichStyle;\n\topts.editor = cm;\n      }\n      return opts;\n    }\n\n    if ( state.uuid ) {\t\t\t/* server has a mirror */\n      msg.uuid = state.uuid;\n      if ( state.changes == undefined ) {\n\tmsg.text = cm.getValue();\n\tif ( msg.text.length > USE_CHANGES_IF_LONGER_THEN )\n\t  state.changes = [];\n      } else {\n\tmsg.changes = state.changes;\n\tstate.changes = [];\n      }\n    } else {\n      msg.text   = cm.getValue();\n      if ( msg.text.trim() == \"\" )\n\treturn;\n      state.uuid = generateUUID();\n      msg.uuid   = state.uuid;\n    }\n    msg.role = state.role;\n    if ( typeof(state.sourceID) == \"function\" )\n      msg.sourceID = state.sourceID();\n\n    state.generationFromServer = cm.changeGeneration();\n    $.ajax({ url: state.url.tokens,\n\t     dataType: \"json\",\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     data: JSON.stringify(msg),\n\t     success: function(data, status) {\n\t       var opts = modeOptions();\n\t       opts.metainfo = data.tokens;\n\t       cm.setOption(\"mode\", opts);\n\t     },\n\t     error: function(jqXHR) {\n\t       if ( jqXHR.status == 409 ) {\n\t\t delete state.uuid;\n\t\t /* And refresh?  problem is this might get us into\n\t\t  * a loop.  We'd need some info from the server that\n\t\t  * this won't happen again\n\t\t  */\n\t       }\n\t     }\n\t   });\n  }\n\n  CodeMirror.commands.refreshHighlight = function(cm) {\n    cm.serverAssistedHighlight(true);\n  }\n\n  function generateUUID() {\n    var d = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n      .replace(/[xy]/g, function(c) {\n        var r = (d + Math.random()*16)%16 | 0;\n        d = Math.floor(d/16);\n        return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n    });\n    return uuid;\n  }\n\n  var syncOnType = { \"var\": \"var\",\t/* JavaScript Types */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"bqstring\": \"string\",\n\t\t     \"symbol\": \"atom\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"number\": \"number\",\n\t\t     \"string\": \"string\",\n\t\t     \"code\": \"number\",\n\t\t     \"neg-number\": \"number\",\n\t\t     \"pos-number\": \"number\",\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\"\n\t\t   };\n  var serverSync = { \"var\": \"var\",\t/* Server Types */\n\t\t     \"singleton\": \"var\",\n\t\t     \"uatom\": \"var\",\t/* var_prefix in effect */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"string\": \"string\",\n\t\t     \"codes\": \"string\",\n\t\t     \"chars\": \"string\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"control\": \"atom\",\n\t\t     \"meta\": \"atom\",\t/* or number 0-9 */\n\t\t     \"op_type\": \"atom\",\n\t\t     \"int\": \"number\",\n\t\t     \"float\": \"number\",\n\t\t     \"key\": \"atom\",\t/* TBD: or integer */\n\t\t     \"sep\": \"atom\",\t/* : in dict */\n\t\t     \"ext_quant\": \"atom\", /* setof ^-symbol */\n\n\t\t     \"expanded\": \"expanded\",\n\t\t     \"comment_string\":\"string\",\n\t\t     \"identifier\": \"atom\",\n\t\t     \"delimiter\": \"atom\",\n\t\t     \"module\": \"atom\",\n\n\t\t     \"head_exported\": \"atom\",\n\t\t     \"head_public\": \"atom\",\n\t\t     \"head_extern\": \"atom\",\n\t\t     \"head_dynamic\": \"atom\",\n\t\t     \"head_multifile\": \"atom\",\n\t\t     \"head_unreferenced\": \"atom\",\n\t\t     \"head_hook\": \"atom\",\n\t\t     \"head_meta\": \"atom\",\n\t\t     \"head_constraint\": \"atom\",\n\t\t     \"head_imported\": \"atom\",\n\t\t     \"head_built_in\": \"atom\",\n\t\t     \"head_iso\": \"atom\",\n\t\t     \"head_def_iso\": \"atom\",\n\t\t     \"head_def_swi\": \"atom\",\n\t\t     \"head\": \"atom\",\n\n\t\t     \"goal_built_in\": \"atom\",\n\t\t     \"goal_imported\": \"atom\",\n\t\t     \"goal_autoload\": \"atom\",\n\t\t     \"goal_global\": \"atom\",\n\t\t     \"goal_undefined\": \"atom\",\n\t\t     \"goal_thread_local\": \"atom\",\n\t\t     \"goal_dynamic\": \"atom\",\n\t\t     \"goal_multifile\": \"atom\",\n\t\t     \"goal_expanded\": \"atom\",\n\t\t     \"goal_extern\": \"atom\",\n\t\t     \"goal_recursion\": \"atom\",\n\t\t     \"goal_meta\": \"atom\",\n\t\t     \"goal_foreign\": \"atom\",\n\t\t     \"goal_local\": \"atom\",\n\t\t     \"goal_constraint\": \"atom\",\n\t\t     \"goal_not_callable\": \"atom\",\n\n\t\t     \"xpce_method\": \"functor\",\n\t\t     \"xpce_class_builtin\":\"atom\",\n\t\t     \"xpce_class_lib\":\"atom\",\n\t\t     \"xpce_class_user\":\"atom\",\n\t\t     \"xpce_class_undef\":\"atom\",\n\n\t\t     \"option_name\": \"atom\",\n\t\t     \"no_option_name\": \"atom\",\n\t\t     \"flag_name\": \"atom\",\n\t\t     \"no_flag_name\": \"atom\",\n\n\t\t     \"file_no_depends\": \"atom\",\n\t\t     \"file\": \"atom\",\n\t\t     \"nofile\": \"atom\",\n\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"qq_type\": \"atom\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\",\n\n\t\t     \"string_terminal\": \"string\",\n\n\t\t     \"html\": \"functor\",\n\t\t     \"entity\": \"atom\",\n\t\t     \"html_attribute\": \"functor\",\n\t\t     \"sgml_attr_function\": \"atom\",\n\t\t     \"http_location_for_id\": \"atom\",\n\t\t     \"http_no_location_for_id\": \"atom\"\n\t\t   };\n\n  /* Enrich the style using the token list from the server.\n\n  @param stream  is the CM input stream\n  @param state   is the mode state object\n  @param type    is the syntactic category detected by the mode\n  @param content is the textual content of the token (if any)\n  @param style   is the style determined by the mode.\n  */\n\n  function enrichStyle(stream, state, type, content, style) {\n    var parserConfig = this;\n\n    /* serverToken(state) returns the server token at\n       state.curTerm.curToken or null\n    */\n\n    function serverToken(state) {\n      var term = parserConfig.metainfo[state.curTerm];\n      if ( !term ) return null;\n      var token = term[state.curToken];\n      if ( !token ) return null;\n\n      return token;\n    }\n\n    /* outOfSync() is called whenever we lost synchronization.  It\n       records the position where we lost sync and asks the server\n       for a fresh analysis.\n    */\n\n    function outOfSync() {\n      if ( !state.outOfSync ) {\n\tconsole.log(\"Mismatch: (\"+content+\") \"+type+\"/\"+token.type);\n\tstate.outOfSync = { okToken:       state.curToken,\n\t\t\t    okTerm:        state.curTerm,\n\t\t\t    skippedTerms:  0,\n\t\t\t    skippedTokens: [],\n\t\t\t  };\n      }\n      parserConfig.editor.askRefresh();\n    }\n\n    /* reSync() tries to re-synchronize after we lost synchronization\n       with the server due to local edits.  If successful, it clears\n       state.outOfSync and returns the enriched token.  Else it returns\n       null.\n\n       Data to work from:\n\n\t state.outOfSync.skipped: skipped tokens since out-of-sync or\n\t\tlast term\n\t state.outOfSync.skippedTerms: number of fullstop seen since\n\t\twe lost synchronisation\n    */\n\n    function reSync() {\n      var oos = state.outOfSync;\n      var resyncState = { curToken: oos.okToken,\n\t\t\t  curTerm:  oos.okTerm\n\t\t\t};\n\n      /* TBD */\n      if ( oos.skippedTerms ) {\n\n      } else {\n      }\n\n      return null;\n    }\n\n\n    /* match the next token.  It is possible that the server has combined\n       several tokens into one logical unit.  In that case the token is\n       merely a prefix of what the server returned and we try to eat the\n       remainder.  Examples are files specifications such as\n       library(lists).\n    */\n\n    function matchTokenText(tokenText) {\n      var start;\n\n      if ( content == tokenText )\n\treturn true;\n\n      if ( (start=tokenText.lastIndexOf(content,1)) >= 0 ) {\n\tvar left = tokenText.substring(content.length+start);\n\tfor(var i=0; i<left.length; i++) {\n\t  if ( !stream.eat(left.charAt(i)) ) {\n\t    stream.backUp(i);\n\t    return false;\n\t  }\n\t}\n\treturn true;\n      }\n\n      return false;\n    }\n\n    /**\n     * Test whether we are nested in quoted material.  That happens if\n     * a newline appears in the quoted value, where our CodeMirror\n     * tokeniser gives multiple \"string\", etc. tokens, while the server\n     * only gives one, so we should not increment the server curToken.\n     */\n    function isQuoted(nesting) {\n      var last = nesting.slice(-1)[0];\n      return last && last.type == \"quoted\";\n    }\n\n    /**\n     * Matches the server token `token` to the current token and updates\n     * state.curToken and/or state.curTerm if the two matches.\n     *\n     * @param {Object} token is the next token from the server array\n     * @param {Object} state is the mode state object\n     * @returns {String|undefined} enriched style, the original style\n     * or `undefined` if the mode token does not match the server token.\n    */\n\n    function matchToken(token, state) {\n      if ( token ) {\n\tif ( syncOnType[type] ) {\n\t  if ( token.text && content ) {\n\t    if ( matchTokenText(token.text) ) {\n\t      state.curToken++;\n\t      return token.type;\n\t    }\n\n\t    return undefined;\n\t  } else if ( syncOnType[type] == serverSync[token.type] ) {\n\t    if ( type == \"fullstop\" ) {\n\t      state.curTerm++;\n\t      state.curToken = 0;\n\t    } else if ( !isQuoted(state.nesting) ) {\n\t      state.curToken++;\n\t    }\n\t    return token.type;\n\t  } else if ( syncOnType[type] == token.base ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"qatom\" && serverSync[token.type] == \"atom\" ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"number\" && token.type == \"meta\" ) {\n\t    state.curToken++;\t/* 0-9 as meta_predicate arguments */\n\t    return token.type;\n\t  } else if ( type == \"neg-number\" &&\n\t\t      token.text && token.text == \"-\" ) {\n\t\t/* HACK: A-1 is tokenised as \"var\" \"neg-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  } else if ( type == \"pos-number\" &&\n\t\t      token.text && token.text == \"+\" ) {\n\t\t/* HACK: A+1 is tokenised as \"var\" \"pos-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  }\n\t} else if ( content && token.text == content ) {\n\t  state.curToken++;\t\t/* ,; are not synced */\n\t  return token.type;\n\t} else {\n\t  return style;\t\t\t/* not-synced client token */\n\t}\n      }\n\n      return undefined;\n    }\n\n    /* enrichStyle() body */\n\n    if ( state.curTerm != null ) {\n      var token;\n      var serverStyle;\n\n      //console.log(type,style,content,state);\n\n      if ( state.syntax_error ) {\t\t/* error state; recap after . */\n\tif ( type == \"fullstop\" ) {\n\t  parserConfig.editor.askRefresh();\n\t  delete state.syntax_error;\n\t}\n\treturn style;\n      }\n\n      if ( state.outOfSync ) {\t\t\t/* lost synchronization */\n\tvar oos = state.outOfSync;\n\n\tif ( oos.skippedTerms <= 3 ) {\n\t  oos.skippedTokens.push({ type:    type,\n\t\t\t           style:   style,\n\t\t\t\t   content: content\n\t\t\t         });\n\n\t  if ( (serverStyle=reSync()) ) {\n\t    return serverStyle;\t\t\t/* re-synchronized! */\n\t  } else if ( type == \"fullstop\" ) {\n\t    oos.skippedTokens = [];\n\t    oos.skippedTerms++;\n\t  }\n\t}\n\n\treturn style;\n      }\n\n      if ( !(token=serverToken(state)) ) {\n\tparserConfig.editor.askRefresh();\t/* more text added at the end */\n\treturn style;\n      }\n\n      //console.log(\"Enrich: (\"+content+\") \"+type+\"/\"+token.type);\n\n      if ( (serverStyle=matchToken(token, state)) !== undefined ) {\n\treturn serverStyle;\n      } else if ( token.type == \"syntax_error\" ) {\n\tstate.syntax_error = true;\n\tstate.curToken = 0;\n\tstate.curTerm++;\n\treturn style;\n      } else {\n\toutOfSync();\n\treturn style + \" outofsync\";\n      }\n    }\n\n    return style;\n  }\n\n\t\t /*******************************\n\t\t *\t  FETCH ENRICHED\t*\n\t\t *******************************/\n\n  CodeMirror.prototype.getEnrichedToken = function(token) {\n    if ( token.state.curTerm != null && token.state.curToken != null )\n    { var state = this.getOption(\"mode\");\n      var terminfo;\n\n      if ( state.metainfo && (terminfo=state.metainfo[token.state.curTerm]) )\n\treturn terminfo[token.state.curToken-1];\n    }\n\n    return undefined;\n  }\n\n  /**\n   * @param {Object} [elem] is the element that will be filled with\n   * the token information.  If not provided, a `<span>` of class\n   * `token-info` is returned.\n   * @returns {Object} DOM object providing info that will be filled\n   * later from the ajax call.\n   */\n  CodeMirror.prototype.tokenInfo = function(token, elem) {\n    var state = this.state.prologHighlightServer;\n\n    if ( !elem )\n      elem = $($.el.span({class:\"token-info\"}, \"...\"));\n\n    $.ajax({ url: state.url.info,\n\t     data: token,\n\t     success: function(data) {\n\t       elem.html(data);\n\t     }\n           });\n\n    return elem[0];\n  }\n\n  /**\n   * @param {Object} token is an enriched token\n   * @returns {Array(Object)} is an array of source references.\n   */\n\n  CodeMirror.prototype.getTokenReferences = function(token) {\n    var result = [];\n\n    function setFile(obj, from) {\n      if ( from && from.indexOf(\"swish://\") == 0 ) {\n\tobj.file = from.substring(8);\n\treturn true;\n      }\n    }\n\n    switch(token.type) {\n      case \"goal_local\":\n\tvar obj = {\n\t  title: \"Source for \"+token.text+\"/\"+token.arity,\n\t  line:  token.line,\n\t  regex: new RegExp(\"\\\\b\"+RegExp.escape(token.text), \"g\"),\n\t  showAllMatches: true\n\t};\n\tsetFile(obj, token.file);\n\tresult.push(obj);\n\tbreak;\n      case \"file\":\n\tvar obj = {};\n\n\tif ( setFile(obj, token.path) ) {\n\t  obj.title = \"Included file \" + obj.file;\n\t  result.push(obj);\n\t}\n        break;\n    }\n\n    return result;\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/xml/xml',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                    'track': true, 'wbr': true, 'menuitem': true},\n  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                     'th': true, 'tr': true},\n  contextGrabbers: {\n    'dd': {'dd': true, 'dt': true},\n    'dt': {'dd': true, 'dt': true},\n    'li': {'li': true},\n    'option': {'option': true, 'optgroup': true},\n    'optgroup': {'optgroup': true},\n    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n    'rp': {'rp': true, 'rt': true},\n    'rt': {'rp': true, 'rt': true},\n    'tbody': {'tbody': true, 'tfoot': true},\n    'td': {'td': true, 'th': true},\n    'tfoot': {'tbody': true},\n    'th': {'td': true, 'th': true},\n    'thead': {'tbody': true, 'tfoot': true},\n    'tr': {'tr': true}\n  },\n  doNotIndent: {\"pre\": true},\n  allowUnquoted: true,\n  allowMissing: true,\n  caseFold: true\n}\n\nvar xmlConfig = {\n  autoSelfClosers: {},\n  implicitlyClosed: {},\n  contextGrabbers: {},\n  doNotIndent: {},\n  allowUnquoted: false,\n  allowMissing: false,\n  caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n  var indentUnit = editorConf.indentUnit\n  var config = {}\n  var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n  for (var prop in defaults) config[prop] = defaults[prop]\n  for (var prop in config_) config[prop] = config_[prop]\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n  inText.isInText = true;\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName;\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n          !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n        popContext(state);\n      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          config.autoSelfClosers.hasOwnProperty(tagName)) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!config.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function(baseIndent) {\n      var state = {tokenize: inText,\n                   state: baseState,\n                   indented: baseIndent || 0,\n                   tagName: null, tagStart: null,\n                   context: null}\n      if (baseIndent != null) state.baseIndent = baseIndent\n      return state\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (config.multilineTagIndentPastTag !== false)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n      }\n      if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = config.contextGrabbers[context.tagName];\n          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && context.prev && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return state.baseIndent || 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: config.htmlMode ? \"html\" : \"xml\",\n    helperType: config.htmlMode ? \"html\" : \"xml\",\n\n    skipAttribute: function(state) {\n      if (state.state == attrValueState)\n        state.state = attrState\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\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(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/meta',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.modeInfo = [\n    {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n    {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"pgp\"]},\n    {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n    {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n    {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n    {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\"]},\n    {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n    {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n    {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\"]},\n    {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n    {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n    {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n    {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists.txt$/},\n    {name: \"CoffeeScript\", mime: \"text/x-coffeescript\", mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n    {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n    {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n    {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n    {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n    {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n    {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n    {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n    {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n    {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n    {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n    {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n    {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n    {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n    {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n    {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n    {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n    {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n    {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n    {name: \"Embedded Javascript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n    {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n    {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n    {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n    {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n    {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n    {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\"]},\n    {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n    {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n    {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n    {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history).md$/i},\n    {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n    {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n    {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n    {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n    {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n    {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n    {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n    {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n    {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\"], alias: [\"xhtml\"]},\n    {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n    {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n    {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n    {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n    {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n    {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n     mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n    {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n    {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n    {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n    {name: \"Jinja2\", mime: \"null\", mode: \"jinja2\"},\n    {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"]},\n    {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n    {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n    {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n    {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n    {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n    {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n    {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\"]},\n    {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n    {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n    {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n    {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n    {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n    {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n    {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n    {name: \"NTriples\", mime: \"text/n-triples\", mode: \"ntriples\", ext: [\"nt\"]},\n    {name: \"Objective C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\", \"mm\"], alias: [\"objective-c\", \"objc\"]},\n    {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n    {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n    {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n    {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n    {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n    {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n    {name: \"PHP\", mime: \"application/x-httpd-php\", mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"phtml\"]},\n    {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n    {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n    {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n    {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n    {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n    {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n    {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n    {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n    {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n    {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n    {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n    {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n    {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n    {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n    {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n    {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n    {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n    {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n    {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n    {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n    {name: \"Shell\", mime: \"text/x-sh\", mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n    {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n    {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n    {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n    {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n    {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n    {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n    {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n    {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n    {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n    {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n    {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n    {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n    {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n    {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n    {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\"], alias: [\"tex\"]},\n    {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n    {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n    {name: \"TiddlyWiki \", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n    {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n    {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n    {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n    {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n    {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n    {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n    {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n    {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n    {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n    {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n    {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n    {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n    {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n    {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n    {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n    {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n    {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n    {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n    {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n    {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n    {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n    {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n    {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n    {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]}\n  ];\n  // Ensure all modes have a mime property for backwards compatibility\n  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n    var info = CodeMirror.modeInfo[i];\n    if (info.mimes) info.mime = info.mimes[0];\n  }\n\n  CodeMirror.findModeByMIME = function(mime) {\n    mime = mime.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.mime == mime) return info;\n      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n        if (info.mimes[j] == mime) return info;\n    }\n    if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n    if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n  };\n\n  CodeMirror.findModeByExtension = function(ext) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.ext) for (var j = 0; j < info.ext.length; j++)\n        if (info.ext[j] == ext) return info;\n    }\n  };\n\n  CodeMirror.findModeByFileName = function(filename) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.file && info.file.test(filename)) return info;\n    }\n    var dot = filename.lastIndexOf(\".\");\n    var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n    if (ext) return CodeMirror.findModeByExtension(ext);\n  };\n\n  CodeMirror.findModeByName = function(name) {\n    name = name.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.name.toLowerCase() == name) return info;\n      if (info.alias) for (var j = 0; j < info.alias.length; j++)\n        if (info.alias[j].toLowerCase() == name) return info;\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(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/markdown/markdown',[\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n  var htmlModeMissing = htmlMode.name == \"null\"\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Use `fencedCodeBlocks` to configure fenced code blocks. false to\n  // disable, string to specify a precise regexp that the fence should\n  // match, and true to allow three or more backticks or tildes (as\n  // per CommonMark).\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  // Allow token types to be overridden by user-provided token types.\n  if (modeCfg.tokenTypeOverrides === undefined)\n    modeCfg.tokenTypeOverrides = {};\n\n  var tokenTypes = {\n    header: \"header\",\n    code: \"comment\",\n    quote: \"quote\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    hr: \"hr\",\n    image: \"image\",\n    imageAltText: \"image-alt-text\",\n    imageMarker: \"image-marker\",\n    formatting: \"formatting\",\n    linkInline: \"link\",\n    linkEmail: \"link\",\n    linkText: \"link\",\n    linkHref: \"string\",\n    em: \"em\",\n    strong: \"strong\",\n    strikethrough: \"strikethrough\"\n  };\n\n  for (var tokenType in tokenTypes) {\n    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n    }\n  }\n\n  var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n  ,   listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/ // Must follow listRE\n  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n  ,   setextHeaderRE = /^ *(?:\\={1,}|-{1,})\\s*$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~]+/\n  ,   fencedCodeRE = new RegExp(\"^(\" + (modeCfg.fencedCodeBlocks === true ? \"~~~+|```+\" : modeCfg.fencedCodeBlocks) +\n                                \")[ \\\\t]*([\\\\w+#\\-]*)\")\n  ,   punctuation = /[!\\\"#$%&\\'()*+,\\-\\.\\/:;<=>?@\\[\\\\\\]^_`{|}~—]/\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n  function lineIsEmpty(line) {\n    return !line || !/\\S/.test(line.string)\n  }\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    // Reset state.indentedCode\n    state.indentedCode = false;\n    if (state.f == htmlBlock) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.prevLine = state.thisLine\n    state.thisLine = null\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n\n    var sol = stream.sol();\n\n    var prevLineIsList = state.list !== false,\n        prevLineIsIndentedCode = state.indentedCode;\n\n    state.indentedCode = false;\n\n    if (prevLineIsList) {\n      if (state.indentationDiff >= 0) { // Continued list\n        if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block\n          state.indentation -= state.indentationDiff;\n        }\n        state.list = null;\n      } else if (state.indentation > 0) {\n        state.list = null;\n      } else { // No longer a list\n        state.list = false;\n      }\n    }\n\n    var match = null;\n    if (state.indentationDiff >= 4) {\n      stream.skipToEnd();\n      if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) {\n        state.indentation -= 4;\n        state.indentedCode = true;\n        return tokenTypes.code;\n      } else {\n        return null;\n      }\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n      state.header = match[1].length;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList &&\n               !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) {\n      state.header = match[0].charAt(0) == '=' ? 1 : 2;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (stream.eat('>')) {\n      state.quote = sol ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    } else if (stream.match(hrRE, true)) {\n      state.hr = true;\n      return tokenTypes.hr;\n    } else if (match = stream.match(listRE)) {\n      var listType = match[1] ? \"ol\" : \"ul\";\n      state.indentation = stream.column() + stream.current().length;\n      state.list = true;\n\n      // While this list item's marker's indentation\n      // is less than the deepest list item's content's indentation,\n      // pop the deepest list item indentation off the stack.\n      while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) {\n        state.listStack.pop();\n      }\n\n      // Add this list item's content's indentation to the stack\n      state.listStack.push(state.indentation);\n\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) {\n      state.fencedChars = match[1]\n      // try switching mode\n      state.localMode = getMode(match[2]);\n      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = -1\n      return getType(state);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if (!htmlModeMissing) {\n      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n      if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n           (!inner.state.context && inner.state.tokenize.isInText)) ||\n          (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    if (state.fencedChars && stream.match(state.fencedChars)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      var returnType = getType(state)\n      state.localMode = state.localState = null;\n      state.block = blockNormal;\n      state.f = inlineNormal;\n      state.fencedChars = null;\n      state.code = 0\n      return returnType;\n    } else if (state.fencedChars && stream.skipTo(state.fencedChars)) {\n      return \"comment\"\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return tokenTypes.code;\n    }\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(tokenTypes.formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(tokenTypes.linkHref, \"url\");\n    } else { // Only apply inline styles to non-url text\n      if (state.strong) { styles.push(tokenTypes.strong); }\n      if (state.em) { styles.push(tokenTypes.em); }\n      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n      if (state.linkText) { styles.push(tokenTypes.linkText); }\n      if (state.code) { styles.push(tokenTypes.code); }\n      if (state.image) { styles.push(tokenTypes.image); }\n      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n    }\n\n    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(tokenTypes.quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(tokenTypes.quote + \"-\" + state.quote);\n      } else {\n        styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listStack.length - 1) % 3;\n      if (!listMod) {\n        styles.push(tokenTypes.list1);\n      } else if (listMod === 1) {\n        styles.push(tokenTypes.list2);\n      } else {\n        styles.push(tokenTypes.list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] !== \"x\";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    var ch = stream.next();\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return tokenTypes.linkHref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      stream.eatWhile('`');\n      var count = stream.current().length\n      if (state.code == 0) {\n        state.code = count\n        return getType(state)\n      } else if (count == state.code) { // Must be exact\n        var t = getType(state)\n        state.code = 0\n        return t\n      } else {\n        state.formatting = previousFormatting\n        return getType(state)\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        var formattingEscape = tokenTypes.formatting + \"-escape\";\n        return type ? type + \" \" + formattingEscape : formattingEscape;\n      }\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      state.imageMarker = true;\n      state.image = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n      state.imageMarker = false;\n      state.imageAltText = true\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.imageAltText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      var type = getType(state);\n      state.imageAltText = false;\n      state.image = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '[' && stream.match(/[^\\]]*\\](\\(.*\\)| ?\\[.*?\\])/, false) && !state.image) {\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText && stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkEmail;\n    }\n\n    if (ch === '<' && stream.match(/^(!--|[a-z]+(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^ >]+)?)*\\s*>)/i, false)) {\n      var end = stream.string.indexOf(\">\", stream.pos);\n      if (end != -1) {\n        var atts = stream.string.substring(stream.start, end);\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    } else if (ch === \"*\" || ch === \"_\") {\n      var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n      while (len < 3 && stream.eat(ch)) len++\n      var after = stream.peek() || \" \"\n      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n      var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n      var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n      var setEm = null, setStrong = null\n      if (len % 2) { // Em\n        if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setEm = true\n        else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setEm = false\n      }\n      if (len > 1) { // Strong\n        if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setStrong = true\n        else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setStrong = false\n      }\n      if (setStrong != null || setEm != null) {\n        if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n        if (setEm === true) state.em = ch\n        if (setStrong === true) state.strong = ch\n        var t = getType(state)\n        if (setEm === false) state.em = false\n        if (setStrong === false) state.strong = false\n        return t\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match(/^~~/, true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return tokenTypes.linkInline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\", 0);\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  var linkRE = {\n    \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n    \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\\\]]|\\\\.)*\\])*?(?=\\])/\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      stream.match(linkRE[endChar])\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(/^\\]:/, true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n    return tokenTypes.linkText;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return tokenTypes.linkHref + \" url\";\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLine: null,\n        thisLine: null,\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        code: 0,\n        em: false,\n        strong: false,\n        header: 0,\n        hr: false,\n        taskList: false,\n        list: false,\n        listStack: [],\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false,\n        fencedChars: null\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLine: s.prevLine,\n        thisLine: s.thisLine,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkTitle: s.linkTitle,\n        code: s.code,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        header: s.header,\n        hr: s.hr,\n        taskList: s.taskList,\n        list: s.list,\n        listStack: s.listStack.slice(0),\n        quote: s.quote,\n        indentedCode: s.indentedCode,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside,\n        fencedChars: s.fencedChars\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream != state.thisLine) {\n        var forceBlankLine = state.header || state.hr;\n\n        // Reset state.header and state.hr\n        state.header = 0;\n        state.hr = false;\n\n        if (stream.match(/^\\s*$/, true) || forceBlankLine) {\n          blankLine(state);\n          if (!forceBlankLine) return null\n          state.prevLine = null\n        }\n\n        state.prevLine = state.thisLine\n        state.thisLine = stream\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        state.f = state.block;\n        var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, '    ').length;\n        state.indentationDiff = Math.min(indentation - state.indentation, 4);\n        state.indentation = state.indentation + state.indentationDiff;\n        if (indentation > 0) return null;\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/edit/matchbrackets',[\"../../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.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 (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n    }\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\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/continuecomment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var modes = [\"clike\", \"css\", \"javascript\"];\n\n  for (var i = 0; i < modes.length; ++i)\n    CodeMirror.extendMode(modes[i], {blockCommentContinue: \" * \"});\n\n  function continueComment(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), mode, inserts = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head, token = cm.getTokenAt(pos);\n      if (token.type != \"comment\") return CodeMirror.Pass;\n      var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;\n      if (!mode) mode = modeHere;\n      else if (mode != modeHere) return CodeMirror.Pass;\n\n      var insert = null;\n      if (mode.blockCommentStart && mode.blockCommentContinue) {\n        var end = token.string.indexOf(mode.blockCommentEnd);\n        var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;\n        if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {\n          // Comment ended, don't continue it\n        } else if (token.string.indexOf(mode.blockCommentStart) == 0) {\n          insert = full.slice(0, token.start);\n          if (!/^\\s*$/.test(insert)) {\n            insert = \"\";\n            for (var j = 0; j < token.start; ++j) insert += \" \";\n          }\n        } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&\n                   found + mode.blockCommentContinue.length > token.start &&\n                   /^\\s*$/.test(full.slice(0, found))) {\n          insert = full.slice(0, found);\n        }\n        if (insert != null) insert += mode.blockCommentContinue;\n      }\n      if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {\n        var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);\n        if (found > -1) {\n          insert = line.slice(0, found);\n          if (/\\S/.test(insert)) insert = null;\n          else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\\s*/)[0];\n        }\n      }\n      if (insert == null) return CodeMirror.Pass;\n      inserts[i] = \"\\n\" + insert;\n    }\n\n    cm.operation(function() {\n      for (var i = ranges.length - 1; i >= 0; i--)\n        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n    });\n  }\n\n  function continueLineCommentEnabled(cm) {\n    var opt = cm.getOption(\"continueComments\");\n    if (opt && typeof opt == \"object\")\n      return opt.continueLineComment !== false;\n    return true;\n  }\n\n  CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"continueComment\");\n    if (val) {\n      var key = \"Enter\";\n      if (typeof val == \"string\")\n        key = val;\n      else if (typeof val == \"object\" && val.key)\n        key = val.key;\n      var map = {name: \"continueComment\"};\n      map[key] = continueComment;\n      cm.addKeyMap(map);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/comment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var noOptions = {};\n  var nonWS = /[^\\s\\u00a0]/;\n  var Pos = CodeMirror.Pos;\n\n  function firstNonWS(str) {\n    var found = str.search(nonWS);\n    return found == -1 ? 0 : found;\n  }\n\n  CodeMirror.commands.toggleComment = function(cm) {\n    cm.toggleComment();\n  };\n\n  CodeMirror.defineExtension(\"toggleComment\", function(options) {\n    if (!options) options = noOptions;\n    var cm = this;\n    var minLine = Infinity, ranges = this.listSelections(), mode = null;\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var from = ranges[i].from(), to = ranges[i].to();\n      if (from.line >= minLine) continue;\n      if (to.line >= minLine) to = Pos(minLine, 0);\n      minLine = from.line;\n      if (mode == null) {\n        if (cm.uncomment(from, to, options)) mode = \"un\";\n        else { cm.lineComment(from, to, options); mode = \"line\"; }\n      } else if (mode == \"un\") {\n        cm.uncomment(from, to, options);\n      } else {\n        cm.lineComment(from, to, options);\n      }\n    }\n  });\n\n  // Rough heuristic to try and detect lines that are part of multi-line string\n  function probablyInsideString(cm, pos, line) {\n    return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n  }\n\n  function getMode(cm, pos) {\n    var mode = cm.getMode()\n    return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n  }\n\n  CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var firstLine = self.getLine(from.line);\n    if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n    var commentString = options.lineComment || mode.lineComment;\n    if (!commentString) {\n      if (options.blockCommentStart || mode.blockCommentStart) {\n        options.fullLines = true;\n        self.blockComment(from, to, options);\n      }\n      return;\n    }\n\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n    var pad = options.padding == null ? \" \" : options.padding;\n    var blankLines = options.commentBlankLines || from.line == to.line;\n\n    self.operation(function() {\n      if (options.indent) {\n        var baseString = null;\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i);\n          var whitespace = line.slice(0, firstNonWS(line));\n          if (baseString == null || baseString.length > whitespace.length) {\n            baseString = whitespace;\n          }\n        }\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i), cut = baseString.length;\n          if (!blankLines && !nonWS.test(line)) continue;\n          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n          self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n        }\n      } else {\n        for (var i = from.line; i < end; ++i) {\n          if (blankLines || nonWS.test(self.getLine(i)))\n            self.replaceRange(commentString + pad, Pos(i, 0));\n        }\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) {\n      if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n        self.lineComment(from, to, options);\n      return;\n    }\n    if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n    var end = Math.min(to.line, self.lastLine());\n    if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n    var pad = options.padding == null ? \" \" : options.padding;\n    if (from.line > end) return;\n\n    self.operation(function() {\n      if (options.fullLines != false) {\n        var lastLineHasText = nonWS.test(self.getLine(end));\n        self.replaceRange(pad + endString, Pos(end));\n        self.replaceRange(startString + pad, Pos(from.line, 0));\n        var lead = options.blockCommentLead || mode.blockCommentLead;\n        if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n          if (i != end || lastLineHasText)\n            self.replaceRange(lead + pad, Pos(i, 0));\n      } else {\n        self.replaceRange(endString, to);\n        self.replaceRange(startString, from);\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n    // Try finding line comments\n    var lineString = options.lineComment || mode.lineComment, lines = [];\n    var pad = options.padding == null ? \" \" : options.padding, didSomething;\n    lineComment: {\n      if (!lineString) break lineComment;\n      for (var i = start; i <= end; ++i) {\n        var line = self.getLine(i);\n        var found = line.indexOf(lineString);\n        if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n        if (found == -1 && nonWS.test(line)) break lineComment;\n        if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n        lines.push(line);\n      }\n      self.operation(function() {\n        for (var i = start; i <= end; ++i) {\n          var line = lines[i - start];\n          var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n          if (pos < 0) continue;\n          if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n          didSomething = true;\n          self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n        }\n      });\n      if (didSomething) return true;\n    }\n\n    // Try block comments\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) return false;\n    var lead = options.blockCommentLead || mode.blockCommentLead;\n    var startLine = self.getLine(start), open = startLine.indexOf(startString)\n    if (open == -1) return false\n    var endLine = end == start ? startLine : self.getLine(end)\n    var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n    if (close == -1 && start != end) {\n      endLine = self.getLine(--end);\n      close = endLine.indexOf(endString);\n    }\n    var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n    if (close == -1 ||\n        !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n        !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n        self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n      return false;\n\n    // Avoid killing block comments completely outside the selection.\n    // Positions of the last startString before the start of the selection, and the first endString after it.\n    var lastStart = startLine.lastIndexOf(startString, from.ch);\n    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n    if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n    // Positions of the first endString after the end of the selection, and the last startString before it.\n    firstEnd = endLine.indexOf(endString, to.ch);\n    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n    if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n    self.operation(function() {\n      self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n                        Pos(end, close + endString.length));\n      var openEnd = open + startString.length;\n      if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n      self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n      if (lead) for (var i = start + 1; i <= end; ++i) {\n        var line = self.getLine(i), found = line.indexOf(lead);\n        if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n        var foundEnd = found + lead.length;\n        if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n        self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n      }\n    });\n    return true;\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-hint',[\"../../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    options = parseOptions(this, this.getCursor(\"start\"), options);\n    var selections = this.listSelections()\n    if (selections.length > 1) return;\n    // By default, don't allow completion when something is selected.\n    // A hint function can have a `supportsSelection` property to\n    // indicate that it can handle selections.\n    if (this.somethingSelected()) {\n      if (!options.hint.supportsSelection) return;\n      // Don't try with cross-line selections\n      for (var i = 0; i < selections.length; i++)\n        if (selections[i].head.line != selections[i].anchor.line) return;\n    }\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    if (!completion.options.hint) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    completion.update(true);\n  });\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.widget = null;\n    this.debounce = 0;\n    this.tick = 0;\n    this.startPos = this.cm.getCursor(\"start\");\n    this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n    var self = this;\n    cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n  }\n\n  var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n    return setTimeout(fn, 1000/60);\n  };\n  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n      this.tick = null;\n      this.cm.off(\"cursorActivity\", this.activityFunc);\n\n      if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n      if (this.widget) this.widget.close();\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    cursorActivity: function() {\n      if (this.debounce) {\n        cancelAnimationFrame(this.debounce);\n        this.debounce = 0;\n      }\n\n      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n      if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n          pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n          (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n        this.close();\n      } else {\n        var self = this;\n        this.debounce = requestAnimationFrame(function() {self.update();});\n        if (this.widget) this.widget.disable();\n      }\n    },\n\n    update: function(first) {\n      if (this.tick == null) return\n      var self = this, myTick = ++this.tick\n      fetchHints(this.options.hint, this.cm, this.options, function(data) {\n        if (self.tick == myTick) self.finishUpdate(data, first)\n      })\n    },\n\n    finishUpdate: function(data, first) {\n      if (this.data) CodeMirror.signal(this.data, \"update\");\n\n      var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n      if (this.widget) this.widget.close();\n\n      if (data && this.data && isNewCompletion(this.data, data)) return;\n      this.data = data;\n\n      if (data && data.list.length) {\n        if (picked && data.list.length == 1) {\n          this.pick(data, 0);\n        } else {\n          this.widget = new Widget(this, data);\n          CodeMirror.signal(data, \"shown\");\n        }\n      }\n    }\n  };\n\n  function isNewCompletion(old, nw) {\n    var moved = CodeMirror.cmpPos(nw.from, old.from)\n    return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch\n  }\n\n  function parseOptions(cm, pos, options) {\n    var editor = 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    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n    return out;\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    this.picked = false;\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    var scrolls = hints.scrollHeight > hints.clientHeight + 1\n    var startScroll = cm.getScrollInfo();\n\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    if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n      node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\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    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    disable: function() {\n      this.completion.cm.removeKeyMap(this.keyMap);\n      var widget = this;\n      this.keyMap = {Enter: function() { widget.picked = true; }};\n      this.completion.cm.addKeyMap(this.keyMap);\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  function applicableHelpers(cm, helpers) {\n    if (!cm.somethingSelected()) return helpers\n    var result = []\n    for (var i = 0; i < helpers.length; i++)\n      if (helpers[i].supportsSelection) result.push(helpers[i])\n    return result\n  }\n\n  function fetchHints(hint, cm, options, callback) {\n    if (hint.async) {\n      hint(cm, callback, options)\n    } else {\n      var result = hint(cm, options)\n      if (result && result.then) result.then(callback)\n      else callback(result)\n    }\n  }\n\n  function resolveAutoHints(cm, pos) {\n    var helpers = cm.getHelpers(pos, \"hint\"), words\n    if (helpers.length) {\n      var resolved = function(cm, callback, options) {\n        var app = applicableHelpers(cm, helpers);\n        function run(i) {\n          if (i == app.length) return callback(null)\n          fetchHints(app[i], cm, options, function(result) {\n            if (result && result.list.length > 0) callback(result)\n            else run(i + 1)\n          })\n        }\n        run(0)\n      }\n      resolved.async = true\n      resolved.supportsSelection = true\n      return resolved\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n    } else if (CodeMirror.hint.anyword) {\n      return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n    } else {\n      return function() {}\n    }\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", {\n    resolve: resolveAutoHints\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    var to = CodeMirror.Pos(cur.line, token.end);\n    if (token.string && /\\w/.test(token.string[token.string.length - 1])) {\n      var term = token.string, from = CodeMirror.Pos(cur.line, token.start);\n    } else {\n      var term = \"\", from = to;\n    }\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, term.length) == term)\n        found.push(word);\n    }\n\n    if (found.length) return {list: found, from: from, to: to};\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: true,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/anyword-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var WORD = /[\\w$]+/, RANGE = 500;\n\n  CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n    var word = options && options.word || WORD;\n    var range = options && options.range || RANGE;\n    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n    var end = cur.ch, start = end;\n    while (start && word.test(curLine.charAt(start - 1))) --start;\n    var curWord = start != end && curLine.slice(start, end);\n\n    var list = options && options.list || [], seen = {};\n    var re = new RegExp(word.source, \"g\");\n    for (var dir = -1; dir <= 1; dir += 2) {\n      var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n      for (; line != endLine; line += dir) {\n        var text = editor.getLine(line), m;\n        while (m = re.exec(text)) {\n          if (line == cur.line && m[0] === curWord) continue;\n          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n            seen[m[0]] = true;\n            list.push(m[0]);\n          }\n        }\n      }\n    }\n    return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, 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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/display/placeholder',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      cm.on(\"swapDoc\", onChange);\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      cm.off(\"swapDoc\", onChange);\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.className = \"CodeMirror-placeholder\";\n    var placeHolder = cm.getOption(\"placeholder\")\n    if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n    elt.appendChild(placeHolder)\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/runmode/runmode',[\"../../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.appendChild) {\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\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/searchcursor',[\"../../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, origin) {\n      if (!this.atOccurrence) return;\n      var lines = CodeMirror.splitLines(newText);\n      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\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 = [];\n    var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n    while (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\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/dialog/dialog',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function dialogDiv(cm, template, bottom) {\n    var wrap = cm.getWrapperElement();\n    var dialog;\n    dialog = wrap.appendChild(document.createElement(\"div\"));\n    if (bottom)\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n    else\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n    if (typeof template == \"string\") {\n      dialog.innerHTML = template;\n    } else { // Assuming it's a detached DOM element.\n      dialog.appendChild(template);\n    }\n    return dialog;\n  }\n\n  function closeNotification(cm, newVal) {\n    if (cm.state.currentNotificationClose)\n      cm.state.currentNotificationClose();\n    cm.state.currentNotificationClose = newVal;\n  }\n\n  CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n    if (!options) options = {};\n\n    closeNotification(this, null);\n\n    var dialog = dialogDiv(this, template, options.bottom);\n    var closed = false, me = this;\n    function close(newVal) {\n      if (typeof newVal == 'string') {\n        inp.value = newVal;\n      } else {\n        if (closed) return;\n        closed = true;\n        dialog.parentNode.removeChild(dialog);\n        me.focus();\n\n        if (options.onClose) options.onClose(dialog);\n      }\n    }\n\n    var inp = dialog.getElementsByTagName(\"input\")[0], button;\n    if (inp) {\n      inp.focus();\n\n      if (options.value) {\n        inp.value = options.value;\n        if (options.selectValueOnOpen !== false) {\n          inp.select();\n        }\n      }\n\n      if (options.onInput)\n        CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n      if (options.onKeyUp)\n        CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n      CodeMirror.on(inp, \"keydown\", function(e) {\n        if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n        if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n          inp.blur();\n          CodeMirror.e_stop(e);\n          close();\n        }\n        if (e.keyCode == 13) callback(inp.value, e);\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n    } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n      CodeMirror.on(button, \"click\", function() {\n        close();\n        me.focus();\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n      button.focus();\n    }\n    return close;\n  });\n\n  CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n    closeNotification(this, null);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var buttons = dialog.getElementsByTagName(\"button\");\n    var closed = false, me = this, blurring = 1;\n    function close() {\n      if (closed) return;\n      closed = true;\n      dialog.parentNode.removeChild(dialog);\n      me.focus();\n    }\n    buttons[0].focus();\n    for (var i = 0; i < buttons.length; ++i) {\n      var b = buttons[i];\n      (function(callback) {\n        CodeMirror.on(b, \"click\", function(e) {\n          CodeMirror.e_preventDefault(e);\n          close();\n          if (callback) callback(me);\n        });\n      })(callbacks[i]);\n      CodeMirror.on(b, \"blur\", function() {\n        --blurring;\n        setTimeout(function() { if (blurring <= 0) close(); }, 200);\n      });\n      CodeMirror.on(b, \"focus\", function() { ++blurring; });\n    }\n  });\n\n  /*\n   * openNotification\n   * Opens a notification, that can be closed with an optional timer\n   * (default 5000ms timer) and always closes on click.\n   *\n   * If a notification is opened while another is opened, it will close the\n   * currently opened one and open the new one immediately.\n   */\n  CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n    closeNotification(this, close);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var closed = false, doneTimer;\n    var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n    function close() {\n      if (closed) return;\n      closed = true;\n      clearTimeout(doneTimer);\n      dialog.parentNode.removeChild(dialog);\n    }\n\n    CodeMirror.on(dialog, 'click', function(e) {\n      CodeMirror.e_preventDefault(e);\n      close();\n    });\n\n    if (duration)\n      doneTimer = setTimeout(close, duration);\n\n    return close;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/search',[\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function searchOverlay(query, caseInsensitive) {\n    if (typeof query == \"string\")\n      query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n    else if (!query.global)\n      query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n    return {token: function(stream) {\n      query.lastIndex = stream.pos;\n      var match = query.exec(stream.string);\n      if (match && match.index == stream.pos) {\n        stream.pos += match[0].length || 1;\n        return \"searching\";\n      } else if (match) {\n        stream.pos = match.index;\n      } else {\n        stream.skipToEnd();\n      }\n    }};\n  }\n\n  function SearchState() {\n    this.posFrom = this.posTo = this.lastQuery = this.query = null;\n    this.overlay = null;\n  }\n\n  function getSearchState(cm) {\n    return cm.state.search || (cm.state.search = new SearchState());\n  }\n\n  function queryCaseInsensitive(query) {\n    return typeof query == \"string\" && query == query.toLowerCase();\n  }\n\n  function getSearchCursor(cm, query, pos) {\n    // Heuristic: if the query string is all lowercase, do a case insensitive search.\n    return cm.getSearchCursor(query, pos, queryCaseInsensitive(query));\n  }\n\n  function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n    cm.openDialog(text, onEnter, {\n      value: deflt,\n      selectValueOnOpen: true,\n      closeOnEnter: false,\n      onClose: function() { clearSearch(cm); },\n      onKeyDown: onKeyDown\n    });\n  }\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  function confirmDialog(cm, text, shortText, fs) {\n    if (cm.openConfirm) cm.openConfirm(text, fs);\n    else if (confirm(shortText)) fs[0]();\n  }\n\n  function parseString(string) {\n    return string.replace(/\\\\(.)/g, function(_, ch) {\n      if (ch == \"n\") return \"\\n\"\n      if (ch == \"r\") return \"\\r\"\n      return ch\n    })\n  }\n\n  function parseQuery(query) {\n    var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n    if (isRE) {\n      try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n      catch(e) {} // Not a regular expression after all, do a string search\n    } else {\n      query = parseString(query)\n    }\n    if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n      query = /x^/;\n    return query;\n  }\n\n  var queryDialog =\n    '<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n\n  function startSearch(cm, state, query) {\n    state.queryText = query;\n    state.query = parseQuery(query);\n    cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n    state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n    cm.addOverlay(state.overlay);\n    if (cm.showMatchesOnScrollbar) {\n      if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n      state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n    }\n  }\n\n  function doSearch(cm, rev, persistent, immediate) {\n    var state = getSearchState(cm);\n    if (state.query) return findNext(cm, rev);\n    var q = cm.getSelection() || state.lastQuery;\n    if (persistent && cm.openDialog) {\n      var hiding = null\n      var searchNext = function(query, event) {\n        CodeMirror.e_stop(event);\n        if (!query) return;\n        if (query != state.queryText) {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n        }\n        if (hiding) hiding.style.opacity = 1\n        findNext(cm, event.shiftKey, function(_, to) {\n          var dialog\n          if (to.line < 3 && document.querySelector &&\n              (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n              dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n            (hiding = dialog).style.opacity = .4\n        })\n      };\n      persistentDialog(cm, queryDialog, q, searchNext, function(event, query) {\n        var keyName = CodeMirror.keyName(event)\n        var cmd = CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n        if (!cmd) cmd = cm.getOption('extraKeys')[keyName]\n        if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n          cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n          CodeMirror.e_stop(event);\n          startSearch(cm, getSearchState(cm), query);\n          cm.execCommand(cmd);\n        } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n          CodeMirror.e_stop(event);\n          searchNext(query, event);\n        }\n      });\n      if (immediate && q) {\n        startSearch(cm, state, q);\n        findNext(cm, rev);\n      }\n    } else {\n      dialog(cm, queryDialog, \"Search for:\", q, function(query) {\n        if (query && !state.query) cm.operation(function() {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n          findNext(cm, rev);\n        });\n      });\n    }\n  }\n\n  function findNext(cm, rev, callback) {cm.operation(function() {\n    var state = getSearchState(cm);\n    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n    if (!cursor.find(rev)) {\n      cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n      if (!cursor.find(rev)) return;\n    }\n    cm.setSelection(cursor.from(), cursor.to());\n    cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n    state.posFrom = cursor.from(); state.posTo = cursor.to();\n    if (callback) callback(cursor.from(), cursor.to())\n  });}\n\n  function clearSearch(cm) {cm.operation(function() {\n    var state = getSearchState(cm);\n    state.lastQuery = state.query;\n    if (!state.query) return;\n    state.query = state.queryText = null;\n    cm.removeOverlay(state.overlay);\n    if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n  });}\n\n  var replaceQueryDialog =\n    ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  var replacementQueryDialog = '<span class=\"CodeMirror-search-label\">With:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n  var doReplaceConfirm = '<span class=\"CodeMirror-search-label\">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';\n\n  function replaceAll(cm, query, text) {\n    cm.operation(function() {\n      for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n        if (typeof query != \"string\") {\n          var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n          cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n        } else cursor.replace(text);\n      }\n    });\n  }\n\n  function replace(cm, all) {\n    if (cm.getOption(\"readOnly\")) return;\n    var query = cm.getSelection() || getSearchState(cm).lastQuery;\n    var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? 'Replace all:' : 'Replace:') + '</span>';\n    dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) {\n      if (!query) return;\n      query = parseQuery(query);\n      dialog(cm, replacementQueryDialog, \"Replace with:\", \"\", function(text) {\n        text = parseString(text)\n        if (all) {\n          replaceAll(cm, query, text)\n        } else {\n          clearSearch(cm);\n          var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n          var advance = function() {\n            var start = cursor.from(), match;\n            if (!(match = cursor.findNext())) {\n              cursor = getSearchCursor(cm, query);\n              if (!(match = cursor.findNext()) ||\n                  (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n            }\n            cm.setSelection(cursor.from(), cursor.to());\n            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n            confirmDialog(cm, doReplaceConfirm, \"Replace?\",\n                          [function() {doReplace(match);}, advance,\n                           function() {replaceAll(cm, query, text)}]);\n          };\n          var doReplace = function(match) {\n            cursor.replace(typeof query == \"string\" ? text :\n                           text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n            advance();\n          };\n          advance();\n        }\n      });\n    });\n  }\n\n  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n  CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n  CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n  CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n  CodeMirror.commands.findNext = doSearch;\n  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n  CodeMirror.commands.clearSearch = clearSearch;\n  CodeMirror.commands.replace = replace;\n  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/jump-to-line',[\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  var jumpDialog =\n      'Jump to line: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use line:column or scroll% syntax)</span>';\n\n  function interpretLine(cm, string) {\n    var num = Number(string)\n    if (/^[-+]/.test(string)) return cm.getCursor().line + num\n    else return num - 1\n  }\n\n  CodeMirror.commands.jumpToLine = function(cm) {\n    var cur = cm.getCursor();\n    dialog(cm, jumpDialog, \"Jump to line:\", (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n      if (!posStr) return;\n\n      var match;\n      if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n      } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n        var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n        if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n        cm.setCursor(line - 1, cur.ch);\n      } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n      }\n    });\n  };\n\n  CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hover/text-hover',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n(function() {\n  \"use strict\";\n\n  var HOVER_CLASS = \" CodeMirror-hover\";\n\n  function showTooltip(e, content) {\n    var tt = document.createElement(\"div\");\n    tt.className = \"CodeMirror-hover-tooltip\";\n    if (typeof content == \"string\") {\n      content = document.createTextNode(content);\n    }\n    tt.appendChild(content);\n    document.body.appendChild(tt);\n\n    function position(e) {\n      if (!tt.parentNode)\n        return CodeMirror.off(document, \"mousemove\", position);\n      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n      tt.style.left = (e.clientX + 5) + \"px\";\n    }\n    CodeMirror.on(document, \"mousemove\", position);\n    position(e);\n    if (tt.style.opacity != null)\n      tt.style.opacity = 1;\n    return tt;\n  }\n  function rm(elt) {\n    if (elt.parentNode)\n      elt.parentNode.removeChild(elt);\n  }\n  function hideTooltip(tt) {\n    if (!tt.parentNode)\n      return;\n    if (tt.style.opacity == null)\n      rm(tt);\n    tt.style.opacity = 0;\n    setTimeout(function() {\n      rm(tt);\n    }, 600);\n  }\n\n  function showTooltipFor(e, content, node, state, cm) {\n    var tooltip = showTooltip(e, content);\n    function hide() {\n      CodeMirror.off(node, \"mouseout\", hide);\n      CodeMirror.off(node, \"click\", hide);\n      node.className = node.className.replace(HOVER_CLASS, \"\");\n      if (tooltip) {\n        hideTooltip(tooltip);\n        tooltip = null;\n      }\n      cm.removeKeyMap(state.keyMap);\n    }\n    var poll = setInterval(function() {\n      if (tooltip)\n        for ( var n = node;; n = n.parentNode) {\n          if (n == document.body)\n            return;\n          if (!n) {\n            hide();\n            break;\n          }\n        }\n      if (!tooltip)\n        return clearInterval(poll);\n    }, 400);\n    CodeMirror.on(node, \"mouseout\", hide);\n    CodeMirror.on(node, \"click\", hide);\n    state.keyMap = {Esc: hide};\n    cm.addKeyMap(state.keyMap);\n  }\n\n  function TextHoverState(cm, options) {\n    this.options = options;\n    this.timeout = null;\n    if (options.delay) {\n      this.onMouseOver = function(e) {\n        onMouseOverWithDelay(cm, e);\n      };\n    } else {\n      this.onMouseOver = function(e) {\n        onMouseOver(cm, e);\n      };\n    }\n    this.keyMap = null;\n  }\n\n  function parseOptions(cm, options) {\n    if (options instanceof Function)\n      return {\n        getTextHover : options\n      };\n    if (!options || options === true)\n      options = {};\n    if (!options.getTextHover)\n      options.getTextHover = cm.getHelper(CodeMirror.Pos(0, 0), \"textHover\");\n    if (!options.getTextHover)\n      throw new Error(\n          \"Required option 'getTextHover' missing (text-hover addon)\");\n    return options;\n  }\n\n  function onMouseOverWithDelay(cm, e) {\n    var state = cm.state.textHover, delay = state.options.delay;\n    clearTimeout(state.timeout);\n    if (e.srcElement) {\n\t// hack for IE, because e.srcElement failed when it is used in the tiemout function\n\tvar newE = {srcElement: e.srcElement, clientX : e.clientX, clientY: e.clientY};\n\te = newE;\n    }\n    state.timeout = setTimeout(function() {onMouseOver(cm, e);}, delay);\n  }\n\n  function onMouseOver(cm, e) {\n    var node = e.target || e.srcElement;\n    if (node) {\n      var state = cm.state.textHover, data = getTokenAndPosAt(cm, e);\n      var content = state.options.getTextHover(cm, data, e);\n      if (content) {\n        node.className += HOVER_CLASS;\n        if (typeof content == 'function')\n\t      content(showTooltipFor, data, e, node, state, cm);\n        else\n          showTooltipFor(e, content, node, state, cm);\n      }\n    }\n  }\n\n  function optionHandler(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      CodeMirror.off(cm.getWrapperElement(), \"mouseover\",\n          cm.state.textHover.onMouseOver);\n      delete cm.state.textHover;\n    }\n\n    if (val) {\n      var state = cm.state.textHover = new TextHoverState(cm, parseOptions(cm,\n          val));\n      CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n    }\n  }\n\n  // When the mouseover fires, the cursor might not actually be over\n  // the character itself yet. These pairs of x,y offsets are used to\n  // probe a few nearby points when no suitable marked range is found.\n  var nearby = [ 0, 0, 0, 5, 0, -5, 5, 0, -5, 0 ];\n\n  function getTokenAndPosAt(cm, e) {\n    var node = e.target || e.srcElement, text = node.innerText\n        || node.textContent;\n    for ( var i = 0; i < nearby.length; i += 2) {\n      var pos = cm.coordsChar({\n        left : e.clientX + nearby[i],\n        top : e.clientY + nearby[i + 1]\n      });\n      var token = cm.getTokenAt(pos);\n      if (token && token.string === text) {\n        return {\n          token : token,\n          pos : pos\n        };\n      }\n    }\n  }\n\n  CodeMirror.defineOption(\"textHover\", false, optionHandler); // deprecated\n\n})();\n\n});\n\n","define('cm/addon/hover/prolog-hover',[ \"../../lib/codemirror\",\n\t \"jquery\",\n\t \"laconic\"\n       ],\n       function(CodeMirror, $) {\n\"use strict\";\n\nvar pathTranslations = {};\n\nvar tokenHelp = {\n  \"goal_built_in\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Built-in predicate\";\n    }\n  },\n\n  \"goal_global\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Global predicate\";\n    }\n  },\n\n  \"goal_autoload\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (autoload from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Autoloaded predicate\";\n    }\n  },\n\n  \"goal_imported\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (imported from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Imported predicate\";\n    }\n  },\n\n  \"goal_recursion\":    \"Recursive call\",\n  \"goal_dynamic\":      \"Dynamic predicate\",\n  \"goal_undefined\":    \"Undefined predicate\",\n  \"goal_local\":        function(data, cm) {\n\t\t\t return localDef(\"predicate\",data,cm)\n\t\t       },\n  \"goal_constraint\":   function(data, cm) {\n\t\t\t return localDef(\"CHR constraint\",data,cm)\n\t\t       },\n  \"head_unreferenced\": \"Predicate is not called\",\n  \"unused_import\":     \"Imported predicate is not used\",\n  \"undefined_import\":  \"Imported predicate is not defined\",\n  \"head_constraint\":   \"CHR constraint\",\n\n  \"file\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path));\n    } else {\n      return \"File name\";\n    }\n  },\n\n  \"file_no_depends\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path),\n\t\t      $.el.div({class:\"hover-remark\"},\n\t\t\t       \"does not resolve any dependencies\")\n\t\t     );\n    } else {\n      return \"File name (does not resolve any dependencies)\";\n    }\n  },\n\n  \"error\": function(data, cm) {\n    if ( data ) {\n      if ( data.expected )\n\treturn $.el.div(\"error: \", $.el.strong(data.expected), \" expected\");\n    }\n\n    return \"error\";\n  },\n\n  \"singleton\": \"Variable appearing only once\",\n  \"codes\":     \"List of Unicode code points (integers)\",\n  \"chars\":     \"List of one-character atoms\",\n  \"string\":    \"Packed string (SWI7, use `text` for a list of codes)\",\n  \"qatom\":     \"Quoted atom\",\n  \"uatom\":     \"Uppercase atom due to var_prefix flag\",\n  \"tag\":       \"Tag of a SWI7 dict\",\n  \"ext_quant\": \"Existential quantification operator\",\n  \"instantiation_error\": \"No variable allowed here\",\n\n  \"string_terminal\": \"Terminal (DCG)\",\n\n  \"head\":       null,\n  \"control\":    null,\n  \"fullstop\":   null,\n  \"var\":        null,\n  \"int\":        null,\n  \"float\":      null,\n  \"number\":     null,\n  \"atom\":       null,\n  \"functor\":    null,\n  \"comment\":    null,\n  \"neck\":       null,\n  \"operator\":   null,\n  \"sep\":        null,\n  \"list_open\":  null,\n  \"list_close\": null,\n  \"dict_open\":  null,\n  \"dict_close\": null\n};\n\nfunction predName(data) {\n  return $.el.span({class:\"pred-name\"},\n\t\t   data.text+\"/\"+data.arity);\n}\n\nfunction addFileTranslation(cm, text, path) {\n  pathTranslations[path] = text;\n}\n\nfunction fileName(data, cm) {\n  var last;\n\n  if ( pathTranslations[data.file] )\n    return pathTranslations[data.file];\n\n  if ( (last=data.file.lastIndexOf(\"/\")) )\n    return data.file.substring(last+1);\n\n  return data.file;\n}\n\nfunction localDef(type, data, cm) {\n  if ( data && data.file ) {\n    return $.el.div(capitalizeFirstLetter(type)+\n\t\t    \" included from \",\n\t\t    $.el.span({class:\"file-path\"},\n\t\t\t      data.file));\n  } else if ( data && data.line ) {\n    return capitalizeFirstLetter(type) + \" defined in line \"+data.line;\n  } else {\n    return \"Locally defined \" + type;\n  }\n}\n\nfunction capitalizeFirstLetter(string) {\n    return string[0].toUpperCase() + string.slice(1);\n}\n\nCodeMirror.registerHelper(\"textHover\", \"prolog\", function(cm, data, node) {\n  if ( data ) {\n    var token = data.token;\n    var help  = tokenHelp[token.type];\n    var et;\n\n    if ( help !== undefined ) {\n      if ( typeof(help) === \"function\" ) {\n\tvar r = help(cm.getEnrichedToken(token), cm);\n\n\tif ( typeof(r) === \"string\" )\n\t  return $.el.div(r);\n\telse\n\t  return r;\n      } else if ( typeof(help) === \"string\" ) {\n\treturn $.el.div(help);\n      }\n    } else if ( (et=cm.getEnrichedToken(token)) ) {\n      if ( et.summary && et.info === \"ask\" )\n\treturn $.el.div(et.summary, cm.tokenInfo(et));\n      else if ( et.summary )\n\treturn $.el.div(et.summary);\n      else\n\treturn $.el.div(token.type);\n    } else {\n      return $.el.div(token.type);\n    }\n  }\n\n  return null;\n});\n\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-context-info',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var contextInfo = null;\n\n  CodeMirror.attachContextInfo = function(data) {\n    CodeMirror.on(data, 'select', function(completion, hints) {\n      hints = hints.parentNode;\n      var information = null;\n      if (completion.info) {\n        information = completion.info(completion);\n      }\n      if (information) {\n        var box = hints.getBoundingClientRect();\n        if (contextInfo == null) {\n          contextInfo = document.createElement('div');\n          contextInfo.className = 'CodeMirror-hints-contextInfo'\n          document.body.appendChild(contextInfo);\n        }\n        contextInfo.innerHTML = '';\n        contextInfo.style.top = hints.style.top;\n        contextInfo.style.left = box.right + 'px';\n        if(typeof information == \"string\") {\n          contextInfo.innerHTML = information;\n        } else {\n          contextInfo.appendChild(information);\n        }\n        contextInfo.style.display = 'block';\n      } else {\n        if (contextInfo != null) {\n          contextInfo.innerHTML = '';\n          contextInfo.style.display = 'none';\n        }\n      }\n    });\n\n    CodeMirror.on(data, 'close', function() {\n      if (contextInfo != null) {\n        contextInfo.parentNode.removeChild(contextInfo);\n      }\n      contextInfo = null;\n    });\n\n  }\n\n  CodeMirror.showContextInfo = function(getHints) {\n    return function(cm, showHints, options) {\n      if (!options)\n        options = showHints;\n      var data = getHints(cm, options);\n      CodeMirror.attachContextInfo(data);\n      return data;\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(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/keymap/emacs',[\"../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 posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n\n  // Kill 'ring'\n\n  var killRing = [];\n  function addToRing(str) {\n    killRing.push(str);\n    if (killRing.length > 50) killRing.shift();\n  }\n  function growRingTop(str) {\n    if (!killRing.length) return addToRing(str);\n    killRing[killRing.length - 1] += str;\n  }\n  function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || \"\"; }\n  function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }\n\n  var lastKill = null;\n\n  function kill(cm, from, to, mayGrow, text) {\n    if (text == null) text = cm.getRange(from, to);\n\n    if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))\n      growRingTop(text);\n    else\n      addToRing(text);\n    cm.replaceRange(\"\", from, to, \"+delete\");\n\n    if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};\n    else lastKill = null;\n  }\n\n  // Boundaries of various units\n\n  function byChar(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"char\", true);\n  }\n\n  function byWord(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"word\", true);\n  }\n\n  function byLine(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"line\", cm.doc.sel.goalColumn);\n  }\n\n  function byPage(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"page\", cm.doc.sel.goalColumn);\n  }\n\n  function byParagraph(cm, pos, dir) {\n    var no = pos.line, line = cm.getLine(no);\n    var sawText = /\\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch));\n    var fst = cm.firstLine(), lst = cm.lastLine();\n    for (;;) {\n      no += dir;\n      if (no < fst || no > lst)\n        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));\n      line = cm.getLine(no);\n      var hasText = /\\S/.test(line);\n      if (hasText) sawText = true;\n      else if (sawText) return Pos(no, 0);\n    }\n  }\n\n  function bySentence(cm, pos, dir) {\n    var line = pos.line, ch = pos.ch;\n    var text = cm.getLine(pos.line), sawWord = false;\n    for (;;) {\n      var next = text.charAt(ch + (dir < 0 ? -1 : 0));\n      if (!next) { // End/beginning of line reached\n        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch);\n        text = cm.getLine(line + dir);\n        if (!/\\S/.test(text)) return Pos(line, ch);\n        line += dir;\n        ch = dir < 0 ? text.length : 0;\n        continue;\n      }\n      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0));\n      if (!sawWord) sawWord = /\\w/.test(next);\n      ch += dir;\n    }\n  }\n\n  function byExpr(cm, pos, dir) {\n    var wrap;\n    if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, true))\n        && wrap.match && (wrap.forward ? 1 : -1) == dir)\n      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;\n\n    for (var first = true;; first = false) {\n      var token = cm.getTokenAt(pos);\n      var after = Pos(pos.line, dir < 0 ? token.start : token.end);\n      if (first && dir > 0 && token.end == pos.ch || !/\\w/.test(token.string)) {\n        var newPos = cm.findPosH(after, dir, \"char\");\n        if (posEq(after, newPos)) return pos;\n        else pos = newPos;\n      } else {\n        return after;\n      }\n    }\n  }\n\n  // Prefixes (only crudely supported)\n\n  function getPrefix(cm, precise) {\n    var digits = cm.state.emacsPrefix;\n    if (!digits) return precise ? null : 1;\n    clearPrefix(cm);\n    return digits == \"-\" ? -1 : Number(digits);\n  }\n\n  function repeated(cmd) {\n    var f = typeof cmd == \"string\" ? function(cm) { cm.execCommand(cmd); } : cmd;\n    return function(cm) {\n      var prefix = getPrefix(cm);\n      f(cm);\n      for (var i = 1; i < prefix; ++i) f(cm);\n    };\n  }\n\n  function findEnd(cm, pos, by, dir) {\n    var prefix = getPrefix(cm);\n    if (prefix < 0) { dir = -dir; prefix = -prefix; }\n    for (var i = 0; i < prefix; ++i) {\n      var newPos = by(cm, pos, dir);\n      if (posEq(newPos, pos)) break;\n      pos = newPos;\n    }\n    return pos;\n  }\n\n  function move(by, dir) {\n    var f = function(cm) {\n      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));\n    };\n    f.motion = true;\n    return f;\n  }\n\n  function killTo(cm, by, dir) {\n    var selections = cm.listSelections(), cursor;\n    var i = selections.length;\n    while (i--) {\n      cursor = selections[i].head;\n      kill(cm, cursor, findEnd(cm, cursor, by, dir), true);\n    }\n  }\n\n  function killRegion(cm) {\n    if (cm.somethingSelected()) {\n      var selections = cm.listSelections(), selection;\n      var i = selections.length;\n      while (i--) {\n        selection = selections[i];\n        kill(cm, selection.anchor, selection.head);\n      }\n      return true;\n    }\n  }\n\n  function addPrefix(cm, digit) {\n    if (cm.state.emacsPrefix) {\n      if (digit != \"-\") cm.state.emacsPrefix += digit;\n      return;\n    }\n    // Not active yet\n    cm.state.emacsPrefix = digit;\n    cm.on(\"keyHandled\", maybeClearPrefix);\n    cm.on(\"inputRead\", maybeDuplicateInput);\n  }\n\n  var prefixPreservingKeys = {\"Alt-G\": true, \"Ctrl-X\": true, \"Ctrl-Q\": true, \"Ctrl-U\": true};\n\n  function maybeClearPrefix(cm, arg) {\n    if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg))\n      clearPrefix(cm);\n  }\n\n  function clearPrefix(cm) {\n    cm.state.emacsPrefix = null;\n    cm.off(\"keyHandled\", maybeClearPrefix);\n    cm.off(\"inputRead\", maybeDuplicateInput);\n  }\n\n  function maybeDuplicateInput(cm, event) {\n    var dup = getPrefix(cm);\n    if (dup > 1 && event.origin == \"+input\") {\n      var one = event.text.join(\"\\n\"), txt = \"\";\n      for (var i = 1; i < dup; ++i) txt += one;\n      cm.replaceSelection(txt);\n    }\n  }\n\n  function addPrefixMap(cm) {\n    cm.state.emacsPrefixMap = true;\n    cm.addKeyMap(prefixMap);\n    cm.on(\"keyHandled\", maybeRemovePrefixMap);\n    cm.on(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  function maybeRemovePrefixMap(cm, arg) {\n    if (typeof arg == \"string\" && (/^\\d$/.test(arg) || arg == \"Ctrl-U\")) return;\n    cm.removeKeyMap(prefixMap);\n    cm.state.emacsPrefixMap = false;\n    cm.off(\"keyHandled\", maybeRemovePrefixMap);\n    cm.off(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  // Utilities\n\n  function setMark(cm) {\n    cm.setCursor(cm.getCursor());\n    cm.setExtending(!cm.getExtending());\n    cm.on(\"change\", function() { cm.setExtending(false); });\n  }\n\n  function clearMark(cm) {\n    cm.setExtending(false);\n    cm.setCursor(cm.getCursor());\n  }\n\n  function getInput(cm, msg, f) {\n    if (cm.openDialog)\n      cm.openDialog(msg + \": <input type=\\\"text\\\" style=\\\"width: 10em\\\"/>\", f, {bottom: true});\n    else\n      f(prompt(msg, \"\"));\n  }\n\n  function operateOnWord(cm, op) {\n    var start = cm.getCursor(), end = cm.findPosH(start, 1, \"word\");\n    cm.replaceRange(op(cm.getRange(start, end)), start, end);\n    cm.setCursor(end);\n  }\n\n  function toEnclosingExpr(cm) {\n    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;\n    var stack = [];\n    while (line >= cm.firstLine()) {\n      var text = cm.getLine(line);\n      for (var i = ch == null ? text.length : ch; i > 0;) {\n        var ch = text.charAt(--i);\n        if (ch == \")\")\n          stack.push(\"(\");\n        else if (ch == \"]\")\n          stack.push(\"[\");\n        else if (ch == \"}\")\n          stack.push(\"{\");\n        else if (/[\\(\\{\\[]/.test(ch) && (!stack.length || stack.pop() != ch))\n          return cm.extendSelection(Pos(line, i));\n      }\n      --line; ch = null;\n    }\n  }\n\n  function quit(cm) {\n    cm.execCommand(\"clearSearch\");\n    clearMark(cm);\n  }\n\n  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated};\n\n  // Actual keymap\n\n  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({\n    \"Ctrl-W\": function(cm) {kill(cm, cm.getCursor(\"start\"), cm.getCursor(\"end\"));},\n    \"Ctrl-K\": repeated(function(cm) {\n      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));\n      var text = cm.getRange(start, end);\n      if (!/\\S/.test(text)) {\n        text += \"\\n\";\n        end = Pos(start.line + 1, 0);\n      }\n      kill(cm, start, end, true, text);\n    }),\n    \"Alt-W\": function(cm) {\n      addToRing(cm.getSelection());\n      clearMark(cm);\n    },\n    \"Ctrl-Y\": function(cm) {\n      var start = cm.getCursor();\n      cm.replaceRange(getFromRing(getPrefix(cm)), start, start, \"paste\");\n      cm.setSelection(start, cm.getCursor());\n    },\n    \"Alt-Y\": function(cm) {cm.replaceSelection(popFromRing(), \"around\", \"paste\");},\n\n    \"Ctrl-Space\": setMark, \"Ctrl-Shift-2\": setMark,\n\n    \"Ctrl-F\": move(byChar, 1), \"Ctrl-B\": move(byChar, -1),\n    \"Right\": move(byChar, 1), \"Left\": move(byChar, -1),\n    \"Ctrl-D\": function(cm) { killTo(cm, byChar, 1); },\n    \"Delete\": function(cm) { killRegion(cm) || killTo(cm, byChar, 1); },\n    \"Ctrl-H\": function(cm) { killTo(cm, byChar, -1); },\n    \"Backspace\": function(cm) { killRegion(cm) || killTo(cm, byChar, -1); },\n\n    \"Alt-F\": move(byWord, 1), \"Alt-B\": move(byWord, -1),\n    \"Alt-D\": function(cm) { killTo(cm, byWord, 1); },\n    \"Alt-Backspace\": function(cm) { killTo(cm, byWord, -1); },\n\n    \"Ctrl-N\": move(byLine, 1), \"Ctrl-P\": move(byLine, -1),\n    \"Down\": move(byLine, 1), \"Up\": move(byLine, -1),\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStart\",\n\n    \"Alt-V\": move(byPage, -1), \"Ctrl-V\": move(byPage, 1),\n    \"PageUp\": move(byPage, -1), \"PageDown\": move(byPage, 1),\n\n    \"Ctrl-Up\": move(byParagraph, -1), \"Ctrl-Down\": move(byParagraph, 1),\n\n    \"Alt-A\": move(bySentence, -1), \"Alt-E\": move(bySentence, 1),\n    \"Alt-K\": function(cm) { killTo(cm, bySentence, 1); },\n\n    \"Ctrl-Alt-K\": function(cm) { killTo(cm, byExpr, 1); },\n    \"Ctrl-Alt-Backspace\": function(cm) { killTo(cm, byExpr, -1); },\n    \"Ctrl-Alt-F\": move(byExpr, 1), \"Ctrl-Alt-B\": move(byExpr, -1),\n\n    \"Shift-Ctrl-Alt-2\": function(cm) {\n      var cursor = cm.getCursor();\n      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);\n    },\n    \"Ctrl-Alt-T\": function(cm) {\n      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1);\n      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1);\n      cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) +\n                      cm.getRange(leftStart, leftEnd), leftStart, rightEnd);\n    },\n    \"Ctrl-Alt-U\": repeated(toEnclosingExpr),\n\n    \"Alt-Space\": function(cm) {\n      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line);\n      while (from && /\\s/.test(text.charAt(from - 1))) --from;\n      while (to < text.length && /\\s/.test(text.charAt(to))) ++to;\n      cm.replaceRange(\" \", Pos(pos.line, from), Pos(pos.line, to));\n    },\n    \"Ctrl-O\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"start\"); }),\n    \"Ctrl-T\": repeated(function(cm) {\n      cm.execCommand(\"transposeChars\");\n    }),\n\n    \"Alt-C\": repeated(function(cm) {\n      operateOnWord(cm, function(w) {\n        var letter = w.search(/\\w/);\n        if (letter == -1) return w;\n        return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase();\n      });\n    }),\n    \"Alt-U\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toUpperCase(); });\n    }),\n    \"Alt-L\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toLowerCase(); });\n    }),\n\n    \"Alt-;\": \"toggleComment\",\n\n    \"Ctrl-/\": repeated(\"undo\"), \"Shift-Ctrl--\": repeated(\"undo\"),\n    \"Ctrl-Z\": repeated(\"undo\"), \"Cmd-Z\": repeated(\"undo\"),\n    \"Shift-Alt-,\": \"goDocStart\", \"Shift-Alt-.\": \"goDocEnd\",\n    \"Ctrl-S\": \"findNext\", \"Ctrl-R\": \"findPrev\", \"Ctrl-G\": quit, \"Shift-Alt-5\": \"replace\",\n    \"Alt-/\": \"autocomplete\",\n    \"Enter\": \"newlineAndIndent\",\n    \"Ctrl-J\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"end\"); }),\n    \"Tab\": \"indentAuto\",\n\n    \"Alt-G G\": function(cm) {\n      var prefix = getPrefix(cm, true);\n      if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1);\n\n      getInput(cm, \"Goto line\", function(str) {\n        var num;\n        if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)\n          cm.setCursor(num - 1);\n      });\n    },\n\n    \"Ctrl-X Tab\": function(cm) {\n      cm.indentSelection(getPrefix(cm, true) || cm.getOption(\"indentUnit\"));\n    },\n    \"Ctrl-X Ctrl-X\": function(cm) {\n      cm.setSelection(cm.getCursor(\"head\"), cm.getCursor(\"anchor\"));\n    },\n    \"Ctrl-X Ctrl-S\": \"save\",\n    \"Ctrl-X Ctrl-W\": \"save\",\n    \"Ctrl-X S\": \"saveAll\",\n    \"Ctrl-X F\": \"open\",\n    \"Ctrl-X U\": repeated(\"undo\"),\n    \"Ctrl-X K\": \"close\",\n    \"Ctrl-X Delete\": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); },\n    \"Ctrl-X H\": \"selectAll\",\n\n    \"Ctrl-Q Tab\": repeated(\"insertTab\"),\n    \"Ctrl-U\": addPrefixMap\n  });\n\n  var prefixMap = {\"Ctrl-G\": clearPrefix};\n  function regPrefix(d) {\n    prefixMap[d] = function(cm) { addPrefix(cm, d); };\n    keyMap[\"Ctrl-\" + d] = function(cm) { addPrefix(cm, d); };\n    prefixPreservingKeys[\"Ctrl-\" + d] = true;\n  }\n  for (var i = 0; i < 10; ++i) regPrefix(String(i));\n  regPrefix(\"-\");\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Prolog editor plugin based on [CodeMirror](http://codemirror.net)\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires codemirror\n */\n\ndefine('editor',[ \"cm/lib/codemirror\",\n\t \"config\",\n\t \"preferences\",\n\t \"form\",\n\t \"cm/mode/prolog/prolog-template-hint\",\n\t \"modal\",\n\t \"tabbed\",\n\t \"prolog\",\n\n\t \"storage\",\n\n\t \"cm/mode/prolog/prolog\",\n\t \"cm/mode/prolog/prolog_keys\",\n\t \"cm/mode/prolog/prolog_query\",\n\t \"cm/mode/prolog/prolog_server\",\n\n\t \"cm/mode/markdown/markdown\",\n\n\t \"cm/addon/edit/matchbrackets\",\n\t \"cm/addon/comment/continuecomment\",\n\t \"cm/addon/comment/comment\",\n\t \"cm/addon/hint/show-hint\",\n\t \"cm/addon/hint/anyword-hint\",\n\t \"cm/addon/display/placeholder\",\n\t \"cm/addon/runmode/runmode\",\n\t \"cm/addon/search/search\",\n\t \"cm/addon/search/searchcursor\",\n\t \"cm/addon/search/jump-to-line\",\n\t \"cm/addon/dialog/dialog\",\n\n\t \"cm/addon/hover/text-hover\",\n\t \"cm/addon/hover/prolog-hover\",\n\n\t \"cm/addon/hint/templates-hint\",\n\t \"cm/addon/hint/show-context-info\",\n\n         \"jquery\", \"laconic\",\n\n\t \"cm/keymap/emacs\",\n       ],\n       function(CodeMirror, config, preferences, form, templateHint,\n\t\tmodal, tabbed, prolog) {\n\n(function($) {\n  var pluginName = 'prologEditor';\n\n  var modeDefaults = {\n    prolog: {\n      mode: \"prolog\",\n      role: \"source\",\n      placeholder: \"Your Prolog rules and facts go here ...\",\n      lineNumbers: true,\n      autoCurrent: true,\n      save: false,\n      theme: \"prolog\",\n      matchBrackets: true,\n      textHover: true,\n      prologKeys: true,\n      extraKeys: {\n\t\"Ctrl-Space\": \"autocomplete\",\n\t\"Alt-/\": \"autocomplete\",\n      },\n      hintOptions: {\n      hint: templateHint.getHints,\n      completeSingle: false\n      }\n    },\n\n    markdown: {\n      mode: \"markdown\",\n      placeholder: \"Your markdown block goes here ...\",\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var roleDefaults = {\n    query: {\n      mode: \"prolog\",\n      role: \"query\",\n      placeholder: \"Your query goes here ...\",\n      lineNumbers: false,\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var lastEditor;\n\n  /** @lends $.fn.prologEditor */\n  var methods = {\n    /**\n     * Initialize a Prolog editor.\n     * @param {Object} [options]\n     * @param {String} [options.role=\"source\"] determines the role of\n     * the editor. It is one of `source` or `query`.\n     * @param {String} [options.placeholder=\"Your Prolog program goes here ...\"]\n     * sets the placeholder for the editor.\n     * @param {Boolean} [options.lineNumbers=true] defines whether or\n     * not a left-gutter with line numbers is displayed.\n     * @param {Boolean} [options.save=false] defines whether the\n     * editor responds to storage events.\n     * @param {String} [options.mode=\"prolog\"] defines the mode used by\n     * CodeMirror.\n     * @param {String} [options.theme=\"prolog\"] defines the CSS used for\n     * highlighting.\n     * @param {Boolean} [options.matchBrackets=true] defines whether the\n     * matching bracket is highlighted.\n     * @param {Boolean} [options.prologKeys=true] defines whether \"(\",\n     * \">\" and \";\" act as active keys to support if-then-else layout.\n     * @param {Object} [options.extraKeys] specifies additional key\n     * bindings.  Default is to bind \"Ctrl-Space\" and \"Alt-/\" to\n     * \"autocomplete\".\n     *\n     */\n    _init: function(opts) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage meta-data */\n\tvar data = {};\t\t\t/* our data */\n\tvar ta;\t\t\t\t/* textarea */\n\n\topts      = opts||{};\n\topts.mode = opts.mode||\"prolog\";\n\n\tvar options = $.extend({}, modeDefaults[opts.mode]);\n\tif ( opts.role && roleDefaults[opts.role] )\n\t  options = $.extend(options, roleDefaults[opts.role]);\n\toptions = $.extend(options, opts);\n\n\tif ( preferences.getVal(\"emacs-keybinding\") )\n\t  options.keyMap = \"emacs\";\n\n\tif ( options.mode == \"prolog\" ) {\n\t  data.role = options.role;\n\t  if ( options.getSource )\n\t    data.getSource = options.getSource;\n\n\t  if ( config.http.locations.cm_highlight ) {\n\t    options.prologHighlightServer =\n\t    { url:  config.http.locations.cm_highlight,\n\t      role: options.role,\n\t      enabled: preferences.getVal(\"semantic-highlighting\")\n\t    };\n\t    if ( options.sourceID )\n\t      options.prologHighlightServer.sourceID = options.sourceID;\n\t    options.extraKeys[\"Ctrl-R\"] = \"refreshHighlight\";\n\t  }\n\n\t  if ( options.role == \"source\" ) {\n\t    options.continueComments = \"Enter\";\n\t    options.gutters = [\"Prolog-breakpoints\"]\n\t  }\n\n\t  /*\n\t   * Long click detection and handling.\n\t   */\n\t  data.long_click = {};\n\t  function moveLongClick(ev) {\n\t    var lc = data.long_click;\n\t    var dx = ev.clientX - lc.clientX;\n\t    var dy = ev.clientY - lc.clientY;\n\t    if ( Math.sqrt(dx*dx+dy*dy) > 5 )\n\t      cancelLongClick();\n\t  }\n\t  function cancelLongClick() {\n\t    elem.off(\"mousemove\", moveLongClick);\n\t    var lc = data.long_click;\n\t    if ( lc.timeout ) {\n\t      clearTimeout(lc.timeout);\n\t      lc.target  = undefined;\n\t      lc.timeout = undefined;\n\t    }\n\t  }\n\n\t  elem.on(\"mousedown\", \".CodeMirror-code\", function(ev) {\n\t    var lc = data.long_click;\n\n\t    lc.clientX = ev.clientX;\n\t    lc.clientY = ev.clientY;\n\t    elem.on(\"mousemove\", moveLongClick);\n\t    data.long_click.timeout = setTimeout(function() {\n\t      cancelLongClick();\n\t      elem.prologEditor('contextAction');\n\t    }, 500);\n\t  });\n\t  elem.on(\"mouseup\", function(ev) {\n\t    cancelLongClick();\n\t  });\n\t}\n\n\t/*\n\t * Create CodeMirror\n\t */\n\tif ( (ta=elem.children(\"textarea\")[0]) ) {\n\t  function copyData(name) {\n\t    var value = $(ta).data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  data.cm = CodeMirror.fromTextArea(ta, options);\n\t} else {\n\t  if ( !options.value )\n\t    options.value = elem.text();\n\t  data.cm = CodeMirror(elem[0], options);\n\t}\n\n\telem.data(pluginName, data);\n\telem.prologEditor('loadMode', options.mode);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.addClass(\"prolog-editor\");\n\telem.on(\"preference\", function(ev, pref) {\n\t  elem.prologEditor('preference', pref);\n\t});\n\telem.on(\"print\", function() {\n\t  if ( data.role != \"query\" )\n\t    elem.prologEditor('print');\n\t});\n\telem.on(\"clearMessages\", function(ev) {\n\t  elem.prologEditor('clearMessages');\n\t});\n\telem.on(\"edit-command\", function(ev, command) {\n\t  elem.prologEditor('execCommand', command);\n\t});\n\tdata.cm.on(\"blur\", function(ev) {\n\t  elem.prologEditor('execCommand', 'prepare');\n\t});\n\n\tif ( options.save ) {\n\t  storage.typeName = options.typeName||\"program\";\n\t  elem.prologEditor('setupStorage', storage);\n\t}\n\n\tif ( options.mode == \"prolog\" && data.role == \"source\" ) {\n\t  elem.on(\"activate-tab\", function(ev) {\n\t    if ( options.autoCurrent )\n\t      elem.prologEditor('makeCurrent');\n\t    data.cm.refresh();\t\t/* needed if a tab has been opened */\n\t  });\n\n\t  elem.on(\"source-error\", function(ev, error) {\n\t    elem.prologEditor('highlightError', error);\n\t  });\n\t  elem.on(\"pengine-died\", function(ev, id) {\n\t    if ( data.pengines ) {\n\t      var i = data.pengines.indexOf(id);\n\t      if ( i >= 0 )\n\t\tdata.pengines.splice(i, 1);\n\t    }\n\t    if ( data.traceMark && data.traceMark.pengine == id ) {\n\t      data.traceMark.clear();\n\t      data.traceMark = null;\n\t    }\n\t  });\n\t  elem.on('addExample', function(ev, query) {\n\t    elem.prologEditor('addExample', query);\n\t  });\n\t  data.cm.on(\"gutterClick\", function(cm, n) {\n\t    var info = cm.lineInfo(n);\n\n\t    function makeMarker() {\n\t      return $(\"<span class=\\\"breakpoint-marker\\\">&#9679;</span>\")[0];\n\t    }\n\n\t    if ( info.gutterMarkers )\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", null);\n\t    else\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", makeMarker());\n\t  });\n\t} /* end if prolog source */\n\n\tdata.cm.on(\"change\", function(cm, change) {\n\t  var clean;\n\n\t  if ( change.origin == \"setValue\" ) {\n\t    clean = true;\n\t  } else {\n\t    var store = elem.data(\"storage\");\n\t    var gen = store ? store.cleanGeneration : data.cleanGeneration;\n\n\t    clean = data.cm.isClean(gen);\n\t  }\n\n\t  elem.prologEditor('markClean', clean);\n\t});\n      });\n    },\n\n    /**\n     * @example // Get the CodeMirror instance\n     * $(element).prologEditor('getOption', 'cm');\n     * @param {String} opt Name of option to fetch.\n     * @return {*}\n     */\n\n    getOption: function(opt) {\n      return this.data(pluginName)[opt];\n    },\n\n    /**\n     * @example // Set the keybinding for the editor\n     * $(element).prologEditor('setKeybinding', 'emacs') set\n     * keybinding schema emacs.\n     * @param {String} schema Name of the keybinding\n     * return {*}\n     */\n    setKeybinding: function(schema) {\n      schema = schema || \"default\";\n      this.data(pluginName).cm.options.keyMap = schema;\n    },\n\n    /**\n     * Switch the editor to the requested mode, possibly by dynamically\n     * loading the mode.  It seems that if we use RequireJS, we should\n     * also use this for loading modes dynamically.\n     */\n    loadMode: function(mode) {\n      var data = this.data(pluginName);\n\n      if ( !CodeMirror.modes[mode] ) {\n\trequire([\"cm/mode/\"+mode+\"/\"+mode],\n\t\t  function() {\n\t\t    data.cm.setOption(\"mode\", mode);\n\t\t  });\n      } else if ( mode != data.mode ) {\n\tdata.cm.setOption(\"mode\", mode);\n      }\n\n      return this;\n    },\n\n    /**\n     * True if this source needs to be sent to the pengine.  This is\n     * the case of the source is loaded.  We should also exclude module\n     * files.  How do we detect a module file?  Detecting the module\n     * header without support from Prolog is rather hard: count the\n     * arity and ignore preceeding comments, encoding and conditional\n     * compilation directives.\n     */\n    isPengineSource: function() {\n      var data = $(this).data(pluginName);\n      if ( data && data.role == \"source\" ) {\n\tvar storageData = $(this).data('storage');\n\n\tif ( storageData && storageData.meta ) {\n\t  if ( storageData.meta.loaded ||\n\t       storageData.meta.module )\n\t    return false;\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the defined breakpoints.\n     * @param {String} pengineID is the pengine asking for the\n     * breakpoints.\n     * @returns {Array.Object} an array holding one object per source\n     * with breakpoints.  The object contains `file` and `breakpoints`,\n     * where the latter is an array of integers.\n     */\n    getBreakpoints: function(pengineID) {\n      var result = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar breakpoints = [];\n\tvar offset = 0;\n\tvar cm = data.cm;\n\tvar line = cm.firstLine();\n\tvar last = cm.lastLine();\n\n\tfor( ; line < last; line++ ) {\n\t  var info = cm.lineInfo(line);\n\t  if ( info.gutterMarkers )\n\t    breakpoints.push(offset+line+1);\n\t}\n\n\tif ( breakpoints.length > 0 ) {\n\t  var file;\n\n\t  if ( data.pengines && data.pengines.indexOf(pengineID) >= 0 ) {\n\t    file = \"pengine://\"+pengineID+\"/src\";\n\t  } else {\n\t    var store = $(this).data(\"storage\");\n\t    if ( store )\n\t      file = \"swish://\"+store.file;\n\t  }\n\n\t  if ( file )\n\t    result.push({ file: file,\n\t\t          breakpoints: breakpoints\n\t\t        });\n\t}\n      });\n\n      return result;\n    },\n\n    /**\n     * Get the source text from a set of editors.  Each source is\n     * preceeded by a line :- '#file'(DocID, Line).\n     *\n     * @param {String} [role] Only return source for editors that\n     * match the given role.\n     * @param {Boolean} [direct] If `true`, do not try to indirect\n     * over the `data.getSource` function.\n     * @returns {String} current contents of the editor.  If\n     * the jQuery object holds multiple editors, we return the\n     * joined content of the editors.\n     */\n    getSource: function(role, direct) {\n      var src = [];\n\n      this.each(function() {\n\tif ( $(this).prologEditor('isPengineSource') ) {\n\t  var data = $(this).data(pluginName);\n\n\t  if ( data ) {\n\t    if ( !role || (role == data.role) ) {\n\t      var mysrc;\n//TBD\t      var docid = $(this).prologEditor('docid');\n\n\t      if ( typeof(data.getSource) == \"function\" && !direct ) {\n\t\tmysrc = data.getSource();\n\t      } else {\n\t\tmysrc = data.cm.getValue();\n\t      }\n//TBD\t      if ( role == \"source\" )\n//TBD\t\tsrc.push(\":- '#file'(\"+Pengine.stringify(docid)+\",1).\");\n\t      src.push(mysrc);\n\t    }\n\t  }\n\t}\n      });\n\n      return src.join(\"\\n\\n\");\n    },\n\n    /**\n     * @returns {Object} holding extended source information\n     */\n    getSourceEx: function() {\n      var obj = { value: this.data(pluginName).cm.getValue()\n\t\t};\n      var bps = this.prologEditor('getBreakpoints');\n      if ( bps.length > 0 )\n\tobj.breakpoints = bps;\n\n      return obj;\n    },\n\n    /*\n     * @returns {String} document identifier relating this editor to\n     * the server side document store.\n     */\n    docid: function() {\n      var st;\n\n      if ( this.hasClass(\"storage\") )\n\treturn this.storage('docid');\n      else if ( (st=this.closest(\".storage\")) && st.length > 0 ) {\n\tstdoc = st.storage('docid');\n\tif ( stdoc )\n\t  return stdoc + \"#\" + this.closest(\".nb-cell\").attr(\"name\");\n      }\n    },\n\n    /**\n     * @return {String[]} UUIDs of the sources used for\n     * server-side analysis.  The array may contain `null`s\n     * for sources that have no server side backup.\n     */\n     getSourceID: function() {\n       var ids = [];\n\n       this.each(function() {\n\t var data = $(this).data(pluginName);\n\n\t if ( data && data.cm && data.cm.state.prologHighlightServer )\n\t   ids.push(data.cm.state.prologHighlightServer.uuid);\n\t else\n\t   ids.push(null);\n       });\n\n       return ids;\n     },\n\n    /**\n     * @param {String} source sets the new content for the editor.  If\n     * the editor is associated with a storage plugin, the call is\n     * forwarded to the storage plugin.\n     * @param {Boolean} [direct=false] if this parameter is `true`, the\n     * message is never delegated to the storage\n     */\n    setSource: function(source, direct) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      if ( this.data('storage') && direct != true ) {\n\tthis.storage('setSource', source);\n      } else {\n\tvar data = this.data(pluginName);\n\n\tdata.cm.setValue(source.data);\n\tif ( source.line || source.prompt ) {\n\t  data.cm.refresh();\n\n\t  if ( source.line ) {\n\t    this.prologEditor('gotoLine', source.line, source);\n\t  } else {\n\t    this.prologEditor('showTracePort', source.prompt);\n\t  }\n\t}\n\n\tif ( data.role == \"source\" )\n\t  $(\".swish-event-receiver\").trigger(\"program-loaded\", this);\n      }\n      return this;\n    },\n\n    /**\n     * Advertise this editor as the current editor.  This is the\n     * one used by the default query editor.\n     */\n    makeCurrent: function() {\n      $(\".swish-event-receiver\").trigger(\"current-program\", this);\n      return this;\n    },\n\n    /**\n     * Called if the editor changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      if ( data.clean_signalled != clean )\n      { data.clean_signalled = clean;\n\tthis.trigger(\"data-is-clean\", clean);\n      }\n    },\n\n    /**\n     * Set notion of clean for editors that are not associated with a\n     * storage\n     */\n    setIsClean: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tdata.cleanGeneration = data.cm.changeGeneration();\n      });\n    },\n\n    /**\n     * @param {Object} options\n     * @param {String} [options.add] Id of pengine to add\n     * @param {String} [options.has] Match pengine, returning boolean\n     */\n    pengine: function(options) {\n      var data = this.data(pluginName);\n\n      if ( data ) {\n\tif ( options.add ) {\n\t  data.pengines = data.pengines || [];\n\t  if ( data.pengines.indexOf(options.add) < 0 )\n\t    data.pengines.push(options.add);\n\n\t  return this;\n\t} else if ( options.has ) {\n\t  return (data.pengines &&\n\t\t  data.pengines.indexOf(options.has) >= 0);\n\t}\n      }\n    },\n\n    /**\n     * print the current content of the editor after applying the\n     * the CodeMirror mode to it.\n     * @param {String} [src] Prolog source to print. Default is to print\n     * the content of the editor.\n     */\n    print: function(src) {\n      var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n      if ( !src ) src = this.prologEditor('getSource');\n\n      CodeMirror.runMode(src, \"prolog\", pre);\n\n      function printWithIframe(elem) {\n\tvar iframe = $.el.iframe({src:\"about:blank\"});\n\t$(\"body\").append(iframe);\n\t$(\"body\", iframe.contentWindow.document).append(elem);\n\tiframe.contentWindow.print();\n      }\n\n      $.ajax({ url: config.http.locations.swish+\"js/codemirror/theme/prolog.css\",\n\t       dataType: \"text\",\n\t       success: function(data) {\n\t\t printWithIframe($.el.div($.el.style(data),\n\t\t\t\t\t  pre));\n\t       },\n\t       error: function(jqXHDR) {\n\t\t modal.ajaxError(jqXHDR);\n\t       }\n             });\n\n      return this;\n    },\n\n    /**\n     * Manage user preference changes.  Defines preferences are:\n     *\n     *   - \"highlight\" -- one of `semantic` or `syntactic`\n     *\n     * @param {Object} pref describes a preference\n     * @param {String} pref.name name of the preference\n     * @param {Any}    pref.value value of the preference\n     */\n    preference: function(pref) {\n      var data = this.data(pluginName);\n\n      if ( pref.name == \"semantic-highlighting\" ) {\n\tdata.cm.setOption(\"prologHighlightServer\",\n\t\t\t  { enabled: pref.value });\n      }\n\n      if ( pref.name == \"emacs-keybinding\") {\n\tif (pref.value == true) {\n\t  data.cm.setOption(\"keyMap\", \"emacs\");\n\t} else {\n\t  data.cm.setOption(\"keyMap\", \"default\");\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Highlight a (syntax) error in the source.\n     * @param {Object} error\n     * @param {String} error.data contains the error message (HTML\n     * string)\n     * @param {Object} error.location contains the location, providing\n     * `line` and `ch` attributes.\n     */\n    highlightError: function(error) {\n      if ( error.location.file &&\n\t   (error.location.file == true ||\n\t    this.prologEditor('isMyFile', error.location.file)) ) {\n\tvar data = this.data(pluginName);\n\tvar chmark;\n\n\tif ( error.location.ch ) {\n\t  left = data.cm.charCoords({ line: error.location.line-1,\n\t\t\t\t      ch:   error.location.ch-1\n\t\t\t\t    },\n\t\t\t\t    \"local\").left;\n\t  chmark = $.el.div({class:\"source-msg-charmark\"},\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-chevron-up\"}));\n\t  $(chmark).css(\"padding-left\", left+\"px\");\n\t}\n\n\tvar elem = $.el.div({ class:\"source-msg error error-context\",\n\t\t\t      title:\"Error message.  Click to remove\"\n\t\t\t    },\n\t\t\t    chmark,\n\t\t\t    $(error.data)[0],\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-remove-circle\"}));\n\tvar widget = data.cm.addLineWidget(error.location.line-1, elem);\n\n\tif ( error.error_context )\n\t  $(elem).data(\"error_context\", error.error_context);\n\t$(elem).on(\"click\", function(ev) {\n\t  if ( error.error_handler &&\n\t       error.error_handler(ev) == false )\n\t    return;\n\t  widget.clear();\n\t});\n\t$(elem).data(\"cm-widget\", widget);\n      }\n\n      return this;\n    },\n\n    /**\n     * Re-run the highlighting.  Used for query editors if the\n     * associated editor has changed.\n     */\n    refreshHighlight: function() {\n      var data = this.data(pluginName);\n      data.cm.serverAssistedHighlight(true);\n      return this;\n    },\n\n    /**\n     * Refresh the editor.  This is often needed if it is resized.\n     */\n    refresh: function() {\n      var data = this.data(pluginName);\n      if ( data )\n\tdata.cm.refresh();\n      return this;\n    },\n\n    /**\n     * Remove all inline messages from the editor\n     */\n    clearMessages: function() {\n      this.find(\".source-msg\").each(function() {\n\t$(this).data(\"cm-widget\").clear();\n      });\n\n      this.prologEditor('showTracePort', null);\n\n      return this;\n    },\n\n    /**\n     * Execute a command on the editor from the menu.  The trick is to\n     * find the current editor.  For that purpose we make \"blur\" trigger\n     * the 'prepare' command that sets the last editor.  On the\n     * following menu action we execute on the last editor.\n     */\n   execCommand: function(command) {\n     if ( command == 'prepare' ) {\n       lastEditor = this[0];\n     } else if ( lastEditor == this[0] ) {\n       elem = $(lastEditor);\n       var data = elem.data(pluginName);\n       data.cm.execCommand(command);\n       elem.find(\".Codemirror-dialog input\").focus();\n     }\n\n     return this;\n   },\n\n    /**\n     * @param {String} file is the file as known to Prolog,\n     * which is `pengine://<pengine>/src/` for the pengine main file\n     * and `swish://store.pl` for included files.\n     * @return {Boolean} whether or not this is my file.\n     */\n    isMyFile: function(file) {\n      var prefix = \"swish://\";\n\n      if ( file.startsWith(\"pengine://\") ) {\n\tvar data = this.data(pluginName);\n\n\tif ( data.pengines &&\n\t     (id = file.split(\"/\")[2]) &&\n\t     data.pengines.indexOf(id) >= 0 )\n\t  return true;\n      }\n\n      if ( file.startsWith(prefix) ) {\n\tvar store = this.data(\"storage\");\n\n\tif ( store && file.slice(prefix.length) == store.file )\n\t  return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Highlight source events.  The source pengine gets a prompt\n     * with `prompt.file` set to `pengine://<id>/src`.\n     * @param {Object|null} prompt for a tracer action.  Use `null`\n     * to clear.\n     * @return {jQuery|undefined} `this` if successful.  `undefined`\n     * if this is a valid trace event, but I cannot process it.\n     */\n    showTracePort: function(prompt) {\n      if ( this.length == 0 )\n\treturn this;\n\n      var data  = this.data(pluginName);\n\n      if ( data.traceMark ) {\n\tdata.traceMark.clear();\n\tdata.traceMark = null;\n      }\n\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file  = prompt.source.file;\n\n\tif ( this.prologEditor('isMyFile', file) ) {\n\t  if ( prompt.source.from && prompt.source.to ) {\n\t    var from = data.cm.charOffsetToPos(prompt.source.from);\n\t    var to   = data.cm.charOffsetToPos(prompt.source.to);\n\n\t    if ( !this.is(\":visible\") )\n\t      this.storage('expose', \"trace\");\n\n\t    if ( from && to ) {\n\t      data.traceMark = data.cm.markText(from, to,\n\t\t\t\t\t\t{ className: \"trace \"+prompt.port\n\t\t\t\t\t\t});\n\t      data.traceMark.pengine = prompt.pengine;\n\t      data.cm.scrollIntoView(from, 50);\n\t    }\n\t  }\n\n\t  return this;\n\t}\n      } else {\n\treturn this;\n      }\n    },\n\n    /**\n     * Get the selection for later reuse.\n     * @returns {null|Array} Array of selection descriptions for each\n     * editor in the jQuery object that has a selection.  Each editor\n     * selection contains `editor` and `selections`, where `selections`\n     * is an array of objects with `from`, `to` (line,ch), `string` and\n     * `context`.  The latter two allow for fuzzy restoration of the\n     * selection.\n     */\n    getSelection: function() {\n      var selection = [];\n\n      this.each(function() {\n\tvar ed   = $(this);\n\tvar data = ed.data(pluginName);\n\n\tif ( data.cm.somethingSelected() == true ) {\n\t  var sel    = data.cm.listSelections();\n\t  var esel   = {selections:[]};\n\n\t\t\t\t\t\t/* Hack */\n\t  var cell_name = ed.closest(\".nb-cell\").attr(\"name\");\n\t  if ( cell_name )\n\t    esel.cell = cell_name;\n\n\t  for(var i=0; i<sel.length; i++) {\n\t    var s = sel[i];\n\t    var sr = {};\n\n\t    function cmploc(l1, l2) {\n\t      if ( l1.line < l2.line ) return -1;\n\t      if ( l1.line > l2.line ) return  1;\n\t      if ( l1.ch   < l2.ch   ) return -1;\n\t      if ( l1.ch   > l2.ch   ) return  1;\n\t      return 0;\n\t    }\n\t    function sol(pos) {\n\t      return {line:pos.line, ch:0};\n\t    }\n\t    function eol(pos) {\n\t      return {line:pos.line, ch:data.cm.getLine(pos.line).length};\n\t    }\n\t    function cppos(pos) {\n\t      return {line:pos.line, ch:pos.ch};\n\t    }\n\n\t    switch ( cmploc(s.anchor, s.head) )\n\t    { case -1:\n\t\tsr.from = cppos(s.anchor);\n\t        sr.to   = cppos(s.head);\n\t\tbreak;\n\t      case 1:\n\t\tsr.to   = cppos(s.anchor);\n\t        sr.from = cppos(s.head);\n\t\tbreak;\n\t      case 0:\n\t\tcontinue;\n\t    }\n\n\t    sr.string  = data.cm.getRange(sr.from, sr.to);\n\t    sr.context = data.cm.getRange(sol(sr.from), eol(sr.to));\n\n\t    esel.selections.push(sr);\n\t  }\n\n\t  selection.push(esel);\n\t}\n      });\n\n      return selection.length > 0 ? selection : null;\n    },\n\n    /**\n     * @param {Array} sel is the selection to restore\n     * @fixme deal with notebook selections\n     */\n    restoreSelection: function(selection) {\n      function restoreEditorSelection(ed, sel) {\n\tvar data    = ed.data(pluginName);\n\tvar cm      = data.cm;\n\tvar cmsel   = [];\n\tvar loffset = \"\";\n\n\tfunction findsel(s) {\n\t  if ( cm.getRange(s.from, s.to) == s.string ) {\n\t    return {anchor:s.from, head: s.to};\n\t  } else {\n\t    var start   = cm.firstLine();\n\t    var end     = cm.lastLine();\n\t    var offset  = 0;\n\t    var goffset = 1;\n\n\t    function contextMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tif ( cm.getLine(l0+i) != lines[i] )\n\t\t  return false;\n\t      }\n\t      return true;\n\t    }\n\n\t    function stringMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tvar cml = cm.getLine(l0);\n\t\tvar   l = lines[i];\n\t\tvar choff;\n\n\t\tif ( i == 0 ) {\n\t\t  if ( i == lines.length-1 ) {\n\t\t    return cml.indexOf(l);\n\t\t  } else {\n\t\t    choff = cml.indexOf(l);\n\n\t\t    if ( !(choff >= 0 && l.length+choff == cml.length) )\n\t\t      return -1;\n\t\t  }\n\t\t} else if ( i == lines.length-1 ) {\n\t\t  if ( cml.indexOf(l) != 0 )\n\t\t    return -1;\n\t\t} else {\n\t\t  if ( cm.getLine(l0+i) != lines[i] )\n\t\t    return -1;\n\t\t}\n\t      }\n\t      return choff;\t\t\t/* ch of selection start */\n\t    }\n\n\t    function poff(p, l, ch) {\n\t      ch = ch||0;\n\t      return {line:p.line+l, ch:p.ch+ch};\n\t    }\n\n\t    while( s.from.line+offset >= start &&\n\t\t   s.to.line+offset <= end ) {\n\t      var ch;\n\n\t      if ( contextMatch(s.from.line+offset, s.context) )\n\t\treturn { anchor:poff(s.from, offset),\n\t\t\t head:  poff(s.to,   offset),\n\t\t\t offset:offset\n\t\t       };\n\t      if ( (ch=stringMatch(s.from.line+offset, s.string)) >= 0 ) {\n\t\tvar soff = ch-s.from.ch;\n\t\tvar toff = s.to.line != s.from.line ? 0 : soff;\n\n\t\treturn { anchor:poff(s.from, offset, soff),\n\t\t\t head:  poff(s.to,   offset, toff),\n\t\t\t offset:offset\n\t\t       };\n\t      }\n\n\t      goffset++;\n\t      offset = Math.floor(goffset/2);\n\t      if ( goffset%2 == 1 )\n\t\toffset = -offset;\n\t    }\n\t  }\n\t}\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var r = findsel(sel[i]);\n\t  if ( r ) {\n\t    cmsel.push(r);\n\t    if ( r.offset ) {\n\t      if ( loffset != \"\" )\n\t\tloffset += \";\";\n\t      loffset += r.offset\n\t    }\n\t  }\n\t}\n\n\tif ( cmsel.length > 0 )\n\t  cm.setSelections(cmsel, 0);\n\tif ( loffset != \"\" || cmsel.length < sel.length ) {\n\t  var msg;\n\n\t  if ( cmsel.length == sel.length )\n\t    msg = \"Found selections at offset \"+loffset;\n\t  else if ( loffset == \"\" )\n\t    msg = \"Could not restore all selections\";\n\t  else\n\t    msg = \"Only found some selections at offsets \" + loffset;\n\n\t  modal.feedback({ html: msg, owner: ed });\n\t}\n      }\n\n      // Our body\n      if ( selection[0].cell ) {\t/* notebook style */\n\tvar editors = this;\n\n\tfor(var i=0; i<selection.length; i++) {\n\t  var s = selection[i];\n\n\t  function findEditor(name) {\n\t    for(var i=0; i<editors.length; i++) {\n\t      if ( $(editors[i]).closest(\".nb-cell\").attr(\"name\") == name )\n\t\treturn $(editors[i]);\n\t    }\n\t  }\n\n\t  var ed = findEditor(s.cell);\n\t  if ( ed )\n\t    restoreEditorSelection(ed, s.selections);\n\t}\n      } else {\t\t\t\t/* plain editor */\n\trestoreEditorSelection(this, selection);\n      }\n\n      return this;\n    },\n\n    /**\n     * Extract example queries from text.  By   default,  this looks for\n     * structured  comment  blocks  labelled   *examples*  and  extracts\n     * fragments between `^ *?-` and `.`\n     *\n     * @param {String} [src] Source to parse. Default is the editor\n     * content.\n     * @param {Boolean} [inComment=true] if `true`, only process text\n     * that is in an *examples* structured comment block\n     * @returns {null|Array} Examples extracted from the source code.  If\n     * there is _no source_ code, `null` is returned.\n     */\n    getExamples: function(src, inComment) {\n      var source = src ? src : this.prologEditor('getSource');\n      var comments;\n      var exlist = [];\n\n      if ( $.trim(source) == \"\" )\n\treturn null;\n\n      if ( inComment == false )\n\tcomments = [src];\n      else\n\tcomments = source.match(/\\/\\*\\* *<?examples>?[\\s\\S]*?\\*\\//igm);\n\n      if ( comments ) {\n\tfor(var i=0; i<comments.length; i++) {\n\t  var exl = comments[i].match(/^ *\\?-[\\s\\S]*?[^-#$&*+./:<=>?@\\\\^~]\\.\\s/gm);\n\n\t  if ( exl ) {\n\t    for(var j=0; j<exl.length; j++) {\n\t      var ex = exl[j].replace(/^ *\\?-\\s*/, \"\")\n\t\t\t     .replace(/\\s*$/, \"\");\n\t      exlist.push(ex);\n\t    }\n\t  }\n\t}\n      }\n\n      return exlist;\n    },\n\n    /**\n     * Add an example to the examples comment block or create such a\n     * block.\n     */\n    addExample: function(query) {\n      var cm      = this.data(pluginName).cm;\n      var source = this.prologEditor('getSource');\n      var start  = this.prologEditor('search',\n\t\t\t\t     /\\/\\*\\* *<?examples>?/igm, {dir:-1,max:1});\n      var end    = this.prologEditor('search', /\\*\\//, {start:start.line,max:1});\n\n      if ( start.length == 1 )\n      { var end = this.prologEditor('search', /\\*\\//,\n\t\t\t\t    {start:start[0].line, max:1});\n\tvar current = this.prologEditor('getExamples', source);\n\n\tif ( current && current.indexOf(query) != -1 )\n\t{ modal.alert(\"Query is already in examples\");\n\t  return this;\n\t}\n\tif ( end.length != 1 )\n\t{ modal.alert(\"/** <examples> block is not terminated with */\");\n\t  return this;\n\t}\n\n\tquery = query.split(\"\\n\").join(\"\\n   \");\n\tcm.setSelection({line:end[0].line-1, ch:0});\n\tcm.replaceSelection(\"?- \"+query+\"\\n\");\n      } else\n      { cm.setSelection({line:cm.lastLine(), ch:0});\n\tcm.replaceSelection(\"/** <examples>\\n\" +\n\t\t\t    \"?- \"+query+\"\\n\" +\n\t\t\t    \"*/\\n\");\n      }\n\n      return this;\n    },\n\n    /**\n     * @param {RegExp} re is the regular expression to search for\n     * @param {Object} [options]\n     * @param {number} [options.max] is the max number of hits to return\n     * @param {number} [options.dir=1] is -1 to search backwards\n     * @param {number} [options.start] to start at a given line\n     * @param {number} [options.end] to end at a given line\n     * @returns {Array.object} list of objects holding the matching line\n     * content and line number.\n     */\n    search: function(re, options) {\n      var cm      = this.data(pluginName).cm;\n      var dir     = options.dir||1;\n      var start   = options.start == undefined ? cm.firstLine() : options.start;\n      var end     = options.end   == undefined ? cm.lastLine()  : options.end;\n      var matches = [];\n\n      if ( (dir == -1 && end > start) ||\n\t   (dir == 1 && start > end) )\n      { var tmp = start;\n\tstart = end;\n\tend = tmp;\n      }\n\n      if ( (dir > 0 && start > end) ||\n\t   (dir < 0 && start < end) )\n\treturn matches;\n      end += dir;\n\n      for(var i=start; i!=end; i+=dir) {\n\tvar line = cm.getLine(i);\n\tif ( line.search(re) >= 0 ) {\n\t  matches.push({line:i+1, text:line});\n\t  if ( options.max && options.max === matches.length )\n\t    return matches;\n\t}\n      }\n\n      return matches;\n    },\n\n    /**\n     * Go to a given 1-based line number and optionally highlight the\n     * match(es).\n     *\n     * @param {number} line\n     * @param {Object} [options]\n     * @param {RegExp} [options.regex] If provided, highlight the\n     * matches.\n     * @param {Boolean} [options.showAllMatches] if `true`, show all\n     * matches in the viewport.\n     */\n    gotoLine: function(line, options) {\n      var data = this.data(pluginName);\n      var cm   = data.cm;\n      var ch   = 0;\n      var re;\n\n      function clearSearchMarkers(cm) {\n\tif ( cm._searchMarkers !== undefined ) {\n\t  for(var i=0; i<cm._searchMarkers.length; i++)\n\t    cm._searchMarkers[i].clear();\n\t  cm.off(\"cursorActivity\", clearSearchMarkers);\n\t}\n\tcm._searchMarkers = [];\n      }\n\n      clearSearchMarkers(cm);\n      options = options||{};\n      re      = options.regex;\n      line    = line-1;\n\n      if ( re ) {\n\tch = cm.getLine(line).search(re);\n\tif ( ch < 0 )\n\t  ch = 0;\n      }\n\n      cm.setCursor({line:line,ch:ch});\n      var myHeight = cm.getScrollInfo().clientHeight;\n      var coords = cm.charCoords({line: line, ch: 0}, \"local\");\n      cm.scrollTo(null, (coords.top + coords.bottom - myHeight) / 2);\n\n      if ( re ) {\n\tfunction markMatches(line, className) {\n\t  var match;\n\n\t  while( (match=re.exec(cm.getLine(line))) ) {\n\t    cm._searchMarkers.push(\n\t      cm.markText({line:line,ch:match.index},\n\t\t\t  {line:line,ch:match.index+match[0].length},\n\t\t\t  {className:className,\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Search match\"\n\t\t\t  }));\n\t  }\n\t}\n\n\tmarkMatches(line, \"CodeMirror-search-match\");\n\tif ( options.showAllMatches ) {\n\t  var vp = cm.getViewport();\n\n\t  for(var i=vp.from; i<vp.to; i++) {\n\t    if ( i != line ) {\n\t      markMatches(i, \"CodeMirror-search-alt-match\");\n\t    }\n\t  }\n\t}\n\n\tif ( cm._searchMarkers.length > 0 )\n\t  cm.on(\"cursorActivity\", clearSearchMarkers);\n      } else {\t\t\t\t\t/* mark entire line */\n\tcm._searchMarkers.push(\n\t      cm.markText({line:line, ch:0},\n\t\t\t  {line:line, ch:cm.getLine(line).length},\n\t\t\t  {className:\"CodeMirror-search-match\",\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Target line\"\n\t\t\t  }));\n      }\n\n      return this;\n    },\n\n    /**\n     * @return {Integer} change generation for this editor\n     */\n    changeGen: function() {\n      return this.data(pluginName).cm.changeGeneration();\n    },\n\n    isClean: function(gen) {\n      return this.data(pluginName).cm.isClean(gen);\n    },\n\n    /**\n     * Associate the editor with the server side (gitty) source\n     */\n    setupStorage: function(storage) {\n      var data = this.data(pluginName);\n      var elem = this;\n\n      storage.setValue = function(source) {\n\telem.prologEditor('setSource', source, true);\n      };\n      storage.getValue = function() {\n\treturn data.cm.getValue();\n      };\n      storage.changeGen = function() {\n\treturn data.cm.changeGeneration();\n      };\n      storage.isClean = function(generation) {\n\treturn data.cm.isClean(generation);\n      };\n      storage.markClean = function(clean) {\n\telem.prologEditor('markClean', clean);\n      };\n\n      storage.cleanGeneration = data.cm.changeGeneration();\n      storage.cleanData       = data.cm.getValue();\n      storage.cleanCheckpoint = \"load\";\n\n      this.storage(storage);\n      return this;\n    },\n\n    /**\n     * Act on the current token.  Normally invoked after a long click.\n     */\n    contextAction: function() {\n      var elem  = this;\n      var data  = this.data(pluginName);\n      var here  = data.cm.getCursor();\n      var token = data.cm.getTokenAt(here, true);\n      var et    = data.cm.getEnrichedToken(token);\n      var locations = data.cm.getTokenReferences(et);\n\n      if ( locations && locations.length > 0 ) {\n\tvar ul = $.el.ul();\n\tvar select  = $.el.div({class: \"goto-source\"}, $.el.div(\"Go to\"), ul);\n\tvar modalel = $.el.div({class: \"edit-modal\"},\n\t\t\t       $.el.div({class: \"mask\"}),\n\t\t\t       select)\n\n\tfor(var i=0; i<locations.length; i++) {\n\t  var loc = locations[i];\n\t  $(ul).append($.el.li($.el.a({'data-locindex':i}, loc.title)));\n\t}\n\n\tvar coord = data.cm.cursorCoords(true);\n\t$(select).css({top: coord.bottom, left: coord.left});\n\n\t$(\"body\").append(modalel);\n\t$(modalel).on(\"click\", function(ev) {\n\t  var i = $(ev.target).data('locindex');\n\t  $(modalel).remove();\n\n\t  if ( i !== undefined ) {\n\t    var loc = locations[i];\n\n\t    if ( loc.file ) {\n\t      elem.closest(\".swish\").swish('playFile', loc);\n\t    } else {\n\t      var editor;\n\n\t      // If we are the query editor, we must find the related\n\t      // program editor.\n\t      if ( data.role == \"query\" ) {\n\t\teditor = elem.closest(\".prolog-query-editor\")\n\t\t\t     .queryEditor('getProgramEditor');\n\n\t\tif ( !editor[0] )\n\t\t  modal.alert(\"No related program editor\");\n\t      } else\n\t      { editor = elem;\n\t      }\n\n\t      if ( editor && editor[0] )\n\t\teditor.prologEditor('gotoLine', loc.line, loc).focus();\n\t    }\n\n\t  }\n\t});\n\n\t$(modalel).show();\n      }\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\tQUERY MANIPULATION\t*\n\t\t *******************************/\n\n    /**\n     * @param {String} [query] query to get the variables from\n     * @param {Boolean} [anon] if `true`, also include _X variables.\n     * @return {List.string} is a list of Prolog variables without\n     * duplicates\n     */\n\n    variables: function(query, anon) {\n      var qspan = $.el.span({class:\"query cm-s-prolog\"});\n      var vars = [];\n\n      CodeMirror.runMode(query, \"prolog\", qspan);\n\n      function addVars(selector) {\n\t$(qspan).find(selector).each(function() {\n\t  var name = $(this).text();\n\t  if ( vars.indexOf(name) < 0 )\n\t    vars.push(name);\n\t});\n      }\n\n      addVars(\"span.cm-var\");\n      if ( anon )\n\taddVars(\"span.cm-var-2\");\n\n      return vars;\n    },\n\n    /**\n     * Wrap current query in a solution modifier.\n     * TBD: If there is a selection, only wrap the selection\n     *\n     * @param {String} wrapper defines the type of wrapper to use.\n     */\n    wrapSolution: function(wrapper) {\n      var query = prolog.trimFullStop(this.prologEditor('getSource', \"query\"));\n      var that = this;\n      var vars = this.prologEditor('variables', query);\n\n      function wrapQuery(pre, post) {\n\tthat.prologEditor('setSource', pre + \"(\"+query+\")\" + post + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function prefixQuery(pre) {\n\tthat.prologEditor('setSource', pre + query + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function order(l) {\n\tvar order = [];\n\tfor(var i=0; i<vars.length; i++)\n\t  order.push(\"asc(\"+vars[i]+\")\");\n\treturn order.join(\",\");\n      }\n\n      switch ( wrapper ) {\n        case \"Aggregate (count all)\":\n\t  return wrapQuery(\"aggregate_all(count, \", \", Count)\");\n\tcase \"Projection\":\n\t  return prefixQuery(\"projection([\"+vars.join(\",\")+\"]),\\n\");\n        case \"Order by\":\n\t  return wrapQuery(\"order_by([\"+order(vars)+\"], \", \")\");\n        case \"Distinct\":\n\t  return wrapQuery(\"distinct([\"+vars.join(\",\")+\"], \", \")\");\n        case \"Limit\":\n\t  return wrapQuery(\"limit(10, \", \")\");\n        case \"Time\":\n\t  return wrapQuery(\"time(\", \")\");\n        case \"Debug (trace)\":\n\t  return wrapQuery(\"trace, \", \"\");\n\tdefault:\n\t  alert(\"Unknown wrapper: \\\"\"+wrapper+\"\\\"\");\n      }\n    }\n  }; // methods\n\n  tabbed.tabTypes.program = {\n    dataType: \"pl\",\n    typeName: \"program\",\n    label: \"Program\",\n    contentType: \"text/x-prolog\",\n    order: 100,\n    create: function(dom, options) {\n      $(dom).addClass(\"prolog-editor\")\n            .prologEditor($.extend({save:true}, options))\n\t    .prologEditor('makeCurrent');\n    }\n  };\n\n  if ( config.swish.tab_types ) {\n    var editDefaults = {\n      save: true,\n      lineNumbers: true\n    };\n\n    for(var i=0; i<config.swish.tab_types.length; i++) {\n      var tabType = config.swish.tab_types[i];\n      if ( tabType.editor ) {\n\tvar options = $.extend({typeName:tabType.typeName},\n\t\t\t       editDefaults,\n\t\t\t       tabType.editor);\n\n\ttabType.create = function(dom) {\n\t  $(dom).addClass(\"prolog-editor\")\n\t        .prologEditor(options);\n\t};\n\n\ttabbed.tabTypes[tabType.typeName] = tabType;\n      }\n    }\n  }\n\n\n  /**\n   * The prologEditor jQuery plugin converts a `<div>` into an code\n   * editor based on [CodeMirror](http://codemirror.net)\n   *\n   * @class prologEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example // Create a default Prolog editor\n   * $(\"#editor\").prologEditor();\n   * @example // Extract embedded examples\n   * $(\"#editor\").prologEditor('getExamples');\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\nCodeMirror.prototype.charOffsetToPos = function(offset) {\n  var line = this.firstLine();\n  var last = this.lastLine();\n  var charno = 0;\n\n  for( ; line < last; line++ ) {\n    var text = this.getLine(line);\n\n    if ( charno <= offset && charno+text.length >= offset )\n      return {line:line, ch:offset-charno};\n\n    charno += text.length + 1;\t\t/* one extra for the newline */\n  }\n};\n\n\n\t\t /*******************************\n\t\t *\t      EMACS\t\t*\n\t\t *******************************/\n\nCodeMirror.keyMap.emacs.Enter = \"newlineAndIndent\";\n\n\n\t\t /*******************************\n\t\t *\tSTYLE CONFIGURATION\t*\n\t\t *******************************/\n\n/**\n * Include styles provided through the configuration object.\n *\n * @param {Object} style is an object mapping style names into style\n * properties.  The properties are also in an object, linking style\n * names to values.  For example:\n *\n *    ```\n *    { column: {color: \"#8b008b},\n *      table:  {color: \"#8b008b, \"font-weight\":\"bold\"}\n *    }\n *    ```\n */\n\nfunction loadStyleExtensions(style, prefix)\n{ var parts=[];\n\n  prefix = prefix || \"\";\n\n  parts.push(\"<style>\\n\");\n  for(var sname in style) {\n    if ( style.hasOwnProperty(sname) ) {\n      var attrs = style[sname];\n\n      parts.push(prefix, sname, \"{\");\n\n      for(var a in attrs) {\n\tif ( attrs.hasOwnProperty(a) ) {\n\t  parts.push(a, \":\", attrs[a], \";\");\n\t}\n      }\n\n      parts.push(\"}\\n\");\n    }\n  }\n  parts.push(\"</style>\\n\");\n\n  $(\"body\").append(parts.join(\"\"));\n}\n\nif ( config.swish.cm_style )\n  loadStyleExtensions(config.swish.cm_style,\n\t\t      \".cm-s-prolog span.cm-\");\nif ( config.swish.cm_hover_style )\n  loadStyleExtensions(config.swish.cm_hover_style,\n\t\t      \".CodeMirror-hover-tooltip \");\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the query editing facilities.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('query',[ \"jquery\", \"config\", \"preferences\", \"cm/lib/codemirror\", \"modal\",\n\t \"laconic\", \"editor\"\n       ],\n       function($, config, preferences, CodeMirror, modal) {\n\n(function($) {\n  var pluginName = 'queryEditor';\n\n  var defaults = {\n    maxHistoryLength: 50\n  };\n\n  /** @lends $.fn.queryEditor */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Runner} options.runner an object that understands\n     * run(source, query), where source and query are strings.\n     * @param {Array.String|Function} [options.examples] called to\n     * populate the _Examples_ menu. Must return an array of strings.\n     * @param {Integer} [options.maxHistoryLength=50] is the max number\n     * of entries recalled by the history menu.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem   = $(this);\n\tvar data   = $.extend({}, defaults, options);\n\tvar qediv  = $.el.div({class:\"query\"});\n\tvar tabled = tableCheckbox(data);\n\n\telem.addClass(\"prolog-query-editor swish-event-receiver reactive-size\");\n\n\telem.append(qediv,\n\t\t    $.el.div({class:\"prolog-prompt\"}, \"?-\"),\n\t\t    $.el.div({class:\"query-buttons\"},\n\t\t\t     $.el.span({class:\"buttons-left\"},\n\t\t\t\t       examplesButton(data),\n\t\t\t\t       historyButton(data),\n\t\t\t\t       aggregateButton(data)),\n\t\t\t     $.el.span({class:\"buttons-right\"},\n\t\t\t\t       tabled,\n\t\t\t\t       runButton(data))));\n\n\tfunction tableSelected() {\n\t  return $(tabled).find(\"input\").prop(\"checked\");\n\t}\n\n\t$(qediv).append(elem.children(\"textarea\"))\n\t        .prologEditor({ role: \"query\",\n\t\t\t\tsourceID: function() {\n\t\t\t\t  return data.sourceID();\n\t\t\t\t},\n\t\t\t\tprologQuery: function(q) {\n\t\t\t\t  elem.queryEditor('run', q, tableSelected());\n\t\t\t\t}\n\t\t              });\n\n\telem.data(pluginName, data);\n\n\tif ( !$(qediv).prologEditor('getSource', \"query\") )\n\t{ if ( typeof(data.examples) == \"object\" ) {\n\t    if ( data.examples[0] )\n\t      $(qediv).prologEditor('setSource', data.examples[0]);\n\t  } else {\n\t    elem[pluginName]('setProgramEditor', $(data.editor), true);\n\t  }\n\t}\n\n\telem.on(\"current-program\", function(ev, editor) {\n\t  elem[pluginName]('setProgramEditor', $(editor));\n\t});\n\telem.on(\"program-loaded\", function(ev, editor) {\n\t  if ( $(data.editor).data('prologEditor') ==\n\t       $(editor).data('prologEditor') ) {\n\t    var exl = data.examples();\n\t    elem.queryEditor('setQuery', exl && exl[0] ? exl[0] : \"\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * @param {jQuery} editor has become the new current program\n     * editor.  Update the examples and re-run the query highlighting.\n     */\n    setProgramEditor: function(editor, force) {\n      var data = this.data(pluginName);\n\n      if ( data.editor == editor[0] && !force )\n\treturn this;\n\n      data.editor = editor[0];\n      if ( data.editor ) {\n\tdata.examples = function() {\n\t  var exl    = editor.prologEditor('getExamples')||[];\n\t  var global = editor.parents(\".swish\").swish('examples', true)||[];\n\n\t  if ( $.isArray(global) )\n\t  exl.concat(global);\n\n\t  return exl;\n\t};\n\tif ( editor.prologEditor('isPengineSource') ) {\n\t  data.source = function() {\n\t    var src = editor.prologEditor('getSource', \"source\");\n\t    var bg  = $(\".background.prolog.source\").text();\n\n\t    if ( bg )\n\t      src += '\\n%@background@\\n' + bg;\n\n\t    return src;\n\t  };\n\t} else {\n\t  data.source = \"\";\n\t}\n\tdata.sourceID = function() {\n\t  return editor.prologEditor('getSourceID');\n\t};\n\n\tvar exl = data.examples();\n\tif ( exl && exl[0] && this.queryEditor('isClean') ) {\n\t  this.queryEditor('setQuery', exl[0]);\n\t} else {\n\t  editor.prologEditor('refreshHighlight');\n\t}\n      } else\n      { data.examples = \"\";\n      }\n    },\n\n    /**\n     * @returns {jQuery} the associated program editor\n     */\n    getProgramEditor: function() {\n      var data = this.data(pluginName);\n\n      if ( data.editor )\n\treturn $(data.editor);\n      else\n\treturn $();\n    },\n\n    /**\n     * @param {Array.String} set or extend the contents of the\n     * _Examples_ menu.\n     * @param {Boolean} [clear=true] clear the list before adding the\n     * new examples.\n     */\n    setExamples: function(list, clear) {\n      var ul = this.find(\"ul.examples\");\n\n      if ( !list ) list  = [];\n      if ( clear === undefined ) clear = true;\n\n      if ( clear && sameExamples(list) )\n\treturn this;\t\t\t/* no change */\n\n      function sameExamples(exs) {\n\tvar ex0;\n\n\tif ( (ex0=ul.data('examples')) &&\n\t     ex0.length == exs.length ) {\n\t  for(var i=0; i<ex0.length; i++) {\n\t    if ( ex0[i] != exs[i] )\n\t      return false;\n\t  }\n\t  return true;\n\t}\n\treturn false;\n      }\n\n      if ( clear === true )\n\tul.html(\"\");\n      ul.find(\"li.add-example, li.divider\").remove();\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n      ul.data('examples', list.slice(0));\n      ul.append($.el.li({class:\"divider\"}));\n      ul.append($.el.li({class:'add-example'},\n\t\t\t$.el.a(\"Add current query to examples\")));\n\n      return this;\n    },\n\n    /**\n     * Add the current query to the examples in the program\n     */\n    addExample: function()\n    { var query\t= this.find(\".query\").prologEditor('getSource');\n\n      if ( query.trim() != \"\" ) {\n\t$(\".swish-event-receiver:visible\")\n\t     .trigger(\"addExample\",\n\t\t      this.find(\".query\").prologEditor('getSource'));\n      } else\n      { modal.alert(\"The query window is empty\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Add a query to the history menu. If it is already part of the\n     * menu, move it to the bottom.  If the menu exceeds the value\n     * of the option `maxHistoryLength`, remove the oldest entry.\n     * @param {String} query query to add to the history menu.\n     */\n    addHistory: function(query) {\n      var ul   = this.find(\"ul.history\");\n      var data = this.data('queryEditor');\n\n      function findInHistory() {\n\treturn ul.children().filter(function() {\n\t  return $(this).text() == query;\n\t});\n      }\n\n      if ( query ) {\n\tvar li;\n\n\tif ( (li=findInHistory()) )\n\t  li.remove();\n\tif ( ul.children().length >= data.maxHistoryLength )\n\t  ul.children().first().remove();\n\tul.append($.el.li($.el.a(query)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the current query and focus the editor.\n     * @param {String} query the new value of the query\n     */\n    setQuery: function(query) {\n      var data = this.data(pluginName);\n\n      data.cleanGen =\n\tthis.find(\".query\")\n\t    .prologEditor('setSource', query)\n\t    .focus()\n\t    .prologEditor('changeGen');\n\n      return this;\n    },\n\n    isClean: function() {\n      var data = this.data(pluginName);\n\n      return ( !this.queryEditor('getQuery') ||\n\t       ( data.cleanGen &&\n\t\t this.find(\".query\").prologEditor('isClean', data.cleanGen)\n\t       )\n\t     );\n    },\n\n    /**\n     * @returns {String} the current query as Prolog text\n     */\n    getQuery: function() {\n      return this.find(\".query\").prologEditor('getSource', \"query\");\n    },\n\n    /**\n     * Collect source and query and submit them to the associated\n     * `runner`.\n     *\n     * @param {String} [q] is the query to execute.  Default asks it\n     * from the associated query editor.\n     * @param {Boolean} [tabled=false] when `true`, present the results\n     * as a table.\n     */\n    run: function(q, tabled) {\n      var data  = this.data('queryEditor');\n\n      if ( q === undefined ) q = this.queryEditor('getQuery');\n      q = $.trim(q);\n\n      if ( !q ) {\n\t$(\".swish-event-receiver\").trigger(\"help\", {file:\"query.html\"});\n\treturn this;\n      }\n      $(\".swish-event-receiver\").trigger(\"clearMessages\");\n\n      var query = { query: q,\n\t\t    editor: data.editor,\n\t\t    query_editor: this.find(\".query\")\n\t\t  };\n\n      if ( typeof(data.source) == \"function\" )\n\tquery.source = data.source(q);\n      else if ( typeof(data.source) == \"string\" )\n\tquery.source = data.source;\n      if ( tabled )\n\tquery.tabled = true;\n\n      this.queryEditor('addHistory', q);\n      data.runner.prologRunners('run', query);\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\tPRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  /* Allow for e.g. Q(part).method(...)\n  */\n\n  function Q(from) {\n    return $(from).closest(\".prolog-query-editor\");\n  }\n\n  function dropup(cls, label, options) {\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\tlabel,\n\t$.el.span({class:\"caret\"})),\n      $.el.ul({class:\"dropdown-menu \"+cls}));\n\n    $(dropup).on(\"click\", \"a\", function() {\n      var li = $(this).closest(\"li\");\n\n      if ( li.hasClass(\"add-example\") )\n\tQ(this).queryEditor('addExample');\n      else\n\tQ(this).queryEditor('setQuery', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function examplesButton(options) {\n    var el = dropup(\"examples\", \"Examples\", options);\n    var ul = $(el).find(\"ul\");\n\n    function updateExamples(options) {\n      var list = options.examples();\n\n      if ( $.isArray(list) )\n\tQ(el).queryEditor('setExamples', list, true);\n    }\n\n    if ( typeof(options.examples) == \"function\" ) {\n      var copy = $.extend({}, options);\n      $(el).mousedown(function(ev) {\n\t\t\tif ( ev.which == 1 ) {\n\t\t\t  updateExamples(copy);\n\t\t\t}\n\t\t      });\n    } else if ( options.examples ) {\n      var list = options.examples;\n\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n    }\n\n    return el;\n  }\n\n  function historyButton(options) {\n    return dropup(\"history\", \"History\", options);\n  }\n\n  function aggregateButton(options) {\n    var cls = \"aggregate\";\n    var list = options.aggregates ||\n      [ \"Aggregate (count all)\",\n\t\"--\",\n\t\"Projection\",\n\t\"Order by\",\n\t\"Distinct\",\n\t\"Limit\",\n\t\"--\",\n\t\"Time\",\n\t\"Debug (trace)\"\n      ];\n    var ul;\n\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\t\"Solutions\",\n\t$.el.span({class:\"caret\"})),\n      ul=$.el.ul({class:\"dropdown-menu \"+cls}));\n\n    for(var i = 0; i<list.length; i++) {\n      var wrap = list[i];\n\n      if ( wrap == \"--\" )\n\t$(ul).append($.el.li({class:\"divider\"}));\n      else\n\t$(ul).append($.el.li($.el.a(wrap)));\n    }\n\n    $(dropup).on(\"click\", \"a\", function() {\n      Q(this).find(\".query\").prologEditor('wrapSolution', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function runButton(options) {\n    var button =\n      $.el.button(\n\t{class:\"run-btn-query\",\n\t class:\"btn btn-default btn-primary btn-xs\"\n\t},\n\t\"Run!\");\n\n    $(button).on(\"click\", function() {\n      Q(this).queryEditor('run', undefined, tableSelected(this));\n    });\n\n    return button;\n  }\n\n  function tableSelected(from) {\n    return $(from).parent().find(\"input\").prop(\"checked\");\n  }\n\n  function tableCheckbox(options) {\n    var checked = preferences.getVal(\"tabled_results\");\n    var attr    = {type:\"checkbox\", name:\"table\"};\n\n    if ( checked === undefined ) {\n      checked = config.swish.tabled_results;\n    }\n    if ( checked )\n      attr.checked = \"checked\";\n\n    var input = $.el.input(attr);\n    var checkbox = $.el.span({class:\"run-chk-table\"},\n\t\t\t     input, \" table results\");\n    $(input).on(\"change\", function(ev) {\n      preferences.setVal(\"tabled_results\",\n\t\t\t $(ev.target).prop(\"checked\"));\n    });\n\n    return checkbox;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class queryEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.queryEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\ndefine('term',[ \"jquery\" ],\n       function() {\n\nfunction unfold() {\n\t$(this).next().toggleClass('fold')\n\t$(this).remove()\n}\n\n$(document).on('click', '.pl-functor, .pl-infix', function() {\n\tvar p = $(this).parent()\n\t$(p).toggleClass('fold')\n\t$(p).before('<span class=\"pl-ellipsis\">...</span>').prev().click(unfold)\n})\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Handle JavaScript based login\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('login',[ \"jquery\", \"modal\", \"config\", \"form\", \"laconic\" ],\n       function($, modal, config, form) {\n\nvar DEFAULT_USER_FIELDS = [\"display_name\", \"email\", \"avatar\"];\n\n(function($) {\n  var pluginName = 'login';\n\n  /** @lends $.fn.login */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tdata.url = elem.attr(\"href\");\n\telem.removeAttr(\"href\");\n\n\telem.on(\"click\", function(ev) {\n\t  if ( elem.hasClass(\"login\") )\n\t    elem.login('login', ev);\n\t});\n\n\telem.data(pluginName, data);\n\telem.login('update', \"startup\");\n      });\n    },\n\n    /**\n     * Update the status of the login element\n     */\n    update: function(why) {\n      var elem = $(this);\n      $.get(config.http.locations.user_info, {reason:why},\n\t    function(obj) {\n\t      if ( obj ) {\n\t\tconfig.swish.user = obj;\n\t\telem.removeClass(\"login\").addClass(\"logout\");\n\n\t\tvar span = elem.find(\"span.logout span.value\");\n\t\tvar icon;\n\n\t\tif ( obj.avatar ) {\n\t\t  icon = $.el.img({ class: \"profile-picture\",\n\t\t\t\t    src: obj.avatar\n\t\t\t\t  });\n\t\t} else {\n\t\t  icon = $.el.span({class:\"glyphicon glyphicon-user\"});\n\t\t}\n\t\ticon = $.el.span(icon, $.el.b({class: \"caret\"}));\n\t\tspan.html(\"\");\n\t\tspan.append(form.widgets.dropdownButton(icon, {\n\t\t  divClass:\"user-menu btn-transparent\",\n\t\t  ulClass:\"pull-right\",\n\t\t  client: elem,\n\t\t  actions: {\n\t\t    \"Logout\":  elem.hasClass('no-logout') ? undefined :\n\t\t\t       function() {\n\t\t      this.login('logout');\n\t\t    },\n\t\t    \"Profile\": function() {\n\t\t      this.login('profile');\n\t\t    }\n\t\t  }\n\t\t}));\n\t      } else\n\t      { delete config.swish.user;\n\t\telem.removeClass(\"logout\").addClass(\"login\");\n\t      }\n\t    },\n\t    \"json\");\n    },\n\n    /**\n     * Perform the login\n     */\n    login: function(ev) {\n      var elem   = $(this);\n      var data   = this.data(pluginName);\n      var target = $(ev.target);\n      var url    = data.url;\n      var server = target.closest(\"[data-server]\").data(\"server\");\n      var frame  = target.closest(\"[data-frame]\").data(\"frame\")||\"iframe\";\n\n      if ( server )\n\turl += \"?server=\"+encodeURIComponent(server);\n\n      if ( frame == \"popup\" ) {\n\topenPopup(url, \"_blank\",\n\t\t  'location=true,status=true,height=400,width=800',\n\t\t  function() {\n\t\t    elem.login('logged_in');\n\t\t  });\n      } else {\n\tmodal.show({\n\t  title: \"Login\",\n\t  body: function() {\n\t    var button = $.el.button({ name:\"ok\",\n\t\t\t\t       class:\"btn btn-primary login-cont\",\n\t\t\t\t       \"data-dismiss\":\"modal\"\n\t\t\t\t     },\n\t\t\t\t     \"Continue\");\n\t    this.append($.el.iframe({class:\"login\", src:url}),\n\t\t\tbutton);\n\t  },\n\t  onclose: function() {\n\t    elem.login('logged_in');\n\t  }\n\t});\n      }\n    },\n\n    /**\n     * User closed the login modal window.  Check the login.\n     */\n    logged_in: function() {\n      this.login('update', \"login\");\n    },\n\n    /**\n     * Examine/edit the user profile.  Opens a modal window that is\n     * filled through an AJAX call on the server.\n     */\n    profile: function() {\n      var login = $(this);\n\n      modal.server_form({\n\ttitle: \"User profile\",\n\turl: config.swish.user.swish_profile_url ||\n\t     config.http.locations.user_profile,\n\tonreply: function() { login.login('update', \"profile\"); }\n      });\n    },\n\n    /**\n     * Get information about the current user. If possible we get this\n     * from the logged in user.  Else we get the name and avatar from\n     * #chat.\n     * @param [fields] is an array with fields we want to have\n     * @return {Object} info about current user\n     */\n    get_profile: function(fields) {\n      var info = {};\n      var obj = config.swish.user||{};\n\n      function set_from_chat(key, chat_key) {\n\tvar chat = $(\"#chat\");\n\tif ( chat.length == 1 ) {\n\t  var v = chat.chat('self', [chat_key]);\n\t  if ( v[chat_key] ) info[key] = v[chat_key];\n\t}\n      }\n\n      fields = fields||DEFAULT_USER_FIELDS;\n      for(var i=0; i<fields.length; i++) {\n\tvar key = fields[i];\n\n\tif ( obj[key] ) {\n\t  info[key] = obj[key];\n\t} else if ( key == 'display_name' ) {\n\t  if ( obj.name )\n\t    info.display_name = obj.name;\n\t  else if ( obj.given_name && obj.family_name )\n\t    info.display_name = obj.given_name + \" \" + obj.family_name;\n\t  else if ( obj.family_name )\n\t    info.display_name = obj.family_name;\n\t  else if ( obj.given_name )\n\t    info.display_name = obj.given_name;\n\t  else if ( obj.nick_name )\n\t    info.display_name = obj.nick_name;\n\t  else\n\t    set_from_chat('display_name', 'name');\n\t} else if ( key == 'identity' ) {\n\t  if ( obj.external_identity && obj.identity_provider )\n\t    info.identity = obj.identity_provider + \":\" + obj.external_identity;\n\t} else if ( key == 'avatar' ) {\n\t  set_from_chat('avatar', 'avatar');\n\t}\n      }\n\n      return info;\n    },\n\n    /**\n     * Logout the current user\n     */\n    logout: function() {\n      var user = config.swish.user;\n      var elem = $(this);\n\n      if ( user ) {\n\tif ( user.logout_url ) {\n\t  $.ajax({ url: user.logout_url,\n\t           success: function() {\n\t\t     elem.login('update', \"logout_by_url\");\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modal.ajaxError(jqXHDR);\n\t\t   }\n\t         });\n\t} else if ( user.auth_method == \"basic\" ||\n\t\t    user.auth_method == \"digest\" ) {\n\t  clearAuthenticationCache(config.http.locations.http_logout,\n\t\t\t\t   config.swish.user.auth_method,\n\t\t\t\t   function() {\n\t\t\t\t     elem.login('update', \"logout_by_http\");\n\t\t\t\t   });\n\t} else {\n\t  alert(\"Don't know how to logout\");\n\t}\n      }\n    }\n  }; // methods\n\n  /**\n   * @see https://trac-hacks.org/wiki/TrueHttpLogoutPatch\n   * @see http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication\n   */\n  function clearAuthenticationCache(page, method, oncomplete) {\n    // Default to a non-existing page (give error 500).\n    // An empty page is better, here.\n    if (!page) page = '.force_logout';\n    try{\n      var agt=navigator.userAgent.toLowerCase();\n\n      if ( agt.indexOf(\"msie\") != -1 ) {\n\tdocument.execCommand(\"ClearAuthenticationCache\");\n      } else if ( agt.indexOf(\"webkit\") != -1 && method == \"basic\" ) {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true);\n\t  xmlhttp.setRequestHeader(\"Authorization\", \"Basic logout\");\n\t  xmlhttp.send();\n\t}\n      } else {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true, \"logout\", \"logout\");\n\t  xmlhttp.send(\"\");\n\t  xmlhttp.abort();\n\t}\n      }\n    } catch(e) {\n      // There was an error\n      return;\n    }\n  }\n\n  function createXMLObject(oncomplete) {\n    var xmlhttp;\n\n    try {\n      if (window.XMLHttpRequest) {\n\txmlhttp = new XMLHttpRequest();\n      } else if (window.ActiveXObject) {\n\txmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n      }\n\n      if ( oncomplete ) {\n\txmlhttp.addEventListener(\"load\",  oncomplete);\n\txmlhttp.addEventListener(\"error\", oncomplete);\n\txmlhttp.addEventListener(\"abort\", oncomplete);\n      }\n    } catch (e) {\n    }\n\n    return xmlhttp;\n  }\n\n  /**\n   * Open a popup window for dealing with the federated login.  We\n   * must check the login status after the user completes the popup.\n   * Unfortunately the code below does not always work as `win.closed`\n   * is not always set.  An example is FF 51.0 using Cinamon.\n   */\n  function openPopup(uri, name, options, closeCallback) {\n    var win = window.open(uri, name, options);\n    var interval = window.setInterval(function() {\n      try {\n\tif (win == null || win.closed) {\n\t  window.clearInterval(interval);\n\t  closeCallback(win);\n\t}\n      }\n      catch (e) {\n      }\n    }, 1000);\n\n    if ( window.focus )\n      win.focus();\n\n    return win;\n  };\n\n\n  /**\n   * <Class description>\n   *\n   * @class login\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.login = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (typeof define === \"function\" && define.amd) this.d3 = d3, define('d3',d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n","(function (window) {\n    'use strict';\n\n    /*global define, module, exports, require */\n\n    var c3 = { version: \"0.4.11\" };\n\n    var c3_chart_fn,\n        c3_chart_internal_fn,\n        c3_chart_internal_axis_fn;\n\n    function API(owner) {\n        this.owner = owner;\n    }\n\n    function inherit(base, derived) {\n\n        if (Object.create) {\n            derived.prototype = Object.create(base.prototype);\n        } else {\n            var f = function f() {};\n            f.prototype = base.prototype;\n            derived.prototype = new f();\n        }\n\n        derived.prototype.constructor = derived;\n\n        return derived;\n    }\n\n    function Chart(config) {\n        var $$ = this.internal = new ChartInternal(this);\n        $$.loadConfig(config);\n\n        $$.beforeInit(config);\n        $$.init();\n        $$.afterInit(config);\n\n        // bind \"this\" to nested API\n        (function bindThis(fn, target, argThis) {\n            Object.keys(fn).forEach(function (key) {\n                target[key] = fn[key].bind(argThis);\n                if (Object.keys(fn[key]).length > 0) {\n                    bindThis(fn[key], target[key], argThis);\n                }\n            });\n        })(c3_chart_fn, this, this);\n    }\n\n    function ChartInternal(api) {\n        var $$ = this;\n        $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n        $$.api = api;\n        $$.config = $$.getDefaultConfig();\n        $$.data = {};\n        $$.cache = {};\n        $$.axes = {};\n    }\n\n    c3.generate = function (config) {\n        return new Chart(config);\n    };\n\n    c3.chart = {\n        fn: Chart.prototype,\n        internal: {\n            fn: ChartInternal.prototype,\n            axis: {\n                fn: Axis.prototype\n            }\n        }\n    };\n    c3_chart_fn = c3.chart.fn;\n    c3_chart_internal_fn = c3.chart.internal.fn;\n    c3_chart_internal_axis_fn = c3.chart.internal.axis.fn;\n\n    c3_chart_internal_fn.beforeInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.afterInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.init = function () {\n        var $$ = this, config = $$.config;\n\n        $$.initParams();\n\n        if (config.data_url) {\n            $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n        }\n        else if (config.data_json) {\n            $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n        }\n        else if (config.data_rows) {\n            $$.initWithData($$.convertRowsToData(config.data_rows));\n        }\n        else if (config.data_columns) {\n            $$.initWithData($$.convertColumnsToData(config.data_columns));\n        }\n        else {\n            throw Error('url or json or rows or columns is required.');\n        }\n    };\n\n    c3_chart_internal_fn.initParams = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n        $$.clipId = \"c3-\" + (+new Date()) + '-clip',\n        $$.clipIdForXAxis = $$.clipId + '-xaxis',\n        $$.clipIdForYAxis = $$.clipId + '-yaxis',\n        $$.clipIdForGrid = $$.clipId + '-grid',\n        $$.clipIdForSubchart = $$.clipId + '-subchart',\n        $$.clipPath = $$.getClipPath($$.clipId),\n        $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),\n        $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n        $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),\n        $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart),\n\n        $$.dragStart = null;\n        $$.dragging = false;\n        $$.flowing = false;\n        $$.cancelClick = false;\n        $$.mouseover = false;\n        $$.transiting = false;\n\n        $$.color = $$.generateColor();\n        $$.levelColor = $$.generateLevelColor();\n\n        $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n        $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n        $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([\n            [\".%L\", function (d) { return d.getMilliseconds(); }],\n            [\":%S\", function (d) { return d.getSeconds(); }],\n            [\"%I:%M\", function (d) { return d.getMinutes(); }],\n            [\"%I %p\", function (d) { return d.getHours(); }],\n            [\"%-m/%-d\", function (d) { return d.getDay() && d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getMonth(); }],\n            [\"%Y/%-m/%-d\", function () { return true; }]\n        ]);\n\n        $$.hiddenTargetIds = [];\n        $$.hiddenLegendIds = [];\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n\n        $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n        $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? \"top\" : \"bottom\") : (config.axis_y_inner ? \"right\" : \"left\");\n        $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? \"bottom\" : \"top\") : (config.axis_y2_inner ? \"left\" : \"right\");\n        $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n        $$.isLegendRight = config.legend_position === 'right';\n        $$.isLegendInset = config.legend_position === 'inset';\n        $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n        $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n        $$.legendStep = 0;\n        $$.legendItemWidth = 0;\n        $$.legendItemHeight = 0;\n\n        $$.currentMaxTickWidths = {\n            x: 0,\n            y: 0,\n            y2: 0\n        };\n\n        $$.rotated_padding_left = 30;\n        $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n        $$.rotated_padding_top = 5;\n\n        $$.withoutFadeIn = {};\n\n        $$.intervalForObserveInserted = undefined;\n\n        $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n    };\n\n    c3_chart_internal_fn.initChartElements = function () {\n        if (this.initBar) { this.initBar(); }\n        if (this.initLine) { this.initLine(); }\n        if (this.initArc) { this.initArc(); }\n        if (this.initGauge) { this.initGauge(); }\n        if (this.initText) { this.initText(); }\n    };\n\n    c3_chart_internal_fn.initWithData = function (data) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        var defs, main, binding = true;\n\n        $$.axis = new Axis($$);\n\n        if ($$.initPie) { $$.initPie(); }\n        if ($$.initBrush) { $$.initBrush(); }\n        if ($$.initZoom) { $$.initZoom(); }\n\n        if (!config.bindto) {\n            $$.selectChart = d3.selectAll([]);\n        }\n        else if (typeof config.bindto.node === 'function') {\n            $$.selectChart = config.bindto;\n        }\n        else {\n            $$.selectChart = d3.select(config.bindto);\n        }\n        if ($$.selectChart.empty()) {\n            $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n            $$.observeInserted($$.selectChart);\n            binding = false;\n        }\n        $$.selectChart.html(\"\").classed(\"c3\", true);\n\n        // Init data as targets\n        $$.data.xs = {};\n        $$.data.targets = $$.convertDataToTargets(data);\n\n        if (config.data_filter) {\n            $$.data.targets = $$.data.targets.filter(config.data_filter);\n        }\n\n        // Set targets to hide if needed\n        if (config.data_hide) {\n            $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n        }\n        if (config.legend_hide) {\n            $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n        }\n\n        // when gauge, hide legend // TODO: fix\n        if ($$.hasType('gauge')) {\n            config.legend_show = false;\n        }\n\n        // Init sizes and scales\n        $$.updateSizes();\n        $$.updateScales();\n\n        // Set domains for each scale\n        $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n        $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n        $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n        $$.subX.domain($$.x.domain());\n        $$.subY.domain($$.y.domain());\n        $$.subY2.domain($$.y2.domain());\n\n        // Save original x domain for zoom update\n        $$.orgXDomain = $$.x.domain();\n\n        // Set initialized scales to brush and zoom\n        if ($$.brush) { $$.brush.scale($$.subX); }\n        if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n\n        /*-- Basic Elements --*/\n\n        // Define svgs\n        $$.svg = $$.selectChart.append(\"svg\")\n            .style(\"overflow\", \"hidden\")\n            .on('mouseenter', function () { return config.onmouseover.call($$); })\n            .on('mouseleave', function () { return config.onmouseout.call($$); });\n\n        if ($$.config.svg_classname) {\n            $$.svg.attr('class', $$.config.svg_classname);\n        }\n\n        // Define defs\n        defs = $$.svg.append(\"defs\");\n        $$.clipChart = $$.appendClip(defs, $$.clipId);\n        $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n        $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n        $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n        $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n        $$.updateSvgSize();\n\n        // Define regions\n        main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n        if ($$.initSubchart) { $$.initSubchart(); }\n        if ($$.initTooltip) { $$.initTooltip(); }\n        if ($$.initLegend) { $$.initLegend(); }\n        if ($$.initTitle) { $$.initTitle(); }\n\n        /*-- Main Region --*/\n\n        // text when empty\n        main.append(\"text\")\n            .attr(\"class\", CLASS.text + ' ' + CLASS.empty)\n            .attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n            .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n        // Regions\n        $$.initRegion();\n\n        // Grids\n        $$.initGrid();\n\n        // Define g for chart area\n        main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr('class', CLASS.chart);\n\n        // Grid lines\n        if (config.grid_lines_front) { $$.initGridLines(); }\n\n        // Cover whole with rects for events\n        $$.initEventRect();\n\n        // Define g for chart\n        $$.initChartElements();\n\n        // if zoom privileged, insert rect to forefront\n        // TODO: is this needed?\n        main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions)\n            .attr('class', CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .style('opacity', 0)\n            .on(\"dblclick.zoom\", null);\n\n        // Set default extent if defined\n        if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); }\n\n        // Add Axis\n        $$.axis.init();\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Draw with targets\n        if (binding) {\n            $$.updateDimension();\n            $$.config.oninit.call($$);\n            $$.redraw({\n                withTransition: false,\n                withTransform: true,\n                withUpdateXDomain: true,\n                withUpdateOrgXDomain: true,\n                withTransitionForAxis: false\n            });\n        }\n\n        // Bind resize event\n        $$.bindResize();\n\n        // export element of the chart\n        $$.api.element = $$.selectChart.node();\n    };\n\n    c3_chart_internal_fn.smoothLines = function (el, type) {\n        var $$ = this;\n        if (type === 'grid') {\n            el.each(function () {\n                var g = $$.d3.select(this),\n                    x1 = g.attr('x1'),\n                    x2 = g.attr('x2'),\n                    y1 = g.attr('y1'),\n                    y2 = g.attr('y2');\n                g.attr({\n                    'x1': Math.ceil(x1),\n                    'x2': Math.ceil(x2),\n                    'y1': Math.ceil(y1),\n                    'y2': Math.ceil(y2)\n                });\n            });\n        }\n    };\n\n\n    c3_chart_internal_fn.updateSizes = function () {\n        var $$ = this, config = $$.config;\n        var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n            legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n            legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n            hasArc = $$.hasArcType(),\n            xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n            subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0;\n\n        $$.currentWidth = $$.getCurrentWidth();\n        $$.currentHeight = $$.getCurrentHeight();\n\n        // for main\n        $$.margin = config.axis_rotated ? {\n            top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n        } : {\n            top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n        };\n\n        // for subchart\n        $$.margin2 = config.axis_rotated ? {\n            top: $$.margin.top,\n            right: NaN,\n            bottom: 20 + legendHeightForBottom,\n            left: $$.rotated_padding_left\n        } : {\n            top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n            right: NaN,\n            bottom: xAxisHeight + legendHeightForBottom,\n            left: $$.margin.left\n        };\n\n        // for legend\n        $$.margin3 = {\n            top: 0,\n            right: NaN,\n            bottom: 0,\n            left: 0\n        };\n        if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); }\n\n        $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n        $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n        if ($$.width < 0) { $$.width = 0; }\n        if ($$.height < 0) { $$.height = 0; }\n\n        $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n        $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n        if ($$.width2 < 0) { $$.width2 = 0; }\n        if ($$.height2 < 0) { $$.height2 = 0; }\n\n        // for arc\n        $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n        $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n        if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n            $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n        }\n        if ($$.updateRadius) { $$.updateRadius(); }\n\n        if ($$.isLegendRight && hasArc) {\n            $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n        }\n    };\n\n    c3_chart_internal_fn.updateTargets = function (targets) {\n        var $$ = this;\n\n        /*-- Main --*/\n\n        //-- Text --//\n        $$.updateTargetsForText(targets);\n\n        //-- Bar --//\n        $$.updateTargetsForBar(targets);\n\n        //-- Line --//\n        $$.updateTargetsForLine(targets);\n\n        //-- Arc --//\n        if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); }\n\n        /*-- Sub --*/\n\n        if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); }\n\n        // Fade-in each chart\n        $$.showTargets();\n    };\n    c3_chart_internal_fn.showTargets = function () {\n        var $$ = this;\n        $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); })\n          .transition().duration($$.config.transition_duration)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.redraw = function (options, transitions) {\n        var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;\n        var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);\n        var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis,\n            withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend,\n            withEventRect, withDimension, withUpdateXAxis;\n        var hideAxis = $$.hasArcType();\n        var drawArea, drawBar, drawLine, xForText, yForText;\n        var duration, durationForExit, durationForAxis;\n        var waitForDraw, flow;\n        var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;\n        var xv = $$.xv.bind($$), cx, cy;\n\n        options = options || {};\n        withY = getOption(options, \"withY\", true);\n        withSubchart = getOption(options, \"withSubchart\", true);\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransform = getOption(options, \"withTransform\", false);\n        withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n        withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n        withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n        withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n        withLegend = getOption(options, \"withLegend\", false);\n        withEventRect = getOption(options, \"withEventRect\", true);\n        withDimension = getOption(options, \"withDimension\", true);\n        withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n        withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n        duration = withTransition ? config.transition_duration : 0;\n        durationForExit = withTransitionForExit ? duration : 0;\n        durationForAxis = withTransitionForAxis ? duration : 0;\n\n        transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n        // update legend and transform each g\n        if (withLegend && config.legend_show) {\n            $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n        } else if (withDimension) {\n            // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n            // no need to update axis in it because they will be updated in redraw()\n            $$.updateDimension(true);\n        }\n\n        // MEMO: needed for grids calculation\n        if ($$.isCategorized() && targetsToShow.length === 0) {\n            $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n        }\n\n        if (targetsToShow.length) {\n            $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n            if (!config.axis_x_tick_values) {\n                tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n            }\n        } else {\n            $$.xAxis.tickValues([]);\n            $$.subXAxis.tickValues([]);\n        }\n\n        if (config.zoom_rescale && !options.flow) {\n            xDomainForZoom = $$.x.orgDomain();\n        }\n\n        $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n        $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n        if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n            $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n        }\n        if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n            $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n        }\n\n        // axes\n        $$.axis.redraw(transitions, hideAxis);\n\n        // Update axis label\n        $$.axis.updateLabels(withTransition);\n\n        // show/hide if manual culling needed\n        if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n            if (config.axis_x_tick_culling && tickValues) {\n                for (i = 1; i < tickValues.length; i++) {\n                    if (tickValues.length / i < config.axis_x_tick_culling_max) {\n                        intervalForCulling = i;\n                        break;\n                    }\n                }\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n                    var index = tickValues.indexOf(e);\n                    if (index >= 0) {\n                        d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n                    }\n                });\n            } else {\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n            }\n        }\n\n        // setup drawer - MEMO: these must be called after axis updated\n        drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n        drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n        drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n        xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n        yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n        // Update sub domain\n        if (withY) {\n            $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n            $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n        }\n\n        // xgrid focus\n        $$.updateXgridFocus();\n\n        // Data empty label positioning and text.\n        main.select(\"text.\" + CLASS.text + '.' + CLASS.empty)\n            .attr(\"x\", $$.width / 2)\n            .attr(\"y\", $$.height / 2)\n            .text(config.data_empty_label_text)\n          .transition()\n            .style('opacity', targetsToShow.length ? 0 : 1);\n\n        // grid\n        $$.updateGrid(duration);\n\n        // rect for regions\n        $$.updateRegion(duration);\n\n        // bars\n        $$.updateBar(durationForExit);\n\n        // lines, areas and cricles\n        $$.updateLine(durationForExit);\n        $$.updateArea(durationForExit);\n        $$.updateCircle();\n\n        // text\n        if ($$.hasDataLabel()) {\n            $$.updateText(durationForExit);\n        }\n\n        // title\n        if ($$.redrawTitle) { $$.redrawTitle(); }\n\n        // arc\n        if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); }\n\n        // subchart\n        if ($$.redrawSubchart) {\n            $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n        }\n\n        // circles for select\n        main.selectAll('.' + CLASS.selectedCircles)\n            .filter($$.isBarType.bind($$))\n            .selectAll('circle')\n            .remove();\n\n        // event rects will redrawn when flow called\n        if (config.interaction_enabled && !options.flow && withEventRect) {\n            $$.redrawEventRect();\n            if ($$.updateZoom) { $$.updateZoom(); }\n        }\n\n        // update circleY based on updated parameters\n        $$.updateCircleY();\n\n        // generate circle x/y functions depending on updated params\n        cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n        cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n        if (options.flow) {\n            flow = $$.generateFlow({\n                targets: targetsToShow,\n                flow: options.flow,\n                duration: options.flow.duration,\n                drawBar: drawBar,\n                drawLine: drawLine,\n                drawArea: drawArea,\n                cx: cx,\n                cy: cy,\n                xv: xv,\n                xForText: xForText,\n                yForText: yForText\n            });\n        }\n\n        if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938.\n            // transition should be derived from one transition\n            d3.transition().duration(duration).each(function () {\n                var transitionsToWait = [];\n\n                // redraw and gather transitions\n                [\n                    $$.redrawBar(drawBar, true),\n                    $$.redrawLine(drawLine, true),\n                    $$.redrawArea(drawArea, true),\n                    $$.redrawCircle(cx, cy, true),\n                    $$.redrawText(xForText, yForText, options.flow, true),\n                    $$.redrawRegion(true),\n                    $$.redrawGrid(true),\n                ].forEach(function (transitions) {\n                    transitions.forEach(function (transition) {\n                        transitionsToWait.push(transition);\n                    });\n                });\n\n                // Wait for end of transitions to call flow and onrendered callback\n                waitForDraw = $$.generateWait();\n                transitionsToWait.forEach(function (t) {\n                    waitForDraw.add(t);\n                });\n            })\n            .call(waitForDraw, function () {\n                if (flow) {\n                    flow();\n                }\n                if (config.onrendered) {\n                    config.onrendered.call($$);\n                }\n            });\n        }\n        else {\n            $$.redrawBar(drawBar);\n            $$.redrawLine(drawLine);\n            $$.redrawArea(drawArea);\n            $$.redrawCircle(cx, cy);\n            $$.redrawText(xForText, yForText, options.flow);\n            $$.redrawRegion();\n            $$.redrawGrid();\n            if (config.onrendered) {\n                config.onrendered.call($$);\n            }\n        }\n\n        // update fadein condition\n        $$.mapToIds($$.data.targets).forEach(function (id) {\n            $$.withoutFadeIn[id] = true;\n        });\n    };\n\n    c3_chart_internal_fn.updateAndRedraw = function (options) {\n        var $$ = this, config = $$.config, transitions;\n        options = options || {};\n        // same with redraw\n        options.withTransition = getOption(options, \"withTransition\", true);\n        options.withTransform = getOption(options, \"withTransform\", false);\n        options.withLegend = getOption(options, \"withLegend\", false);\n        // NOT same with redraw\n        options.withUpdateXDomain = true;\n        options.withUpdateOrgXDomain = true;\n        options.withTransitionForExit = false;\n        options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n        // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n        $$.updateSizes();\n        // MEMO: called in updateLegend in redraw if withLegend\n        if (!(options.withLegend && config.legend_show)) {\n            transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n            // Update scales\n            $$.updateScales();\n            $$.updateSvgSize();\n            // Update g positions\n            $$.transformAll(options.withTransitionForTransform, transitions);\n        }\n        // Draw with new sizes & scales\n        $$.redraw(options, transitions);\n    };\n    c3_chart_internal_fn.redrawWithoutRescale = function () {\n        this.redraw({\n            withY: false,\n            withSubchart: false,\n            withEventRect: false,\n            withTransitionForAxis: false\n        });\n    };\n\n    c3_chart_internal_fn.isTimeSeries = function () {\n        return this.config.axis_x_type === 'timeseries';\n    };\n    c3_chart_internal_fn.isCategorized = function () {\n        return this.config.axis_x_type.indexOf('categor') >= 0;\n    };\n    c3_chart_internal_fn.isCustomX = function () {\n        var $$ = this, config = $$.config;\n        return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n    };\n\n    c3_chart_internal_fn.isTimeSeriesY = function () {\n        return this.config.axis_y_type === 'timeseries';\n    };\n\n    c3_chart_internal_fn.getTranslate = function (target) {\n        var $$ = this, config = $$.config, x, y;\n        if (target === 'main') {\n            x = asHalfPixel($$.margin.left);\n            y = asHalfPixel($$.margin.top);\n        } else if (target === 'context') {\n            x = asHalfPixel($$.margin2.left);\n            y = asHalfPixel($$.margin2.top);\n        } else if (target === 'legend') {\n            x = $$.margin3.left;\n            y = $$.margin3.top;\n        } else if (target === 'x') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height;\n        } else if (target === 'y') {\n            x = 0;\n            y = config.axis_rotated ? $$.height : 0;\n        } else if (target === 'y2') {\n            x = config.axis_rotated ? 0 : $$.width;\n            y = config.axis_rotated ? 1 : 0;\n        } else if (target === 'subx') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height2;\n        } else if (target === 'arc') {\n            x = $$.arcWidth / 2;\n            y = $$.arcHeight / 2;\n        }\n        return \"translate(\" + x + \",\" + y + \")\";\n    };\n    c3_chart_internal_fn.initialOpacity = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n    };\n    c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n    };\n    c3_chart_internal_fn.opacityForCircle = function (d) {\n        var opacity = this.config.point_show ? 1 : 0;\n        return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;\n    };\n    c3_chart_internal_fn.opacityForText = function () {\n        return this.hasDataLabel() ? 1 : 0;\n    };\n    c3_chart_internal_fn.xx = function (d) {\n        return d ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.xv = function (d) {\n        var $$ = this, value = d.value;\n        if ($$.isTimeSeries()) {\n            value = $$.parseDate(d.value);\n        }\n        else if ($$.isCategorized() && typeof d.value === 'string') {\n            value = $$.config.axis_x_categories.indexOf(d.value);\n        }\n        return Math.ceil($$.x(value));\n    };\n    c3_chart_internal_fn.yv = function (d) {\n        var $$ = this,\n            yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n        return Math.ceil(yScale(d.value));\n    };\n    c3_chart_internal_fn.subxx = function (d) {\n        return d ? this.subX(d.x) : null;\n    };\n\n    c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n        var $$ = this,\n            xAxis, yAxis, y2Axis;\n        if (transitions && transitions.axisX) {\n            xAxis = transitions.axisX;\n        } else {\n            xAxis  = $$.main.select('.' + CLASS.axisX);\n            if (withTransition) { xAxis = xAxis.transition(); }\n        }\n        if (transitions && transitions.axisY) {\n            yAxis = transitions.axisY;\n        } else {\n            yAxis = $$.main.select('.' + CLASS.axisY);\n            if (withTransition) { yAxis = yAxis.transition(); }\n        }\n        if (transitions && transitions.axisY2) {\n            y2Axis = transitions.axisY2;\n        } else {\n            y2Axis = $$.main.select('.' + CLASS.axisY2);\n            if (withTransition) { y2Axis = y2Axis.transition(); }\n        }\n        (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n        xAxis.attr(\"transform\", $$.getTranslate('x'));\n        yAxis.attr(\"transform\", $$.getTranslate('y'));\n        y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n        $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n    };\n    c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n        var $$ = this;\n        $$.transformMain(withTransition, transitions);\n        if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); }\n        if ($$.legend) { $$.transformLegend(withTransition); }\n    };\n\n    c3_chart_internal_fn.updateSvgSize = function () {\n        var $$ = this,\n            brush = $$.svg.select(\".c3-brush .background\");\n        $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n        $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        $$.svg.select('#' + $$.clipIdForXAxis).select('rect')\n            .attr('x', $$.getXAxisClipX.bind($$))\n            .attr('y', $$.getXAxisClipY.bind($$))\n            .attr('width', $$.getXAxisClipWidth.bind($$))\n            .attr('height', $$.getXAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForYAxis).select('rect')\n            .attr('x', $$.getYAxisClipX.bind($$))\n            .attr('y', $$.getYAxisClipY.bind($$))\n            .attr('width', $$.getYAxisClipWidth.bind($$))\n            .attr('height', $$.getYAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForSubchart).select('rect')\n            .attr('width', $$.width)\n            .attr('height', brush.size() ? brush.attr('height') : 0);\n        $$.svg.select('.' + CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n        $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n    };\n\n\n    c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n        var $$ = this;\n        if (!withoutAxis) {\n            if ($$.config.axis_rotated) {\n                $$.axes.x.call($$.xAxis);\n                $$.axes.subx.call($$.subXAxis);\n            } else {\n                $$.axes.y.call($$.yAxis);\n                $$.axes.y2.call($$.y2Axis);\n            }\n        }\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        $$.transformAll(false);\n    };\n\n    c3_chart_internal_fn.observeInserted = function (selection) {\n        var $$ = this, observer;\n        if (typeof MutationObserver === 'undefined') {\n            window.console.error(\"MutationObserver not defined.\");\n            return;\n        }\n        observer= new MutationObserver(function (mutations) {\n            mutations.forEach(function (mutation) {\n                if (mutation.type === 'childList' && mutation.previousSibling) {\n                    observer.disconnect();\n                    // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n                    $$.intervalForObserveInserted = window.setInterval(function () {\n                        // parentNode will NOT be null when completed\n                        if (selection.node().parentNode) {\n                            window.clearInterval($$.intervalForObserveInserted);\n                            $$.updateDimension();\n                            if ($$.brush) { $$.brush.update(); }\n                            $$.config.oninit.call($$);\n                            $$.redraw({\n                                withTransform: true,\n                                withUpdateXDomain: true,\n                                withUpdateOrgXDomain: true,\n                                withTransition: false,\n                                withTransitionForTransform: false,\n                                withLegend: true\n                            });\n                            selection.transition().style('opacity', 1);\n                        }\n                    }, 10);\n                }\n            });\n        });\n        observer.observe(selection.node(), {attributes: true, childList: true, characterData: true});\n    };\n\n    c3_chart_internal_fn.bindResize = function () {\n        var $$ = this, config = $$.config;\n\n        $$.resizeFunction = $$.generateResize();\n\n        $$.resizeFunction.add(function () {\n            config.onresize.call($$);\n        });\n        if (config.resize_auto) {\n            $$.resizeFunction.add(function () {\n                if ($$.resizeTimeout !== undefined) {\n                    window.clearTimeout($$.resizeTimeout);\n                }\n                $$.resizeTimeout = window.setTimeout(function () {\n                    delete $$.resizeTimeout;\n                    $$.api.flush();\n                }, 100);\n            });\n        }\n        $$.resizeFunction.add(function () {\n            config.onresized.call($$);\n        });\n\n        if (window.attachEvent) {\n            window.attachEvent('onresize', $$.resizeFunction);\n        } else if (window.addEventListener) {\n            window.addEventListener('resize', $$.resizeFunction, false);\n        } else {\n            // fallback to this, if this is a very old browser\n            var wrapper = window.onresize;\n            if (!wrapper) {\n                // create a wrapper that will call all charts\n                wrapper = $$.generateResize();\n            } else if (!wrapper.add || !wrapper.remove) {\n                // there is already a handler registered, make sure we call it too\n                wrapper = $$.generateResize();\n                wrapper.add(window.onresize);\n            }\n            // add this graph to the wrapper, we will be removed if the user calls destroy\n            wrapper.add($$.resizeFunction);\n            window.onresize = wrapper;\n        }\n    };\n\n    c3_chart_internal_fn.generateResize = function () {\n        var resizeFunctions = [];\n        function callResizeFunctions() {\n            resizeFunctions.forEach(function (f) {\n                f();\n            });\n        }\n        callResizeFunctions.add = function (f) {\n            resizeFunctions.push(f);\n        };\n        callResizeFunctions.remove = function (f) {\n            for (var i = 0; i < resizeFunctions.length; i++) {\n                if (resizeFunctions[i] === f) {\n                    resizeFunctions.splice(i, 1);\n                    break;\n                }\n            }\n        };\n        return callResizeFunctions;\n    };\n\n    c3_chart_internal_fn.endall = function (transition, callback) {\n        var n = 0;\n        transition\n            .each(function () { ++n; })\n            .each(\"end\", function () {\n                if (!--n) { callback.apply(this, arguments); }\n            });\n    };\n    c3_chart_internal_fn.generateWait = function () {\n        var transitionsToWait = [],\n            f = function (transition, callback) {\n                var timer = setInterval(function () {\n                    var done = 0;\n                    transitionsToWait.forEach(function (t) {\n                        if (t.empty()) {\n                            done += 1;\n                            return;\n                        }\n                        try {\n                            t.transition();\n                        } catch (e) {\n                            done += 1;\n                        }\n                    });\n                    if (done === transitionsToWait.length) {\n                        clearInterval(timer);\n                        if (callback) { callback(); }\n                    }\n                }, 10);\n            };\n        f.add = function (transition) {\n            transitionsToWait.push(transition);\n        };\n        return f;\n    };\n\n    c3_chart_internal_fn.parseDate = function (date) {\n        var $$ = this, parsedDate;\n        if (date instanceof Date) {\n            parsedDate = date;\n        } else if (typeof date === 'string') {\n            parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n        } else if (typeof date === 'number' && !isNaN(date)) {\n            parsedDate = new Date(+date);\n        }\n        if (!parsedDate || isNaN(+parsedDate)) {\n            window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n        }\n        return parsedDate;\n    };\n\n    c3_chart_internal_fn.isTabVisible = function () {\n        var hidden;\n        if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support\n            hidden = \"hidden\";\n        } else if (typeof document.mozHidden !== \"undefined\") {\n            hidden = \"mozHidden\";\n        } else if (typeof document.msHidden !== \"undefined\") {\n            hidden = \"msHidden\";\n        } else if (typeof document.webkitHidden !== \"undefined\") {\n            hidden = \"webkitHidden\";\n        }\n\n        return document[hidden] ? false : true;\n    };\n\n    c3_chart_internal_fn.getDefaultConfig = function () {\n        var config = {\n            bindto: '#chart',\n            svg_classname: undefined,\n            size_width: undefined,\n            size_height: undefined,\n            padding_left: undefined,\n            padding_right: undefined,\n            padding_top: undefined,\n            padding_bottom: undefined,\n            resize_auto: true,\n            zoom_enabled: false,\n            zoom_extent: undefined,\n            zoom_privileged: false,\n            zoom_rescale: false,\n            zoom_onzoom: function () {},\n            zoom_onzoomstart: function () {},\n            zoom_onzoomend: function () {},\n            zoom_x_min: undefined,\n            zoom_x_max: undefined,\n            interaction_brighten: true,\n            interaction_enabled: true,\n            onmouseover: function () {},\n            onmouseout: function () {},\n            onresize: function () {},\n            onresized: function () {},\n            oninit: function () {},\n            onrendered: function () {},\n            transition_duration: 350,\n            data_x: undefined,\n            data_xs: {},\n            data_xFormat: '%Y-%m-%d',\n            data_xLocaltime: true,\n            data_xSort: true,\n            data_idConverter: function (id) { return id; },\n            data_names: {},\n            data_classes: {},\n            data_groups: [],\n            data_axes: {},\n            data_type: undefined,\n            data_types: {},\n            data_labels: {},\n            data_order: 'desc',\n            data_regions: {},\n            data_color: undefined,\n            data_colors: {},\n            data_hide: false,\n            data_filter: undefined,\n            data_selection_enabled: false,\n            data_selection_grouped: false,\n            data_selection_isselectable: function () { return true; },\n            data_selection_multiple: true,\n            data_selection_draggable: false,\n            data_onclick: function () {},\n            data_onmouseover: function () {},\n            data_onmouseout: function () {},\n            data_onselected: function () {},\n            data_onunselected: function () {},\n            data_url: undefined,\n            data_headers: undefined,\n            data_json: undefined,\n            data_rows: undefined,\n            data_columns: undefined,\n            data_mimeType: undefined,\n            data_keys: undefined,\n            // configuration for no plot-able data supplied.\n            data_empty_label_text: \"\",\n            // subchart\n            subchart_show: false,\n            subchart_size_height: 60,\n            subchart_axis_x_show: true,\n            subchart_onbrush: function () {},\n            // color\n            color_pattern: [],\n            color_threshold: {},\n            // legend\n            legend_show: true,\n            legend_hide: false,\n            legend_position: 'bottom',\n            legend_inset_anchor: 'top-left',\n            legend_inset_x: 10,\n            legend_inset_y: 0,\n            legend_inset_step: undefined,\n            legend_item_onclick: undefined,\n            legend_item_onmouseover: undefined,\n            legend_item_onmouseout: undefined,\n            legend_equally: false,\n            legend_padding: 0,\n            legend_item_tile_width: 10,\n            legend_item_tile_height: 10,\n            // axis\n            axis_rotated: false,\n            axis_x_show: true,\n            axis_x_type: 'indexed',\n            axis_x_localtime: true,\n            axis_x_categories: [],\n            axis_x_tick_centered: false,\n            axis_x_tick_format: undefined,\n            axis_x_tick_culling: {},\n            axis_x_tick_culling_max: 10,\n            axis_x_tick_count: undefined,\n            axis_x_tick_fit: true,\n            axis_x_tick_values: null,\n            axis_x_tick_rotate: 0,\n            axis_x_tick_outer: true,\n            axis_x_tick_multiline: true,\n            axis_x_tick_width: null,\n            axis_x_max: undefined,\n            axis_x_min: undefined,\n            axis_x_padding: {},\n            axis_x_height: undefined,\n            axis_x_extent: undefined,\n            axis_x_label: {},\n            axis_y_show: true,\n            axis_y_type: undefined,\n            axis_y_max: undefined,\n            axis_y_min: undefined,\n            axis_y_inverted: false,\n            axis_y_center: undefined,\n            axis_y_inner: undefined,\n            axis_y_label: {},\n            axis_y_tick_format: undefined,\n            axis_y_tick_outer: true,\n            axis_y_tick_values: null,        \n            axis_y_tick_rotate: 0,\n            axis_y_tick_count: undefined,\n            axis_y_tick_time_value: undefined,\n            axis_y_tick_time_interval: undefined,\n            axis_y_padding: {},\n            axis_y_default: undefined,\n            axis_y2_show: false,\n            axis_y2_max: undefined,\n            axis_y2_min: undefined,\n            axis_y2_inverted: false,\n            axis_y2_center: undefined,\n            axis_y2_inner: undefined,\n            axis_y2_label: {},\n            axis_y2_tick_format: undefined,\n            axis_y2_tick_outer: true,\n            axis_y2_tick_values: null,\n            axis_y2_tick_count: undefined,\n            axis_y2_padding: {},\n            axis_y2_default: undefined,\n            // grid\n            grid_x_show: false,\n            grid_x_type: 'tick',\n            grid_x_lines: [],\n            grid_y_show: false,\n            // not used\n            // grid_y_type: 'tick',\n            grid_y_lines: [],\n            grid_y_ticks: 10,\n            grid_focus_show: true,\n            grid_lines_front: true,\n            // point - point of each data\n            point_show: true,\n            point_r: 2.5,\n            point_sensitivity: 10,\n            point_focus_expand_enabled: true,\n            point_focus_expand_r: undefined,\n            point_select_r: undefined,\n            // line\n            line_connectNull: false,\n            line_step_type: 'step',\n            // bar\n            bar_width: undefined,\n            bar_width_ratio: 0.6,\n            bar_width_max: undefined,\n            bar_zerobased: true,\n            // area\n            area_zerobased: true,\n            area_above: false,\n            // pie\n            pie_label_show: true,\n            pie_label_format: undefined,\n            pie_label_threshold: 0.05,\n            pie_label_ratio: undefined,\n            pie_expand: {},\n            pie_expand_duration: 50,\n            // gauge\n            gauge_fullCircle: false,\n            gauge_label_show: true,\n            gauge_label_format: undefined,\n            gauge_min: 0,\n            gauge_max: 100,\n            gauge_startingAngle: -1 * Math.PI/2,\n            gauge_units: undefined,\n            gauge_width: undefined,\n            gauge_expand: {},\n            gauge_expand_duration: 50,\n            // donut\n            donut_label_show: true,\n            donut_label_format: undefined,\n            donut_label_threshold: 0.05,\n            donut_label_ratio: undefined,\n            donut_width: undefined,\n            donut_title: \"\",\n            donut_expand: {},\n            donut_expand_duration: 50,\n            // spline\n            spline_interpolation_type: 'cardinal',\n            // region - region to change style\n            regions: [],\n            // tooltip - show when mouseover on each data\n            tooltip_show: true,\n            tooltip_grouped: true,\n            tooltip_format_title: undefined,\n            tooltip_format_name: undefined,\n            tooltip_format_value: undefined,\n            tooltip_position: undefined,\n            tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {\n                return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n            },\n            tooltip_init_show: false,\n            tooltip_init_x: 0,\n            tooltip_init_position: {top: '0px', left: '50px'},\n            tooltip_onshow: function () {},\n            tooltip_onhide: function () {},\n            // title\n            title_text: undefined,\n            title_padding: {\n                top: 0,\n                right: 0,\n                bottom: 0,\n                left: 0\n            },\n            title_position: 'top-center',\n        };\n\n        Object.keys(this.additionalConfig).forEach(function (key) {\n            config[key] = this.additionalConfig[key];\n        }, this);\n\n        return config;\n    };\n    c3_chart_internal_fn.additionalConfig = {};\n\n    c3_chart_internal_fn.loadConfig = function (config) {\n        var this_config = this.config, target, keys, read;\n        function find() {\n            var key = keys.shift();\n    //        console.log(\"key =>\", key, \", target =>\", target);\n            if (key && target && typeof target === 'object' && key in target) {\n                target = target[key];\n                return find();\n            }\n            else if (!key) {\n                return target;\n            }\n            else {\n                return undefined;\n            }\n        }\n        Object.keys(this_config).forEach(function (key) {\n            target = config;\n            keys = key.split('_');\n            read = find();\n    //        console.log(\"CONFIG : \", key, read);\n            if (isDefined(read)) {\n                this_config[key] = read;\n            }\n        });\n    };\n\n    c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n        return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n    };\n    c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n        var $$ = this,\n            scale = $$.getScale(min, max, $$.isTimeSeries()),\n            _scale = domain ? scale.domain(domain) : scale, key;\n        // Define customized scale if categorized axis\n        if ($$.isCategorized()) {\n            offset = offset || function () { return 0; };\n            scale = function (d, raw) {\n                var v = _scale(d) + offset(d);\n                return raw ? v : Math.ceil(v);\n            };\n        } else {\n            scale = function (d, raw) {\n                var v = _scale(d);\n                return raw ? v : Math.ceil(v);\n            };\n        }\n        // define functions\n        for (key in _scale) {\n            scale[key] = _scale[key];\n        }\n        scale.orgDomain = function () {\n            return _scale.domain();\n        };\n        // define custom domain() for categorized axis\n        if ($$.isCategorized()) {\n            scale.domain = function (domain) {\n                if (!arguments.length) {\n                    domain = this.orgDomain();\n                    return [domain[0], domain[1] + 1];\n                }\n                _scale.domain(domain);\n                return scale;\n            };\n        }\n        return scale;\n    };\n    c3_chart_internal_fn.getY = function (min, max, domain) {\n        var scale = this.getScale(min, max, this.isTimeSeriesY());\n        if (domain) { scale.domain(domain); }\n        return scale;\n    };\n    c3_chart_internal_fn.getYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n    };\n    c3_chart_internal_fn.getSubYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n    };\n    c3_chart_internal_fn.updateScales = function () {\n        var $$ = this, config = $$.config,\n            forInit = !$$.x;\n        // update edges\n        $$.xMin = config.axis_rotated ? 1 : 0;\n        $$.xMax = config.axis_rotated ? $$.height : $$.width;\n        $$.yMin = config.axis_rotated ? 0 : $$.height;\n        $$.yMax = config.axis_rotated ? $$.width : 1;\n        $$.subXMin = $$.xMin;\n        $$.subXMax = $$.xMax;\n        $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n        $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n        // update scales\n        $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); });\n        $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n        $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n        $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); });\n        $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n        $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n        // update axes\n        $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n        $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n        $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n        $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n        $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n        $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n        // Set initialized scales to brush and zoom\n        if (!forInit) {\n            if ($$.brush) { $$.brush.scale($$.subX); }\n            if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n        }\n        // update for arc\n        if ($$.updateArc) { $$.updateArc(); }\n    };\n\n    c3_chart_internal_fn.getYDomainMin = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasNegativeValue;\n        if (config.data_groups.length > 0) {\n            hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider negative values\n                if (hasNegativeValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v < 0 ? v : 0;\n                    });\n                }\n                // Compute min\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomainMax = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasPositiveValue;\n        if (config.data_groups.length > 0) {\n            hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider positive values\n                if (hasPositiveValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v > 0 ? v : 0;\n                    });\n                }\n                // Compute max\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n        var $$ = this, config = $$.config,\n            targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }),\n            yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n            yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n            yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n            yDomainMin = $$.getYDomainMin(yTargets),\n            yDomainMax = $$.getYDomainMax(yTargets),\n            domain, domainLength, padding, padding_top, padding_bottom,\n            center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n            yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative,\n            isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased),\n            isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n            showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n            showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n        // MEMO: avoid inverting domain unexpectedly\n        yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin;\n        yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax;\n\n        if (yTargets.length === 0) { // use current domain if target of axisId is none\n            return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n        }\n        if (isNaN(yDomainMin)) { // set minimum to zero when not number\n            yDomainMin = 0;\n        }\n        if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin\n            yDomainMax = yDomainMin;\n        }\n        if (yDomainMin === yDomainMax) {\n            yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n        }\n        isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n        isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n        // Cancel zerobased if axis_*_min / axis_*_max specified\n        if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {\n            isZeroBased = false;\n        }\n\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { yDomainMin = 0; }\n            if (isAllNegative) { yDomainMax = 0; }\n        }\n\n        domainLength = Math.abs(yDomainMax - yDomainMin);\n        padding = padding_top = padding_bottom = domainLength * 0.1;\n\n        if (typeof center !== 'undefined') {\n            yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n            yDomainMax = center + yDomainAbs;\n            yDomainMin = center - yDomainAbs;\n        }\n        // add padding for data label\n        if (showHorizontalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n            diff = diffDomain($$.y.range());\n            ratio = [lengths[0] / diff, lengths[1] / diff];\n            padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n            padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n        } else if (showVerticalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n            padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n            padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n        }\n        if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n        }\n        if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n        }\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { padding_bottom = yDomainMin; }\n            if (isAllNegative) { padding_top = -yDomainMax; }\n        }\n        domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n        return isInverted ? domain.reverse() : domain;\n    };\n    c3_chart_internal_fn.getXDomainMin = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_min) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) :\n        $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainMax = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_max) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) :\n        $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainPadding = function (domain) {\n        var $$ = this, config = $$.config,\n            diff = domain[1] - domain[0],\n            maxDataCount, padding, paddingLeft, paddingRight;\n        if ($$.isCategorized()) {\n            padding = 0;\n        } else if ($$.hasType('bar')) {\n            maxDataCount = $$.getMaxDataCount();\n            padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5;\n        } else {\n            padding = diff * 0.01;\n        }\n        if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) {\n            paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n            paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n        } else if (typeof config.axis_x_padding === 'number') {\n            paddingLeft = paddingRight = config.axis_x_padding;\n        } else {\n            paddingLeft = paddingRight = padding;\n        }\n        return {left: paddingLeft, right: paddingRight};\n    };\n    c3_chart_internal_fn.getXDomain = function (targets) {\n        var $$ = this,\n            xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n            firstX = xDomain[0], lastX = xDomain[1],\n            padding = $$.getXDomainPadding(xDomain),\n            min = 0, max = 0;\n        // show center of x domain if min and max are the same\n        if ((firstX - lastX) === 0 && !$$.isCategorized()) {\n            if ($$.isTimeSeries()) {\n                firstX = new Date(firstX.getTime() * 0.5);\n                lastX = new Date(lastX.getTime() * 1.5);\n            } else {\n                firstX = firstX === 0 ? 1 : (firstX * 0.5);\n                lastX = lastX === 0 ? -1 : (lastX * 1.5);\n            }\n        }\n        if (firstX || firstX === 0) {\n            min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n        }\n        if (lastX || lastX === 0) {\n            max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n        }\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n        var $$ = this, config = $$.config;\n\n        if (withUpdateOrgXDomain) {\n            $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n            $$.orgXDomain = $$.x.domain();\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n            $$.subX.domain($$.x.domain());\n            if ($$.brush) { $$.brush.scale($$.subX); }\n        }\n        if (withUpdateXDomain) {\n            $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent());\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n        }\n\n        // Trim domain when too big by zoom mousemove event\n        if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); }\n\n        return $$.x.domain();\n    };\n    c3_chart_internal_fn.trimXDomain = function (domain) {\n        var zoomDomain = this.getZoomDomain(),\n            min = zoomDomain[0], max = zoomDomain[1];\n        if (domain[0] <= min) {\n            domain[1] = +domain[1] + (min - domain[0]);\n            domain[0] = min;\n        }\n        if (max <= domain[1]) {\n            domain[0] = +domain[0] - (domain[1] - max);\n            domain[1] = max;\n        }\n        return domain;\n    };\n\n    c3_chart_internal_fn.isX = function (key) {\n        var $$ = this, config = $$.config;\n        return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key));\n    };\n    c3_chart_internal_fn.isNotX = function (key) {\n        return !this.isX(key);\n    };\n    c3_chart_internal_fn.getXKey = function (id) {\n        var $$ = this, config = $$.config;\n        return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n    };\n    c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n        var $$ = this,\n            xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n        ids.forEach(function (id) {\n            if ($$.getXKey(id) === key) {\n                xValues = $$.data.xs[id];\n            }\n        });\n        return xValues;\n    };\n    c3_chart_internal_fn.getIndexByX = function (x) {\n        var $$ = this,\n            data = $$.filterByX($$.data.targets, x);\n        return data.length ? data[0].index : null;\n    };\n    c3_chart_internal_fn.getXValue = function (id, i) {\n        var $$ = this;\n        return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n    };\n    c3_chart_internal_fn.getOtherTargetXs = function () {\n        var $$ = this,\n            idsForX = Object.keys($$.data.xs);\n        return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n    };\n    c3_chart_internal_fn.getOtherTargetX = function (index) {\n        var xs = this.getOtherTargetXs();\n        return xs && index < xs.length ? xs[index] : null;\n    };\n    c3_chart_internal_fn.addXs = function (xs) {\n        var $$ = this;\n        Object.keys(xs).forEach(function (id) {\n            $$.config.data_xs[id] = xs[id];\n        });\n    };\n    c3_chart_internal_fn.hasMultipleX = function (xs) {\n        return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1;\n    };\n    c3_chart_internal_fn.isMultipleX = function () {\n        return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n    };\n    c3_chart_internal_fn.addName = function (data) {\n        var $$ = this, name;\n        if (data) {\n            name = $$.config.data_names[data.id];\n            data.name = name !== undefined ? name : data.id;\n        }\n        return data;\n    };\n    c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n        var valueOnIndex = values.filter(function (v) { return v.index === index; });\n        return valueOnIndex.length ? valueOnIndex[0] : null;\n    };\n    c3_chart_internal_fn.updateTargetX = function (targets, x) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            t.values.forEach(function (v, i) {\n                v.x = $$.generateTargetX(x[i], t.id, i);\n            });\n            $$.data.xs[t.id] = x;\n        });\n    };\n    c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            if (xs[t.id]) {\n                $$.updateTargetX([t], xs[t.id]);\n            }\n        });\n    };\n    c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n        var $$ = this, x;\n        if ($$.isTimeSeries()) {\n            x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n        }\n        else if ($$.isCustomX() && !$$.isCategorized()) {\n            x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n        }\n        else {\n            x = index;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.cloneTarget = function (target) {\n        return {\n            id : target.id,\n            id_org : target.id_org,\n            values : target.values.map(function (d) {\n                return {x: d.x, value: d.value, id: d.id};\n            })\n        };\n    };\n    c3_chart_internal_fn.updateXs = function () {\n        var $$ = this;\n        if ($$.data.targets.length) {\n            $$.xs = [];\n            $$.data.targets[0].values.forEach(function (v) {\n                $$.xs[v.index] = v.x;\n            });\n        }\n    };\n    c3_chart_internal_fn.getPrevX = function (i) {\n        var x = this.xs[i - 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getNextX = function (i) {\n        var x = this.xs[i + 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getMaxDataCount = function () {\n        var $$ = this;\n        return $$.d3.max($$.data.targets, function (t) { return t.values.length; });\n    };\n    c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n        var length = targets.length, max = 0, maxTarget;\n        if (length > 1) {\n            targets.forEach(function (t) {\n                if (t.values.length > max) {\n                    maxTarget = t;\n                    max = t.values.length;\n                }\n            });\n        } else {\n            maxTarget = length ? targets[0] : null;\n        }\n        return maxTarget;\n    };\n    c3_chart_internal_fn.getEdgeX = function (targets) {\n        var $$ = this;\n        return !targets.length ? [0, 0] : [\n            $$.d3.min(targets, function (t) { return t.values[0].x; }),\n            $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; })\n        ];\n    };\n    c3_chart_internal_fn.mapToIds = function (targets) {\n        return targets.map(function (d) { return d.id; });\n    };\n    c3_chart_internal_fn.mapToTargetIds = function (ids) {\n        var $$ = this;\n        return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n    };\n    c3_chart_internal_fn.hasTarget = function (targets, id) {\n        var ids = this.mapToIds(targets), i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] === id) {\n                return true;\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.isTargetToShow = function (targetId) {\n        return this.hiddenTargetIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.isLegendToShow = function (targetId) {\n        return this.hiddenLegendIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n        var $$ = this;\n        return targets.filter(function (t) { return $$.isTargetToShow(t.id); });\n    };\n    c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n        var $$ = this;\n        var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values();\n        xs = $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; });\n        return xs.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; });\n    };\n    c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n        var ys = {};\n        targets.forEach(function (t) {\n            ys[t.id] = [];\n            t.values.forEach(function (v) {\n                ys[t.id].push(v.value);\n            });\n        });\n        return ys;\n    };\n    c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n        var ids = Object.keys(targets), i, j, values;\n        for (i = 0; i < ids.length; i++) {\n            values = targets[ids[i]].values;\n            for (j = 0; j < values.length; j++) {\n                if (checker(values[j].value)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v < 0; });\n    };\n    c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v > 0; });\n    };\n    c3_chart_internal_fn.isOrderDesc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc';\n    };\n    c3_chart_internal_fn.isOrderAsc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc';\n    };\n    c3_chart_internal_fn.orderTargets = function (targets) {\n        var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();\n        if (orderAsc || orderDesc) {\n            targets.sort(function (t1, t2) {\n                var reducer = function (p, c) { return p + Math.abs(c.value); };\n                var t1Sum = t1.values.reduce(reducer, 0),\n                    t2Sum = t2.values.reduce(reducer, 0);\n                return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n            });\n        } else if (isFunction(config.data_order)) {\n            targets.sort(config.data_order);\n        } // TODO: accept name array for order\n        return targets;\n    };\n    c3_chart_internal_fn.filterByX = function (targets, x) {\n        return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; });\n    };\n    c3_chart_internal_fn.filterRemoveNull = function (data) {\n        return data.filter(function (d) { return isValue(d.value); });\n    };\n    c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n        return targets.map(function (t) {\n            return {\n                id: t.id,\n                id_org: t.id_org,\n                values: t.values.filter(function (v) {\n                    return xDomain[0] <= v.x && v.x <= xDomain[1];\n                })\n            };\n        });\n    };\n    c3_chart_internal_fn.hasDataLabel = function () {\n        var config = this.config;\n        if (typeof config.data_labels === 'boolean' && config.data_labels) {\n            return true;\n        } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) {\n            return true;\n        }\n        return false;\n    };\n    c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n        var $$ = this,\n            lengths = [0, 0], paddingCoef = 1.3;\n        $$.selectChart.select('svg').selectAll('.dummy')\n            .data([min, max])\n            .enter().append('text')\n            .text(function (d) { return $$.dataLabelFormat(d.id)(d); })\n            .each(function (d, i) {\n                lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n            })\n            .remove();\n        return lengths;\n    };\n    c3_chart_internal_fn.isNoneArc = function (d) {\n        return this.hasTarget(this.data.targets, d.id);\n    },\n    c3_chart_internal_fn.isArc = function (d) {\n        return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n    };\n    c3_chart_internal_fn.findSameXOfValues = function (values, index) {\n        var i, targetX = values[index].x, sames = [];\n        for (i = index - 1; i >= 0; i--) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        for (i = index; i < values.length; i++) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        return sames;\n    };\n\n    c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n        var $$ = this, candidates;\n\n        // map to array of closest points of each target\n        candidates = targets.map(function (target) {\n            return $$.findClosest(target.values, pos);\n        });\n\n        // decide closest point and return\n        return $$.findClosest(candidates, pos);\n    };\n    c3_chart_internal_fn.findClosest = function (values, pos) {\n        var $$ = this, minDist = $$.config.point_sensitivity, closest;\n\n        // find mouseovering bar\n        values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {\n            var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n            if (!closest && $$.isWithinBar(shape)) {\n                closest = v;\n            }\n        });\n\n        // find closest point from non-bar\n        values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) {\n            var d = $$.dist(v, pos);\n            if (d < minDist) {\n                minDist = d;\n                closest = v;\n            }\n        });\n\n        return closest;\n    };\n    c3_chart_internal_fn.dist = function (data, pos) {\n        var $$ = this, config = $$.config,\n            xIndex = config.axis_rotated ? 1 : 0,\n            yIndex = config.axis_rotated ? 0 : 1,\n            y = $$.circleY(data, data.index),\n            x = $$.x(data.x);\n        return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n    };\n    c3_chart_internal_fn.convertValuesToStep = function (values) {\n        var converted = [].concat(values), i;\n\n        if (!this.isCategorized()) {\n            return values;\n        }\n\n        for (i = values.length + 1; 0 < i; i--) {\n            converted[i] = converted[i - 1];\n        }\n\n        converted[0] = {\n            x: converted[0].x - 1,\n            value: converted[0].value,\n            id: converted[0].id\n        };\n        converted[values.length + 1] = {\n            x: converted[values.length].x + 1,\n            value: converted[values.length].value,\n            id: converted[values.length].id\n        };\n\n        return converted;\n    };\n    c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n        var $$ = this, config = $$.config, current = config['data_' + name];\n        if (typeof attrs === 'undefined') { return current; }\n        Object.keys(attrs).forEach(function (id) {\n            current[id] = attrs[id];\n        });\n        $$.redraw({withLegend: true});\n        return current;\n    };\n\n    c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n        var $$ = this, type = mimeType ? mimeType : 'csv';\n        var req = $$.d3.xhr(url);\n        if (headers) {\n            Object.keys(headers).forEach(function (header) {\n                req.header(header, headers[header]);\n            });\n        }\n        req.get(function (error, data) {\n            var d;\n            if (!data) {\n                throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n            }\n            if (type === 'json') {\n                d = $$.convertJsonToData(JSON.parse(data.response), keys);\n            } else if (type === 'tsv') {\n                d = $$.convertTsvToData(data.response);\n            } else {\n                d = $$.convertCsvToData(data.response);\n            }\n            done.call($$, d);\n        });\n    };\n    c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n        var rows = parser.parseRows(xsv), d;\n        if (rows.length === 1) {\n            d = [{}];\n            rows[0].forEach(function (id) {\n                d[0][id] = null;\n            });\n        } else {\n            d = parser.parse(xsv);\n        }\n        return d;\n    };\n    c3_chart_internal_fn.convertCsvToData = function (csv) {\n        return this.convertXsvToData(csv, this.d3.csv);\n    };\n    c3_chart_internal_fn.convertTsvToData = function (tsv) {\n        return this.convertXsvToData(tsv, this.d3.tsv);\n    };\n    c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n        var $$ = this,\n            new_rows = [], targetKeys, data;\n        if (keys) { // when keys specified, json would be an array that includes objects\n            if (keys.x) {\n                targetKeys = keys.value.concat(keys.x);\n                $$.config.data_x = keys.x;\n            } else {\n                targetKeys = keys.value;\n            }\n            new_rows.push(targetKeys);\n            json.forEach(function (o) {\n                var new_row = [];\n                targetKeys.forEach(function (key) {\n                    // convert undefined to null because undefined data will be removed in convertDataToTargets()\n                    var v = $$.findValueInJson(o, key);\n                    if (isUndefined(v)) {\n                        v = null;\n                    }\n                    new_row.push(v);\n                });\n                new_rows.push(new_row);\n            });\n            data = $$.convertRowsToData(new_rows);\n        } else {\n            Object.keys(json).forEach(function (key) {\n                new_rows.push([key].concat(json[key]));\n            });\n            data = $$.convertColumnsToData(new_rows);\n        }\n        return data;\n    };\n    c3_chart_internal_fn.findValueInJson = function (object, path) {\n        path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n        path = path.replace(/^\\./, '');           // strip a leading dot\n        var pathArray = path.split('.');\n        for (var i = 0; i < pathArray.length; ++i) {\n            var k = pathArray[i];\n            if (k in object) {\n                object = object[k];\n            } else {\n                return;\n            }\n        }\n        return object;\n    };\n    c3_chart_internal_fn.convertRowsToData = function (rows) {\n        var keys = rows[0], new_row = {}, new_rows = [], i, j;\n        for (i = 1; i < rows.length; i++) {\n            new_row = {};\n            for (j = 0; j < rows[i].length; j++) {\n                if (isUndefined(rows[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_row[keys[j]] = rows[i][j];\n            }\n            new_rows.push(new_row);\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertColumnsToData = function (columns) {\n        var new_rows = [], i, j, key;\n        for (i = 0; i < columns.length; i++) {\n            key = columns[i][0];\n            for (j = 1; j < columns[i].length; j++) {\n                if (isUndefined(new_rows[j - 1])) {\n                    new_rows[j - 1] = {};\n                }\n                if (isUndefined(columns[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_rows[j - 1][key] = columns[i][j];\n            }\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n        var $$ = this, config = $$.config,\n            ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n            xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n            targets;\n\n        // save x for update data by load when custom x and c3.x API\n        ids.forEach(function (id) {\n            var xKey = $$.getXKey(id);\n\n            if ($$.isCustomX() || $$.isTimeSeries()) {\n                // if included in input data\n                if (xs.indexOf(xKey) >= 0) {\n                    $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(\n                        data.map(function (d) { return d[xKey]; })\n                            .filter(isValue)\n                            .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); })\n                    );\n                }\n                // if not included in input data, find from preloaded data of other id's x\n                else if (config.data_x) {\n                    $$.data.xs[id] = $$.getOtherTargetXs();\n                }\n                // if not included in input data, find from preloaded data\n                else if (notEmpty(config.data_xs)) {\n                    $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n                }\n                // MEMO: if no x included, use same x of current will be used\n            } else {\n                $$.data.xs[id] = data.map(function (d, i) { return i; });\n            }\n        });\n\n\n        // check x is defined\n        ids.forEach(function (id) {\n            if (!$$.data.xs[id]) {\n                throw new Error('x is not defined for id = \"' + id + '\".');\n            }\n        });\n\n        // convert to target\n        targets = ids.map(function (id, index) {\n            var convertedId = config.data_idConverter(id);\n            return {\n                id: convertedId,\n                id_org: id,\n                values: data.map(function (d, i) {\n                    var xKey = $$.getXKey(id), rawX = d[xKey],\n                        value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null, x;\n                    // use x as categories if custom x and categorized\n                    if ($$.isCustomX() && $$.isCategorized() && index === 0 && !isUndefined(rawX)) {\n                        if (index === 0 && i === 0) {\n                            config.axis_x_categories = [];\n                        }\n                        x = config.axis_x_categories.indexOf(rawX);\n                        if (x === -1) {\n                            x = config.axis_x_categories.length;\n                            config.axis_x_categories.push(rawX);\n                        }\n                    } else {\n                        x  = $$.generateTargetX(rawX, id, i);\n                    }\n                    // mark as x = undefined if value is undefined and filter to remove after mapped\n                    if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n                        x = undefined;\n                    }\n                    return {x: x, value: value, id: convertedId};\n                }).filter(function (v) { return isDefined(v.x); })\n            };\n        });\n\n        // finish targets\n        targets.forEach(function (t) {\n            var i;\n            // sort values by its x\n            if (config.data_xSort) {\n                t.values = t.values.sort(function (v1, v2) {\n                    var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n                        x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n                    return x1 - x2;\n                });\n            }\n            // indexing each value\n            i = 0;\n            t.values.forEach(function (v) {\n                v.index = i++;\n            });\n            // this needs to be sorted because its index and value.index is identical\n            $$.data.xs[t.id].sort(function (v1, v2) {\n                return v1 - v2;\n            });\n        });\n\n        // cache information about values\n        $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n        $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n        // set target types\n        if (config.data_type) {\n            $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type);\n        }\n\n        // cache as original id keyed\n        targets.forEach(function (d) {\n            $$.addCache(d.id_org, d);\n        });\n\n        return targets;\n    };\n\n    c3_chart_internal_fn.load = function (targets, args) {\n        var $$ = this;\n        if (targets) {\n            // filter loading targets if needed\n            if (args.filter) {\n                targets = targets.filter(args.filter);\n            }\n            // set type if args.types || args.type specified\n            if (args.type || args.types) {\n                targets.forEach(function (t) {\n                    var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n                    $$.setTargetType(t.id, type);\n                });\n            }\n            // Update/Add data\n            $$.data.targets.forEach(function (d) {\n                for (var i = 0; i < targets.length; i++) {\n                    if (d.id === targets[i].id) {\n                        d.values = targets[i].values;\n                        targets.splice(i, 1);\n                        break;\n                    }\n                }\n            });\n            $$.data.targets = $$.data.targets.concat(targets); // add remained\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n\n        if (args.done) { args.done(); }\n    };\n    c3_chart_internal_fn.loadFromArgs = function (args) {\n        var $$ = this;\n        if (args.data) {\n            $$.load($$.convertDataToTargets(args.data), args);\n        }\n        else if (args.url) {\n            $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n                $$.load($$.convertDataToTargets(data), args);\n            });\n        }\n        else if (args.json) {\n            $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n        }\n        else if (args.rows) {\n            $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n        }\n        else if (args.columns) {\n            $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n        }\n        else {\n            $$.load(null, args);\n        }\n    };\n    c3_chart_internal_fn.unload = function (targetIds, done) {\n        var $$ = this;\n        if (!done) {\n            done = function () {};\n        }\n        // filter existing target\n        targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); });\n        // If no target, call done and return\n        if (!targetIds || targetIds.length === 0) {\n            done();\n            return;\n        }\n        $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); }))\n            .transition()\n            .style('opacity', 0)\n            .remove()\n            .call($$.endall, done);\n        targetIds.forEach(function (id) {\n            // Reset fadein for future load\n            $$.withoutFadeIn[id] = false;\n            // Remove target's elements\n            if ($$.legend) {\n                $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n            }\n            // Remove target\n            $$.data.targets = $$.data.targets.filter(function (t) {\n                return t.id !== id;\n            });\n        });\n    };\n\n    c3_chart_internal_fn.categoryName = function (i) {\n        var config = this.config;\n        return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n    };\n\n    c3_chart_internal_fn.initEventRect = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.eventRects)\n            .style('fill-opacity', 0);\n    };\n    c3_chart_internal_fn.redrawEventRect = function () {\n        var $$ = this, config = $$.config,\n            eventRectUpdate, maxDataCountTarget,\n            isMultipleX = $$.isMultipleX();\n\n        // rects for mouseover\n        var eventRects = $$.main.select('.' + CLASS.eventRects)\n                .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null)\n                .classed(CLASS.eventRectsMultiple, isMultipleX)\n                .classed(CLASS.eventRectsSingle, !isMultipleX);\n\n        // clear old rects\n        eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n        // open as public variable\n        $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n        if (isMultipleX) {\n            eventRectUpdate = $$.eventRect.data([0]);\n            // enter : only one rect will be added\n            $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit : not needed because always only one rect exists\n        }\n        else {\n            // Set data and update $$.eventRect\n            maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n            eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n            $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n            eventRectUpdate = $$.eventRect.data(function (d) { return d; });\n            // enter\n            $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit\n            eventRectUpdate.exit().remove();\n        }\n    };\n    c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n        var $$ = this, config = $$.config,\n            x, y, w, h, rectW, rectX;\n\n        // set update selection if null\n        eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; });\n\n        if ($$.isMultipleX()) {\n            // TODO: rotated not supported yet\n            x = 0;\n            y = 0;\n            w = $$.width;\n            h = $$.height;\n        }\n        else {\n            if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n                // update index for x that is used by prevX and nextX\n                $$.updateXs();\n\n                rectW = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index);\n\n                    // if there this is a single data point make the eventRect full width (or height)\n                    if (prevX === null && nextX === null) {\n                        return config.axis_rotated ? $$.height : $$.width;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n                    if (nextX === null) { nextX = $$.x.domain()[1]; }\n\n                    return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n                };\n                rectX = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index),\n                        thisX = $$.data.xs[d.id][d.index];\n\n                    // if there this is a single data point position the eventRect at 0\n                    if (prevX === null && nextX === null) {\n                        return 0;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n\n                    return ($$.x(thisX) + $$.x(prevX)) / 2;\n                };\n            } else {\n                rectW = $$.getEventRectWidth();\n                rectX = function (d) {\n                    return $$.x(d.x) - (rectW / 2);\n                };\n            }\n            x = config.axis_rotated ? 0 : rectX;\n            y = config.axis_rotated ? rectX : 0;\n            w = config.axis_rotated ? $$.width : rectW;\n            h = config.axis_rotated ? rectW : $$.height;\n        }\n\n        eventRectUpdate\n            .attr('class', $$.classEvent.bind($$))\n            .attr(\"x\", x)\n            .attr(\"y\", y)\n            .attr(\"width\", w)\n            .attr(\"height\", h);\n    };\n    c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        eventRectEnter.append(\"rect\")\n            .attr(\"class\", $$.classEvent.bind($$))\n            .style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null)\n            .on('mouseover', function (d) {\n                var index = d.index;\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                // Expand shapes for selection\n                if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); }\n                $$.expandBars(index, null, true);\n\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseover.call($$.api, d);\n                });\n            })\n            .on('mouseout', function (d) {\n                var index = d.index;\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                $$.hideXGridFocus();\n                $$.hideTooltip();\n                // Undo expanded shapes\n                $$.unexpandCircles();\n                $$.unexpandBars();\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseout.call($$.api, d);\n                });\n            })\n            .on('mousemove', function (d) {\n                var selectedData, index = d.index,\n                    eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n\n                // Show tooltip\n                selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n                    return $$.addName($$.getValueOnIndex(t.values, index));\n                });\n\n                if (config.tooltip_grouped) {\n                    $$.showTooltip(selectedData, this);\n                    $$.showXGridFocus(selectedData);\n                }\n\n                if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n                    return;\n                }\n\n                $$.main.selectAll('.' + CLASS.shape + '-' + index)\n                    .each(function () {\n                        d3.select(this).classed(CLASS.EXPANDED, true);\n                        if (config.data_selection_enabled) {\n                            eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.hideXGridFocus();\n                            $$.hideTooltip();\n                            if (!config.data_selection_grouped) {\n                                $$.unexpandCircles(index);\n                                $$.unexpandBars(index);\n                            }\n                        }\n                    })\n                    .filter(function (d) {\n                        return $$.isWithinShape(this, d);\n                    })\n                    .each(function (d) {\n                        if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n                            eventRect.style('cursor', 'pointer');\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.showTooltip([d], this);\n                            $$.showXGridFocus([d]);\n                            if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); }\n                            $$.expandBars(index, d.id, true);\n                        }\n                    });\n            })\n            .on('click', function (d) {\n                var index = d.index;\n                if ($$.hasArcType() || !$$.toggleShape) { return; }\n                if ($$.cancelClick) {\n                    $$.cancelClick = false;\n                    return;\n                }\n                if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n                        $$.toggleShape(this, d, index);\n                        $$.config.data_onclick.call($$.api, d, this);\n                    }\n                });\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n\n    c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        function mouseout() {\n            $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n            $$.hideXGridFocus();\n            $$.hideTooltip();\n            $$.unexpandCircles();\n            $$.unexpandBars();\n        }\n\n        eventRectEnter.append('rect')\n            .attr('x', 0)\n            .attr('y', 0)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .attr('class', CLASS.eventRect)\n            .on('mouseout', function () {\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                mouseout();\n            })\n            .on('mousemove', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest, sameXData, selectedData;\n\n                if ($$.dragging) { return; } // do nothing when dragging\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n                if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n                    config.data_onmouseout.call($$.api, $$.mouseover);\n                    $$.mouseover = undefined;\n                }\n\n                if (! closest) {\n                    mouseout();\n                    return;\n                }\n\n                if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n                    sameXData = [closest];\n                } else {\n                    sameXData = $$.filterByX(targetsToShow, closest.x);\n                }\n\n                // show tooltip when cursor is close to some point\n                selectedData = sameXData.map(function (d) {\n                    return $$.addName(d);\n                });\n                $$.showTooltip(selectedData, this);\n\n                // expand points\n                if (config.point_focus_expand_enabled) {\n                    $$.expandCircles(closest.index, closest.id, true);\n                }\n                $$.expandBars(closest.index, closest.id, true);\n\n                // Show xgrid focus line\n                $$.showXGridFocus(selectedData);\n\n                // Show cursor as pointer if point is close to mouse position\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n                    if (!$$.mouseover) {\n                        config.data_onmouseover.call($$.api, closest);\n                        $$.mouseover = closest;\n                    }\n                }\n            })\n            .on('click', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest;\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n                if (! closest) { return; }\n                // select if selection enabled\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n                        if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n                            $$.toggleShape(this, closest, closest.index);\n                            $$.config.data_onclick.call($$.api, closest, this);\n                        }\n                    });\n                }\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n    c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n        var $$ = this,\n            selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n            eventRect = $$.main.select(selector).node(),\n            box = eventRect.getBoundingClientRect(),\n            x = box.left + (mouse ? mouse[0] : 0),\n            y = box.top + (mouse ? mouse[1] : 0),\n            event = document.createEvent(\"MouseEvents\");\n\n        event.initMouseEvent(type, true, true, window, 0, x, y, x, y,\n                             false, false, false, false, 0, null);\n        eventRect.dispatchEvent(event);\n    };\n\n    c3_chart_internal_fn.getCurrentWidth = function () {\n        var $$ = this, config = $$.config;\n        return config.size_width ? config.size_width : $$.getParentWidth();\n    };\n    c3_chart_internal_fn.getCurrentHeight = function () {\n        var $$ = this, config = $$.config,\n            h = config.size_height ? config.size_height : $$.getParentHeight();\n        return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1); \n    };\n    c3_chart_internal_fn.getCurrentPaddingTop = function () {\n        var $$ = this,\n            config = $$.config,\n            padding = isValue(config.padding_top) ? config.padding_top : 0;\n        if ($$.title && $$.title.node()) {\n            padding += $$.getTitlePadding();\n        }\n        return padding;\n    };\n    c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n        var config = this.config;\n        return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n    };\n    c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config;\n        if (isValue(config.padding_left)) {\n            return config.padding_left;\n        } else if (config.axis_rotated) {\n            return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n        } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated\n            return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n        }\n    };\n    c3_chart_internal_fn.getCurrentPaddingRight = function () {\n        var $$ = this, config = $$.config,\n            defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n        if (isValue(config.padding_right)) {\n            return config.padding_right + 1; // 1 is needed not to hide tick line\n        } else if (config.axis_rotated) {\n            return defaultPadding + legendWidthOnRight;\n        } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated\n            return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n        }\n    };\n\n    c3_chart_internal_fn.getParentRectValue = function (key) {\n        var parent = this.selectChart.node(), v;\n        while (parent && parent.tagName !== 'BODY') {\n            try {\n                v = parent.getBoundingClientRect()[key];\n            } catch(e) {\n                if (key === 'width') {\n                    // In IE in certain cases getBoundingClientRect\n                    // will cause an \"unspecified error\"\n                    v = parent.offsetWidth;\n                }\n            }\n            if (v) {\n                break;\n            }\n            parent = parent.parentNode;\n        }\n        return v;\n    };\n    c3_chart_internal_fn.getParentWidth = function () {\n        return this.getParentRectValue('width');\n    };\n    c3_chart_internal_fn.getParentHeight = function () {\n        var h = this.selectChart.style('height');\n        return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n    };\n\n\n    c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config,\n            hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner),\n            leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n            leftAxis = $$.main.select('.' + leftAxisClass).node(),\n            svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0},\n            chartRect = $$.selectChart.node().getBoundingClientRect(),\n            hasArc = $$.hasArcType(),\n            svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n        return svgLeft > 0 ? svgLeft : 0;\n    };\n\n\n    c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n        var $$ = this, position = $$.axis.getLabelPositionById(id);\n        return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n    };\n    c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n        var $$ = this, config = $$.config, h = 30;\n        if (axisId === 'x' && !config.axis_x_show) { return 8; }\n        if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n        if (axisId === 'y' && !config.axis_y_show) { \n            return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; \n        }\n        if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n        // Calculate x axis height when tick rotated\n        if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n        }\n        // Calculate y axis height when tick rotated\n        if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n        }\n        return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n    };\n\n    c3_chart_internal_fn.getEventRectWidth = function () {\n        return Math.max(0, this.xAxis.tickInterval());\n    };\n\n    c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n        var $$ = this, config = $$.config,\n            indices = {}, i = 0, j, k;\n        $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n            for (j = 0; j < config.data_groups.length; j++) {\n                if (config.data_groups[j].indexOf(d.id) < 0) { continue; }\n                for (k = 0; k < config.data_groups[j].length; k++) {\n                    if (config.data_groups[j][k] in indices) {\n                        indices[d.id] = indices[config.data_groups[j][k]];\n                        break;\n                    }\n                }\n            }\n            if (isUndefined(indices[d.id])) { indices[d.id] = i++; }\n        });\n        indices.__max__ = i - 1;\n        return indices;\n    };\n    c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n        var $$ = this, scale = isSub ? $$.subX : $$.x;\n        return function (d) {\n            var index = d.id in indices ? indices[d.id] : 0;\n            return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n        };\n    };\n    c3_chart_internal_fn.getShapeY = function (isSub) {\n        var $$ = this;\n        return function (d) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n            return scale(d.value);\n        };\n    };\n    c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n        var $$ = this,\n            targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n            targetIds = targets.map(function (t) { return t.id; });\n        return function (d, i) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n                y0 = scale(0), offset = y0;\n            targets.forEach(function (t) {\n                var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n                if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; }\n                if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n                    // check if the x values line up\n                    if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {  // \"+\" for timeseries\n                        // if not, try to find the value that does line up\n                        i = -1;\n                        values.forEach(function (v, j) {\n                            if (v.x === d.x) {\n                                i = j;\n                            }\n                        });\n                    }\n                    if (i in values && values[i].value * d.value >= 0) {\n                        offset += scale(values[i].value) - y0;\n                    }\n                }\n            });\n            return offset;\n        };\n    };\n    c3_chart_internal_fn.isWithinShape = function (that, d) {\n        var $$ = this,\n            shape = $$.d3.select(that), isWithin;\n        if (!$$.isTargetToShow(d.id)) {\n            isWithin = false;\n        }\n        else if (that.nodeName === 'circle') {\n            isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n        }\n        else if (that.nodeName === 'path') {\n            isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n        }\n        return isWithin;\n    };\n\n\n    c3_chart_internal_fn.getInterpolate = function (d) {\n        var $$ = this,\n            interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n        return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n    };\n\n    c3_chart_internal_fn.initLine = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n    };\n    c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n        var $$ = this, config = $$.config,\n            mainLineUpdate, mainLineEnter,\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$),\n            classCircles = $$.classCircles.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n            .data(targets)\n            .attr('class', function (d) { return classChartLine(d) + classFocus(d); });\n        mainLineEnter = mainLineUpdate.enter().append('g')\n            .attr('class', classChartLine)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Lines for each data\n        mainLineEnter.append('g')\n            .attr(\"class\", classLines);\n        // Areas\n        mainLineEnter.append('g')\n            .attr('class', classAreas);\n        // Circles for each data point on lines\n        mainLineEnter.append('g')\n            .attr(\"class\", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); });\n        mainLineEnter.append('g')\n            .attr(\"class\", classCircles)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n        // Update date for selected circles\n        targets.forEach(function (t) {\n            $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n                d.value = t.values[d.index].value;\n            });\n        });\n        // MEMO: can not keep same color...\n        //mainLineUpdate.exit().remove();\n    };\n    c3_chart_internal_fn.updateLine = function (durationForExit) {\n        var $$ = this;\n        $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.mainLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style(\"stroke\", $$.color);\n        $$.mainLine\n            .style(\"opacity\", $$.initialOpacity.bind($$))\n            .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; })\n            .attr('transform', null);\n        $$.mainLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n        return [\n            (withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine)\n                .attr(\"d\", drawLine)\n                .style(\"stroke\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n        var $$ = this, config = $$.config,\n            line = $$.d3.svg.line(),\n            getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            yValue = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n        if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); }\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;\n            if ($$.isLineType(d)) {\n                if (config.data_regions[d.id]) {\n                    path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n                } else {\n                    if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                    path = line.interpolate($$.getInterpolate(d))(values);\n                }\n            } else {\n                if (values[0]) {\n                    x0 = x(values[0].x);\n                    y0 = y(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            lineTargetsNum = lineIndices.__max__ + 1,\n            x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = lineOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the line position\n            return [\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)]  // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n        var $$ = this, config = $$.config,\n            prev = -1, i, j,\n            s = \"M\", sWithRegion,\n            xp, yp, dx, dy, dd, diff, diffx2,\n            xOffset = $$.isCategorized() ? 0.5 : 0,\n            xValue, yValue,\n            regions = [];\n\n        function isWithinRegions(x, regions) {\n            var i;\n            for (i = 0; i < regions.length; i++) {\n                if (regions[i].start < x && x <= regions[i].end) { return true; }\n            }\n            return false;\n        }\n\n        // Check start/end of regions\n        if (isDefined(_regions)) {\n            for (i = 0; i < _regions.length; i++) {\n                regions[i] = {};\n                if (isUndefined(_regions[i].start)) {\n                    regions[i].start = d[0].x;\n                } else {\n                    regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n                }\n                if (isUndefined(_regions[i].end)) {\n                    regions[i].end = d[d.length - 1].x;\n                } else {\n                    regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n                }\n            }\n        }\n\n        // Set scales\n        xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); };\n        yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); };\n\n        // Define svg generator function for region\n        function generateM(points) {\n            return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n        }\n        if ($$.isTimeSeries()) {\n            sWithRegion = function (d0, d1, j, diff) {\n                var x0 = d0.x.getTime(), x_diff = d1.x - d0.x,\n                    xv0 = new Date(x0 + x_diff * j),\n                    xv1 = new Date(x0 + x_diff * (j + diff)),\n                    points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n                } else {\n                    points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        } else {\n            sWithRegion = function (d0, d1, j, diff) {\n                var points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n                } else {\n                    points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        }\n\n        // Generate\n        for (i = 0; i < d.length; i++) {\n\n            // Draw as normal\n            if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) {\n                s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n            }\n            // Draw with region // TODO: Fix for horizotal charts\n            else {\n                xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n                yp = $$.getScale(d[i - 1].value, d[i].value);\n\n                dx = x(d[i].x) - x(d[i - 1].x);\n                dy = y(d[i].value) - y(d[i - 1].value);\n                dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n                diff = 2 / dd;\n                diffx2 = diff * 2;\n\n                for (j = diff; j <= 1; j += diffx2) {\n                    s += sWithRegion(d[i - 1], d[i], j, diff);\n                }\n            }\n            prev = d[i].x;\n        }\n\n        return s;\n    };\n\n\n    c3_chart_internal_fn.updateArea = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.mainArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.mainArea\n            .style(\"opacity\", $$.orgAreaOpacity);\n        $$.mainArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n        return [\n            (withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea)\n                .attr(\"d\", drawArea)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", this.orgAreaOpacity)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n        var $$ = this, config = $$.config, area = $$.d3.svg.area(),\n            getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            value0 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n            },\n            value1 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n        if (!config.line_connectNull) {\n            area = area.defined(function (d) { return d.value !== null; });\n        }\n\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x0 = 0, y0 = 0, path;\n            if ($$.isAreaType(d)) {\n                if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                path = area.interpolate($$.getInterpolate(d))(values);\n            } else {\n                if (values[0]) {\n                    x0 = $$.x(values[0].x);\n                    y0 = $$.getYScale(d.id)(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.getAreaBaseValue = function () {\n        return 0;\n    };\n    c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            areaTargetsNum = areaIndices.__max__ + 1,\n            x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = areaOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the area position\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, offset] // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.updateCircle = function () {\n        var $$ = this;\n        $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle)\n            .data($$.lineOrScatterData.bind($$));\n        $$.mainCircle.enter().append(\"circle\")\n            .attr(\"class\", $$.classCircle.bind($$))\n            .attr(\"r\", $$.pointR.bind($$))\n            .style(\"fill\", $$.color);\n        $$.mainCircle\n            .style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n        $$.mainCircle.exit().remove();\n    };\n    c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n        var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n        return [\n            (withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle)\n                .style('opacity', this.opacityForCircle.bind(this))\n                .style(\"fill\", this.color)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy),\n            (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy)\n        ];\n    };\n    c3_chart_internal_fn.circleX = function (d) {\n        return d.x || d.x === 0 ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.updateCircleY = function () {\n        var $$ = this, lineIndices, getPoints;\n        if ($$.config.data_groups.length > 0) {\n            lineIndices = $$.getShapeIndices($$.isLineType),\n            getPoints = $$.generateGetLinePoints(lineIndices);\n            $$.circleY = function (d, i) {\n                return getPoints(d, i)[0][1];\n            };\n        } else {\n            $$.circleY = function (d) {\n                return $$.getYScale(d.id)(d.value);\n            };\n        }\n    };\n    c3_chart_internal_fn.getCircles = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n        var $$ = this,\n            r = $$.pointExpandedR.bind($$);\n        if (reset) { $$.unexpandCircles(); }\n        $$.getCircles(i, id)\n            .classed(CLASS.EXPANDED, true)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.unexpandCircles = function (i) {\n        var $$ = this,\n            r = $$.pointR.bind($$);\n        $$.getCircles(i)\n            .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); })\n            .classed(CLASS.EXPANDED, false)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.pointR = function (d) {\n        var $$ = this, config = $$.config;\n        return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r);\n    };\n    c3_chart_internal_fn.pointExpandedR = function (d) {\n        var $$ = this, config = $$.config;\n        return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d);\n    };\n    c3_chart_internal_fn.pointSelectR = function (d) {\n        var $$ = this, config = $$.config;\n        return isFunction(config.point_select_r) ? config.point_select_r(d) : ((config.point_select_r) ? config.point_select_r : $$.pointR(d) * 4);\n    };\n    c3_chart_internal_fn.isWithinCircle = function (that, r) {\n        var d3 = this.d3,\n            mouse = d3.mouse(that), d3_this = d3.select(that),\n            cx = +d3_this.attr(\"cx\"), cy = +d3_this.attr(\"cy\");\n        return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n    };\n    c3_chart_internal_fn.isWithinStep = function (that, y) {\n        return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n    };\n\n    c3_chart_internal_fn.initBar = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n    };\n    c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n        var $$ = this, config = $$.config,\n            mainBarUpdate, mainBarEnter,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n            .data(targets)\n            .attr('class', function (d) { return classChartBar(d) + classFocus(d); });\n        mainBarEnter = mainBarUpdate.enter().append('g')\n            .attr('class', classChartBar)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Bars for each data\n        mainBarEnter.append('g')\n            .attr(\"class\", classBars)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n\n    };\n    c3_chart_internal_fn.updateBar = function (durationForExit) {\n        var $$ = this,\n            barData = $$.barData.bind($$),\n            classBar = $$.classBar.bind($$),\n            initialOpacity = $$.initialOpacity.bind($$),\n            color = function (d) { return $$.color(d.id); };\n        $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data(barData);\n        $$.mainBar.enter().append('path')\n            .attr(\"class\", classBar)\n            .style(\"stroke\", color)\n            .style(\"fill\", color);\n        $$.mainBar\n            .style(\"opacity\", initialOpacity);\n        $$.mainBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n        return [\n            (withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar)\n                .attr('d', drawBar)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n        var $$ = this, config = $$.config,\n            w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0;\n        return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n    };\n    c3_chart_internal_fn.getBars = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandBars = function (i, id, reset) {\n        var $$ = this;\n        if (reset) { $$.unexpandBars(); }\n        $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n    };\n    c3_chart_internal_fn.unexpandBars = function (i) {\n        var $$ = this;\n        $$.getBars(i).classed(CLASS.EXPANDED, false);\n    };\n    c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n        var $$ = this, config = $$.config,\n            getPoints = $$.generateGetBarPoints(barIndices, isSub);\n        return function (d, i) {\n            // 4 points that make a bar\n            var points = getPoints(d, i);\n\n            // switch points if axis is rotated, not applicable for sub chart\n            var indexX = config.axis_rotated ? 1 : 0;\n            var indexY = config.axis_rotated ? 0 : 1;\n\n            var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' +\n                    'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' +\n                    'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' +\n                    'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' +\n                    'z';\n\n            return path;\n        };\n    };\n    c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n        var $$ = this,\n            axis = isSub ? $$.subXAxis : $$.xAxis,\n            barTargetsNum = barIndices.__max__ + 1,\n            barW = $$.getBarW(axis, barTargetsNum),\n            barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n            barY = $$.getShapeY(!!isSub),\n            barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = barOffset(d, i) || y0, // offset is for stacked bar chart\n                posX = barX(d), posY = barY(d);\n            // fix posY not to overflow opposite quadrant\n            if ($$.config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 4 points that make a bar\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX + barW, posY - (y0 - offset)],\n                [posX + barW, offset]\n            ];\n        };\n    };\n    c3_chart_internal_fn.isWithinBar = function (that) {\n        var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(),\n            seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),\n            x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),\n            w = box.width, h = box.height, offset = 2,\n            sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset;\n        return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n    };\n\n    c3_chart_internal_fn.initText = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartTexts);\n        $$.mainText = $$.d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateTargetsForText = function (targets) {\n        var $$ = this, mainTextUpdate, mainTextEnter,\n            classChartText = $$.classChartText.bind($$),\n            classTexts = $$.classTexts.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText)\n            .data(targets)\n            .attr('class', function (d) { return classChartText(d) + classFocus(d); });\n        mainTextEnter = mainTextUpdate.enter().append('g')\n            .attr('class', classChartText)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        mainTextEnter.append('g')\n            .attr('class', classTexts);\n    };\n    c3_chart_internal_fn.updateText = function (durationForExit) {\n        var $$ = this, config = $$.config,\n            barOrLineData = $$.barOrLineData.bind($$),\n            classText = $$.classText.bind($$);\n        $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text)\n            .data(barOrLineData);\n        $$.mainText.enter().append('text')\n            .attr(\"class\", classText)\n            .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; })\n            .style(\"stroke\", 'none')\n            .style(\"fill\", function (d) { return $$.color(d); })\n            .style(\"fill-opacity\", 0);\n        $$.mainText\n            .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); });\n        $$.mainText.exit()\n            .transition().duration(durationForExit)\n            .style('fill-opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n        return [\n            (withTransition ? this.mainText.transition() : this.mainText)\n                .attr('x', xForText)\n                .attr('y', yForText)\n                .style(\"fill\", this.color)\n                .style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))\n        ];\n    };\n    c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n        var dummy = this.d3.select('body').append('div').classed('c3', true),\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            font = this.d3.select(element).style('font'),\n            rect;\n        svg.selectAll('.dummy')\n            .data([text])\n          .enter().append('text')\n            .classed(cls ? cls : \"\", true)\n            .style('font', font)\n            .text(text)\n          .each(function () { rect = this.getBoundingClientRect(); });\n        dummy.remove();\n        return rect;\n    };\n    c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n        var $$ = this,\n            getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n            getBarPoints = $$.generateGetBarPoints(barIndices, false),\n            getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n            getter = forX ? $$.getXForText : $$.getYForText;\n        return function (d, i) {\n            var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n            return getter.call($$, getPoints(d, i), d, this);\n        };\n    };\n    c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(), xPos, padding;\n        if ($$.config.axis_rotated) {\n            padding = $$.isBarType(d) ? 4 : 6;\n            xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n        } else {\n            xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null) {\n            if (xPos > $$.width) {\n                xPos = $$.width - box.width;\n            } else if (xPos < 0) {\n                xPos = 4;\n            }\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(),\n            yPos;\n        if ($$.config.axis_rotated) {\n            yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n        } else {\n            yPos = points[2][1];\n            if (d.value < 0  || (d.value === 0 && !$$.hasPositiveValue)) {\n                yPos += box.height;\n                if ($$.isBarType(d) && $$.isSafari()) {\n                    yPos -= 3;\n                }\n                else if (!$$.isBarType(d) && $$.isChrome()) {\n                    yPos += 3;\n                }\n            } else {\n                yPos += $$.isBarType(d) ? -3 : -6;\n            }\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null && !$$.config.axis_rotated) {\n            if (yPos < box.height) {\n                yPos = box.height;\n            } else if (yPos > this.height) {\n                yPos = this.height - 4;\n            }\n        }\n        return yPos;\n    };\n\n    c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n        var $$ = this, config = $$.config;\n        $$.mapToTargetIds(targetIds).forEach(function (id) {\n            $$.withoutFadeIn[id] = (type === config.data_types[id]);\n            config.data_types[id] = type;\n        });\n        if (!targetIds) {\n            config.data_type = type;\n        }\n    };\n    c3_chart_internal_fn.hasType = function (type, targets) {\n        var $$ = this, types = $$.config.data_types, has = false;\n        targets = targets || $$.data.targets;\n        if (targets && targets.length) {\n            targets.forEach(function (target) {\n                var t = types[target.id];\n                if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {\n                    has = true;\n                }\n            });\n        } else if (Object.keys(types).length) {\n            Object.keys(types).forEach(function (id) {\n                if (types[id] === type) { has = true; }\n            });\n        } else {\n            has = $$.config.data_type === type;\n        }\n        return has;\n    };\n    c3_chart_internal_fn.hasArcType = function (targets) {\n        return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n    };\n    c3_chart_internal_fn.isLineType = function (d) {\n        var config = this.config, id = isString(d) ? d : d.id;\n        return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isStepType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isSplineType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isAreaType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isBarType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'bar';\n    };\n    c3_chart_internal_fn.isScatterType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'scatter';\n    };\n    c3_chart_internal_fn.isPieType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'pie';\n    };\n    c3_chart_internal_fn.isGaugeType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'gauge';\n    };\n    c3_chart_internal_fn.isDonutType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'donut';\n    };\n    c3_chart_internal_fn.isArcType = function (d) {\n        return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n    };\n    c3_chart_internal_fn.lineData = function (d) {\n        return this.isLineType(d) ? [d] : [];\n    };\n    c3_chart_internal_fn.arcData = function (d) {\n        return this.isArcType(d.data) ? [d] : [];\n    };\n    /* not used\n     function scatterData(d) {\n     return isScatterType(d) ? d.values : [];\n     }\n     */\n    c3_chart_internal_fn.barData = function (d) {\n        return this.isBarType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.lineOrScatterData = function (d) {\n        return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.barOrLineData = function (d) {\n        return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.isInterpolationType = function (type) {\n        return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n    };\n\n    c3_chart_internal_fn.initGrid = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        $$.grid = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid);\n        if (config.grid_x_show) {\n            $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n        }\n        if (config.grid_y_show) {\n            $$.grid.append('g').attr('class', CLASS.ygrids);\n        }\n        if (config.grid_focus_show) {\n            $$.grid.append('g')\n                .attr(\"class\", CLASS.xgridFocus)\n                .append('line')\n                .attr('class', CLASS.xgridFocus);\n        }\n        $$.xgrid = d3.selectAll([]);\n        if (!config.grid_lines_front) { $$.initGridLines(); }\n    };\n    c3_chart_internal_fn.initGridLines = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.gridLines = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n        $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n        $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n        $$.xgridLines = d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n            tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n        $$.xgridAttr = config.axis_rotated ? {\n            'x1': 0,\n            'x2': $$.width,\n            'y1': function (d) { return $$.x(d) - tickOffset; },\n            'y2': function (d) { return $$.x(d) - tickOffset; }\n        } : {\n            'x1': function (d) { return $$.x(d) + tickOffset; },\n            'x2': function (d) { return $$.x(d) + tickOffset; },\n            'y1': 0,\n            'y2': $$.height\n        };\n\n        $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid)\n            .data(xgridData);\n        $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n        if (!withoutUpdate) {\n            $$.xgrid.attr($$.xgridAttr)\n                .style(\"opacity\", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; });\n        }\n        $$.xgrid.exit().remove();\n    };\n\n    c3_chart_internal_fn.updateYGrid = function () {\n        var $$ = this, config = $$.config,\n            gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n        $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid)\n            .data(gridValues);\n        $$.ygrid.enter().append('line')\n            .attr('class', CLASS.ygrid);\n        $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0)\n            .attr(\"x2\", config.axis_rotated ? $$.y : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : $$.y)\n            .attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n        $$.ygrid.exit().remove();\n        $$.smoothLines($$.ygrid, 'grid');\n    };\n\n    c3_chart_internal_fn.gridTextAnchor = function (d) {\n        return d.position ? d.position : \"end\";\n    };\n    c3_chart_internal_fn.gridTextDx = function (d) {\n        return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n    };\n    c3_chart_internal_fn.xGridTextX = function (d) {\n        return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n    };\n    c3_chart_internal_fn.yGridTextX = function (d) {\n        return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n    };\n    c3_chart_internal_fn.updateGrid = function (duration) {\n        var $$ = this, main = $$.main, config = $$.config,\n            xgridLine, ygridLine, yv;\n\n        // hide if arc type\n        $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n        if (config.grid_x_show) {\n            $$.updateXGrid();\n        }\n        $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine)\n            .data(config.grid_x_lines);\n        // enter\n        xgridLine = $$.xgridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        xgridLine.append('line')\n            .style(\"opacity\", 0);\n        xgridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // udpate\n        // done in d3.transition() of the end of this function\n        // exit\n        $$.xgridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n\n        // Y-Grid\n        if (config.grid_y_show) {\n            $$.updateYGrid();\n        }\n        $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine)\n            .data(config.grid_y_lines);\n        // enter\n        ygridLine = $$.ygridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        ygridLine.append('line')\n            .style(\"opacity\", 0);\n        ygridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // update\n        yv = $$.yv.bind($$);\n        $$.ygridLines.select('line')\n          .transition().duration(duration)\n            .attr(\"x1\", config.axis_rotated ? yv : 0)\n            .attr(\"x2\", config.axis_rotated ? yv : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : yv)\n            .attr(\"y2\", config.axis_rotated ? $$.height : yv)\n            .style(\"opacity\", 1);\n        $$.ygridLines.select('text')\n          .transition().duration(duration)\n            .attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))\n            .attr(\"y\", yv)\n            .text(function (d) { return d.text; })\n            .style(\"opacity\", 1);\n        // exit\n        $$.ygridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawGrid = function (withTransition) {\n        var $$ = this, config = $$.config, xv = $$.xv.bind($$),\n            lines = $$.xgridLines.select('line'),\n            texts = $$.xgridLines.select('text');\n        return [\n            (withTransition ? lines.transition() : lines)\n                .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                .attr(\"x2\", config.axis_rotated ? $$.width : xv)\n                .attr(\"y1\", config.axis_rotated ? xv : 0)\n                .attr(\"y2\", config.axis_rotated ? xv : $$.height)\n                .style(\"opacity\", 1),\n            (withTransition ? texts.transition() : texts)\n                .attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))\n                .attr(\"y\", xv)\n                .text(function (d) { return d.text; })\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n        var $$ = this, config = $$.config,\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n            xx = $$.xx.bind($$);\n        if (! config.tooltip_show) { return; }\n        // Hide when scatter plot exists\n        if ($$.hasType('scatter') || $$.hasArcType()) { return; }\n        focusEl\n            .style(\"visibility\", \"visible\")\n            .data([dataToShow[0]])\n            .attr(config.axis_rotated ? 'y1' : 'x1', xx)\n            .attr(config.axis_rotated ? 'y2' : 'x2', xx);\n        $$.smoothLines(focusEl, 'grid');\n    };\n    c3_chart_internal_fn.hideXGridFocus = function () {\n        this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n    };\n    c3_chart_internal_fn.updateXgridFocus = function () {\n        var $$ = this, config = $$.config;\n        $$.main.select('line.' + CLASS.xgridFocus)\n            .attr(\"x1\", config.axis_rotated ? 0 : -10)\n            .attr(\"x2\", config.axis_rotated ? $$.width : -10)\n            .attr(\"y1\", config.axis_rotated ? -10 : 0)\n            .attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n    };\n    c3_chart_internal_fn.generateGridData = function (type, scale) {\n        var $$ = this,\n            gridData = [], xDomain, firstYear, lastYear, i,\n            tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n        if (type === 'year') {\n            xDomain = $$.getXDomain();\n            firstYear = xDomain[0].getFullYear();\n            lastYear = xDomain[1].getFullYear();\n            for (i = firstYear; i <= lastYear; i++) {\n                gridData.push(new Date(i + '-01-01 00:00:00'));\n            }\n        } else {\n            gridData = scale.ticks(10);\n            if (gridData.length > tickNum) { // use only int\n                gridData = gridData.filter(function (d) { return (\"\" + d).indexOf('.') < 0; });\n            }\n        }\n        return gridData;\n    };\n    c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n        return params ? function (line) {\n            var found = false;\n            [].concat(params).forEach(function (param) {\n                if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) {\n                    found = true;\n                }\n            });\n            return found;\n        } : function () { return true; };\n    };\n    c3_chart_internal_fn.removeGridLines = function (params, forX) {\n        var $$ = this, config = $$.config,\n            toRemove = $$.getGridFilterToRemove(params),\n            toShow = function (line) { return !toRemove(line); },\n            classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n            classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n        $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove)\n            .transition().duration(config.transition_duration)\n            .style('opacity', 0).remove();\n        if (forX) {\n            config.grid_x_lines = config.grid_x_lines.filter(toShow);\n        } else {\n            config.grid_y_lines = config.grid_y_lines.filter(toShow);\n        }\n    };\n\n    c3_chart_internal_fn.initTooltip = function () {\n        var $$ = this, config = $$.config, i;\n        $$.tooltip = $$.selectChart\n            .style(\"position\", \"relative\")\n          .append(\"div\")\n            .attr('class', CLASS.tooltipContainer)\n            .style(\"position\", \"absolute\")\n            .style(\"pointer-events\", \"none\")\n            .style(\"display\", \"none\");\n        // Show tooltip if needed\n        if (config.tooltip_init_show) {\n            if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n                config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n                for (i = 0; i < $$.data.targets[0].values.length; i++) {\n                    if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; }\n                }\n                config.tooltip_init_x = i;\n            }\n            $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n                return $$.addName(d.values[config.tooltip_init_x]);\n            }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n            $$.tooltip.style(\"top\", config.tooltip_init_position.top)\n                .style(\"left\", config.tooltip_init_position.left)\n                .style(\"display\", \"block\");\n        }\n    };\n    c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n        var $$ = this, config = $$.config,\n            titleFormat = config.tooltip_format_title || defaultTitleFormat,\n            nameFormat = config.tooltip_format_name || function (name) { return name; },\n            valueFormat = config.tooltip_format_value || defaultValueFormat,\n            text, i, title, value, name, bgcolor,\n            orderAsc = $$.isOrderAsc();\n\n        if (config.data_groups.length === 0) {\n            d.sort(function(a, b){\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        } else {\n            var ids = $$.orderTargets($$.data.targets).map(function (i) {\n                return i.id;\n            });\n            d.sort(function(a, b) {\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                if (v1 > 0 && v2 > 0) {\n                    v1 = a ? ids.indexOf(a.id) : null;\n                    v2 = b ? ids.indexOf(b.id) : null;\n                }\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        }\n\n        for (i = 0; i < d.length; i++) {\n            if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n\n            if (! text) {\n                title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n                text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n            }\n\n            value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n            if (value !== undefined) {\n                // Skip elements when their name is set to null\n                if (d[i].name === null) { continue; }\n                name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n                bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n                text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n                text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n                text += \"<td class='value'>\" + value + \"</td>\";\n                text += \"</tr>\";\n            }\n        }\n        return text + \"</table>\";\n    };\n    c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n        var forArc = $$.hasArcType(),\n            mouse = d3.mouse(element);\n      // Determin tooltip position\n        if (forArc) {\n            tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0];\n            tooltipTop = ($$.height / 2) + mouse[1] + 20;\n        } else {\n            svgLeft = $$.getSvgLeft(true);\n            if (config.axis_rotated) {\n                tooltipLeft = svgLeft + mouse[0] + 100;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = $$.x(dataToShow[0].x) + 20;\n            } else {\n                tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = mouse[1] + 15;\n            }\n\n            if (tooltipRight > chartRight) {\n                // 20 is needed for Firefox to keep tooltip width\n                tooltipLeft -= tooltipRight - chartRight + 20;\n            }\n            if (tooltipTop + tHeight > $$.currentHeight) {\n                tooltipTop -= tHeight + 30;\n            }\n        }\n        if (tooltipTop < 0) {\n            tooltipTop = 0;\n        }\n        return {top: tooltipTop, left: tooltipLeft};\n    };\n    c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n        var $$ = this, config = $$.config;\n        var tWidth, tHeight, position;\n        var forArc = $$.hasArcType(),\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n        if (dataToShow.length === 0 || !config.tooltip_show) {\n            return;\n        }\n        $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n        // Get tooltip dimensions\n        tWidth = $$.tooltip.property('offsetWidth');\n        tHeight = $$.tooltip.property('offsetHeight');\n\n        position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n        // Set tooltip\n        $$.tooltip\n            .style(\"top\", position.top + \"px\")\n            .style(\"left\", position.left + 'px');\n    };\n    c3_chart_internal_fn.hideTooltip = function () {\n        this.tooltip.style(\"display\", \"none\");\n    };\n\n    c3_chart_internal_fn.initLegend = function () {\n        var $$ = this;\n        $$.legendItemTextBox = {};\n        $$.legendHasRendered = false;\n        $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n        if (!$$.config.legend_show) {\n            $$.legend.style('visibility', 'hidden');\n            $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n            return;\n        }\n        // MEMO: call here to update legend box and tranlate for all\n        // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n        $$.updateLegendWithDefaults();\n    };\n    c3_chart_internal_fn.updateLegendWithDefaults = function () {\n        var $$ = this;\n        $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false});\n    };\n    c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n        var $$ = this, config = $$.config, insetLegendPosition = {\n            top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n            left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n        };\n\n        $$.margin3 = {\n            top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n            right: NaN,\n            bottom: 0,\n            left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n        };\n    };\n    c3_chart_internal_fn.transformLegend = function (withTransition) {\n        var $$ = this;\n        (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n    };\n    c3_chart_internal_fn.updateLegendStep = function (step) {\n        this.legendStep = step;\n    };\n    c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n        this.legendItemWidth = w;\n    };\n    c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n        this.legendItemHeight = h;\n    };\n    c3_chart_internal_fn.getLegendWidth = function () {\n        var $$ = this;\n        return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n    };\n    c3_chart_internal_fn.getLegendHeight = function () {\n        var $$ = this, h = 0;\n        if ($$.config.legend_show) {\n            if ($$.isLegendRight) {\n                h = $$.currentHeight;\n            } else {\n                h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n            }\n        }\n        return h;\n    };\n    c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n    };\n    c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n    };\n    c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n        var $$ = this;\n        targetIds = $$.mapToTargetIds(targetIds);\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .filter(function (id) { return targetIds.indexOf(id) >= 0; })\n            .classed(CLASS.legendItemFocused, focus)\n          .transition().duration(100)\n            .style('opacity', function () {\n                var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n                return opacity.call($$, $$.d3.select(this));\n            });\n    };\n    c3_chart_internal_fn.revertLegend = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemFocused, false)\n            .transition().duration(100)\n            .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); });\n    };\n    c3_chart_internal_fn.showLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (!config.legend_show) {\n            config.legend_show = true;\n            $$.legend.style('visibility', 'visible');\n            if (!$$.legendHasRendered) {\n                $$.updateLegendWithDefaults();\n            }\n        }\n        $$.removeHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('visibility', 'visible')\n            .transition()\n            .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); });\n    };\n    c3_chart_internal_fn.hideLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (config.legend_show && isEmpty(targetIds)) {\n            config.legend_show = false;\n            $$.legend.style('visibility', 'hidden');\n        }\n        $$.addHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('opacity', 0)\n            .style('visibility', 'hidden');\n    };\n    c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n        this.legendItemTextBox = {};\n    };\n    c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n        var $$ = this, config = $$.config;\n        var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n        var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5;\n        var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;\n        var withTransition, withTransitionForTransform;\n        var texts, rects, tiles, background;\n\n        // Skip elements when their name is set to null\n        targetIds = targetIds.filter(function(id) {\n            return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n        });\n\n        options = options || {};\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n        function getTextBox(textElement, id) {\n            if (!$$.legendItemTextBox[id]) {\n                $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n            }\n            return $$.legendItemTextBox[id];\n        }\n\n        function updatePositions(textElement, id, index) {\n            var reset = index === 0, isLast = index === targetIds.length - 1,\n                box = getTextBox(textElement, id),\n                itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n                itemHeight = box.height + paddingTop,\n                itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n                areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n                margin, maxLength;\n\n            // MEMO: care about condifion of step, totalLength\n            function updateValues(id, withoutStep) {\n                if (!withoutStep) {\n                    margin = (areaLength - totalLength - itemLength) / 2;\n                    if (margin < posMin) {\n                        margin = (areaLength - itemLength) / 2;\n                        totalLength = 0;\n                        step++;\n                    }\n                }\n                steps[id] = step;\n                margins[step] = $$.isLegendInset ? 10 : margin;\n                offsets[id] = totalLength;\n                totalLength += itemLength;\n            }\n\n            if (reset) {\n                totalLength = 0;\n                step = 0;\n                maxWidth = 0;\n                maxHeight = 0;\n            }\n\n            if (config.legend_show && !$$.isLegendToShow(id)) {\n                widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n                return;\n            }\n\n            widths[id] = itemWidth;\n            heights[id] = itemHeight;\n\n            if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; }\n            if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; }\n            maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n            if (config.legend_equally) {\n                Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; });\n                Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; });\n                margin = (areaLength - maxLength * targetIds.length) / 2;\n                if (margin < posMin) {\n                    totalLength = 0;\n                    step = 0;\n                    targetIds.forEach(function (id) { updateValues(id); });\n                }\n                else {\n                    updateValues(id, true);\n                }\n            } else {\n                updateValues(id);\n            }\n        }\n\n        if ($$.isLegendInset) {\n            step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n            $$.updateLegendStep(step);\n        }\n\n        if ($$.isLegendRight) {\n            xForLegend = function (id) { return maxWidth * steps[id]; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else if ($$.isLegendInset) {\n            xForLegend = function (id) { return maxWidth * steps[id] + 10; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else {\n            xForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n            yForLegend = function (id) { return maxHeight * steps[id]; };\n        }\n        xForLegendText = function (id, i) { return xForLegend(id, i) + 4 + config.legend_item_tile_width; };\n        yForLegendText = function (id, i) { return yForLegend(id, i) + 9; };\n        xForLegendRect = function (id, i) { return xForLegend(id, i); };\n        yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; };\n        x1ForLegendTile = function (id, i) { return xForLegend(id, i) - 2; };\n        x2ForLegendTile = function (id, i) { return xForLegend(id, i) - 2 + config.legend_item_tile_width; };\n        yForLegendTile = function (id, i) { return yForLegend(id, i) + 4; };\n\n        // Define g for legend area\n        l = $$.legend.selectAll('.' + CLASS.legendItem)\n            .data(targetIds)\n            .enter().append('g')\n            .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); })\n            .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; })\n            .style('cursor', 'pointer')\n            .on('click', function (id) {\n                if (config.legend_item_onclick) {\n                    config.legend_item_onclick.call($$, id);\n                } else {\n                    if ($$.d3.event.altKey) {\n                        $$.api.hide();\n                        $$.api.show(id);\n                    } else {\n                        $$.api.toggle(id);\n                        $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n                    }\n                }\n            })\n            .on('mouseover', function (id) {\n                if (config.legend_item_onmouseover) {\n                    config.legend_item_onmouseover.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n                    if (!$$.transiting && $$.isTargetToShow(id)) {\n                        $$.api.focus(id);\n                    }\n                }\n            })\n            .on('mouseout', function (id) {\n                if (config.legend_item_onmouseout) {\n                    config.legend_item_onmouseout.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n                    $$.api.revert();\n                }\n            });\n        l.append('text')\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; })\n            .each(function (id, i) { updatePositions(this, id, i); })\n            .style(\"pointer-events\", \"none\")\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n        l.append('rect')\n            .attr(\"class\", CLASS.legendItemEvent)\n            .style('fill-opacity', 0)\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n        l.append('line')\n            .attr('class', CLASS.legendItemTile)\n            .style('stroke', $$.color)\n            .style(\"pointer-events\", \"none\")\n            .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200)\n            .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200)\n            .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('stroke-width', config.legend_item_tile_height);\n\n        // Set background for inset legend\n        background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n        if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n            background = $$.legend.insert('g', '.' + CLASS.legendItem)\n                .attr(\"class\", CLASS.legendBackground)\n                .append('rect');\n        }\n\n        texts = $$.legend.selectAll('text')\n            .data(targetIds)\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update\n            .each(function (id, i) { updatePositions(this, id, i); });\n        (withTransition ? texts.transition() : texts)\n            .attr('x', xForLegendText)\n            .attr('y', yForLegendText);\n\n        rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent)\n            .data(targetIds);\n        (withTransition ? rects.transition() : rects)\n            .attr('width', function (id) { return widths[id]; })\n            .attr('height', function (id) { return heights[id]; })\n            .attr('x', xForLegendRect)\n            .attr('y', yForLegendRect);\n\n        tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile)\n                .data(targetIds);\n            (withTransition ? tiles.transition() : tiles)\n                .style('stroke', $$.color)\n                .attr('x1', x1ForLegendTile)\n                .attr('y1', yForLegendTile)\n                .attr('x2', x2ForLegendTile)\n                .attr('y2', yForLegendTile);\n\n        if (background) {\n            (withTransition ? background.transition() : background)\n                .attr('height', $$.getLegendHeight() - 12)\n                .attr('width', maxWidth * (step + 1) + 10);\n        }\n\n        // toggle legend state\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); });\n\n        // Update all to reflect change of legend\n        $$.updateLegendItemWidth(maxWidth);\n        $$.updateLegendItemHeight(maxHeight);\n        $$.updateLegendStep(step);\n        // Update size and scale\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        // Update g positions\n        $$.transformAll(withTransitionForTransform, transitions);\n        $$.legendHasRendered = true;\n    };\n\n    c3_chart_internal_fn.initTitle = function () {\n        var $$ = this;\n        $$.title = $$.svg.append(\"text\")\n              .text($$.config.title_text)\n              .attr(\"class\", $$.CLASS.title);\n    };\n    c3_chart_internal_fn.redrawTitle = function () {\n        var $$ = this;\n        $$.title\n              .attr(\"x\", $$.xForTitle.bind($$))\n              .attr(\"y\", $$.yForTitle.bind($$));\n    };\n    c3_chart_internal_fn.xForTitle = function () {\n        var $$ = this, config = $$.config, position = config.title_position || 'left', x;\n        if (position.indexOf('right') >= 0) {\n            x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n        } else if (position.indexOf('center') >= 0) {\n            x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n        } else { // left\n            x = config.title_padding.left;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.yForTitle = function () {\n        var $$ = this;\n        return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n    };\n    c3_chart_internal_fn.getTitlePadding = function() {\n        var $$ = this;\n        return $$.yForTitle() + $$.config.title_padding.bottom;\n    };\n\n    function Axis(owner) {\n        API.call(this, owner);\n    }\n\n    inherit(API, Axis);\n\n    Axis.prototype.init = function init() {\n\n        var $$ = this.owner, config = $$.config, main = $$.main;\n        $$.axes.x = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisX)\n            .attr(\"clip-path\", $$.clipPathForXAxis)\n            .attr(\"transform\", $$.getTranslate('x'))\n            .style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n        $$.axes.x.append(\"text\")\n            .attr(\"class\", CLASS.axisXLabel)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n        $$.axes.y = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY)\n            .attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis)\n            .attr(\"transform\", $$.getTranslate('y'))\n            .style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n        $$.axes.y.append(\"text\")\n            .attr(\"class\", CLASS.axisYLabel)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n        $$.axes.y2 = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n            // clip-path?\n            .attr(\"transform\", $$.getTranslate('y2'))\n            .style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n        $$.axes.y2.append(\"text\")\n            .attr(\"class\", CLASS.axisY2Label)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                isCategory: $$.isCategorized(),\n                withOuterTick: withOuterTick,\n                tickMultiline: config.axis_x_tick_multiline,\n                tickWidth: config.axis_x_tick_width,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n                withoutTransition: withoutTransition,\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient);\n\n        if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n            tickValues = tickValues.map(function (v) { return $$.parseDate(v); });\n        }\n\n        // Set tick\n        axis.tickFormat(tickFormat).tickValues(tickValues);\n        if ($$.isCategorized()) {\n            axis.tickCentered(config.axis_x_tick_centered);\n            if (isEmpty(config.axis_x_tick_culling)) {\n                config.axis_x_tick_culling = false;\n            }\n        }\n\n        return axis;\n    };\n    Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n        var $$ = this.owner, config = $$.config, tickValues;\n        if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n            tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n        }\n        if (axis) {\n            axis.tickValues(tickValues);\n        } else {\n            $$.xAxis.tickValues(tickValues);\n            $$.subXAxis.tickValues(tickValues);\n        }\n        return tickValues;\n    };\n    Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                withOuterTick: withOuterTick,\n                withoutTransition: withoutTransition,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat);\n        if ($$.isTimeSeriesY()) {\n            axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n        } else {\n            axis.tickValues(tickValues);\n        }\n        return axis;\n    };\n    Axis.prototype.getId = function getId(id) {\n        var config = this.owner.config;\n        return id in config.data_axes ? config.data_axes[id] : 'y';\n    };\n    Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n        var $$ = this.owner, config = $$.config,\n            format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; };\n        if (config.axis_x_tick_format) {\n            if (isFunction(config.axis_x_tick_format)) {\n                format = config.axis_x_tick_format;\n            } else if ($$.isTimeSeries()) {\n                format = function (date) {\n                    return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n                };\n            }\n        }\n        return isFunction(format) ? function (v) { return format.call($$, v); } : format;\n    };\n    Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n        return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n    };\n    Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n    };\n    Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n    };\n    Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n    };\n    Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n        var $$ = this.owner, config = $$.config, option;\n        if (axisId === 'y') {\n            option = config.axis_y_label;\n        } else if (axisId === 'y2') {\n            option = config.axis_y2_label;\n        } else if (axisId === 'x') {\n            option = config.axis_x_label;\n        }\n        return option;\n    };\n    Axis.prototype.getLabelText = function getLabelText(axisId) {\n        var option = this.getLabelOptionByAxisId(axisId);\n        return isString(option) ? option : option ? option.text : null;\n    };\n    Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n        var $$ = this.owner, config = $$.config,\n            option = this.getLabelOptionByAxisId(axisId);\n        if (isString(option)) {\n            if (axisId === 'y') {\n                config.axis_y_label = text;\n            } else if (axisId === 'y2') {\n                config.axis_y2_label = text;\n            } else if (axisId === 'x') {\n                config.axis_x_label = text;\n            }\n        } else if (option) {\n            option.text = text;\n        }\n    };\n    Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n        var option = this.getLabelOptionByAxisId(axisId),\n            position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition;\n        return {\n            isInner: position.indexOf('inner') >= 0,\n            isOuter: position.indexOf('outer') >= 0,\n            isLeft: position.indexOf('left') >= 0,\n            isCenter: position.indexOf('center') >= 0,\n            isRight: position.indexOf('right') >= 0,\n            isTop: position.indexOf('top') >= 0,\n            isMiddle: position.indexOf('middle') >= 0,\n            isBottom: position.indexOf('bottom') >= 0\n        };\n    };\n    Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n        return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n    };\n    Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n        return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n        return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n        return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n    };\n    Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n        return this.getLabelText('x');\n    };\n    Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n        return this.getLabelText('y');\n    };\n    Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n        return this.getLabelText('y2');\n    };\n    Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n        var $$ = this.owner;\n        if (forHorizontal) {\n            return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n        } else {\n            return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n        }\n    };\n    Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n        } else {\n            return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n        }\n    };\n    Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n        } else {\n            return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n        }\n    };\n    Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n        return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n        return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n        var $$ = this.owner, config = $$.config,\n            position = this.getXAxisLabelPosition();\n        if (config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n        } else {\n            return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n        }\n    };\n    Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n        var $$ = this.owner,\n            position = this.getYAxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"-0.5em\" : \"3em\";\n        } else {\n            return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10));\n        }\n    };\n    Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n        var $$ = this.owner,\n            position = this.getY2AxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : \"-2.2em\";\n        } else {\n            return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));\n        }\n    };\n    Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n        var $$ = this.owner, config = $$.config,\n            maxWidth = 0, targetsToShow, scale, axis, dummy, svg;\n        if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n            return $$.currentMaxTickWidths[id];\n        }\n        if ($$.svg) {\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            if (id === 'y') {\n                scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n                axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n            } else if (id === 'y2') {\n                scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n                axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n            } else {\n                scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n                axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n                this.updateXAxisTickValues(targetsToShow, axis);\n            }\n            dummy = $$.d3.select('body').append('div').classed('c3', true);\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            svg.append('g').call(axis).each(function () {\n                $$.d3.select(this).selectAll('text').each(function () {\n                    var box = this.getBoundingClientRect();\n                    if (maxWidth < box.width) { maxWidth = box.width; }\n                });\n                dummy.remove();\n            });\n        }\n        $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n        return $$.currentMaxTickWidths[id];\n    };\n\n    Axis.prototype.updateLabels = function updateLabels(withTransition) {\n        var $$ = this.owner;\n        var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n            axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n            axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n        (withTransition ? axisXLabel.transition() : axisXLabel)\n            .attr(\"x\", this.xForXAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForXAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForXAxisLabel.bind(this))\n            .text(this.textForXAxisLabel.bind(this));\n        (withTransition ? axisYLabel.transition() : axisYLabel)\n            .attr(\"x\", this.xForYAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForYAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForYAxisLabel.bind(this))\n            .text(this.textForYAxisLabel.bind(this));\n        (withTransition ? axisY2Label.transition() : axisY2Label)\n            .attr(\"x\", this.xForY2AxisLabel.bind(this))\n            .attr(\"dx\", this.dxForY2AxisLabel.bind(this))\n            .attr(\"dy\", this.dyForY2AxisLabel.bind(this))\n            .text(this.textForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n        var p = typeof padding === 'number' ? padding : padding[key];\n        if (!isValue(p)) {\n            return defaultValue;\n        }\n        if (padding.unit === 'ratio') {\n            return padding[key] * domainLength;\n        }\n        // assume padding is pixels if unit is not specified\n        return this.convertPixelsToAxisPadding(p, domainLength);\n    };\n    Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n        var $$ = this.owner,\n            length = $$.config.axis_rotated ? $$.width : $$.height;\n        return domainLength * (pixels / length);\n    };\n    Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n        var tickValues = values, targetCount, start, end, count, interval, i, tickValue;\n        if (tickCount) {\n            targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n            // compute ticks according to tickCount\n            if (targetCount === 1) {\n                tickValues = [values[0]];\n            } else if (targetCount === 2) {\n                tickValues = [values[0], values[values.length - 1]];\n            } else if (targetCount > 2) {\n                count = targetCount - 2;\n                start = values[0];\n                end = values[values.length - 1];\n                interval = (end - start) / (count + 1);\n                // re-construct unique values\n                tickValues = [start];\n                for (i = 0; i < count; i++) {\n                    tickValue = +start + interval * (i + 1);\n                    tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n                }\n                tickValues.push(end);\n            }\n        }\n        if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); }\n        return tickValues;\n    };\n    Axis.prototype.generateTransitions = function generateTransitions(duration) {\n        var $$ = this.owner, axes = $$.axes;\n        return {\n            axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n            axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n            axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n            axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n        };\n    };\n    Axis.prototype.redraw = function redraw(transitions, isHidden) {\n        var $$ = this.owner;\n        $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n        transitions.axisX.call($$.xAxis);\n        transitions.axisY.call($$.yAxis);\n        transitions.axisY2.call($$.y2Axis);\n        transitions.axisSubX.call($$.subXAxis);\n    };\n\n    c3_chart_internal_fn.getClipPath = function (id) {\n        var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n        return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n    };\n    c3_chart_internal_fn.appendClip = function (parent, id) {\n        return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n    };\n    c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n        // axis line width + padding for left\n        var left = Math.max(30, this.margin.left);\n        return forHorizontal ? -(1 + left) : -(left - 1);\n    };\n    c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n        return forHorizontal ? -20 : -this.margin.top;\n    };\n    c3_chart_internal_fn.getXAxisClipX = function () {\n        var $$ = this;\n        return $$.getAxisClipX(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipX = function () {\n        var $$ = this;\n        return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n        var $$ = this,\n            left = Math.max(30, $$.margin.left),\n            right = Math.max(30, $$.margin.right);\n        // width + axis line width + padding for left/right\n        return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n    };\n    c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n        // less than 20 is not enough to show the axis label 'outer' without legend\n        return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20;\n    };\n    c3_chart_internal_fn.getXAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n    };\n    c3_chart_internal_fn.getYAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight($$.config.axis_rotated);\n    };\n\n    c3_chart_internal_fn.initPie = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        $$.pie = d3.layout.pie().value(function (d) {\n            return d.values.reduce(function (a, b) { return a + b.value; }, 0);\n        });\n        if (!config.data_order) {\n            $$.pie.sort(null);\n        }\n    };\n\n    c3_chart_internal_fn.updateRadius = function () {\n        var $$ = this, config = $$.config,\n            w = config.gauge_width || config.donut_width;\n        $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n        $$.radius = $$.radiusExpanded * 0.95;\n        $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n        $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n    };\n\n    c3_chart_internal_fn.updateArc = function () {\n        var $$ = this;\n        $$.svgArc = $$.getSvgArc();\n        $$.svgArcExpanded = $$.getSvgArcExpanded();\n        $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n    };\n\n    c3_chart_internal_fn.updateAngle = function (d) {\n        var $$ = this, config = $$.config,\n            found = false, index = 0,\n            gMin, gMax, gTic, gValue;\n\n        if (!config) {\n            return null;\n        }\n\n        $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n            if (! found && t.data.id === d.data.id) {\n                found = true;\n                d = t;\n                d.index = index;\n            }\n            index++;\n        });\n        if (isNaN(d.startAngle)) {\n            d.startAngle = 0;\n        }\n        if (isNaN(d.endAngle)) {\n            d.endAngle = d.startAngle;\n        }\n        if ($$.isGaugeType(d.data)) {\n            gMin = config.gauge_min;\n            gMax = config.gauge_max;\n            gTic = (Math.PI * (config.gauge_fullCircle ? 2 : 1)) / (gMax - gMin);\n            gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin);\n            d.startAngle = config.gauge_startingAngle;\n            d.endAngle = d.startAngle + gTic * gValue;\n        }\n        return found ? d : null;\n    };\n\n    c3_chart_internal_fn.getSvgArc = function () {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n            newArc = function (d, withoutUpdate) {\n                var updated;\n                if (withoutUpdate) { return arc(d); } // for interpolate\n                updated = $$.updateAngle(d);\n                return updated ? arc(updated) : \"M 0 0\";\n            };\n        // TODO: extends all function\n        newArc.centroid = arc.centroid;\n        return newArc;\n    };\n\n    c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n        return function (d) {\n            var updated = $$.updateAngle(d);\n            return updated ? arc(updated) : \"M 0 0\";\n        };\n    };\n\n    c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n        return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n    };\n\n\n    c3_chart_internal_fn.transformForArcLabel = function (d) {\n        var $$ = this, config = $$.config,\n            updated = $$.updateAngle(d), c, x, y, h, ratio, translate = \"\";\n        if (updated && !$$.hasType('gauge')) {\n            c = this.svgArc.centroid(updated);\n            x = isNaN(c[0]) ? 0 : c[0];\n            y = isNaN(c[1]) ? 0 : c[1];\n            h = Math.sqrt(x * x + y * y);\n            if ($$.hasType('donut') && config.donut_label_ratio) {\n                ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n            } else if ($$.hasType('pie') && config.pie_label_ratio) {\n                ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n            } else {\n                ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n            }\n            translate = \"translate(\" + (x * ratio) +  ',' + (y * ratio) +  \")\";\n        }\n        return translate;\n    };\n\n    c3_chart_internal_fn.getArcRatio = function (d) {\n        var $$ = this,\n            config = $$.config,\n            whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n        return d ? (d.endAngle - d.startAngle) / whole : null;\n    };\n\n    c3_chart_internal_fn.convertToArcData = function (d) {\n        return this.addName({\n            id: d.data.id,\n            value: d.value,\n            ratio: this.getArcRatio(d),\n            index: d.index\n        });\n    };\n\n    c3_chart_internal_fn.textForArcLabel = function (d) {\n        var $$ = this,\n            updated, value, ratio, id, format;\n        if (! $$.shouldShowArcLabel()) { return \"\"; }\n        updated = $$.updateAngle(d);\n        value = updated ? updated.value : null;\n        ratio = $$.getArcRatio(updated);\n        id = d.data.id;\n        if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return \"\"; }\n        format = $$.getArcLabelFormat();\n        return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n    };\n\n    c3_chart_internal_fn.expandArc = function (targetIds) {\n        var $$ = this, interval;\n\n        // MEMO: avoid to cancel transition\n        if ($$.transiting) {\n            interval = window.setInterval(function () {\n                if (!$$.transiting) {\n                    window.clearInterval(interval);\n                    if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n                        $$.expandArc(targetIds);\n                    }\n                }\n            }, 10);\n            return;\n        }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n            if (! $$.shouldExpand(d.data.id)) { return; }\n            $$.d3.select(this).selectAll('path')\n                .transition().duration($$.expandDuration(d.data.id))\n                .attr(\"d\", $$.svgArcExpanded)\n                .transition().duration($$.expandDuration(d.data.id) * 2)\n                .attr(\"d\", $$.svgArcExpandedSub)\n                .each(function (d) {\n                    if ($$.isDonutType(d.data)) {\n                        // callback here\n                    }\n                });\n        });\n    };\n\n    c3_chart_internal_fn.unexpandArc = function (targetIds) {\n        var $$ = this;\n\n        if ($$.transiting) { return; }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path')\n            .transition().duration(function(d) {\n                return $$.expandDuration(d.data.id);\n            })\n            .attr(\"d\", $$.svgArc);\n        $$.svg.selectAll('.' + CLASS.arc)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.expandDuration = function (id) {\n        var $$ = this, config = $$.config;\n\n        if ($$.isDonutType(id)) {\n            return config.donut_expand_duration;\n        } else if ($$.isGaugeType(id)) {\n            return config.gauge_expand_duration;\n        } else if ($$.isPieType(id)) {\n            return config.pie_expand_duration;\n        } else {\n            return 50;\n        }\n\n    };\n\n    c3_chart_internal_fn.shouldExpand = function (id) {\n        var $$ = this, config = $$.config;\n        return ($$.isDonutType(id) && config.donut_expand) ||\n               ($$.isGaugeType(id) && config.gauge_expand) ||\n               ($$.isPieType(id) && config.pie_expand);\n    };\n\n    c3_chart_internal_fn.shouldShowArcLabel = function () {\n        var $$ = this, config = $$.config, shouldShow = true;\n        if ($$.hasType('donut')) {\n            shouldShow = config.donut_label_show;\n        } else if ($$.hasType('pie')) {\n            shouldShow = config.pie_label_show;\n        }\n        // when gauge, always true\n        return shouldShow;\n    };\n\n    c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n        var $$ = this, config = $$.config,\n            threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n        return ratio >= threshold;\n    };\n\n    c3_chart_internal_fn.getArcLabelFormat = function () {\n        var $$ = this, config = $$.config,\n            format = config.pie_label_format;\n        if ($$.hasType('gauge')) {\n            format = config.gauge_label_format;\n        } else if ($$.hasType('donut')) {\n            format = config.donut_label_format;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.getArcTitle = function () {\n        var $$ = this;\n        return $$.hasType('donut') ? $$.config.donut_title : \"\";\n    };\n\n    c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n        var $$ = this, main = $$.main,\n            mainPieUpdate, mainPieEnter,\n            classChartArc = $$.classChartArc.bind($$),\n            classArcs = $$.classArcs.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc)\n            .data($$.pie(targets))\n            .attr(\"class\", function (d) { return classChartArc(d) + classFocus(d.data); });\n        mainPieEnter = mainPieUpdate.enter().append(\"g\")\n            .attr(\"class\", classChartArc);\n        mainPieEnter.append('g')\n            .attr('class', classArcs);\n        mainPieEnter.append(\"text\")\n            .attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\")\n            .style(\"opacity\", 0)\n            .style(\"text-anchor\", \"middle\")\n            .style(\"pointer-events\", \"none\");\n        // MEMO: can not keep same color..., but not bad to update color in redraw\n        //mainPieUpdate.exit().remove();\n    };\n\n    c3_chart_internal_fn.initArc = function () {\n        var $$ = this;\n        $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartArcs)\n            .attr(\"transform\", $$.getTranslate('arc'));\n        $$.arcs.append('text')\n            .attr('class', CLASS.chartArcsTitle)\n            .style(\"text-anchor\", \"middle\")\n            .text($$.getArcTitle());\n    };\n\n    c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n        var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,\n            mainArc;\n        mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc)\n            .data($$.arcData.bind($$));\n        mainArc.enter().append('path')\n            .attr(\"class\", $$.classArc.bind($$))\n            .style(\"fill\", function (d) { return $$.color(d.data); })\n            .style(\"cursor\", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null; })\n            .style(\"opacity\", 0)\n            .each(function (d) {\n                if ($$.isGaugeType(d.data)) {\n                    d.startAngle = d.endAngle = config.gauge_startingAngle;\n                }\n                this._current = d;\n            });\n        mainArc\n            .attr(\"transform\", function (d) { return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\"; })\n            .style(\"opacity\", function (d) { return d === this._current ? 0 : 1; })\n            .on('mouseover', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.expandArc(updated.data.id);\n                    $$.api.focus(updated.data.id);\n                    $$.toggleFocusLegend(updated.data.id, true);\n                    $$.config.data_onmouseover(arcData, this);\n                }\n            } : null)\n            .on('mousemove', config.interaction_enabled ? function (d) {\n                var updated = $$.updateAngle(d), arcData, selectedData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated),\n                    selectedData = [arcData];\n                    $$.showTooltip(selectedData, this);\n                }\n            } : null)\n            .on('mouseout', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.unexpandArc(updated.data.id);\n                    $$.api.revert();\n                    $$.revertLegend();\n                    $$.hideTooltip();\n                    $$.config.data_onmouseout(arcData, this);\n                }\n            } : null)\n            .on('click', config.interaction_enabled ? function (d, i) {\n                var updated = $$.updateAngle(d), arcData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    if ($$.toggleShape) {\n                        $$.toggleShape(this, arcData, i);\n                    }\n                    $$.config.data_onclick.call($$.api, arcData, this);\n                }\n            } : null)\n            .each(function () { $$.transiting = true; })\n            .transition().duration(duration)\n            .attrTween(\"d\", function (d) {\n                var updated = $$.updateAngle(d), interpolate;\n                if (! updated) {\n                    return function () { return \"M 0 0\"; };\n                }\n                //                if (this._current === d) {\n                //                    this._current = {\n                //                        startAngle: Math.PI*2,\n                //                        endAngle: Math.PI*2,\n                //                    };\n                //                }\n                if (isNaN(this._current.startAngle)) {\n                    this._current.startAngle = 0;\n                }\n                if (isNaN(this._current.endAngle)) {\n                    this._current.endAngle = this._current.startAngle;\n                }\n                interpolate = d3.interpolate(this._current, updated);\n                this._current = interpolate(0);\n                return function (t) {\n                    var interpolated = interpolate(t);\n                    interpolated.data = d.data; // data.id will be updated by interporator\n                    return $$.getArc(interpolated, true);\n                };\n            })\n            .attr(\"transform\", withTransform ? \"scale(1)\" : \"\")\n            .style(\"fill\", function (d) {\n                return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n            }) // Where gauge reading color would receive customization.\n            .style(\"opacity\", 1)\n            .call($$.endall, function () {\n                $$.transiting = false;\n            });\n        mainArc.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n        main.selectAll('.' + CLASS.chartArc).select('text')\n            .style(\"opacity\", 0)\n            .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; })\n            .text($$.textForArcLabel.bind($$))\n            .attr(\"transform\", $$.transformForArcLabel.bind($$))\n            .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; })\n          .transition().duration(duration)\n            .style(\"opacity\", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });\n        main.select('.' + CLASS.chartArcsTitle)\n            .style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n        if ($$.hasType('gauge')) {\n            $$.arcs.select('.' + CLASS.chartArcsBackground)\n                .attr(\"d\", function () {\n                    var d = {\n                        data: [{value: config.gauge_max}],\n                        startAngle: config.gauge_startingAngle,\n                        endAngle: -1 * config.gauge_startingAngle\n                    };\n                    return $$.getArc(d, true, true);\n                });\n            $$.arcs.select('.' + CLASS.chartArcsGaugeUnit)\n                .attr(\"dy\", \".75em\")\n                .text(config.gauge_label_show ? config.gauge_units : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMin)\n                .attr(\"dx\", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2))) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_min : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMax)\n                .attr(\"dx\", $$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_max : '');\n        }\n    };\n    c3_chart_internal_fn.initGauge = function () {\n        var arcs = this.arcs;\n        if (this.hasType('gauge')) {\n            arcs.append('path')\n                .attr(\"class\", CLASS.chartArcsBackground);\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeUnit)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMin)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMax)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n        }\n    };\n    c3_chart_internal_fn.getGaugeLabelHeight = function () {\n        return this.config.gauge_label_show ? 20 : 0;\n    };\n\n    c3_chart_internal_fn.initRegion = function () {\n        var $$ = this;\n        $$.region = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.regions);\n    };\n    c3_chart_internal_fn.updateRegion = function (duration) {\n        var $$ = this, config = $$.config;\n\n        // hide if arc type\n        $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)\n            .data(config.regions);\n        $$.mainRegion.enter().append('g')\n          .append('rect')\n            .style(\"fill-opacity\", 0);\n        $$.mainRegion\n            .attr('class', $$.classRegion.bind($$));\n        $$.mainRegion.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawRegion = function (withTransition) {\n        var $$ = this,\n            regions = $$.mainRegion.selectAll('rect').each(function () {\n                // data is binded to g and it's not transferred to rect (child node) automatically,\n                // then data of each rect has to be updated manually.\n                // TODO: there should be more efficient way to solve this?\n                var parentData = $$.d3.select(this.parentNode).datum();\n                $$.d3.select(this).datum(parentData);\n            }),\n            x = $$.regionX.bind($$),\n            y = $$.regionY.bind($$),\n            w = $$.regionWidth.bind($$),\n            h = $$.regionHeight.bind($$);\n        return [\n            (withTransition ? regions.transition() : regions)\n                .attr(\"x\", x)\n                .attr(\"y\", y)\n                .attr(\"width\", w)\n                .attr(\"height\", h)\n                .style(\"fill-opacity\", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; })\n        ];\n    };\n    c3_chart_internal_fn.regionX = function (d) {\n        var $$ = this, config = $$.config,\n            xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;\n        } else {\n            xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0);\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.regionY = function (d) {\n        var $$ = this, config = $$.config,\n            yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0);\n        } else {\n            yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0;\n        }\n        return yPos;\n    };\n    c3_chart_internal_fn.regionWidth = function (d) {\n        var $$ = this, config = $$.config,\n            start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width;\n        } else {\n            end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width);\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.regionHeight = function (d) {\n        var $$ = this, config = $$.config,\n            start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height);\n        } else {\n            end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height;\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.isRegionOnX = function (d) {\n        return !d.axis || d.axis === 'x';\n    };\n\n    c3_chart_internal_fn.drag = function (mouse) {\n        var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;\n        var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior\n        if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection\n\n        sx = $$.dragStart[0];\n        sy = $$.dragStart[1];\n        mx = mouse[0];\n        my = mouse[1];\n        minX = Math.min(sx, mx);\n        maxX = Math.max(sx, mx);\n        minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my);\n        maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my);\n\n        main.select('.' + CLASS.dragarea)\n            .attr('x', minX)\n            .attr('y', minY)\n            .attr('width', maxX - minX)\n            .attr('height', maxY - minY);\n        // TODO: binary search when multiple xs\n        main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape)\n            .filter(function (d) { return config.data_selection_isselectable(d); })\n            .each(function (d, i) {\n                var shape = d3.select(this),\n                    isSelected = shape.classed(CLASS.SELECTED),\n                    isIncluded = shape.classed(CLASS.INCLUDED),\n                    _x, _y, _w, _h, toggle, isWithin = false, box;\n                if (shape.classed(CLASS.circle)) {\n                    _x = shape.attr(\"cx\") * 1;\n                    _y = shape.attr(\"cy\") * 1;\n                    toggle = $$.togglePoint;\n                    isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n                }\n                else if (shape.classed(CLASS.bar)) {\n                    box = getPathBox(this);\n                    _x = box.x;\n                    _y = box.y;\n                    _w = box.width;\n                    _h = box.height;\n                    toggle = $$.togglePath;\n                    isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n                } else {\n                    // line/area selection not supported yet\n                    return;\n                }\n                if (isWithin ^ isIncluded) {\n                    shape.classed(CLASS.INCLUDED, !isIncluded);\n                    // TODO: included/unincluded callback here\n                    shape.classed(CLASS.SELECTED, !isSelected);\n                    toggle.call($$, !isSelected, shape, d, i);\n                }\n            });\n    };\n\n    c3_chart_internal_fn.dragstart = function (mouse) {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.dragStart = mouse;\n        $$.main.select('.' + CLASS.chart).append('rect')\n            .attr('class', CLASS.dragarea)\n            .style('opacity', 0.1);\n        $$.dragging = true;\n    };\n\n    c3_chart_internal_fn.dragend = function () {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.main.select('.' + CLASS.dragarea)\n            .transition().duration(100)\n            .style('opacity', 0)\n            .remove();\n        $$.main.selectAll('.' + CLASS.shape)\n            .classed(CLASS.INCLUDED, false);\n        $$.dragging = false;\n    };\n\n    c3_chart_internal_fn.selectPoint = function (target, d, i) {\n        var $$ = this, config = $$.config,\n            cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n            cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n            r = $$.pointSelectR.bind($$);\n        config.data_onselected.call($$.api, d, target.node());\n        // add selected-circle on low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .data([d])\n            .enter().append('circle')\n            .attr(\"class\", function () { return $$.generateClass(CLASS.selectedCircle, i); })\n            .attr(\"cx\", cx)\n            .attr(\"cy\", cy)\n            .attr(\"stroke\", function () { return $$.color(d); })\n            .attr(\"r\", function (d) { return $$.pointSelectR(d) * 1.4; })\n            .transition().duration(100)\n            .attr(\"r\", r);\n    };\n    c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$.api, d, target.node());\n        // remove selected-circle from low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .transition().duration(100).attr('r', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n        selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n    };\n    c3_chart_internal_fn.selectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); });\n        }\n    };\n    c3_chart_internal_fn.unselectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.color(d); });\n        }\n    };\n    c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n        selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n    };\n    c3_chart_internal_fn.getToggle = function (that, d) {\n        var $$ = this, toggle;\n        if (that.nodeName === 'circle') {\n            if ($$.isStepType(d)) {\n                // circle is hidden in step chart, so treat as within the click area\n                toggle = function () {}; // TODO: how to select step chart?\n            } else {\n                toggle = $$.togglePoint;\n            }\n        }\n        else if (that.nodeName === 'path') {\n            toggle = $$.togglePath;\n        }\n        return toggle;\n    };\n    c3_chart_internal_fn.toggleShape = function (that, d, i) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED),\n            toggle = $$.getToggle(that, d).bind($$);\n\n        if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n            if (!config.data_selection_multiple) {\n                $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n                    var shape = d3.select(this);\n                    if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); }\n                });\n            }\n            shape.classed(CLASS.SELECTED, !isSelected);\n            toggle(!isSelected, shape, d, i);\n        }\n    };\n\n    c3_chart_internal_fn.initBrush = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.brush = d3.svg.brush().on(\"brush\", function () { $$.redrawForBrush(); });\n        $$.brush.update = function () {\n            if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); }\n            return this;\n        };\n        $$.brush.scale = function (scale) {\n            return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n    };\n    c3_chart_internal_fn.initSubchart = function () {\n        var $$ = this, config = $$.config,\n            context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n            visibility = config.subchart_show ? 'visible' : 'hidden';\n\n        context.style('visibility', visibility);\n\n        // Define g for chart area\n        context.append('g')\n            .attr(\"clip-path\", $$.clipPathForSubchart)\n            .attr('class', CLASS.chart);\n\n        // Define g for bar chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n\n        // Define g for line chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n\n        // Add extent rect for Brush\n        context.append(\"g\")\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.brush)\n            .call($$.brush);\n\n        // ATTENTION: This must be called AFTER chart added\n        // Add Axis\n        $$.axes.subx = context.append(\"g\")\n            .attr(\"class\", CLASS.axisX)\n            .attr(\"transform\", $$.getTranslate('subx'))\n            .attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis)\n            .style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n    };\n    c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n        var $$ = this, context = $$.context, config = $$.config,\n            contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$);\n\n        if (config.subchart_show) {\n            //-- Bar --//\n            contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n                .data(targets)\n                .attr('class', classChartBar);\n            contextBarEnter = contextBarUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartBar);\n            // Bars for each data\n            contextBarEnter.append('g')\n                .attr(\"class\", classBars);\n\n            //-- Line --//\n            contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n                .data(targets)\n                .attr('class', classChartLine);\n            contextLineEnter = contextLineUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartLine);\n            // Lines for each data\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classLines);\n            // Area\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classAreas);\n\n            //-- Brush --//\n            context.selectAll('.' + CLASS.brush + ' rect')\n                .attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n        }\n    };\n    c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data($$.barData.bind($$));\n        $$.contextBar.enter().append('path')\n            .attr(\"class\", $$.classBar.bind($$))\n            .style(\"stroke\", 'none')\n            .style(\"fill\", $$.color);\n        $$.contextBar\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n        (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar)\n            .attr('d', drawBarOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.contextLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style('stroke', $$.color);\n        $$.contextLine\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n        (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine)\n            .attr(\"d\", drawLineOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.contextArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.contextArea\n            .style(\"opacity\", 0);\n        $$.contextArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n        (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea)\n            .attr(\"d\", drawAreaOnSub)\n            .style(\"fill\", this.color)\n            .style(\"opacity\", this.orgAreaOpacity);\n    };\n    c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            drawAreaOnSub, drawBarOnSub, drawLineOnSub;\n\n        $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n        // subchart\n        if (config.subchart_show) {\n            // reflect main chart to extent on subchart if zoomed\n            if (d3.event && d3.event.type === 'zoom') {\n                $$.brush.extent($$.x.orgDomain()).update();\n            }\n            // update subchart elements if needed\n            if (withSubchart) {\n\n                // extent rect\n                if (!$$.brush.empty()) {\n                    $$.brush.extent($$.x.orgDomain()).update();\n                }\n                // setup drawer - MEMO: this must be called after axis updated\n                drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n                drawBarOnSub = $$.generateDrawBar(barIndices, true);\n                drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n                $$.updateBarForSubchart(duration);\n                $$.updateLineForSubchart(duration);\n                $$.updateAreaForSubchart(duration);\n\n                $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n                $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n                $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n            }\n        }\n    };\n    c3_chart_internal_fn.redrawForBrush = function () {\n        var $$ = this, x = $$.x;\n        $$.redraw({\n            withTransition: false,\n            withY: $$.config.zoom_rescale,\n            withSubchart: false,\n            withUpdateXDomain: true,\n            withDimension: false\n        });\n        $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n    };\n    c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n        var $$ = this, subXAxis;\n        if (transitions && transitions.axisSubX) {\n            subXAxis = transitions.axisSubX;\n        } else {\n            subXAxis = $$.context.select('.' + CLASS.axisX);\n            if (withTransition) { subXAxis = subXAxis.transition(); }\n        }\n        $$.context.attr(\"transform\", $$.getTranslate('context'));\n        subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n    };\n    c3_chart_internal_fn.getDefaultExtent = function () {\n        var $$ = this, config = $$.config,\n            extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n        if ($$.isTimeSeries()) {\n            extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n        }\n        return extent;\n    };\n\n    c3_chart_internal_fn.initZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, startEvent;\n\n        $$.zoom = d3.behavior.zoom()\n            .on(\"zoomstart\", function () {\n                startEvent = d3.event.sourceEvent;\n                $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n                config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n            })\n            .on(\"zoom\", function () {\n                $$.redrawForZoom.call($$);\n            })\n            .on('zoomend', function () {\n                var event = d3.event.sourceEvent;\n                // if click, do nothing. otherwise, click interaction will be canceled.\n                if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n                    return;\n                }\n                $$.redrawEventRect();\n                $$.updateZoom();\n                config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n            });\n        $$.zoom.scale = function (scale) {\n            return config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n        $$.zoom.orgScaleExtent = function () {\n            var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n            return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n        };\n        $$.zoom.updateScaleExtent = function () {\n            var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n                extent = this.orgScaleExtent();\n            this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n            return this;\n        };\n    };\n    c3_chart_internal_fn.getZoomDomain = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n            max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateZoom = function () {\n        var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};\n        $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n        $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n    };\n    c3_chart_internal_fn.redrawForZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;\n        if (!config.zoom_enabled) {\n            return;\n        }\n        if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n            return;\n        }\n        if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n            x.domain(zoom.altDomain);\n            zoom.scale(x).updateScaleExtent();\n            return;\n        }\n        if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n            x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n        }\n        $$.redraw({\n            withTransition: false,\n            withY: config.zoom_rescale,\n            withSubchart: false,\n            withEventRect: false,\n            withDimension: false\n        });\n        if (d3.event.sourceEvent.type === 'mousemove') {\n            $$.cancelClick = true;\n        }\n        config.zoom_onzoom.call($$.api, x.orgDomain());\n    };\n\n    c3_chart_internal_fn.generateColor = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            colors = config.data_colors,\n            pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n            callback = config.data_color,\n            ids = [];\n\n        return function (d) {\n            var id = d.id || (d.data && d.data.id) || d, color;\n\n            // if callback function is provided\n            if (colors[id] instanceof Function) {\n                color = colors[id](d);\n            }\n            // if specified, choose that color\n            else if (colors[id]) {\n                color = colors[id];\n            }\n            // if not specified, choose from pattern\n            else {\n                if (ids.indexOf(id) < 0) { ids.push(id); }\n                color = pattern[ids.indexOf(id) % pattern.length];\n                colors[id] = color;\n            }\n            return callback instanceof Function ? callback(color, d) : color;\n        };\n    };\n    c3_chart_internal_fn.generateLevelColor = function () {\n        var $$ = this, config = $$.config,\n            colors = config.color_pattern,\n            threshold = config.color_threshold,\n            asValue = threshold.unit === 'value',\n            values = threshold.values && threshold.values.length ? threshold.values : [],\n            max = threshold.max || 100;\n        return notEmpty(config.color_threshold) ? function (value) {\n            var i, v, color = colors[colors.length - 1];\n            for (i = 0; i < values.length; i++) {\n                v = asValue ? value : (value * 100 / max);\n                if (v < values[i]) {\n                    color = colors[i];\n                    break;\n                }\n            }\n            return color;\n        } : null;\n    };\n\n    c3_chart_internal_fn.getYFormat = function (forArc) {\n        var $$ = this,\n            formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n            formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n        return function (v, ratio, id) {\n            var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n            return format.call($$, v, ratio);\n        };\n    };\n    c3_chart_internal_fn.yFormat = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.y2Format = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.defaultValueFormat = function (v) {\n        return isValue(v) ? +v : \"\";\n    };\n    c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n        return (ratio * 100).toFixed(1) + '%';\n    };\n    c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n        var $$ = this, data_labels = $$.config.data_labels,\n            format, defaultFormat = function (v) { return isValue(v) ? +v : \"\"; };\n        // find format according to axis id\n        if (typeof data_labels.format === 'function') {\n            format = data_labels.format;\n        } else if (typeof data_labels.format === 'object') {\n            if (data_labels.format[targetId]) {\n                format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n            } else {\n                format = function () { return ''; };\n            }\n        } else {\n            format = defaultFormat;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.hasCaches = function (ids) {\n        for (var i = 0; i < ids.length; i++) {\n            if (! (ids[i] in this.cache)) { return false; }\n        }\n        return true;\n    };\n    c3_chart_internal_fn.addCache = function (id, target) {\n        this.cache[id] = this.cloneTarget(target);\n    };\n    c3_chart_internal_fn.getCaches = function (ids) {\n        var targets = [], i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); }\n        }\n        return targets;\n    };\n\n    var CLASS = c3_chart_internal_fn.CLASS = {\n        target: 'c3-target',\n        chart: 'c3-chart',\n        chartLine: 'c3-chart-line',\n        chartLines: 'c3-chart-lines',\n        chartBar: 'c3-chart-bar',\n        chartBars: 'c3-chart-bars',\n        chartText: 'c3-chart-text',\n        chartTexts: 'c3-chart-texts',\n        chartArc: 'c3-chart-arc',\n        chartArcs: 'c3-chart-arcs',\n        chartArcsTitle: 'c3-chart-arcs-title',\n        chartArcsBackground: 'c3-chart-arcs-background',\n        chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n        chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n        chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n        selectedCircle: 'c3-selected-circle',\n        selectedCircles: 'c3-selected-circles',\n        eventRect: 'c3-event-rect',\n        eventRects: 'c3-event-rects',\n        eventRectsSingle: 'c3-event-rects-single',\n        eventRectsMultiple: 'c3-event-rects-multiple',\n        zoomRect: 'c3-zoom-rect',\n        brush: 'c3-brush',\n        focused: 'c3-focused',\n        defocused: 'c3-defocused',\n        region: 'c3-region',\n        regions: 'c3-regions',\n        title: 'c3-title',\n        tooltipContainer: 'c3-tooltip-container',\n        tooltip: 'c3-tooltip',\n        tooltipName: 'c3-tooltip-name',\n        shape: 'c3-shape',\n        shapes: 'c3-shapes',\n        line: 'c3-line',\n        lines: 'c3-lines',\n        bar: 'c3-bar',\n        bars: 'c3-bars',\n        circle: 'c3-circle',\n        circles: 'c3-circles',\n        arc: 'c3-arc',\n        arcs: 'c3-arcs',\n        area: 'c3-area',\n        areas: 'c3-areas',\n        empty: 'c3-empty',\n        text: 'c3-text',\n        texts: 'c3-texts',\n        gaugeValue: 'c3-gauge-value',\n        grid: 'c3-grid',\n        gridLines: 'c3-grid-lines',\n        xgrid: 'c3-xgrid',\n        xgrids: 'c3-xgrids',\n        xgridLine: 'c3-xgrid-line',\n        xgridLines: 'c3-xgrid-lines',\n        xgridFocus: 'c3-xgrid-focus',\n        ygrid: 'c3-ygrid',\n        ygrids: 'c3-ygrids',\n        ygridLine: 'c3-ygrid-line',\n        ygridLines: 'c3-ygrid-lines',\n        axis: 'c3-axis',\n        axisX: 'c3-axis-x',\n        axisXLabel: 'c3-axis-x-label',\n        axisY: 'c3-axis-y',\n        axisYLabel: 'c3-axis-y-label',\n        axisY2: 'c3-axis-y2',\n        axisY2Label: 'c3-axis-y2-label',\n        legendBackground: 'c3-legend-background',\n        legendItem: 'c3-legend-item',\n        legendItemEvent: 'c3-legend-item-event',\n        legendItemTile: 'c3-legend-item-tile',\n        legendItemHidden: 'c3-legend-item-hidden',\n        legendItemFocused: 'c3-legend-item-focused',\n        dragarea: 'c3-dragarea',\n        EXPANDED: '_expanded_',\n        SELECTED: '_selected_',\n        INCLUDED: '_included_'\n    };\n    c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n        return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n    };\n    c3_chart_internal_fn.classText = function (d) {\n        return this.generateClass(CLASS.text, d.index);\n    };\n    c3_chart_internal_fn.classTexts = function (d) {\n        return this.generateClass(CLASS.texts, d.id);\n    };\n    c3_chart_internal_fn.classShape = function (d) {\n        return this.generateClass(CLASS.shape, d.index);\n    };\n    c3_chart_internal_fn.classShapes = function (d) {\n        return this.generateClass(CLASS.shapes, d.id);\n    };\n    c3_chart_internal_fn.classLine = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n    };\n    c3_chart_internal_fn.classLines = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n    };\n    c3_chart_internal_fn.classCircle = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n    };\n    c3_chart_internal_fn.classCircles = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n    };\n    c3_chart_internal_fn.classBar = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n    };\n    c3_chart_internal_fn.classBars = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n    };\n    c3_chart_internal_fn.classArc = function (d) {\n        return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n    };\n    c3_chart_internal_fn.classArcs = function (d) {\n        return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n    };\n    c3_chart_internal_fn.classArea = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n    };\n    c3_chart_internal_fn.classAreas = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n    };\n    c3_chart_internal_fn.classRegion = function (d, i) {\n        return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n    };\n    c3_chart_internal_fn.classEvent = function (d) {\n        return this.generateClass(CLASS.eventRect, d.index);\n    };\n    c3_chart_internal_fn.classTarget = function (id) {\n        var $$ = this;\n        var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';\n        if (additionalClassSuffix) {\n            additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n        }\n        return $$.generateClass(CLASS.target, id) + additionalClass;\n    };\n    c3_chart_internal_fn.classFocus = function (d) {\n        return this.classFocused(d) + this.classDefocused(d);\n    };\n    c3_chart_internal_fn.classFocused = function (d) {\n        return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n    };\n    c3_chart_internal_fn.classDefocused = function (d) {\n        return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n    };\n    c3_chart_internal_fn.classChartText = function (d) {\n        return CLASS.chartText + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartLine = function (d) {\n        return CLASS.chartLine + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartBar = function (d) {\n        return CLASS.chartBar + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartArc = function (d) {\n        return CLASS.chartArc + this.classTarget(d.data.id);\n    };\n    c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n        return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n    };\n    c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n        return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n        var $$ = this;\n        ids = ids || [];\n        return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null;\n    };\n    c3_chart_internal_fn.selectorLegend = function (id) {\n        return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorLegends = function (ids) {\n        var $$ = this;\n        return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null;\n    };\n\n    var isValue = c3_chart_internal_fn.isValue = function (v) {\n        return v || v === 0;\n    },\n        isFunction = c3_chart_internal_fn.isFunction = function (o) {\n            return typeof o === 'function';\n        },\n        isString = c3_chart_internal_fn.isString = function (o) {\n            return typeof o === 'string';\n        },\n        isUndefined = c3_chart_internal_fn.isUndefined = function (v) {\n            return typeof v === 'undefined';\n        },\n        isDefined = c3_chart_internal_fn.isDefined = function (v) {\n            return typeof v !== 'undefined';\n        },\n        ceil10 = c3_chart_internal_fn.ceil10 = function (v) {\n            return Math.ceil(v / 10) * 10;\n        },\n        asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) {\n            return Math.ceil(n) + 0.5;\n        },\n        diffDomain = c3_chart_internal_fn.diffDomain = function (d) {\n            return d[1] - d[0];\n        },\n        isEmpty = c3_chart_internal_fn.isEmpty = function (o) {\n            return typeof o === 'undefined' || o === null || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0);\n        },\n        notEmpty = c3_chart_internal_fn.notEmpty = function (o) {\n            return !c3_chart_internal_fn.isEmpty(o);\n        },\n        getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) {\n            return isDefined(options[key]) ? options[key] : defaultValue;\n        },\n        hasValue = c3_chart_internal_fn.hasValue = function (dict, value) {\n            var found = false;\n            Object.keys(dict).forEach(function (key) {\n                if (dict[key] === value) { found = true; }\n            });\n            return found;\n        },\n        sanitise = c3_chart_internal_fn.sanitise = function (str) {\n            return typeof str === 'string' ? str.replace(/</g, '&lt;').replace(/>/g, '&gt;') : str;\n        },\n        getPathBox = c3_chart_internal_fn.getPathBox = function (path) {\n            var box = path.getBoundingClientRect(),\n                items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n                minX = items[0].x, minY = Math.min(items[0].y, items[1].y);\n            return {x: minX, y: minY, width: box.width, height: box.height};\n        };\n\n    c3_chart_fn.focus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        this.revert();\n        this.defocus();\n        candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.expandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, true);\n\n        $$.focusedTargetIds = targetIds;\n        $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n\n    c3_chart_fn.defocus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, false);\n\n        $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n        $$.defocusedTargetIds = targetIds;\n    };\n\n    c3_chart_fn.revert = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        if ($$.config.legend_show) {\n            $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n            $$.legend.selectAll($$.selectorLegends(targetIds))\n                .filter(function () {\n                    return $$.d3.select(this).classed(CLASS.legendItemFocused);\n                })\n                .classed(CLASS.legendItemFocused, false);\n        }\n\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n    };\n\n    c3_chart_fn.show = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.removeHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 1, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 1);\n            });\n\n        if (options.withLegend) {\n            $$.showLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.hide = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.addHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 0, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 0);\n            });\n\n        if (options.withLegend) {\n            $$.hideLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.toggle = function (targetIds, options) {\n        var that = this, $$ = this.internal;\n        $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n            $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n        });\n    };\n\n    c3_chart_fn.zoom = function (domain) {\n        var $$ = this.internal;\n        if (domain) {\n            if ($$.isTimeSeries()) {\n                domain = domain.map(function (x) { return $$.parseDate(x); });\n            }\n            $$.brush.extent(domain);\n            $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale});\n            $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n        }\n        return $$.brush.extent();\n    };\n    c3_chart_fn.zoom.enable = function (enabled) {\n        var $$ = this.internal;\n        $$.config.zoom_enabled = enabled;\n        $$.updateAndRedraw();\n    };\n    c3_chart_fn.unzoom = function () {\n        var $$ = this.internal;\n        $$.brush.clear().update();\n        $$.redraw({withUpdateXDomain: true});\n    };\n\n    c3_chart_fn.zoom.max = function (max) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (max === 0 || max) {\n            config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n        }\n        else {\n            return config.zoom_x_max;\n        }\n    };\n\n    c3_chart_fn.zoom.min = function (min) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (min === 0 || min) {\n            config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n        }\n        else {\n            return config.zoom_x_min;\n        }\n    };\n\n    c3_chart_fn.zoom.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.domain.max(range.max); }\n            if (isDefined(range.min)) { this.domain.min(range.min); }\n        } else {\n            return {\n                max: this.domain.max(),\n                min: this.domain.min()\n            };\n        }\n    };\n\n    c3_chart_fn.load = function (args) {\n        var $$ = this.internal, config = $$.config;\n        // update xs if specified\n        if (args.xs) {\n            $$.addXs(args.xs);\n        }\n        // update names if exists\n        if ('names' in args) {\n            c3_chart_fn.data.names.bind(this)(args.names);\n        }\n        // update classes if exists\n        if ('classes' in args) {\n            Object.keys(args.classes).forEach(function (id) {\n                config.data_classes[id] = args.classes[id];\n            });\n        }\n        // update categories if exists\n        if ('categories' in args && $$.isCategorized()) {\n            config.axis_x_categories = args.categories;\n        }\n        // update axes if exists\n        if ('axes' in args) {\n            Object.keys(args.axes).forEach(function (id) {\n                config.data_axes[id] = args.axes[id];\n            });\n        }\n        // update colors if exists\n        if ('colors' in args) {\n            Object.keys(args.colors).forEach(function (id) {\n                config.data_colors[id] = args.colors[id];\n            });\n        }\n        // use cache if exists\n        if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n            $$.load($$.getCaches(args.cacheIds), args.done);\n            return;\n        }\n        // unload if needed\n        if ('unload' in args) {\n            // TODO: do not unload if target will load (included in url/rows/columns)\n            $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () {\n                $$.loadFromArgs(args);\n            });\n        } else {\n            $$.loadFromArgs(args);\n        }\n    };\n\n    c3_chart_fn.unload = function (args) {\n        var $$ = this.internal;\n        args = args || {};\n        if (args instanceof Array) {\n            args = {ids: args};\n        } else if (typeof args === 'string') {\n            args = {ids: [args]};\n        }\n        $$.unload($$.mapToTargetIds(args.ids), function () {\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n            if (args.done) { args.done(); }\n        });\n    };\n\n    c3_chart_fn.flow = function (args) {\n        var $$ = this.internal,\n            targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(),\n            dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;\n\n        if (args.json) {\n            data = $$.convertJsonToData(args.json, args.keys);\n        }\n        else if (args.rows) {\n            data = $$.convertRowsToData(args.rows);\n        }\n        else if (args.columns) {\n            data = $$.convertColumnsToData(args.columns);\n        }\n        else {\n            return;\n        }\n        targets = $$.convertDataToTargets(data, true);\n\n        // Update/Add data\n        $$.data.targets.forEach(function (t) {\n            var found = false, i, j;\n            for (i = 0; i < targets.length; i++) {\n                if (t.id === targets[i].id) {\n                    found = true;\n\n                    if (t.values[t.values.length - 1]) {\n                        tail = t.values[t.values.length - 1].index + 1;\n                    }\n                    length = targets[i].values.length;\n\n                    for (j = 0; j < length; j++) {\n                        targets[i].values[j].index = tail + j;\n                        if (!$$.isTimeSeries()) {\n                            targets[i].values[j].x = tail + j;\n                        }\n                    }\n                    t.values = t.values.concat(targets[i].values);\n\n                    targets.splice(i, 1);\n                    break;\n                }\n            }\n            if (!found) { notfoundIds.push(t.id); }\n        });\n\n        // Append null for not found targets\n        $$.data.targets.forEach(function (t) {\n            var i, j;\n            for (i = 0; i < notfoundIds.length; i++) {\n                if (t.id === notfoundIds[i]) {\n                    tail = t.values[t.values.length - 1].index + 1;\n                    for (j = 0; j < length; j++) {\n                        t.values.push({\n                            id: t.id,\n                            index: tail + j,\n                            x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n                            value: null\n                        });\n                    }\n                }\n            }\n        });\n\n        // Generate null values for new target\n        if ($$.data.targets.length) {\n            targets.forEach(function (t) {\n                var i, missing = [];\n                for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n                    missing.push({\n                        id: t.id,\n                        index: i,\n                        x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n                        value: null\n                    });\n                }\n                t.values.forEach(function (v) {\n                    v.index += tail;\n                    if (!$$.isTimeSeries()) {\n                        v.x += tail;\n                    }\n                });\n                t.values = missing.concat(t.values);\n            });\n        }\n        $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n        // check data count because behavior needs to change when it's only one\n        dataCount = $$.getMaxDataCount();\n        baseTarget = $$.data.targets[0];\n        baseValue = baseTarget.values[0];\n\n        // Update length to flow if needed\n        if (isDefined(args.to)) {\n            length = 0;\n            to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n            baseTarget.values.forEach(function (v) {\n                if (v.x < to) { length++; }\n            });\n        } else if (isDefined(args.length)) {\n            length = args.length;\n        }\n\n        // If only one data, update the domain to flow from left edge of the chart\n        if (!orgDataCount) {\n            if ($$.isTimeSeries()) {\n                if (baseTarget.values.length > 1) {\n                    diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n                } else {\n                    diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n                }\n            } else {\n                diff = 1;\n            }\n            domain = [baseValue.x - diff, baseValue.x];\n            $$.updateXDomain(null, true, true, false, domain);\n        } else if (orgDataCount === 1) {\n            if ($$.isTimeSeries()) {\n                diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n                domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n                $$.updateXDomain(null, true, true, false, domain);\n            }\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({\n            flow: {\n                index: baseValue.index,\n                length: length,\n                duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n                done: args.done,\n                orgDataCount: orgDataCount,\n            },\n            withLegend: true,\n            withTransition: orgDataCount > 1,\n            withTrimXDomain: false,\n            withUpdateXAxis: true,\n        });\n    };\n\n    c3_chart_internal_fn.generateFlow = function (args) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n\n        return function () {\n            var targets = args.targets,\n                flow = args.flow,\n                drawBar = args.drawBar,\n                drawLine = args.drawLine,\n                drawArea = args.drawArea,\n                cx = args.cx,\n                cy = args.cy,\n                xv = args.xv,\n                xForText = args.xForText,\n                yForText = args.yForText,\n                duration = args.duration;\n\n            var translateX, scaleX = 1, transform,\n                flowIndex = flow.index,\n                flowLength = flow.length,\n                flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n                flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n                orgDomain = $$.x.domain(), domain,\n                durationForFlow = flow.duration || duration,\n                done = flow.done || function () {},\n                wait = $$.generateWait();\n\n            var xgrid = $$.xgrid || d3.selectAll([]),\n                xgridLines = $$.xgridLines || d3.selectAll([]),\n                mainRegion = $$.mainRegion || d3.selectAll([]),\n                mainText = $$.mainText || d3.selectAll([]),\n                mainBar = $$.mainBar || d3.selectAll([]),\n                mainLine = $$.mainLine || d3.selectAll([]),\n                mainArea = $$.mainArea || d3.selectAll([]),\n                mainCircle = $$.mainCircle || d3.selectAll([]);\n\n            // set flag\n            $$.flowing = true;\n\n            // remove head data after rendered\n            $$.data.targets.forEach(function (d) {\n                d.values.splice(0, flowLength);\n            });\n\n            // update x domain to generate axis elements for flow\n            domain = $$.updateXDomain(targets, true, true);\n            // update elements related to x scale\n            if ($$.updateXGrid) { $$.updateXGrid(true); }\n\n            // generate transform to flow\n            if (!flow.orgDataCount) { // if empty\n                if ($$.data.targets[0].values.length !== 1) {\n                    translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n                } else {\n                    if ($$.isTimeSeries()) {\n                        flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n                        flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n                        translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n                    } else {\n                        translateX = diffDomain(domain) / 2;\n                    }\n                }\n            } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n                translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n            } else {\n                if ($$.isTimeSeries()) {\n                    translateX = ($$.x(orgDomain[0]) - $$.x(domain[0]));\n                } else {\n                    translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x));\n                }\n            }\n            scaleX = (diffDomain(orgDomain) / diffDomain(domain));\n            transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n            $$.hideXGridFocus();\n\n            d3.transition().ease('linear').duration(durationForFlow).each(function () {\n                wait.add($$.axes.x.transition().call($$.xAxis));\n                wait.add(mainBar.transition().attr('transform', transform));\n                wait.add(mainLine.transition().attr('transform', transform));\n                wait.add(mainArea.transition().attr('transform', transform));\n                wait.add(mainCircle.transition().attr('transform', transform));\n                wait.add(mainText.transition().attr('transform', transform));\n                wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n                wait.add(xgrid.transition().attr('transform', transform));\n                wait.add(xgridLines.transition().attr('transform', transform));\n            })\n            .call(wait, function () {\n                var i, shapes = [], texts = [], eventRects = [];\n\n                // remove flowed elements\n                if (flowLength) {\n                    for (i = 0; i < flowLength; i++) {\n                        shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n                        texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n                        eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n                    }\n                    $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n                    $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n                    $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n                    $$.svg.select('.' + CLASS.xgrid).remove();\n                }\n\n                // draw again for removing flowed elements and reverting attr\n                xgrid\n                    .attr('transform', null)\n                    .attr($$.xgridAttr);\n                xgridLines\n                    .attr('transform', null);\n                xgridLines.select('line')\n                    .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                    .attr(\"x2\", config.axis_rotated ? $$.width : xv);\n                xgridLines.select('text')\n                    .attr(\"x\", config.axis_rotated ? $$.width : 0)\n                    .attr(\"y\", xv);\n                mainBar\n                    .attr('transform', null)\n                    .attr(\"d\", drawBar);\n                mainLine\n                    .attr('transform', null)\n                    .attr(\"d\", drawLine);\n                mainArea\n                    .attr('transform', null)\n                    .attr(\"d\", drawArea);\n                mainCircle\n                    .attr('transform', null)\n                    .attr(\"cx\", cx)\n                    .attr(\"cy\", cy);\n                mainText\n                    .attr('transform', null)\n                    .attr('x', xForText)\n                    .attr('y', yForText)\n                    .style('fill-opacity', $$.opacityForText.bind($$));\n                mainRegion\n                    .attr('transform', null);\n                mainRegion.select('rect').filter($$.isRegionOnX)\n                    .attr(\"x\", $$.regionX.bind($$))\n                    .attr(\"width\", $$.regionWidth.bind($$));\n\n                if (config.interaction_enabled) {\n                    $$.redrawEventRect();\n                }\n\n                // callback for end of flow\n                done();\n\n                $$.flowing = false;\n            });\n        };\n    };\n\n    c3_chart_fn.selected = function (targetId) {\n        var $$ = this.internal, d3 = $$.d3;\n        return d3.merge(\n            $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape)\n                .filter(function () { return d3.select(this).classed(CLASS.SELECTED); })\n                .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); })\n        );\n    };\n    c3_chart_fn.select = function (ids, indices, resetOther) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d) && !isSelected) {\n                    toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n                }\n            } else if (isDefined(resetOther) && resetOther) {\n                if (isSelected) {\n                    toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                }\n            }\n        });\n    };\n    c3_chart_fn.unselect = function (ids, indices) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d)) {\n                    if (isSelected) {\n                        toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                    }\n                }\n            }\n        });\n    };\n\n    c3_chart_fn.transform = function (type, targetIds) {\n        var $$ = this.internal,\n            options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null;\n        $$.transformTo(targetIds, type, options);\n    };\n\n    c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n        var $$ = this,\n            withTransitionForAxis = !$$.hasArcType(),\n            options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis};\n        options.withTransitionForTransform = false;\n        $$.transiting = false;\n        $$.setTargetType(targetIds, type);\n        $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n        $$.updateAndRedraw(options);\n    };\n\n    c3_chart_fn.groups = function (groups) {\n        var $$ = this.internal, config = $$.config;\n        if (isUndefined(groups)) { return config.data_groups; }\n        config.data_groups = groups;\n        $$.redraw();\n        return config.data_groups;\n    };\n\n    c3_chart_fn.xgrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_x_lines; }\n        config.grid_x_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_x_lines;\n    };\n    c3_chart_fn.xgrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, true);\n    };\n\n    c3_chart_fn.ygrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_y_lines; }\n        config.grid_y_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_y_lines;\n    };\n    c3_chart_fn.ygrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, false);\n    };\n\n    c3_chart_fn.regions = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = regions;\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.add = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = config.regions.concat(regions);\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.remove = function (options) {\n        var $$ = this.internal, config = $$.config,\n            duration, classes, regions;\n\n        options = options || {};\n        duration = $$.getOption(options, \"duration\", config.transition_duration);\n        classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n        regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; }));\n        (duration ? regions.transition().duration(duration) : regions)\n            .style('opacity', 0)\n            .remove();\n\n        config.regions = config.regions.filter(function (region) {\n            var found = false;\n            if (!region['class']) {\n                return true;\n            }\n            region['class'].split(' ').forEach(function (c) {\n                if (classes.indexOf(c) >= 0) { found = true; }\n            });\n            return !found;\n        });\n\n        return config.regions;\n    };\n\n    c3_chart_fn.data = function (targetIds) {\n        var targets = this.internal.data.targets;\n        return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n            return [].concat(targetIds).indexOf(t.id) >= 0;\n        });\n    };\n    c3_chart_fn.data.shown = function (targetIds) {\n        return this.internal.filterTargetsToShow(this.data(targetIds));\n    };\n    c3_chart_fn.data.values = function (targetId) {\n        var targets, values = null;\n        if (targetId) {\n            targets = this.data(targetId);\n            values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;\n        }\n        return values;\n    };\n    c3_chart_fn.data.names = function (names) {\n        this.internal.clearLegendItemTextBoxCache();\n        return this.internal.updateDataAttributes('names', names);\n    };\n    c3_chart_fn.data.colors = function (colors) {\n        return this.internal.updateDataAttributes('colors', colors);\n    };\n    c3_chart_fn.data.axes = function (axes) {\n        return this.internal.updateDataAttributes('axes', axes);\n    };\n\n    c3_chart_fn.category = function (i, category) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length > 1) {\n            config.axis_x_categories[i] = category;\n            $$.redraw();\n        }\n        return config.axis_x_categories[i];\n    };\n    c3_chart_fn.categories = function (categories) {\n        var $$ = this.internal, config = $$.config;\n        if (!arguments.length) { return config.axis_x_categories; }\n        config.axis_x_categories = categories;\n        $$.redraw();\n        return config.axis_x_categories;\n    };\n\n    // TODO: fix\n    c3_chart_fn.color = function (id) {\n        var $$ = this.internal;\n        return $$.color(id); // more patterns\n    };\n\n    c3_chart_fn.x = function (x) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetX($$.data.targets, x);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n    c3_chart_fn.xs = function (xs) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetXs($$.data.targets, xs);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n\n    c3_chart_fn.axis = function () {};\n    c3_chart_fn.axis.labels = function (labels) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            Object.keys(labels).forEach(function (axisId) {\n                $$.axis.setLabelText(axisId, labels[axisId]);\n            });\n            $$.axis.updateLabels();\n        }\n        // TODO: return some values?\n    };\n    c3_chart_fn.axis.max = function (max) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof max === 'object') {\n                if (isValue(max.x)) { config.axis_x_max = max.x; }\n                if (isValue(max.y)) { config.axis_y_max = max.y; }\n                if (isValue(max.y2)) { config.axis_y2_max = max.y2; }\n            } else {\n                config.axis_y_max = config.axis_y2_max = max;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_max,\n                y: config.axis_y_max,\n                y2: config.axis_y2_max\n            };\n        }\n    };\n    c3_chart_fn.axis.min = function (min) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof min === 'object') {\n                if (isValue(min.x)) { config.axis_x_min = min.x; }\n                if (isValue(min.y)) { config.axis_y_min = min.y; }\n                if (isValue(min.y2)) { config.axis_y2_min = min.y2; }\n            } else {\n                config.axis_y_min = config.axis_y2_min = min;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_min,\n                y: config.axis_y_min,\n                y2: config.axis_y2_min\n            };\n        }\n    };\n    c3_chart_fn.axis.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.axis.max(range.max); }\n            if (isDefined(range.min)) { this.axis.min(range.min); }\n        } else {\n            return {\n                max: this.axis.max(),\n                min: this.axis.min()\n            };\n        }\n    };\n\n    c3_chart_fn.legend = function () {};\n    c3_chart_fn.legend.show = function (targetIds) {\n        var $$ = this.internal;\n        $$.showLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n    c3_chart_fn.legend.hide = function (targetIds) {\n        var $$ = this.internal;\n        $$.hideLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n\n    c3_chart_fn.resize = function (size) {\n        var $$ = this.internal, config = $$.config;\n        config.size_width = size ? size.width : null;\n        config.size_height = size ? size.height : null;\n        this.flush();\n    };\n\n    c3_chart_fn.flush = function () {\n        var $$ = this.internal;\n        $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false});\n    };\n\n    c3_chart_fn.destroy = function () {\n        var $$ = this.internal;\n\n        window.clearInterval($$.intervalForObserveInserted);\n\n        if ($$.resizeTimeout !== undefined) {\n            window.clearTimeout($$.resizeTimeout);\n        }\n\n        if (window.detachEvent) {\n            window.detachEvent('onresize', $$.resizeFunction);\n        } else if (window.removeEventListener) {\n            window.removeEventListener('resize', $$.resizeFunction);\n        } else {\n            var wrapper = window.onresize;\n            // check if no one else removed our wrapper and remove our resizeFunction from it\n            if (wrapper && wrapper.add && wrapper.remove) {\n                wrapper.remove($$.resizeFunction);\n            }\n        }\n\n        $$.selectChart.classed('c3', false).html(\"\");\n\n        // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n        Object.keys($$).forEach(function (key) {\n            $$[key] = null;\n        });\n\n        return null;\n    };\n\n    c3_chart_fn.tooltip = function () {};\n    c3_chart_fn.tooltip.show = function (args) {\n        var $$ = this.internal, index, mouse;\n\n        // determine mouse position on the chart\n        if (args.mouse) {\n            mouse = args.mouse;\n        }\n\n        // determine focus data\n        if (args.data) {\n            if ($$.isMultipleX()) {\n                // if multiple xs, target point will be determined by mouse\n                mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n                index = null;\n            } else {\n                // TODO: when tooltip_grouped = false\n                index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n            }\n        }\n        else if (typeof args.x !== 'undefined') {\n            index = $$.getIndexByX(args.x);\n        }\n        else if (typeof args.index !== 'undefined') {\n            index = args.index;\n        }\n\n        // emulate mouse events to show\n        $$.dispatchEvent('mouseover', index, mouse);\n        $$.dispatchEvent('mousemove', index, mouse);\n\n        $$.config.tooltip_onshow.call($$, args.data);\n    };\n    c3_chart_fn.tooltip.hide = function () {\n        // TODO: get target data by checking the state of focus\n        this.internal.dispatchEvent('mouseout', 0);\n\n        this.internal.config.tooltip_onhide.call(this);\n    };\n\n    // Features:\n    // 1. category axis\n    // 2. ceil values of translate/x/y to int for half pixel antialiasing\n    // 3. multiline tick text\n    var tickTextCharSize;\n    function c3_axis(d3, params) {\n        var scale = d3.scale.linear(), orient = \"bottom\", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;\n\n        var tickOffset = 0, tickCulling = true, tickCentered;\n\n        params = params || {};\n        outerTickSize = params.withOuterTick ? 6 : 0;\n\n        function axisX(selection, x) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n            });\n        }\n        function axisY(selection, y) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n            });\n        }\n        function scaleExtent(domain) {\n            var start = domain[0], stop = domain[domain.length - 1];\n            return start < stop ? [ start, stop ] : [ stop, start ];\n        }\n        function generateTicks(scale) {\n            var i, domain, ticks = [];\n            if (scale.ticks) {\n                return scale.ticks.apply(scale, tickArguments);\n            }\n            domain = scale.domain();\n            for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n                ticks.push(i);\n            }\n            if (ticks.length > 0 && ticks[0] > 0) {\n                ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n            }\n            return ticks;\n        }\n        function copyScale() {\n            var newScale = scale.copy(), domain;\n            if (params.isCategory) {\n                domain = scale.domain();\n                newScale.domain([domain[0], domain[1] - 1]);\n            }\n            return newScale;\n        }\n        function textFormatted(v) {\n            var formatted = tickFormat ? tickFormat(v) : v;\n            return typeof formatted !== 'undefined' ? formatted : '';\n        }\n        function getSizeFor1Char(tick) {\n            if (tickTextCharSize) {\n                return tickTextCharSize;\n            }\n            var size = {\n                h: 11.5,\n                w: 5.5\n            };\n            tick.select('text').text(textFormatted).each(function (d) {\n                var box = this.getBoundingClientRect(),\n                    text = textFormatted(d),\n                    h = box.height,\n                    w = text ? (box.width / text.length) : undefined;\n                if (h && w) {\n                    size.h = h;\n                    size.w = w;\n                }\n            }).text('');\n            tickTextCharSize = size;\n            return size;\n        }\n        function transitionise(selection) {\n            return params.withoutTransition ? selection : d3.transition(selection);\n        }\n        function axis(g) {\n            g.each(function () {\n                var g = axis.g = d3.select(this);\n\n                var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale();\n\n                var ticks = tickValues ? tickValues : generateTicks(scale1),\n                    tick = g.selectAll(\".tick\").data(ticks, scale1),\n                    tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n                    // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n                    tickExit = tick.exit().remove(),\n                    tickUpdate = transitionise(tick).style(\"opacity\", 1),\n                    tickTransform, tickX, tickY;\n\n                var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()),\n                    path = g.selectAll(\".domain\").data([ 0 ]),\n                    pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), transitionise(path));\n                tickEnter.append(\"line\");\n                tickEnter.append(\"text\");\n\n                var lineEnter = tickEnter.select(\"line\"),\n                    lineUpdate = tickUpdate.select(\"line\"),\n                    textEnter = tickEnter.select(\"text\"),\n                    textUpdate = tickUpdate.select(\"text\");\n\n                if (params.isCategory) {\n                    tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n                    tickX = tickCentered ? 0 : tickOffset;\n                    tickY = tickCentered ? tickOffset : 0;\n                } else {\n                    tickOffset = tickX = 0;\n                }\n\n                var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];\n                var tickLength = Math.max(innerTickSize, 0) + tickPadding,\n                    isVertical = orient === 'left' || orient === 'right';\n\n                // this should be called only when category axis\n                function splitTickText(d, maxWidth) {\n                    var tickText = textFormatted(d),\n                        subtext, spaceIndex, textWidth, splitted = [];\n\n                    if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n                        return tickText;\n                    }\n\n                    if (!maxWidth || maxWidth <= 0) {\n                        maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;\n                    }\n\n                    function split(splitted, text) {\n                        spaceIndex = undefined;\n                        for (var i = 1; i < text.length; i++) {\n                            if (text.charAt(i) === ' ') {\n                                spaceIndex = i;\n                            }\n                            subtext = text.substr(0, i + 1);\n                            textWidth = sizeFor1Char.w * subtext.length;\n                            // if text width gets over tick width, split by space index or crrent index\n                            if (maxWidth < textWidth) {\n                                return split(\n                                    splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)),\n                                    text.slice(spaceIndex ? spaceIndex + 1 : i)\n                                );\n                            }\n                        }\n                        return splitted.concat(text);\n                    }\n\n                    return split(splitted, tickText + \"\");\n                }\n\n                function tspanDy(d, i) {\n                    var dy = sizeFor1Char.h;\n                    if (i === 0) {\n                        if (orient === 'left' || orient === 'right') {\n                            dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3);\n                        } else {\n                            dy = \".71em\";\n                        }\n                    }\n                    return dy;\n                }\n\n                function tickSize(d) {\n                    var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset);\n                    return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0;\n                }\n\n                text = tick.select(\"text\");\n                tspan = text.selectAll('tspan')\n                    .data(function (d, i) {\n                        var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d));\n                        counts[i] = splitted.length;\n                        return splitted.map(function (s) {\n                            return { index: i, splitted: s };\n                        });\n                    });\n                tspan.enter().append('tspan');\n                tspan.exit().remove();\n                tspan.text(function (d) { return d.splitted; });\n\n                var rotate = params.tickTextRotate;\n\n                function textAnchorForText(rotate) {\n                    if (!rotate) {\n                        return 'middle';\n                    }\n                    return rotate > 0 ? \"start\" : \"end\";\n                }\n                function textTransform(rotate) {\n                    if (!rotate) {\n                        return '';\n                    }\n                    return \"rotate(\" + rotate + \")\";\n                }\n                function dxForText(rotate) {\n                    if (!rotate) {\n                        return 0;\n                    }\n                    return 8 * Math.sin(Math.PI * (rotate / 180));\n                }\n                function yForText(rotate) {\n                    if (!rotate) {\n                        return tickLength;\n                    }\n                    return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1);\n                }\n\n                switch (orient) {\n                case \"bottom\":\n                    {\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", innerTickSize);\n                        textEnter.attr(\"y\", tickLength);\n                        lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", tickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", yForText(rotate))\n                            .style(\"text-anchor\", textAnchorForText(rotate))\n                            .attr(\"transform\", textTransform(rotate));\n                        tspan.attr('x', 0).attr(\"dy\", tspanDy).attr('dx', dxForText(rotate));\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + outerTickSize + \"V0H\" + range[1] + \"V\" + outerTickSize);\n                        break;\n                    }\n                case \"top\":\n                    {\n                        // TODO: rotated tick text\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", -innerTickSize);\n                        textEnter.attr(\"y\", -tickLength);\n                        lineUpdate.attr(\"x2\", 0).attr(\"y2\", -innerTickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", -tickLength);\n                        text.style(\"text-anchor\", \"middle\");\n                        tspan.attr('x', 0).attr(\"dy\", \"0em\");\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + -outerTickSize + \"V0H\" + range[1] + \"V\" + -outerTickSize);\n                        break;\n                    }\n                case \"left\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", -innerTickSize);\n                        textEnter.attr(\"x\", -tickLength);\n                        lineUpdate.attr(\"x2\", -innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n                        textUpdate.attr(\"x\", -tickLength).attr(\"y\", tickOffset);\n                        text.style(\"text-anchor\", \"end\");\n                        tspan.attr('x', -tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + -outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + -outerTickSize);\n                        break;\n                    }\n                case \"right\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", innerTickSize);\n                        textEnter.attr(\"x\", tickLength);\n                        lineUpdate.attr(\"x2\", innerTickSize).attr(\"y2\", 0);\n                        textUpdate.attr(\"x\", tickLength).attr(\"y\", 0);\n                        text.style(\"text-anchor\", \"start\");\n                        tspan.attr('x', tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + outerTickSize);\n                        break;\n                    }\n                }\n                if (scale1.rangeBand) {\n                    var x = scale1, dx = x.rangeBand() / 2;\n                    scale0 = scale1 = function (d) {\n                        return x(d) + dx;\n                    };\n                } else if (scale0.rangeBand) {\n                    scale0 = scale1;\n                } else {\n                    tickExit.call(tickTransform, scale1);\n                }\n                tickEnter.call(tickTransform, scale0);\n                tickUpdate.call(tickTransform, scale1);\n            });\n        }\n        axis.scale = function (x) {\n            if (!arguments.length) { return scale; }\n            scale = x;\n            return axis;\n        };\n        axis.orient = function (x) {\n            if (!arguments.length) { return orient; }\n            orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + \"\" : \"bottom\";\n            return axis;\n        };\n        axis.tickFormat = function (format) {\n            if (!arguments.length) { return tickFormat; }\n            tickFormat = format;\n            return axis;\n        };\n        axis.tickCentered = function (isCentered) {\n            if (!arguments.length) { return tickCentered; }\n            tickCentered = isCentered;\n            return axis;\n        };\n        axis.tickOffset = function () {\n            return tickOffset;\n        };\n        axis.tickInterval = function () {\n            var interval, length;\n            if (params.isCategory) {\n                interval = tickOffset * 2;\n            }\n            else {\n                length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2;\n                interval = length / axis.g.selectAll('line').size();\n            }\n            return interval === Infinity ? 0 : interval;\n        };\n        axis.ticks = function () {\n            if (!arguments.length) { return tickArguments; }\n            tickArguments = arguments;\n            return axis;\n        };\n        axis.tickCulling = function (culling) {\n            if (!arguments.length) { return tickCulling; }\n            tickCulling = culling;\n            return axis;\n        };\n        axis.tickValues = function (x) {\n            if (typeof x === 'function') {\n                tickValues = function () {\n                    return x(scale.domain());\n                };\n            }\n            else {\n                if (!arguments.length) { return tickValues; }\n                tickValues = x;\n            }\n            return axis;\n        };\n        return axis;\n    }\n\n    c3_chart_internal_fn.isSafari = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n    };\n    c3_chart_internal_fn.isChrome = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Chrome') >= 0;\n    };\n\n    /* jshint ignore:start */\n\n    // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n    // this polyfill to avoid the confusion.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n    if (!Function.prototype.bind) {\n      Function.prototype.bind = function(oThis) {\n        if (typeof this !== 'function') {\n          // closest thing possible to the ECMAScript 5\n          // internal IsCallable function\n          throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n        }\n\n        var aArgs   = Array.prototype.slice.call(arguments, 1),\n            fToBind = this,\n            fNOP    = function() {},\n            fBound  = function() {\n              return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n        fNOP.prototype = this.prototype;\n        fBound.prototype = new fNOP();\n\n        return fBound;\n      };\n    }\n\n    //SVGPathSeg API polyfill\n    //https://github.com/progers/pathseg\n    //\n    //This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n    //SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n    //changes which were implemented in Firefox 43 and Chrome 46.\n    //Chrome 48 removes these APIs, so this polyfill is required.\n\n    (function() { \"use strict\";\n     if (!(\"SVGPathSeg\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n         window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {\n             this.pathSegType = type;\n             this.pathSegTypeAsLetter = typeAsLetter;\n             this._owningPathSegList = owningPathSegList;\n         }\n\n         SVGPathSeg.PATHSEG_UNKNOWN = 0;\n         SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n         SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n         SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n         SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n         SVGPathSeg.PATHSEG_LINETO_REL = 5;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n         SVGPathSeg.PATHSEG_ARC_ABS = 10;\n         SVGPathSeg.PATHSEG_ARC_REL = 11;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n         // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n         SVGPathSeg.prototype._segmentChanged = function() {\n             if (this._owningPathSegList)\n                 this._owningPathSegList.segmentChanged(this);\n         }\n\n         window.SVGPathSegClosePath = function(owningPathSegList) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n         }\n         SVGPathSegClosePath.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegClosePath.prototype.toString = function() { return \"[object SVGPathSegClosePath]\"; }\n         SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }\n         SVGPathSegClosePath.prototype.clone = function() { return new SVGPathSegClosePath(undefined); }\n\n         window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoAbs.prototype.toString = function() { return \"[object SVGPathSegMovetoAbs]\"; }\n         SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoAbs.prototype.clone = function() { return new SVGPathSegMovetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoRel.prototype.toString = function() { return \"[object SVGPathSegMovetoRel]\"; }\n         SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoRel.prototype.clone = function() { return new SVGPathSegMovetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoAbs]\"; }\n         SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoAbs.prototype.clone = function() { return new SVGPathSegLinetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoRel.prototype.toString = function() { return \"[object SVGPathSegLinetoRel]\"; }\n         SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoRel.prototype.clone = function() { return new SVGPathSegLinetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicAbs]\"; }\n         SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicRel]\"; }\n         SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticAbs]\"; }\n         SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticRel]\"; }\n         SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcAbs.prototype.toString = function() { return \"[object SVGPathSegArcAbs]\"; }\n         SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcAbs.prototype.clone = function() { return new SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcRel.prototype.toString = function() { return \"[object SVGPathSegArcRel]\"; }\n         SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcRel.prototype.clone = function() { return new SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalAbs]\"; }\n         SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new SVGPathSegLinetoHorizontalAbs(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalRel]\"; }\n         SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new SVGPathSegLinetoHorizontalRel(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalAbs]\"; }\n         SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new SVGPathSegLinetoVerticalAbs(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalRel]\"; }\n         SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new SVGPathSegLinetoVerticalRel(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothAbs]\"; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothRel]\"; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\"; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\"; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         // Add createSVGPathSeg* functions to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement.\n         SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new SVGPathSegClosePath(undefined); }\n         SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new SVGPathSegMovetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new SVGPathSegMovetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new SVGPathSegLinetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new SVGPathSegLinetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new SVGPathSegLinetoHorizontalAbs(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new SVGPathSegLinetoHorizontalRel(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new SVGPathSegLinetoVerticalAbs(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new SVGPathSegLinetoVerticalRel(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }\n     }\n\n     if (!(\"SVGPathSegList\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n         window.SVGPathSegList = function(pathElement) {\n             this._pathElement = pathElement;\n             this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n             // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n             this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n             this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         Object.defineProperty(SVGPathSegList.prototype, \"numberOfItems\", {\n             get: function() {\n                 this._checkPathSynchronizedToList();\n                 return this._list.length;\n             },\n             enumerable: true\n         });\n\n         // Add the pathSegList accessors to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n         Object.defineProperty(SVGPathElement.prototype, \"pathSegList\", {\n             get: function() {\n                 if (!this._pathSegList)\n                     this._pathSegList = new SVGPathSegList(this);\n                 return this._pathSegList;\n             },\n             enumerable: true\n         });\n         // FIXME: The following are not implemented and simply return SVGPathElement.pathSegList.\n         Object.defineProperty(SVGPathElement.prototype, \"normalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n\n         // Process any pending mutations to the path element and update the list as needed.\n         // This should be the first call of all public functions and is needed because\n         // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n         SVGPathSegList.prototype._checkPathSynchronizedToList = function() {\n             this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n         }\n\n         SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {\n             if (!this._pathElement)\n                 return;\n             var hasPathMutations = false;\n             mutationRecords.forEach(function(record) {\n                 if (record.attributeName == \"d\")\n                     hasPathMutations = true;\n             });\n             if (hasPathMutations)\n                 this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n         }\n\n         // Serialize the list and update the path's 'd' attribute.\n         SVGPathSegList.prototype._writeListToPath = function() {\n             this._pathElementMutationObserver.disconnect();\n             this._pathElement.setAttribute(\"d\", SVGPathSegList._pathSegArrayAsString(this._list));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         // When a path segment changes the list needs to be synchronized back to the path element.\n         SVGPathSegList.prototype.segmentChanged = function(pathSeg) {\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.clear = function() {\n             this._checkPathSynchronizedToList();\n\n             this._list.forEach(function(pathSeg) {\n                 pathSeg._owningPathSegList = null;\n             });\n             this._list = [];\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.initialize = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             this._list = [newItem];\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype._checkValidIndex = function(index) {\n             if (isNaN(index) || index < 0 || index >= this.numberOfItems)\n                 throw \"INDEX_SIZE_ERR\";\n         }\n\n         SVGPathSegList.prototype.getItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             return this._list[index];\n         }\n\n         SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n             if (index > this.numberOfItems)\n                 index = this.numberOfItems;\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.splice(index, 0, newItem);\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.replaceItem = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._checkValidIndex(index);\n             this._list[index] = newItem;\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.removeItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             var item = this._list[index];\n             this._list.splice(index, 1);\n             this._writeListToPath();\n             return item;\n         }\n\n         SVGPathSegList.prototype.appendItem = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.push(newItem);\n             newItem._owningPathSegList = this;\n             // TODO: Optimize this to just append to the existing attribute.\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {\n             var string = \"\";\n             var first = true;\n             pathSegArray.forEach(function(pathSeg) {\n                 if (first) {\n                     first = false;\n                     string += pathSeg._asPathString();\n                 } else {\n                     string += \" \" + pathSeg._asPathString();\n                 }\n             });\n             return string;\n         }\n\n         // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n         SVGPathSegList.prototype._parsePath = function(string) {\n             if (!string || string.length == 0)\n                 return [];\n\n             var owningPathSegList = this;\n\n             var Builder = function() {\n                 this.pathSegList = [];\n             }\n\n             Builder.prototype.appendSegment = function(pathSeg) {\n                 this.pathSegList.push(pathSeg);\n             }\n\n             var Source = function(string) {\n                 this._string = string;\n                 this._currentIndex = 0;\n                 this._endIndex = this._string.length;\n                 this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN;\n\n                 this._skipOptionalSpaces();\n             }\n\n             Source.prototype._isCurrentSpace = function() {\n                 var character = this._string[this._currentIndex];\n                 return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n             }\n\n             Source.prototype._skipOptionalSpaces = function() {\n                 while (this._currentIndex < this._endIndex && this._isCurrentSpace())\n                     this._currentIndex++;\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype._skipOptionalSpacesOrDelimiter = function() {\n                 if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\")\n                     return false;\n                 if (this._skipOptionalSpaces()) {\n                     if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n                         this._currentIndex++;\n                         this._skipOptionalSpaces();\n                     }\n                 }\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.hasMoreData = function() {\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.peekSegmentType = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 return this._pathSegTypeFromChar(lookahead);\n             }\n\n             Source.prototype._pathSegTypeFromChar = function(lookahead) {\n                 switch (lookahead) {\n                 case \"Z\":\n                 case \"z\":\n                     return SVGPathSeg.PATHSEG_CLOSEPATH;\n                 case \"M\":\n                     return SVGPathSeg.PATHSEG_MOVETO_ABS;\n                 case \"m\":\n                     return SVGPathSeg.PATHSEG_MOVETO_REL;\n                 case \"L\":\n                     return SVGPathSeg.PATHSEG_LINETO_ABS;\n                 case \"l\":\n                     return SVGPathSeg.PATHSEG_LINETO_REL;\n                 case \"C\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n                 case \"c\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n                 case \"Q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n                 case \"q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n                 case \"A\":\n                     return SVGPathSeg.PATHSEG_ARC_ABS;\n                 case \"a\":\n                     return SVGPathSeg.PATHSEG_ARC_REL;\n                 case \"H\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n                 case \"h\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n                 case \"V\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n                 case \"v\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n                 case \"S\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n                 case \"s\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n                 case \"T\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n                 case \"t\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n                 default:\n                     return SVGPathSeg.PATHSEG_UNKNOWN;\n                 }\n             }\n\n             Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {\n                 // Check for remaining coordinates in the current command.\n                 if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || (lookahead >= \"0\" && lookahead <= \"9\")) && previousCommand != SVGPathSeg.PATHSEG_CLOSEPATH) {\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_ABS)\n                         return SVGPathSeg.PATHSEG_LINETO_ABS;\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_REL)\n                         return SVGPathSeg.PATHSEG_LINETO_REL;\n                     return previousCommand;\n                 }\n                 return SVGPathSeg.PATHSEG_UNKNOWN;\n             }\n\n             Source.prototype.initialCommandIsMoveTo = function() {\n                 // If the path is empty it is still valid, so return true.\n                 if (!this.hasMoreData())\n                     return true;\n                 var command = this.peekSegmentType();\n                 // Path must start with moveTo.\n                 return command == SVGPathSeg.PATHSEG_MOVETO_ABS || command == SVGPathSeg.PATHSEG_MOVETO_REL;\n             }\n\n             // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n             // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n             Source.prototype._parseNumber = function() {\n                 var exponent = 0;\n                 var integer = 0;\n                 var frac = 1;\n                 var decimal = 0;\n                 var sign = 1;\n                 var expsign = 1;\n\n                 var startIndex = this._currentIndex;\n\n                 this._skipOptionalSpaces();\n\n                 // Read the sign.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\")\n                     this._currentIndex++;\n                 else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n                     this._currentIndex++;\n                     sign = -1;\n                 }\n\n                 if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\"))\n                     // The first character of a number must be one of [0-9+-.].\n                     return undefined;\n\n                 // Read the integer part, build right-to-left.\n                 var startIntPartIndex = this._currentIndex;\n                 while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                     this._currentIndex++; // Advance to first non-digit.\n\n                 if (this._currentIndex != startIntPartIndex) {\n                     var scanIntPartIndex = this._currentIndex - 1;\n                     var multiplier = 1;\n                     while (scanIntPartIndex >= startIntPartIndex) {\n                         integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n                         multiplier *= 10;\n                     }\n                 }\n\n                 // Read the decimals.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n                     this._currentIndex++;\n\n                     // There must be a least one digit following the .\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                         decimal += (this._string.charAt(this._currentIndex++) - \"0\") * (frac *= 0.1);\n                 }\n\n                 // Read the exponent part.\n                 if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && (this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\")) {\n                     this._currentIndex++;\n\n                     // Read the sign of the exponent.\n                     if (this._string.charAt(this._currentIndex) == \"+\") {\n                         this._currentIndex++;\n                     } else if (this._string.charAt(this._currentIndex) == \"-\") {\n                         this._currentIndex++;\n                         expsign = -1;\n                     }\n\n                     // There must be an exponent.\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                         exponent *= 10;\n                         exponent += (this._string.charAt(this._currentIndex) - \"0\");\n                         this._currentIndex++;\n                     }\n                 }\n\n                 var number = integer + decimal;\n                 number *= sign;\n\n                 if (exponent)\n                     number *= Math.pow(10, expsign * exponent);\n\n                 if (startIndex == this._currentIndex)\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n\n                 return number;\n             }\n\n             Source.prototype._parseArcFlag = function() {\n                 if (this._currentIndex >= this._endIndex)\n                     return undefined;\n                 var flag = false;\n                 var flagChar = this._string.charAt(this._currentIndex++);\n                 if (flagChar == \"0\")\n                     flag = false;\n                 else if (flagChar == \"1\")\n                     flag = true;\n                 else\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n                 return flag;\n             }\n\n             Source.prototype.parseSegment = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 var command = this._pathSegTypeFromChar(lookahead);\n                 if (command == SVGPathSeg.PATHSEG_UNKNOWN) {\n                     // Possibly an implicit command. Not allowed if this is the first command.\n                     if (this._previousCommand == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                     command = this._nextCommandHelper(lookahead, this._previousCommand);\n                     if (command == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                 } else {\n                     this._currentIndex++;\n                 }\n\n                 this._previousCommand = command;\n\n                 switch (command) {\n                 case SVGPathSeg.PATHSEG_MOVETO_REL:\n                     return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_MOVETO_ABS:\n                     return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_REL:\n                     return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_ABS:\n                     return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n                     return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n                     return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n                     return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n                     return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CLOSEPATH:\n                     this._skipOptionalSpaces();\n                     return new SVGPathSegClosePath(owningPathSegList);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n                     return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n                     return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_ARC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 case SVGPathSeg.PATHSEG_ARC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 default:\n                     throw \"Unknown path seg type.\"\n                 }\n             }\n\n             var builder = new Builder();\n             var source = new Source(string);\n\n             if (!source.initialCommandIsMoveTo())\n                 return [];\n             while (source.hasMoreData()) {\n                 var pathSeg = source.parseSegment();\n                 if (!pathSeg)\n                     return [];\n                 builder.appendSegment(pathSeg);\n             }\n\n             return builder.pathSegList;\n         }\n     }\n    }());\n\n    /* jshint ignore:end */\n\n    if (typeof define === 'function' && define.amd) {\n        define(\"c3\", [\"d3\"], function () { return c3; });\n    } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {\n        module.exports = c3;\n    } else {\n        window.c3 = c3;\n    }\n\n})(window);\n\n","// svg-pan-zoom v3.5.1\n// https://github.com/ariutta/svg-pan-zoom\n!function t(e,n,o){function i(r,a){if(!n[r]){if(!e[r]){var l=\"function\"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error(\"Cannot find module '\"+r+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var h=n[r]={exports:{}};e[r][0].call(h.exports,function(t){var n=e[r][1][t];return i(n?n:t)},h,h.exports,t,e,n,o)}return n[r].exports}for(var s=\"function\"==typeof require&&require,r=0;r<o.length;r++)i(o[r]);return i}({1:[function(t,e,n){var o=t(\"./svg-pan-zoom.js\");!function(t,n){\"function\"==typeof define&&define.amd?define(\"svg-pan-zoom\",[],function(){return o}):\"undefined\"!=typeof e&&e.exports&&(e.exports=o,t.svgPanZoom=o)}(window,document)},{\"./svg-pan-zoom.js\":4}],2:[function(t,e,n){var o=t(\"./svg-utilities\");e.exports={enable:function(t){var e=t.svg.querySelector(\"defs\");e||(e=document.createElementNS(o.svgNS,\"defs\"),t.svg.appendChild(e));var n=e.querySelector(\"style#svg-pan-zoom-controls-styles\");if(!n){var i=document.createElementNS(o.svgNS,\"style\");i.setAttribute(\"id\",\"svg-pan-zoom-controls-styles\"),i.setAttribute(\"type\",\"text/css\"),i.textContent=\".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }\",e.appendChild(i)}var s=document.createElementNS(o.svgNS,\"g\");s.setAttribute(\"id\",\"svg-pan-zoom-controls\"),s.setAttribute(\"transform\",\"translate(\"+(t.width-70)+\" \"+(t.height-76)+\") scale(0.75)\"),s.setAttribute(\"class\",\"svg-pan-zoom-control\"),s.appendChild(this._createZoomIn(t)),s.appendChild(this._createZoomReset(t)),s.appendChild(this._createZoomOut(t)),t.svg.appendChild(s),t.controlIcons=s},_createZoomIn:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-in\"),e.setAttribute(\"transform\",\"translate(30.5 5) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},_createZoomReset:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-reset-pan-zoom\"),e.setAttribute(\"transform\",\"translate(5 35) scale(0.4)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().reset()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"2\"),n.setAttribute(\"y\",\"2\"),n.setAttribute(\"width\",\"182\"),n.setAttribute(\"height\",\"58\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");i.setAttribute(\"d\",\"M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i);var s=document.createElementNS(o.svgNS,\"path\");return s.setAttribute(\"d\",\"M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z\"),s.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(s),e},_createZoomOut:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-out\"),e.setAttribute(\"transform\",\"translate(30.5 70) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{\"./svg-utilities\":5}],3:[function(t,e,n){var o=t(\"./svg-utilities\"),i=t(\"./utilities\"),s=function(t,e){this.init(t,e)};s.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=i.proxy(this.updateCTM,this),this.requestAnimationFrame=i.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},s.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute(\"viewBox\");if(t){var e=t.split(/[\\s\\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute(\"viewBox\")}else this.simpleViewBoxCache()},s.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},s.prototype.getViewBox=function(){return i.extend({},this.viewBox)},s.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),o=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=o}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},s.prototype.getOriginalState=function(){return i.extend({},this.originalState)},s.prototype.getState=function(){return i.extend({},this.activeState)},s.prototype.getZoom=function(){return this.activeState.zoom},s.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},s.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},s.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},s.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},s.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var o=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),s=!1,r=!1;o===!1?(t.e=this.getPan().x,t.f=this.getPan().y,s=r=!0):i.isObject(o)&&(o.x===!1?(t.e=this.getPan().x,s=!0):i.isNumber(o.x)&&(t.e=o.x),o.y===!1?(t.f=this.getPan().y,r=!0):i.isNumber(o.y)&&(t.f=o.y)),s&&r||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},s.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},s.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},s.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},s.prototype.pendingUpdate=!1,s.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},s.prototype.updateCTM=function(){var t=this.getCTM();o.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new s(t,e)}},{\"./svg-utilities\":5,\"./utilities\":7}],4:[function(t,e,n){var o=t(\"./uniwheel\"),i=t(\"./control-icons\"),s=t(\"./utilities\"),r=t(\"./svg-utilities\"),a=t(\"./shadow-viewport\"),l=function(t,e){this.init(t,e)},u={viewportSelector:\".svg-pan-zoom_viewport\",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:\"auto\",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector(\"defs\"),r.setupSvgAttributes(this.svg),this.options=s.extend(s.extend({},u),e),this.state=\"none\";var o=r.getBoundingClientRectNormalized(t);this.width=o.width,this.height=o.height,this.viewport=a(r.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&i.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var o=t.handleMouseDown(n,e);return e=n,o},touchstart:function(n){var o=t.handleMouseDown(n,e);return e=n,o},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var o=n.length-1;o>=0;o--)this.eventListeners.hasOwnProperty(n[o])&&delete this.eventListeners[n[o]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},o.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(o.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&\"none\"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,o=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),\"deltaMode\"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/o;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,n){var o=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*o.zoom,Math.min(this.options.maxZoom*o.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*o.zoom?t=this.options.minZoom*o.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*o.zoom&&(t=this.options.maxZoom*o.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),\"SVGPoint\"!==s.getType(e)){if(!(\"x\"in e&&\"y\"in e))throw new Error(\"Given point is invalid\");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute(\"class\")||\"\";if(e.indexOf(\"svg-pan-zoom-control\")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var o=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,o)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state=\"pan\",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&(this.state=\"none\")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var n=s.getSvg(t);if(null===n)return null;for(var o=h.length-1;o>=0;o--)if(h[o].svg===n)return h[o].instance.getPublicInstance();return h.push({svg:n,instance:new l(n,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{\"./control-icons\":2,\"./shadow-viewport\":3,\"./svg-utilities\":5,\"./uniwheel\":6,\"./utilities\":7}],5:[function(t,e,n){var o=t(\"./utilities\"),i=\"unknown\";document.documentMode&&(i=\"ie\"),e.exports={svgNS:\"http://www.w3.org/2000/svg\",xmlNS:\"http://www.w3.org/XML/1998/namespace\",xmlnsNS:\"http://www.w3.org/2000/xmlns/\",xlinkNS:\"http://www.w3.org/1999/xlink\",evNS:\"http://www.w3.org/2001/xml-events\",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error(\"Cannot get BoundingClientRect for SVG.\")},getOrCreateViewport:function(t,e){var n=null;if(n=o.isElement(e)?e:t.querySelector(e),!n){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return\"defs\"!==t.nodeName&&\"#text\"!==t.nodeName});1===i.length&&\"g\"===i[0].nodeName&&null===i[0].getAttribute(\"transform\")&&(n=i[0])}if(!n){var s=\"viewport-\"+(new Date).toISOString().replace(/\\D/g,\"\");n=document.createElementNS(this.svgNS,\"g\"),n.setAttribute(\"id\",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)\"defs\"!==r[r.length-a].nodeName&&n.appendChild(r[r.length-a]);t.appendChild(n)}var l=[];return n.getAttribute(\"class\")&&(l=n.getAttribute(\"class\").split(\" \")),~l.indexOf(\"svg-pan-zoom_viewport\")||(l.push(\"svg-pan-zoom_viewport\"),n.setAttribute(\"class\",l.join(\" \"))),n},setupSvgAttributes:function(t){if(t.setAttribute(\"xmlns\",this.svgNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:xlink\",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:ev\",this.evNS),null!==t.parentNode){var e=t.getAttribute(\"style\")||\"\";-1===e.toLowerCase().indexOf(\"overflow\")&&t.setAttribute(\"style\",\"overflow: hidden; \"+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:o.throttle(function(){for(var t=document.querySelectorAll(\"defs\"),e=t.length,n=0;e>n;n++){var o=t[n];o.parentNode.insertBefore(o,o)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var o=this,s=\"matrix(\"+e.a+\",\"+e.b+\",\"+e.c+\",\"+e.d+\",\"+e.e+\",\"+e.f+\")\";t.setAttributeNS(null,\"transform\",s),\"transform\"in t.style?t.style.transform=s:\"-ms-transform\"in t.style?t.style[\"-ms-transform\"]=s:\"-webkit-transform\"in t.style&&(t.style[\"-webkit-transform\"]=s),\"ie\"===i&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){o.refreshDefsGlobal()},o.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return o.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var o=t.createSVGPoint();return o.x=e,o.y=n,o}}},{\"./utilities\":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var o=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:\"wheel\",deltaMode:\"MozMousePixelScroll\"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return\"mousewheel\"==u?(n.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-1/40*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return c.push({element:t,fn:o,capture:n}),o}function e(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c[n].fn;return function(){}}function n(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c.splice(n,1)}function o(e,n,o,i){var s;s=\"wheel\"===u?o:t(e,o,i),e[a](h+n,s,i||!1)}function i(t,o,i,s){var r;r=\"wheel\"===u?i:e(t,s),t[l](h+o,r,s||!1),n(t,s)}function s(t,e,n){o(t,u,e,n),\"DOMMouseScroll\"==u&&o(t,\"MozMousePixelScroll\",e,n)}function r(t,e,n){i(t,u,e,n),\"DOMMouseScroll\"==u&&i(t,\"MozMousePixelScroll\",e,n)}var a,l,u,h=\"\",c=[];return window.addEventListener?(a=\"addEventListener\",l=\"removeEventListener\"):(a=\"attachEvent\",l=\"detachEvent\",h=\"on\"),u=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",{on:s,off:r}}()},{}],7:[function(t,e,n){function o(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&\"object\"==typeof t&&null!==t&&1===t.nodeType&&\"string\"==typeof t.nodeName},isObject:function(t){return\"[object Object]\"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!(\"string\"==typeof t||t instanceof String))throw new Error(\"Provided selector is not an HTML object nor String\");if(e=document.querySelector(t),!e)throw new Error(\"Provided selector did not find any elements. Selector: \"+t)}if(\"svg\"===e.tagName.toLowerCase())n=e;else if(\"object\"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if(\"embed\"!==e.tagName.toLowerCase())throw\"img\"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an \"img\" element. Please use an \"object\" element or an in-line SVG.'):new Error(\"Cannot get SVG.\");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\\[object\\s/,\"\").replace(/\\]$/,\"\")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,o=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>o}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var o,i,s,r=this,a=null,l=0;n||(n={});var u=function(){l=n.leading===!1?0:r.now(),a=null,s=t.apply(o,i),a||(o=i=null)};return function(){var h=r.now();l||n.leading!==!1||(l=h);var c=e-(h-l);return o=this,i=arguments,0>=c||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(o,i),a||(o=i=null)):a||n.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return\"auto\"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||o(33):o(e)}}},{}]},{},[1]);\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Combine the SWISH components.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('jswish',[ \"jquery\",\n\t \"config\",\n\t \"preferences\",\n\t \"history\",\n\t \"modal\",\n\t \"chat\",\n\t \"splitter\",\n\t \"bootstrap\",\n\t \"pane\",\n\t \"tabbed\",\n\t \"notebook\",\n\t \"navbar\",\n\t \"search\",\n\t \"editor\",\n\t \"query\",\n\t \"runner\",\n\t \"term\",\n\t \"laconic\",\n\t \"login\",\n\t \"chatroom\",\n\t \"d3\",\n\t \"c3\",\n\t \"svg-pan-zoom\"\n       ], function($, config, preferences, history, modal) {\n\npreferences.setDefault(\"semantic-highlighting\", true);\npreferences.setDefault(\"emacs-keybinding\", false);\n\n(function($) {\n  var pluginName = 'swish';\n\n  function glyph(name, func) {\n    func.glyph = name;\n    return func;\n  }\n\n  function icon(name, func) {\n    func.typeIcon = name;\n    return func;\n  }\n\n  var defaults = {\n    menu: {\n      \"File\":\n      { \"Save ...\": glyph(\"cloud-upload\", function() {\n\t  menuBroadcast(\"save\", \"as\");\n\t}),\n\t\"Info & history ...\": glyph(\"info-sign\", function() {\n\t  menuBroadcast(\"fileInfo\");\n\t}),\n\t\"Reload\": glyph(\"refresh\", function() {\n\t  menuBroadcast(\"reload\");\n\t}),\n\t\"Open recent\": {\n\t  type: \"submenu\",\n\t  glyph: \"paperclip\",\n\t  action: function(ev) {\n\t    history.openRecent(ev, $(this).data('document'));\n\t  },\n\t  update: history.updateRecentUL\n\t},\n\t\"Share\": \"--\",\n\t\"Follow ...\": config.http.locations.follow_file_options ?\n\t\t      glyph(\"eye-open\", function() {\n\t  menuBroadcast(\"follow-file\");\n\t}) : undefined,\n\t\"Start TogetherJS ...\": icon(\"togetherjs\", function() {\n\t  $(\"body\").swish('collaborate');\n\t}),\n\t\"Export\": \"--\",\n\t\"Download\": glyph(\"floppy-save\", function() {\n\t  menuBroadcast(\"download\");\n\t}),\n\t\"Print ...\": glyph(\"print\", function() {\n\t  menuBroadcast(\"print\");\n\t})\n      },\n      \"Edit\":\n      { \"Clear messages\": function() {\n\t  menuBroadcast(\"clearMessages\");\n\t},\n\t\"Changes\": \"--\",\n\t\"View changes\": function() {\n\t  menuBroadcast(\"diff\");\n\t},\n\t\"Edit\": \"--\",\n\t\"Find (Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"find\");\n\t},\n\t\"Find and replace (Shift-Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"replace\");\n\t},\n\t\"Jump to line (Alt-G)\": function() {\n\t  menuBroadcast(\"edit-command\", \"jumpToLine\");\n\t},\n\t\"Options\": \"--\",\n\t\"Semantic highlighting\": {\n\t  preference: \"semantic-highlighting\",\n\t  type: \"checkbox\"\n\t},\n\t\"Emacs Keybinding\": {\n\t  preference: \"emacs-keybinding\",\n\t  type: \"checkbox\",\n\t  value: \"false\"\n\t}\n      },\n      \"Examples\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateExamples', navbar, dropdown);\n      },\n      \"Help\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateHelp', navbar, dropdown);\n      }\n    }\n  }; // defaults;\n\n\n  /** @lends $.fn.swish */\n  var methods = {\n    /**\n     * Initialise SWISH on the page. At this moment, a page can only\n     * contain one SWISH application and swish is normally initialised\n     * on the body.  This might change.\n     * @example $(\"body\").swish();\n     * {Object} options\n     * {Boolean} options.show_beware If `true`, show a dialogue box\n     * telling this is a limited version.\n     */\n    _init: function(options) {\n      swishLogo();\n      setupModal();\n      setupPanes();\n      setupResize();\n      $(\"#search\").search();\n\n      options = options||{};\n      this.addClass(\"swish\");\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\t$(\"#navbar\").navbar(defaults.menu);\n\t$(\"#login\").login();\n\n\tvar  editor = $(\".prolog-editor\").prologEditor({save:true});\n\tdata.runner = $(\".prolog-runners\").prologRunners();\n\tdata.query  = $(\".prolog-query\").queryEditor(\n          { source:   function() {\n\t      return elem.swish('prologSource');\n\t    },\n\t    sourceID: function() {\n\t      return editor.prologEditor('getSourceID');\n\t    },\n\t    examples: elem.swish('examples'),\n\t    runner:   data.runner,\n\t    editor:   editor[0]\n\t  });\n\n\t$(\".notebook\").notebook();\n\n\tif ( options.show_beware &&\n\t     !(swish.option && swish.option.show_beware == false) )\n\t  menuBroadcast(\"help\", {file:\"beware.html\", notagain:\"beware\"});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\tif ( window.location.href.indexOf(\"&togetherjs=\") > 0 )\n\t  elem.swish('collaborate');\n\n\t$(\"#chat\").chat('');\n\t$(\"#broadcast-bell\")\n\t\t.chatbell({\n\t\t  empty_title: \"Click to open chat\"\n\t\t});\n\t$(\"#chat-menu\").on(\"click\", \"a\", function(ev) {\n\t  var a = $(ev.target).closest(\"a\");\n\t  switch ( a.data('action') ) {\n\t  case 'chat-shared':\n\t    $(\"body\").swish('playFile', {\n\t      file: config.swish.hangout,\n\t      chat: 'large'\n\t    });\n\t  case 'chat-about-file':\n\t    menuBroadcast(\"chat-about-file\");\n\t  }\n\t});\n\n\tsetInterval(function(){\n\t  $(\".each-minute\").trigger(\"minute\");\n\t}, 60000);\n      });\n    },\n\n    /**\n     * Trigger a global event in SWISH.  Currently defined events are:\n     *\n     *   - `help`        -- show a modal help window\n     *   - `source`      -- load a new source\n     *   - `saveProgram` -- save the current program\n     *\n     * This method triggers all elements of class\n     * `swish-event-receiver`.\n     *\n     * @param {String} name is the name of the trigger.\n     * @param {Object|null} data provides additional data for the event.\n     */\n    trigger: function(name, data) {\n      menuBroadcast(name, data);\n      return this;\n    },\n\n    /**\n     * Play a file from the webstore, loading it through ajax\n     * @param {String|Object} options If a string, the name\n     * of the file in the web storage\n     * @param {String} options.file is the name of the file in the web\n     * storage\n     * @param {Number} [options.line] is the initial line number\n     * @param {RegEx} [options.regex] search to highlight\n     * @param {Boolean} [options.showAllMatches] Show other matches on\n     * page.\n     * @param {Boolean} [options.newTab] if `true`, open the file in\n     * a new tab.\n     * @param {Boolean} [options.noHistory] if `true`, do not push the\n     * new document to the history.\n     * @param {Object} [options.prompt] provided for trace events.  Must\n     * be used to highlight the Prolog port at the indicated location.\n     */\n    playFile: function(options) {\n      var elem = this;\n      if ( typeof(options) == \"string\" )\n\toptions = {file:options};\n\n      var existing = this.find(\".storage\").storage('match', options);\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      var url = config.http.locations.web_storage + options.file;\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       reply[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\", \"chat\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', reply);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Load file from a URL.  This fetches the data from the URL and\n     * broadcasts a `\"source\"` event that is normally picked up by\n     * the tabbed pane.\n     * @param {Object}   options\n     * @param {String}   options.url     URL to load.\n     * @param {Integer} [options.line]   Line to go to.\n     * @param {Regex}   [options.search] Text searched for.\n     */\n    playURL: function(options) {\n      var elem = this;\n      var existing = this.find(\".storage\").storage('match', options);\n\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      $.ajax({ url: options.url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(source) {\n\t\t var msg;\n\n\t\t if ( typeof(source) == \"string\" ) {\n\t\t   msg = { data: source };\n\t\t   msg.st_type = \"external\";\n\t\t } else if ( typeof(source) == \"object\" &&\n\t\t\t     typeof(source.data) == \"string\" ) {\n\t\t   msg = source;\n\t\t   msg.st_type = \"filesys\";\n\t\t } else {\n\t\t   alert(\"Invalid data\");\n\t\t   return;\n\t\t }\n\n\t\t msg.url  = options.url;\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       msg[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', msg);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n      });\n    },\n\n    /**\n     * Open a source.  If we are in fullscreen mode and the current\n     * object cannot be opened by the current fullscreen node, we\n     * leave fullscreen mode.  Called by playFile and playURL.\n     */\n    setSource: function(src) {\n      var st = this.swish('isFullscreen');\n\n      if ( !(st && st.storage('setSource', src)) ) {\n\tif ( st )\n\t  this.swish('exitFullscreen');\n\tthis.find(\".tabbed\").tabbed('tabFromSource', src);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * @param {Object} ex\n     * @param {String} ex.title is the title of the example\n     * @param {String} ex.file is the (file) name of the example\n     * @param {String} ex.href is the URL from which to download the\n     * program.\n     * @returns {Function|String} function that loads an example\n     */\n    openExampleFunction: function(ex) {\n      var swish = this;\n\n      if ( ex.type == \"divider\" ) {\n\treturn \"--\";\n      } else if ( ex.type == \"store\" ) {\n\treturn function() {\n\t  methods.playFile.call(swish, ex.file);\n\t};\n      } else {\n\treturn function() {\n\t  methods.playURL.call(swish, {url:ex.href});\n\t};\n      }\n    },\n\n    /**\n     * Populate the examples dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateExamples: function(navbar, dropdown) {\n      var that = this;\n\n      that.off(\"examples-changed\")\n\t  .on(\"examples-changed\", function() {\n\t     $(\"#navbar\").navbar('clearDropdown', dropdown);\n\t     that.swish('populateExamples', navbar, dropdown);\n\t   });\n      $.ajax(config.http.locations.swish_examples,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var ex = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( ex == \"--\" || ex.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = ex.file || ex.href;\n\t\t     title = ex.title;\n\t\t     options = that.swish('openExampleFunction', ex);\n\t\t     if ( name )\n\t\t       options.typeIcon = name.split('.').pop();\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n    /**\n     * Populate the help dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateHelp: function(navbar, dropdown) {\n      var that = this;\n\n      function openHelpFunction(help) {\n\treturn function() {\n\t  menuBroadcast(\"help\", {file:help.file});\n\t};\n      }\n\n      $.ajax(config.http.locations.swish_help_index,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var help = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( help == \"--\" || help.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = help.file;\n\t\t     title = help.title;\n\t\t     options = openHelpFunction(help);\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n\n    /**\n     * pick up all Prolog sources, preparing to execute a query. Currently\n     * picks up:\n     *\n     *   - The `.text()` from all elements that match\n     *   `\".background.prolog.source\"`\n     *   - The source of the Prolog editor.  We need some notion of a\n     *   _current_ Prolog editor.\n     */\n    prologSource: function() {\n      var list = [];\n      var src;\n\n      if ( (src=$(\".prolog-editor\").prologEditor('getSource', \"source\")) )\n\tlist.push(src);\n      if ( (src=$(\".background.prolog.source\").text()) )\n\tlist.push(src);\n\n      return list.join(\"\\n\\n\");\n    },\n\n    /**\n     * Pick up all breakpoints.  Currently assumes a single source.\n     * @param {String} pengineID is the pengine for which to set\n     * the breakpoints.\n     */\n    breakpoints: function(pengineID) {\n      return this.find(\".prolog-editor\")\n                 .prologEditor('getBreakpoints', pengineID)||[];\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {Boolean} [options.active=false] If `true`, only return\n     * info on the active tab\n     */\n    tabData: function(options) {\n      options = options||{};\n      if ( options.active ) {\n\treturn this.find(\".tab-pane.active .storage\").storage('getData', options);\n      } else {\n\treturn this.find(\".storage\").storage('getData', options);\n      }\n    },\n\n    /**\n     * Extract examples from `$(\".examples.prolog\").text()`.  If this\n     * does not exist, it returns a function that extracts the examples\n     * from the current Prolog source editor.\n     * @param {Boolean} [onlyglobal] if `true`, only extract globally\n     * listed examples.\n     * @returns {Array.String|null|Function}\n     */\n    examples: function(onlyglobal) {\n      var text = $(\".examples.prolog\").text();\n\n      if ( text ) {\n\treturn $().prologEditor('getExamples', text, false);\n      } else if ( onlyglobal != true ) {\n\treturn function() {\n\t  return $(\".prolog-editor\").prologEditor('getExamples');\n\t};\n      }\n    },\n\n    /**\n     * Make DOM element fullscreen\n     * @param {jQuery} node is the element to turn into fullscreen.\n     * Currently this only works for a notebook.\n     * @patam {jQuery} main is the node getting the `fullscreen\n     * hamburger` class.\n     */\n    fullscreen: function(node, main) {\n      var content = this.find(\".container.tile-top\");\n\n      if ( !content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tif ( !data ) {\n\t  data = {};\n\t  this.data(\"fullscreen\", data);\n\t}\n\tcontent.addClass(\"fullscreen\");\n\tmain = main||node;\n\tmain.addClass(\"fullscreen hamburger\");\n\tdata.fullscreen_origin = node.parent()[0];\n\tdata.fullscreen_main = main[0];\n\t$(content.children()[0]).hide();\n\tcontent.append(node);\n\tmain.trigger('fullscreen', true);\n      }\n\n      return this;\n    },\n\n    /**\n     * If some element is in fullscreen mode, revert\n     * back to tabbed mode.\n     * @return {Boolean} `true` if successful.\n     */\n    exitFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tvar node = $(content.children()[1]);\n\tvar main = data.fullscreen_main;\n\n\tcontent.removeClass(\"fullscreen\");\n\t$(data.fullscreen_main).removeClass(\"fullscreen hamburger\");\n\t$(data.fullscreen_origin).append(node);\n\tdata.fullscreen_origin = null;\n\tdata.fullscreen_main = null;\n\t$(content.children()[0]).show();\n\t$(main).trigger('fullscreen', false);\n\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Detect fullscreen mode\n     * @return {jQuery} storage object that is running in fullscreen\n     * mode.\n     */\n    isFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar st = content.find(\".storage\");\n\tif ( st.length != 0 )\n\t  return st;\n      }\n    },\n\n    /**\n     * Open TogetherJS after lazy loading.\n     */\n    collaborate: function() {\n      var elem = this;\n      $(this).attr(\"data-end-togetherjs-html\", \"End collaboration\");\n      require([ \"https://togetherjs.com/togetherjs-min.js\"\n\t      ],\n\t      function() {\n\t\tTogetherJS(elem);\n\t      });\n      return this;\n    }\n  }; // methods\n\n  /**\n   * General actions on SWISH are sent as triggers.  Any part of\n   * the interface that is interested in events should add the class\n   * `swish-event-receiver` and listen to the events in which it is\n   * interested.\n   */\n  function menuBroadcast(event, data) {\n    $(\".swish-event-receiver\").trigger(event, data);\n  }\n\n  /**\n   * Turn elements with class `swish-logo` into the SWISH logo.\n   */\n  function swishLogo() {\n    $(\".swish-logo\")\n      .append($.el.b($.el.span({style:\"color:darkblue\"}, \"SWI\"),\n\t\t     $.el.span({style:\"color:maroon\"}, \"SH\")))\n      .css(\"margin-left\", \"30px\")\n      .css(\"font-size\", \"24px\")\n      .addClass(\"navbar-brand\");\n  }\n\n  /**\n   * Setup modal actions.  Subsequently, modal dialogue windows\n   * are opened by using the trigger `help`.\n   * @example $(\"body\").swish('action', 'help', {file:\"about.html\"});\n   */\n  function setupModal() {\n    if ( $(\"#modal\").length == 0 ) {\n      $(\"body\").append($.el.div({id:\"modal\"}));\n      $(\"#modal\").swishModal();\n    }\n  }\n\n  /**\n   * Setup the panes and allow for resizing them\n   */\n  function setupPanes() {\n    $(\".tile\").tile();\n    $(window).resize(function() { $(\".tile\").tile('resize'); });\n    $(\".tabbed\").tabbed();\n  }\n\n  function setupResize() {\n    $(window).resize(function() {\n      $(\".reactive-size\").trigger('reactive-resize');\n    });\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class swish\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swish = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n}); // define()\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Load SWISH. Just provides the RequireJS config, requires jswish.js\n * and initialises this on the body.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\nrequire.config({\n  urlArgs: \"ts=\"+new Date().getTime(),\t/* prevent caching during development */\n  waitSeconds: 60,\t\t\t/* swish-min.js is big */\n  paths:\n  { jquery:      \"../bower_components/jquery/dist/jquery.min\",\n    \"jquery-ui\": \"../bower_components/jquery-ui/jquery-ui.min\",\n    laconic:     \"../bower_components/laconic/laconic\",\n    bootstrap:   \"../bower_components/bootstrap/dist/js/bootstrap.min\",\n    bloodhound:  \"../bower_components/typeahead.js/dist/bloodhound\",\n    typeahead:   \"../bower_components/typeahead.js/dist/typeahead.jquery\",\n    splitter:    \"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0\",\n    tagmanager:  \"../bower_components/tagmanager/tagmanager\",\n    sha1:        \"../bower_components/js-sha1/src/sha1\",\n    c3:          \"../bower_components/c3/c3\",\n    d3:          \"../bower_components/d3/d3\",\n    \"svg-pan-zoom\": \"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min\",\n    sparkline:\t \"../bower_components/sparkline/dist/jquery.sparkline\",\n\n\t\t\t\t\t/* CodeMirror extensions */\n    \"cm/mode/prolog\": \"codemirror/mode/prolog\",\n    \"cm/addon/hover/prolog-hover\": \"codemirror/addon/hover/prolog-hover\",\n    \"cm/addon/hover/text-hover\": \"codemirror/addon/hover/text-hover\",\n    \"cm/addon/hint/templates-hint\": \"codemirror/addon/hint/templates-hint\",\n    \"cm/addon/hint/show-context-info\": \"codemirror/addon/hint/show-context-info\",\n\n\t\t\t\t\t/* Standard CodeMirror */\n    \"cm\" : \"../bower_components/codemirror\"\n  },\n  shim:\n  { bootstrap:\n    { deps:[\"jquery\"]\n    },\n    typeahead: /* HACK: See https://github.com/twitter/typeahead.js/issues/1211 */\n    { deps:[\"jquery\"],\n      init: function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      }\n    },\n    bloodhound:\n    { deps:[\"jquery\"]\n    },\n    splitter:\n    { deps:[\"jquery\"]\n    },\n    laconic:\n    { deps:[\"jquery\"]\n    },\n    tagmanager:\n    { deps:[\"jquery\"]\n    },\n  }\n}); //require.config\n\n/*\n * Create the SWISH application.  Note that we need two levels of\n * require because the first gives us the location of the pengine\n * API, while the second fetches the pengines and starts the\n * application.\n */\nrequire([\"jquery\", \"config\", \"jswish\"],\n\tfunction($, config, swish) {\n  require([config.http.locations.pengines+\"/pengines.js\"],\n\t  function() {\n    $(function() {\n      $(\"body\").swish(config.swish||{});\n    });\n  });\n});\n\n\ndefine(\"swish\", function(){});\n\n"]}
\ No newline at end of file
+{"version":3,"sources":["../bower_components/bootstrap/dist/js/bootstrap.min.js","../bower_components/jquery/dist/jquery.min.js","config.js","preferences.js","links.js","../bower_components/laconic/laconic.js","modal.js","../bower_components/tagmanager/tagmanager.js","form.js","utils.js","history.js","chat.js","../bower_components/jquery.splitter/js/jquery.splitter-0.15.0.js","pane.js","../bower_components/typeahead.js/dist/bloodhound.js","../bower_components/typeahead.js/dist/typeahead.jquery.js","search.js","../bower_components/codemirror/lib/codemirror.js","chatroom.js","chatbell.js","sourcelist.js","tabbed.js","prolog.js","answer.js","../bower_components/sparkline/dist/jquery.sparkline.js","download.js","runner.js","gitty.js","difflib.js","diffview.js","diff.js","storage.js","../bower_components/js-sha1/src/sha1.js","notebook.js","navbar.js","codemirror/addon/hint/templates-hint.js","codemirror/mode/prolog/prolog-template-hint.js","codemirror/mode/prolog/prolog-ctype.js","codemirror/mode/prolog/prolog.js","codemirror/mode/prolog/prolog_keys.js","codemirror/mode/prolog/prolog_query.js","codemirror/mode/prolog/prolog_server.js","../bower_components/codemirror/mode/xml/xml.js","../bower_components/codemirror/mode/meta.js","../bower_components/codemirror/mode/markdown/markdown.js","../bower_components/codemirror/addon/edit/matchbrackets.js","../bower_components/codemirror/addon/comment/continuecomment.js","../bower_components/codemirror/addon/comment/comment.js","../bower_components/codemirror/addon/hint/show-hint.js","../bower_components/codemirror/addon/hint/anyword-hint.js","../bower_components/codemirror/addon/display/placeholder.js","../bower_components/codemirror/addon/runmode/runmode.js","../bower_components/codemirror/addon/search/searchcursor.js","../bower_components/codemirror/addon/dialog/dialog.js","../bower_components/codemirror/addon/search/search.js","../bower_components/codemirror/addon/search/jump-to-line.js","codemirror/addon/hover/text-hover.js","codemirror/addon/hover/prolog-hover.js","codemirror/addon/hint/show-context-info.js","../bower_components/codemirror/keymap/emacs.js","editor.js","query.js","term.js","login.js","../bower_components/d3/d3.js","../bower_components/c3/c3.js","../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min.js","jswish.js","swish.js"],"names":["e","t","module","exports","document","Error","window","this","m","n","i","o","r","createElement","text","v","head","appendChild","parentNode","removeChild","x","l","c","call","C","length","g","y","N","nodeName","toLowerCase","j","w","grep","nodeType","u","filter","P","R","each","match","M","I","W","$","promise","done","fail","then","apply","slice","_","removeEventListener","ready","V","toUpperCase","G","replace","X","U","Q","expando","uid","te","Z","test","JSON","parse","ne","ee","getAttribute","K","set","ue","a","s","cur","css","cssNumber","ie","exec","style","unit","start","end","ce","ownerDocument","le","body","fe","display","J","get","ae","ye","getElementsByTagName","querySelectorAll","merge","ve","xe","f","createDocumentFragment","p","d","h","me","de","ge","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","contains","he","type","Ee","ke","Se","activeElement","De","off","arguments","guid","event","add","Le","children","He","Oe","removeAttribute","Pe","hasData","access","events","handle","extend","Me","pe","checked","defaultValue","Re","checkClone","je","eq","html","map","clone","src","_evalUrl","qe","Ie","cleanData","Fe","$e","getPropertyValue","pixelBoxStyles","We","Be","width","minWidth","maxWidth","_e","Qe","Ye","Ge","Je","cssProps","Ke","Math","max","Ze","oe","ceil","et","boxSizingReliable","parseFloat","tt","prototype","init","at","rt","hidden","requestAnimationFrame","setTimeout","fx","interval","tick","st","nt","Date","now","ut","height","opacity","lt","pt","tweeners","concat","ct","queue","_queueHooks","unqueued","empty","fire","always","it","isEmptyObject","overflow","overflowX","overflowY","remove","ft","Array","isArray","cssHooks","expand","prefilters","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","props","opts","specialEasing","easing","originalProperties","originalOptions","createTween","Tween","stop","rejectWith","bind","progress","complete","timer","anim","vt","join","mt","xt","jt","St","Ft","unshift","_t","dataTypes","Wt","zt","ajaxSettings","flatOptions","Xt","contents","shift","mimeType","getResponseHeader","converters","Ut","responseFields","dataFilter","dataType","split","state","error","data","Object","getPrototypeOf","indexOf","toString","hasOwnProperty","noModule","fn","T","jquery","constructor","toArray","pushStack","prevObject","first","last","sort","splice","isPlainObject","random","isReady","noop","globalEval","trim","makeArray","support","Symbol","iterator","E","getElementById","id","L","getElementsByClassName","qsa","S","setAttribute","b","B","cacheLength","se","attrHandle","sourceIndex","nextSibling","disabled","isDisabled","value","dir","next","uniqueID","be","we","Te","O","Ce","relative","matches","find","TAG","k","uniqueSort","D","A","pop","q","H","RegExp","F","z","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","Y","String","fromCharCode","charCodeAt","re","isXML","documentElement","setDocument","defaultView","top","addEventListener","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","escape","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","pseudos","setFilters","not","has","innerText","lang","target","location","hash","root","focus","hasFocus","href","tabIndex","enabled","selected","selectedIndex","parent","header","input","button","even","odd","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","tokenize","compile","selector","select","expr","unique","isXMLDoc","escapeSelector","is","parseHTML","prev","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","reverse","Callbacks","once","stopOnFalse","memory","disable","lock","locked","fireWith","fired","catch","pipe","notify","resolve","reject","TypeError","exceptionHook","stackTrace","getStackHook","when","console","warn","name","message","stack","readyException","readyWait","readyState","doScroll","cache","defineProperty","configurable","removeData","_data","_removeData","dequeue","clearQueue","source","show","hide","toggle","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","fix","delegateTarget","preDispatch","handlers","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","handleObj","result","preventDefault","stopPropagation","postDispatch","addProp","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","key","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","on","one","Ne","Ae","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","marginLeft","right","position","offsetWidth","round","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","scrollboxSize","ze","Xe","Ue","visibility","Ve","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prop","options","propHooks","pos","step","scrollTop","scrollLeft","linear","swing","cos","PI","ot","Animation","*","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","clearTimeout","checkOn","optSelected","radioValue","dt","ht","removeAttr","attrHooks","yt","removeProp","propFix","parseInt","for","class","addClass","removeClass","toggleClass","hasClass","bt","val","valHooks","focusin","wt","Tt","isTrigger","parentWindow","simulate","triggerHandler","Ct","Et","kt","parseXML","DOMParser","parseFromString","Dt","Nt","At","param","encodeURIComponent","serialize","serializeArray","qt","Lt","Ht","Ot","Pt","Mt","Rt","It","$t","Bt","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","xml","json","* text","text html","text json","text xml","context","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","method","crossDomain","host","traditional","hasContent","headers","beforeSend","success","timeout","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","Vt","0","1223","Gt","cors","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","response","script","text script","charset","scriptCharset","Yt","Qt","jsonp","jsonpCallback","createHTMLDocument","implementation","animated","offset","setOffset","using","pageYOffset","pageXOffset","offsetParent","scrollTo","Height","Width","","hover","unbind","delegate","undelegate","proxy","holdReady","parseJSON","isFunction","isWindow","camelCase","isNumeric","isNaN","define","amd","Jt","jQuery","Kt","noConflict","setCachedConfig","config","swish","config_hash","localStorage","setItem","KEY","stringify","str","getItem","alert","readNotAgain","err","hasLocalStore","defaults","inform","preferences","persistent","setNotAgain","notagain","broadcast","sel","undefined","setVal","setDefault","setInform","getVal","setDocVal","docid","prefs","getDocVal","def","modal","functions","PlDoc","from","ev","pred","substring","charAt","arity","decodeURIComponent","runQueryLink","isVar","vars","novars","nb","qname","cell","prologEditor","nbCell","bindings","vr","feedback","owner","followLink","accept","swishStore","http","locations","swishExamples","startsWith","laconic","el","arg","substr","toExponential","toFixed","attributeMap","isEvent","child","acceptcharset","accesskey","allowtransparency","bgcolor","cellpadding","cellspacing","classname","colspan","csstext","defaultchecked","defaultselected","defaultvalue","frameborder","hspace","htmlfor","longdesc","maxlength","marginwidth","marginheight","noresize","noshade","readonly","rowspan","tabindex","valign","vspace","registerElement","renderer","deprecatedTags","tags","tagName","dollar","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","bsTransitionEnd","close","VERSION","TRANSITION_DURATION","Constructor","setState","$element","DEFAULTS","isLoading","loadingText","resetText","slide","to","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","clearInterval","setInterval","getItemIndex","getItemForDirection","direction","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","collapse","dropdown","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","abs","clientWidth","measureScrollbar","hoverState","inState","animation","placement","template","title","container","viewport","getOptions","$viewport","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","isInStateTrue","getUID","setContent","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","SVGElement","scroll","$arrow","enable","toggleEnabled","destroy","tooltip","getContent","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","activate","clear","scrollspy","element","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","links","form","saveNotagain","closeButton","data-dismiss","notAgain","label","data-notagain","initTagsManagers","prefilled","tagsManager","methods","_init","swishModal","jqXHR","showHelp","that","help","showForm","showPlDoc","docURL","term","pldoc_doc_for","docBody","div","h2","md","modalel","role","onclose","server_form","require","jqXHDR","formel","serializeAsObject","obj","onreply","formError","showAjaxError","dom","h1","win","resizeIframe","iframe","contentWindow","ntfid","ajaxError","wsid","epos","outerWidth","time","onremove","chat","CapitalizeFirstLetter","preventSubmitOnEnter","isClearInputOnEsc","externalTagId","prefillIdFieldName","prefillValueFieldName","AjaxPush","AjaxPushAllTags","AjaxPushParameters","delimiters","backspace","maxTags","hiddenTagListName","hiddenTagListId","output","deleteTagsOnBackspace","tagsContainer","tagCloseIcon","tagClass","validator","onlyTagList","tagList","fillInputOnTagRemove","publicMethods","pushTag","tag","ignoreEvents","alreadyInList","tlisLowerCase","tagId","idx","newTagId","newTagRemoveId","escaped","$el","lastTagObj","$self","tlis","tlid","privateMethods","trimTag","delimiterChars","$tagList","item","blinkClass","backgroundColor","blinkBGColor_1","blinkBGColor_2","Infinity","post","tagClasses","TagIdToRemove","spliceTag","refreshHiddenTagList","showOrHide","popTag","tagBeingRemoved","cl","tagBaseClass","inputBaseClass","lhiddenTagList","baseDelimiter","change","killEvent","cancelBubble","keyInArray","ary","applyDelimiter","prefill","pta","pushAllTags","keyNums","delimeters","delimiterKeys","hiddenObj","rndid","albet","floor","navigator","userAgent","valgridw","LABELWIDTH","elemName","attrs","textInput","placeholder","tagInput","textarea","ignore_empty","arr","inset","jvalue","code","errors","fieldError","field","msg","group","showDialog","formBroadcast","dyn_clear","onclear","$this","Boolean","fields","fileName","public","example","labeltext","fork","community_examples","span","btn","author","identity","link","date","stamp","labels","toLocaleString","description","commit_message","modify","who","canmodify","checkboxes","follow","email","projection","csvFormat","list","format","limit","distinct","boxes","boxel","dopts","box","autocomplete","chunk","filename","action","data-toggle","cls","lblopts","widgets","glyphIcon","glyph","typeIcon","glyphIconButton","dropdownButton","icon","divClass","ulClass","ul","actions","populateMenu","client","menu","runMenu","onclick","li","bound","utils","htmlEncode","generateUUID","getTime","flash","ago","basename","path","lastIndexOf","history","pathname","reason","pushState","recentMaxLength","addRecent","doc","recent","d1","d2","openRecent","st_type","updateRecentUL","gitty","onpopstate","li_user","avatar","keypress","img","reconnect_delay","last_open","connect","add_pref_param","pname","lead","swish_chat","ws","connection","reconnect","WebSocket","onmessage","origin","log","onopen","empty_queue","disconnect","subscribe","channel","sub_channel","unsubscribe","subchannel","welcome","avatar_source","visitors","check_login","login","storage","userCount","cnt","gazers","gazer","profile","rejoined","avatars","joined","session_closed","chat-message","rooms","chatroom","hangout","chatbell","displayed","user","forbidden","read_until","broadcast_room","notifyUser","event_argv","create_user","user_li","unnotify","updateFiles","addUser","removeUser","lost","tmo","user_info","users","rc","self","is_self","addUserFile","fli","data-file","removeUserFile","user_too","removeFile","count","splitter_id","splitters","current_splitter","get_position","settings","orientation","panel_1","panel_2","invisible","onDragStart","onDragEnd","onDrag","splitter","new_width","new_height","silent","sw","sw2","pw","outerHeight","isActive","not_null","paneInfo","pane","panes","second","flipdir","tile","resize_start","info","resize_save","percent","resizestart","rel","minheight","relto","sumh","splitContainer","factory","a0","isMsie","isBlankString","escapeRegExChars","isString","isNumber","isObject","isUndefined","isElement","isJQuery","toStr","collection","cb","reverseArgs","every","some","mixin","getIdGenerator","counter","templatify","defer","debounce","func","wait","immediate","later","callNow","args","throttle","previous","remaining","tokenizers","whitespace","nonword","getObjTokenizer","tokenizer","keys","tokens","LruCache","maxSize","List","tail","Node","node","tailItem","size","moveToFront","PersistentStorage","override","prefix","ttlKey","keyMatcher","ls","LOCAL_STORAGE","_noop","encode","decode","gatherMatchingKeys","len","removeItem","_prefix","_ttlKey","isExpired","_safeSet","ttl","Transport","cancelled","lastReq","_send","transport","_get","limiter","_cache","sharedCache","pendingRequestsCount","pendingRequests","maxPendingRequests","setMaxPendingRequests","num","resetCache","_fingerprint","resp","fingerprint","onDeckRequestArgs","jqXhr","cancel","SearchIndex","datumTokenizer","queryTokenizer","identify","normalizeTokens","token","newNode","IDS","CHILDREN","array","seen","uniques","getIntersection","arrayA","arrayB","ai","bi","intersection","lenArrayA","lenArrayB","bootstrap","datums","trie","datum","chars","ch","ids","search","query","all","values","Prefetch","prepare","transform","thumbprint","cacheKey","_settings","store","fromCache","stored","fromNetwork","onError","onResponse","Remote","cancelLastRequest","oParser","parsePrefetch","callbackToDeferred","parseRemote","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","prepareByReplace","prepareByWildcard","idenityPrepare","onSuccess","deferred","sorter","initialize","sufficient","local","prefetch","Bloodhound","__ttAdapter","withAsync","sync","withoutAsync","_loadPrefetch","serialized","_initialize","addLocalToIndex","initPromise","force","processRemote","nonDuplicates","clearPrefetchCache","clearRemoteCache","ttAdapter","WWW","build","www","classes","defaultClassNames","buildCss","buildHtml","buildSelectors","wrapper","hint","borderColor","boxShadow","verticalAlign","inputWithNoHint","ltr","rtl","backgroundImage","dataset","suggestion","selectable","cursor","highlight","EventBus","deprecationMap","render","cursorchange","_trigger","deprecatedType","EventEmitter","types","bindContext","_callbacks","onAsync","onSync","callbacks","syncFlush","asyncFlush","getFlush","nextTick","flush","setImmediate","getRegex","patterns","caseSensitive","wordsOnly","regexStr","escapedPatterns","pattern","hightlightTextNode","textNode","patternNode","wrapperNode","regex","splitText","traverse","childNode","Input","$hint","$input","queryWhenFocused","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","areQueriesEquivalent","normalizeQuery","withModifier","specialKeyCodeMap","9","27","37","39","13","38","40","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","isValid","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","range","selection","createRange","moveStart","Dataset","templates","notFound","isValidName","nameGenerator","displayFn","getDisplayFn","displayKey","getTemplates","_resetLastSuggestion","suggestionTemplate","pending","footer","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_empty","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","fragment","_injectQuery","_query","update","syncCalled","rendered","canceled","isEmpty","Menu","initializeDataset","oDataset","$node","datasets","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","_propagate","isDatasetEmpty","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","onSelectableClick","isOpen","setLanguageDirection","selectableRelativeToCursor","delta","$selectables","$oldCursor","oldIndex","newIndex","setCursor","getSelectableData","getTopSelectable","updateDataset","isValidUpdate","clearDataset","destroyDataset","DefaultMenu","_show","_hide","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","ctx","$menu","hasActive","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","frontMatchRegEx","isEnabled","deactivate","$candidate","payload","ttEach","$els","typeahead","buildHintFromInput","getBackgroundStyles","spellcheck","prepInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","revert","$wrapper","$elOrNull","attach","defaultHint","defaultMenu","MenuConstructor","classNames","newVal","contexts","registry","bloodHoundURL","fileTokenizer","renderFile","renderStoreSourceLine","hit","currentFile","alias","currentAlias","ext","renderSourceMatch","sourceLineTokenizer","renderSourceLine","predicateMatcher","ql","pl","templ","renderPredicate","mode","iso","summary","sourceMatcher","sourceRE","editor","line","renderUser","encodeURI","files","swish_typeahead","storeContent","sources","query_cache_length","typeaheadProperties","store_content","predicates","of","showAllMatches","play","string","CodeMirror","classTest","removeChildren","removeChildrenAndAdd","elt","eltP","activeElt","shadowRoot","current","joinClasses","as","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","nextTab","findColumn","goal","skipped","min","spaceStr","spaceStrs","lst","out","insertSorted","score","priority","nothing","createObj","base","inst","create","isWordCharBasic","nonASCIISingleCaseWordChar","isWordChar","helper","isExtendingChar","extendingChars","skipExtendingChars","findFirst","midF","mid","Display","place","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","cursorDiv","measure","lineMeasure","lineSpace","lines","mover","sizer","sizerWidth","heightForcer","scrollerGap","gutters","lineGutter","scroller","ie_version","webkit","gecko","mobile","draggable","viewFrom","viewTo","reportedViewFrom","reportedViewTo","renderedView","externalMeasured","viewOffset","lastWrapHeight","lastWrapWidth","updateLineNumbers","nativeBarWidth","barHeight","barWidth","scrollbarsClipped","lineNumWidth","lineNumInnerWidth","lineNumChars","alignWidgets","cachedCharWidth","cachedTextHeight","cachedPaddingH","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","selForContextMenu","activeTouch","getLine","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","diff","lineNo","no","lineAtHeight","outer","i$1","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","seeReadOnlySpans","sawReadOnlySpans","seeCollapsedSpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","full","oldFirst","oldLast","sameLine","found","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","cm","iterateBidiSections","part","level","getBidiPartAt","bidiOther","getOrder","bidiOrdering","getHandlers","emitter","_handlers","noHandlers","detachEvent","map$$1","signal","signalDOMEvent","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","e_stopPropagation","e_stop","e_target","srcElement","e_button","mac","zeroWidthElement","zwspSupported","hasBadBidiRects","badBidiRects","txt","r0","r1","hasBadZoomedRects","badZoomedRects","normal","fromRange","defineMode","dependencies","modes","defineMIME","mime","spec","mimeModes","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a1","a2","highlightLine","forceToEnd","modeGen","lineClasses","runMode","overlays","baseTokens","overlay","i_end","opaque","baseTokenPos","styles","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","Context","findStartLine","saved","fromSaved","processLine","nextLine","startAt","stream","StringStream","callBlankLine","eol","readToken","blankLine","inner","takeToken","asArray","Token","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","SavedContext","lookAhead","indented","retreatFrontier","updateLine","estimateHeight","estHeight","cleanUpLine","interpretTokenStyle","styleToClassCacheWithMode","styleToClassCache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","maps","caches","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","specialChars","mustWrap","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","j$1","j$2","upto","tokenText","LineView","buildViewArray","nextPos","pushOperation","op","operationGroup","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","cursorActivityCalled","finishOperation","endCb","signalLater","orphanDelayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","updateLineBackground","background","getLineContent","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","paddingTop","paddingVert","paddingH","currentStyle","scrollGap","displayWidth","displayHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","mapFromLineView","updateExternalMeasurement","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","nullRect","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","pageScrollX","chrome","android","pageScrollY","marginTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","mergedPos","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","widgetHeight$$1","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","measureText","anchor","clientLeft","offsetLeft","compensateForHScroll","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","colDiff","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","ranges","primIndex","range$$1","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursorHeight","otherCursor","cmpCoords","rightSide","drawForLine","fromArg","toArg","wrapX","side","extent","lineLen","fromPos","toPos","openStart","openEnd","openLeft","docLTR","openRight","leftSide","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorBlinkRate","ensureFocus","delayBlurEvent","delayingBlurEvent","receivedFocus","rmClass","updateHeightsInViewport","prevBottom","updateWidgetHeight","visibleLines","ensure","ensureFrom","ensureTo","alignHorizontally","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","updateGutterSpace","maybeScrollWindow","innerHeight","phantom","scrollNode","scrollIntoView","scrollPosIntoView","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollbars","isScroller","scrollWidth","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","borderBottom","coverGutterNextToScrollbar","initScrollbars","scrollbarModel","scrollbarStyle","axis","startOperation","viewChanged","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","nextOpId","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","i$4","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","marginBottom","borderRightWidth","selectionSnapshot","getSelection","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","setEnd","removeAllRanges","addRange","editorIsHidden","viewportMargin","different","wrapperHeight","toUpdate","selSnapshot","patchDisplay","minHeight","oldDisplayWidth","updateNumbersFrom","rm","currentWheelTarget","updateNumber","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","wheelPixelsPerUnit","onScrollWheel","canScrollX","canScrollY","presto","pixels","wheelSamples","movedX","movedY","sample","normalizeSelection","prim","inv","Range","Selection","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","linesFor","Line","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","shared","attachDoc","setDirectionClass","directionChanged","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","somethingSelected","addSelectionToHistory","clearRedo","dest","equals","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","copy","deepCopy","newChanges","Number","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","this$1","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","sel_dontScroll","filterChange","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","changeType","LeafChunk","BranchChunk","adjustScrollWhenAboveVisible","addLineWidget","LineWidget","insertAt","aboveVisible","markText","markTextShared","TextMarker","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","nextMarkerId","isParent","SharedTextMarker","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","onDrop","clearDragCursor","lastDrop","dataTransfer","isReadOnly","FileReader","File","read","allowDropFileTypes","reader","lineSeparator","readAsText","draggingText","text$1","getData","listSelections","replaceSelection","setData","effectAllowed","setDragImage","safari","_top","onDragOver","frag","dragCursor","forEachCodeMirror","byClass","ensureGlobalHandlers","globalsRegistered","registerGlobalHandlers","resizeTimer","onResize","setSize","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyNames","addModifierNames","noShift","flipCtrlCmd","altGraphKey","keyMap","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","searchInVisualLine","getRes","res","nextCh","lineStart","visual","lineEnd","lineStartSmart","firstNonWS","inWS","doHandleBinding","dropShift","commands","ensurePolled","prevShift","Pass","lookupKeyForEditor","keyMaps","extraKeys","dispatchKey","seq","keySeq","stopSeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","onKeyDown","handled","lastStoppedKey","hasCopyEvent","showCrossHair","up","onKeyUp","onKeyPress","clickRepeat","lastDoubleClick","compare","lastClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","captureRightClick","onContextMenu","configureMouse","chromeOS","addNew","moveOnDrag","contained","behavior","dragDrop","dragAndDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","e2","rangeForUnit","findWordAt","extendTo","lastPos","startCol","posCol","leftPos","startSel","ourIndex","oldRange","ourRange","ranges$1","bidiSimplify","sel_mouse","curCount","editorSize","move","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","theme","guttersChanged","dragDropChanged","Init","funcs","dragFunctions","over","drop","wrappingChanged","CodeMirror$1","Doc","inputStyles","inputStyle","pasteIncoming","cutIncoming","Delayed","autofocus","registerEventHandlers","opt","optionHandlers","finishInit","initHooks","finishTouch","touchFinished","prevTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","word","inp","getField","indentLine","how","aggressive","indent","curSpace","indentation","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","setLastCopied","newLastCopied","lastCopied","applyTextInput","inserted","deleted","paste","textLines","splitLinesAuto","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","getRange","disableBrowserMagic","hiddenTextarea","ios","findPosH","findNextLine","moveOnce","boundToLine","origDir","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","recognizeMarker","closing","lineSep","addText","walk","cmText","markerID","isBlock","domToPos","lineNode","locateNodeInLineView","topNode","curNode","previousSibling","dist$1","fromTextArea","getValue","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","getWrapperElement","platform","ie_upto10","ie_11up","edge","documentMode","qtwebkit","vendor","mac_geMountainLion","windows","presto_version","endNode","setStart","createTextRange","moveToElementText","moveEnd","selectInput","selectionEnd","ms","sel_move","charType","lowTypes","arabicTypes","BidiSpan","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","outerType","type$1","prev$1","type$2","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","i$7","nstart","nl","hasSelection","parentElement","compareEndPoints","oncopy","lineOracle","lastColumnPos","lastColumnValue","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","consume","caseInsensitive","cased","hideFirstChars","oracle","baseToken","maxLookAhead","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elementFromPoint","NullScrollbars","native","null","here","there","removeInner","insertInner","iterN","oldHeight","leaf","maybeSpill","spilled","sibling","myIndex","used","oldH","withOp","dHeight","nextDocId","cleanGeneration","setValue","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","extendSelectionsBy","setSelections","addSelection","getSelections","dup","replaceSelections","newSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","3","8","16","17","18","19","20","32","33","34","35","36","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","goLineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","defineInitHook","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","prepareCopyCut","createField","fastPoll","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","prepareSelectAllHack","extval","rehide","oldWrapperCSS","oldCSS","detectingSelectAll","resetSelectionOnContextMenu","wrapperBox","oldScrollY","scrollY","mouseup","deflt","notOnInit","defineOption","newBreaks","getInputField","integer","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","interpret","swapDoc","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","dontDelegate","contenteditable","defineExtension","defineDocExtension","cmpPos","version","sourceToolTip","markdown","web_storage","delim","lasthangoutwarning","messages","aria-haspopup","aria-expanded","table","Include my query","queryEditor","Broadcast to hangout","oneline","ta","has_payload","uuid","muser","suser","profile_id","data-userid","payload_handlers","load_from_server","ifempty","chat_messages","textStatus","errorThrown","update_time","diffBody","baseName","headName","scrollToBottom","onlydown","room","dif","nwe","commit","about","chats","empty_title","total","chats++","chat_status","from_cache","entry","add_to_cache","qr","qc","current_profile","pluginName","current_query","query_cache","qid","check_cache","display_name","reply","source_modified","modified","sourcelist","source_list","page","fill","results","data-name","toISOString","search_footer","bopts","noresults","act","br","search_form","members","data-tag","data-value","resettimeout","btnsubmit","tagv","inputel","busy","tabbed","tabTypes","permalink","typeName","wrapInTab","wrapped","glyphicon","genId","tabid","profileObject","profiles","newTab","prompt","clean","pref","makeTabbed","newContentID","sl","hr","tabs","restoreTab","restoreData","into","noHistory","newtab","restoring","tabFromSource","inNewTab","setSource","meta","tabType","showTracePort","pengineID","editors","addTab","removeTab","new_active","prologRunner","move_right","tabLabel","close_button","data-id","get_ordered_storage","tabSelect","data-type","data-ext","typelabel","download","print","fileInfo","searchForm","sform","data-search-in","sourceList","profileForm","pform","profileValue","navTabs","navTab","navContent","prolog","downloadCSV","infoBody","csv_formats","disposition","params","pengines","trimFullStop","application","Pengine","answerHasOutput","answer","variables","residuals","renderSubstitutions","substs","var","renderAnswer","substitutions","renderTabledAnswer","vname","binding","evalScripts","ajaxScript","eval","row","renderMulti","prologAnswer","selectMenu","hovering","startMenuTimeout","resetHover","closeSelectMenu","showSelect","hideSelect","selectNodeContents","outerHTML","extension","svg","prologText","sparkline","createClass","SPFormat","clipval","quartile","normalizeValue","normalizeValues","addCSS","ensureArray","formatNumber","RangeMap","MouseHandler","Tooltip","barHighlightMixin","tristate","discrete","bullet","pie","defaultStyles","initStyles","VShape","VCanvas_base","VCanvas_canvas","VCanvas_vml","UNSET_OPTION","shapeCount","common","lineColor","fillColor","defaultPixelsPerValue","composite","tagValuesAttribute","tagOptionsPrefix","enableTagOptions","enableHighlight","highlightLighten","tooltipSkipNull","tooltipPrefix","tooltipSuffix","disableHiddenCheck","numberFormatter","numberDigitGroupCount","numberDigitGroupSep","numberDecimalMark","disableTooltips","disableInteraction","spotColor","highlightSpotColor","highlightLineColor","spotRadius","minSpotColor","maxSpotColor","lineWidth","normalRangeMin","normalRangeMax","normalRangeColor","drawNormalOnTop","chartRangeMin","chartRangeMax","chartRangeMinX","chartRangeMaxX","tooltipFormat","barColor","negBarColor","stackedBarColor","zeroColor","nullColor","zeroAxis","barSpacing","chartRangeClip","colorMap","posBarColor","zeroBarColor","tooltipValueLookups","-1","1","thresholdColor","thresholdValue","targetColor","targetWidth","performanceColor","rangeColors","sliceColors","borderWidth","raw","boxLineColor","boxFillColor","whiskerColor","outlierLineColor","outlierFillColor","medianColor","showOutliers","outlierIQR","tooltipFormatFieldlistKey","lq","med","uq","lo","ro","lw","rw","Class","_super","SPFormatClass","fre","precre","fclass","fieldset","lookups","lookupkey","fieldvalue","prec","lookup","spformat","vl","nf","vals","groupsize","groupsep","decsep","ignoreNull","createStyleSheet","WebkitAppearance","simpledraw","useExisting","interact","mhandler","canvas","getContext","namespaces","registerCanvas","cleardraw","RangeMapClass","rangelist","range_map","currentPageX","currentPageY","splist","displayTooltips","highlightEnabled","registerSparkline","updateDisplay","$canvas","mouseclick","removeTooltip","clickEvent","sparklines","mousemove","currentEl","updatePosition","spcount","needsRefresh","clearRegionHighlight","tooltiphtml","localX","localY","setRegionHighlight","getCurrentRegionTooltip","disableHighlight","sizeStyle","tooltipClassname","sizetipStyle","tooltipOffsetX","tooltipOffsetY","sizetip","updateWindowDims","scrollRight","getSize","mousex","mousey","userValues","userOptions","tmp","sparkline_display_visible","extendedOptions","tagOptionType","tagValCache","getTagSetting","mergedOptions","pairs","keyval","defaultval","tagOption","_base","currentRegion","initTarget","interactive","canvasWidth","pixelWidth","canvasHeight","pixelHeight","getRegion","newRegion","removeHighlight","renderHighlight","changeHighlight","formats","formatlen","showFields","showFieldsKey","newFields","fv","formatter","fieldlen","entries","getCurrentRegionFields","isNull","suffix","calcHighlightColor","color","mult","rgbnew","highlightColor","lighten","newShapes","shapeids","regionShapes","renderRegion","replaceWithShapes","newShape","replaceWithShape","shapes","vertices","regionMap","xvalues","yvalues","yminmax","hightlightSpotId","lastShapeId","highlightSpot","vertex","drawCircle","highlightSpotId","insertAfterShape","drawLine","canvasTop","highlightLineId","removeShapeId","scanValues","isStr","valcount","maxy","maxyorg","miny","minyorg","maxx","minx","processRangeOptions","drawNormalRange","canvasLeft","rangey","ytop","drawRect","rangex","yvallast","paths","xnext","xpos","xposnext","yvalcount","lineShapes","fillShapes","plen","valueSpots","hlSpotsEnabled","drawShape","getLastShapeId","isStackString","groupMin","groupMax","stackRanges","numValues","vlen","xaxisOffset","clipMin","clipMax","stacked","vlist","slen","svals","yoffset","yMaxCalc","stackMin","stackMax","totalBarWidth","stackTotals","stackRangesNeg","canvasHeightEf","colorMapByIndex","colorMapByValue","calcColor","stacknum","valuenum","newColor","yoffsetNeg","minPlotted","allMin","halfHeight","itemWidth","pheight","valueShapes","regiondata","shapeid","getShapeAt","fieldkey","region","shape","renderRange","renderPerformance","renderTarget","rn","rangeval","rangewidth","perfval","perfwidth","targetval","targettop","targetheight","p1","t0","radius","newslice","renderSlice","circle","drawPieSlice","quartiles","loutlier","routlier","lwhisker","rwhisker","iqr","q1","q2","q3","unitSize","minValue","maxValue","appendShape","_pxregex","x1","y1","x2","y2","_genShape","startAngle","endAngle","getElement","_insert","_calculatePixelDims","shapetype","shapeargs","shapeseq","currentTargetShapeId","_getContext","strokeStyle","fillStyle","clearRect","_drawShape","beginPath","moveTo","lineTo","stroke","targetX","targetY","isPointInPath","_drawCircle","arc","_drawPieSlice","closePath","_drawRect","sid","shapemap","groupel","insertAdjacentHTML","prerender","initial","closed","vpath","startx","starty","endx","endy","sin","vel","content_type","chs","downloader","glyphButton","stretch","Collapse all","Expand all","Stop all","Clear","prologRunners","iconifyLast","runner","jrunner","alive","toggleIconic","RS","addAnswer","aliveState","answerTable","tds","runScripts","scripts","my_node","breakpoints","registerSources","pengine","handleCreate","bps","resvar","residuals_var","hashvar","permahash_var","ask","termNoFullStop","handleSuccess","more","handleFailure","handleStop","handlePrompt","wait_for","clickableLocations","matched","gotoError","econtext","handleOutput","clickableError","loc","error_context","error_handler","handleError","handleAbort","handlePing","keyBindings","65","112","titleBarButton","tabled","qspan","next10","next100","next1000","savedFocus","answers","server","oncreate","onsuccess","onfailure","onstop","onprompt","onoutput","onping","ping","setScreenDimensions","sh","cw","cols","rows","permahash","outputHTML","downloadButton","syntaxError","query_editor","trace","respond","depth","port","exception","setPrompt","receiver","request","fdata","stopOrAbort","populateActionMenu","Re-run","savePermalink","save_permalink","errorString","stateful","stats","toBytes","bytes","pow","spark","stacks","colors","names","usage","trail","log10","tooltipChartTitle","node_id","unique_id","diffMeta","m1","m2","diffAttr","diffTags","reduceMeta","t1","t2","commits","henabled","symbolic","showMetaData","metaData","newMetaData","showHistory","playButton","data-click-to-select","data-single-select","fillHistoryTable","data-commit","setCommit","showDiff","fillDiff","addTag","udiffData","classmap","@","-","__whitespace","\t","\n","\f","\r","difflib","defaultJunkFunction","stripLinebreaks","stringAsLines","lfpos","crpos","linebreak","__reduce","__ntuplecomp","mlen","__calculate_ratio","__isindict","dict","__dictget","SequenceMatcher","isjunk","set_seqs","set_seq1","set_seq2","matching_blocks","opcodes","fullbcount","__chain_b","b2j","populardict","indices","junkdict","isbjunk","isbpopular","find_longest_match","alo","ahi","blo","bhi","besti","bestj","bestsize","j2len","newj2len","jdict","jkey","get_matching_blocks","qi","la","lb","i2","j2","k2","i1","j1","k1","block","non_adjacent","get_opcodes","bj","blocks","get_grouped_opcodes","codes","nn","groups","ratio","sum","triple","quick_ratio","avail","availhas","numb","real_quick_ratio","_calculate_ratio","diffview","buildView","celt","clazz","telt","ctelt","addCells","tidx","tend","addCellsInline","tidx2","baseTextLines","newTextLines","baseTextName","newTextName","contextSize","inline","viewType","tdata","node2","rowcnt","toprows","botrows","jump","newtxt","sm","filebase","udiff","editConflicts","addLine","filesysInfo","last_modified","modified_since_loaded","loaded","is_clean","onStorage","supportsType","changeGen","cleanCheckpoint","update_tab_title","reload","what","default","saveAs","saveAsBody","saveURL","restoreLocal","resolveEditConflict","tabContent","bdiv","merge-my-edits","edit","merge-server-edits","merge-conflicts","patch_status","editConflictAction","copyMeta","expose","rb","new","selections","notebook","getSelectionLabel","editorLabel","ed","getActive","percentage","close_chat","chatroom_size","cr","chat_message","follow_file_options","unload","why","confirm","opened","Sha1","sharedMemory","h0","h3","h4","hBytes","finalized","hashed","NODE_JS","JS_SHA1_NO_NODE_JS","versions","COMMON_JS","JS_SHA1_NO_COMMON_JS","AMD","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","createOutputMethod","outputType","createMethod","nodeWrap","crypto","Buffer","nodeMethod","createHash","digest","ArrayBuffer","Uint8Array","notString","lastByteIndex","finalize","hex","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","data-action","imageButton","glyphButtonGlyph","sep","Notebook","my_cell","cellTypes","program","currentCell","stringifyNotebookDOM","orderAttrs","nest","is_cell","clipboard","copyData","toolbar","Delete cell","Copy cell","Paste cell","Move cell up","Move cell down","Insert cell","--","Exit fullscreen","focusout","eds","aeds","nc","fullscreen","delete","restore","down","insertAbove","insertBelow","if_visible","chat_container","cellType","checkModified","clean_signalled","removeNotForQuery","viewrect","seltop","selbottom","setupStorage","skipEmpty","cg","assignCellNames","updatePlaceHolder","placeHolder","run_all","cont","queries","clear_all","cellText","fileInsertInput","theFile","typeMore","typeLess","less","ensure_in_view","vh","assignName","runTabled","getSettings","querySettingsBody","singleline","program_cells","programs","saveDOM","restoreDOM","autoCurrent","getSource","wrapSolution","sourceID","prologQuery","Aggregate (count all)","Projection","Order by","Distinct","Limit","markdownText","makeEditable","setHTML","htmlText","eval_script","runHTML","pretext","copyClassAttr","isDefault","getAttr","addClassAttr","addData","pcells","formsel","appendDropdown","accell","preference","submenu","items","dropDownUL","clickNotSubMenu","clickSubMenu","grandparent","navbar","ul1","ul2","populateDropdown","clearDropdown","extendDropdown","DEBUG","topic","TemplateState","marked","selectableMarkers","varIndex","isNested","_templateStack","Template","varTemplates","_tokens","parseTemplate","varParsing","addChar","line_selection","variable","getMarkerChanged","textChanged","_templateVar","onChange","_templateState","updating","markerChanged","uninstall","posChanged","newContent","onEndCompletion","selectNextVariable","exitOnEnd","exit","hintValue","samePos","p2","_hintTemplateMarker","cursorPos","ourMap","templatesMap","templatesHint","Ctrl-Space","_content","nested","startLine","_templates","tvar","targetLine","getCompletions","completions","completion","addTemplates","forEach","TemplatesHint","PrologHint","varp","detp","metav","hintsFor","myTemplates","symbol","anyword","anyhint","getHints","callback","attachContextInfo","uflagsW","chr","cp","UNICODE_MAP_SIZE","uflags_map","flags","id_start","id_continue","uppercase","separator","control","ctype","cmConfig","parserConfig","chain","readDigits","readEsc","isSingleEscChar","unicodeEscape","isHexDigit","isOctalDigit","nextUntilUnescaped","nesting","multiLineQuoted","setArg1","goalStart","setArgAlignment","alignment","leftCol","nextArg","isControl","inBody","ret","tp","peekSpace","plTokenBase","lastType","functor","functorName","functorColumn","closeColumn","tagColumn","plTokenComment","isSoloChar","commaAtEOL","quasiQuotations","plTokenQuasiQuotation","plTokenString","groupedIntegers","atom","isNeck","isControlOp","dicts","sec","quote","quoteType","maybeEnd","\"","'","`","curTerm","curToken","metainfo","enrich","textAfter","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","prologStartIfThenElse","prologStartThen","prologStartElse","'('","'>'","';'","Ctrl-L","prologMaybeFireQuery","lastl","endc","prologFireQuery","Ctrl-Enter","State","DEFAULT_DELAY","generationFromServer","changeEditor","prologHighlightServer","askRefresh","serverAssistedHighlight","leaveEditor","enrichStyle","matchTokenText","isQuoted","serverStyle","syntax_error","outOfSync","oos","skippedTerms","skippedTokens","okToken","okTerm","syncOnType","serverSync","leaveCM","modeOptions","refreshHighlight","qatom","bqstring","number","neg-number","pos-number","list_open","list_close","qq_open","qq_sep","qq_close","dict_open","dict_close","brace_term_open","brace_term_close","neck","fullstop","singleton","uatom","op_type","int","float","ext_quant","expanded","comment_string","identifier","delimiter","head_exported","head_public","head_extern","head_dynamic","head_multifile","head_unreferenced","head_hook","head_meta","head_constraint","head_imported","head_built_in","head_iso","head_def_iso","head_def_swi","goal_built_in","goal_imported","goal_autoload","goal_global","goal_undefined","goal_thread_local","goal_dynamic","goal_multifile","goal_expanded","goal_extern","goal_recursion","goal_meta","goal_foreign","goal_local","goal_constraint","goal_not_callable","xpce_method","xpce_class_builtin","xpce_class_lib","xpce_class_user","xpce_class_undef","option_name","no_option_name","flag_name","no_flag_name","file_no_depends","nofile","qq_type","string_terminal","entity","html_attribute","sgml_attr_function","http_location_for_id","http_no_location_for_id","getEnrichedToken","terminfo","tokenInfo","getTokenReferences","setFile","htmlConfig","autoSelfClosers","area","command","embed","frame","keygen","track","wbr","menuitem","implicitlyClosed","dd","rp","contextGrabbers","address","article","aside","blockquote","dl","h5","h6","hgroup","nav","ol","section","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","inText","parser","inBlock","doctype","inTag","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","setStyle","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","htmlMode","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","modeInfo","mimes","findModeByMIME","findModeByExtension","findModeByFileName","dot","findModeByName","cmCfg","modeCfg","switchInline","switchBlock","lineIsEmpty","linkTitle","linkHref","linkText","em","strong","strikethrough","indentedCode","htmlBlock","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","firstTokenOnLine","prevLineLineIsEmpty","prevLineIsIndentedCode","prevLineIsHr","prevLineIsList","maxNonCodeIndentation","listStack","lineIndentation","indentationDiff","allowsInlineContinuation","fencedCodeEnd","isHr","hrRE","tokenTypes","atxHeaderRE","highlightFormatting","formatting","getType","setext","listRE","listType","taskLists","taskListRE","taskList","fencedCodeRE","fencedEndRE","localMode","fencedCodeBlockHighlighting","localState","linkDefRE","setextHeaderRE","footnoteLink","htmlState","htmlModeMissing","md_inside","currListInd","hasExitedList","maxFencedEndInd","returnType","maxBlockquoteDepth","taskOpen","taskClosed","emoji","imageAltText","imageMarker","listMod","list2","list3","list1","handleText","textRE","matchCh","previousFormatting","formattingEscape","linkInline","linkEmail","leftFlanking","punctuation","rightFlanking","setEm","setStrong","retType","getLinkHrefInside","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","tokenTypeOverrides","tokenType","allowAtxHeaderWithoutSpace",")","]","closeBrackets","fold","findMatchingBracket","afterCursor","matching","strict","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","bracketRegex","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ie_lt8","doMatchBrackets","currentlyHighlighted","(","[","{","}","oldConfig","continueComment","inserts","modeHere","continueLineCommentEnabled","continueLineComment","nonWS","probablyInsideString","useInnerComments","noOptions","toggleComment","minLine","uncomment","commentString","fullLines","blockComment","pad","blankLines","commentBlankLines","baseString","startString","endString","lastLineHasText","blockCommentLead","didSomething","lineString","endPos","endLine","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","foundEnd","Completion","startPos","startLen","activityFunc","parseOptions","hintOptions","defaultOptions","buildKeyMap","addBinding","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","extra","getHintElement","hintsElement","Widget","picked","hints","selectedHint","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","hintId","alignWithWord","below","winW","winH","overlapY","scrolls","startScroll","overlapX","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onScroll","curScroll","point","completeOnSingleClick","applicableHelpers","supportsSelection","fetchHints","resolveAutoHints","words","resolved","app","fromList","showHint","newOpts","completionActive","cancelAnimationFrame","closeCharacters","myTick","finishUpdate","completeSingle","auto","WORD","curWord","clearPlaceholder","setPlaceholder","modespec","ie_lt9","regexpFlags","regexp","ignoreCase","multiline","ensureFlags","maybeMultiline","searchRegexpForward","searchRegexpForwardMultiline","inside","lastMatchIn","cutOff","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","adjustPos","orig","folded","foldFunc","searchStringForward","doFold","noFold","cutFrom","searchStringBackward","topString","SearchCursor","atOccurrence","normalize","findNext","findPrevious","getSearchCursor","dialogDiv","dialog","closeNotification","currentNotificationClose","onClose","selectValueOnOpen","closeOnEnter","closeOnBlur","blurring","doneTimer","searchOverlay","SearchState","posFrom","posTo","lastQuery","getSearchState","queryCaseInsensitive","persistentDialog","onEnter","openDialog","clearSearch","shortText","confirmDialog","fs","openConfirm","parseString","parseQuery","isRE","startSearch","queryText","showMatchesOnScrollbar","annotate","doSearch","rev","hiding","searchNext","queryDialog","dialogText","replaceQueryDialog","replacementQueryDialog","advance","doReplaceConfirm","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","interpretLine","jumpToLine","posStr","showTooltip","hideTooltip","showTooltipFor","HOVER_CLASS","TextHoverState","onMouseOver","onMouseOverWithDelay","Function","getTextHover","textHover","newE","getTokenAndPosAt","optionHandler","nearby","predName","addFileTranslation","pathTranslations","localDef","capitalizeFirstLetter","tokenHelp","unused_import","undefined_import","expected","instantiation_error","comment","operator","contextInfo","information","showContextInfo","showHints","posEq","addToRing","killRing","growRingTop","getFromRing","popFromRing","ring","lastKill","byChar","byWord","byLine","byPage","byParagraph","sawText","fst","bySentence","sawWord","byExpr","newPos","getPrefix","digits","emacsPrefix","clearPrefix","repeated","findEnd","by","killTo","killRegion","addPrefix","digit","maybeClearPrefix","maybeDuplicateInput","emacsPrefixMap","prefixPreservingKeys","addPrefixMap","prefixMap","maybeRemovePrefixMap","setMark","clearMark","getInput","operateOnWord","toEnclosingExpr","quit","regPrefix","Alt-G","Ctrl-X","Ctrl-Q","emacs","Ctrl-W","Alt-W","Alt-Y","Ctrl-Shift-2","Alt-V","Alt-A","Alt-E","Alt-K","Ctrl-Alt-K","Ctrl-Alt-F","Ctrl-Alt-B","Shift-Ctrl-Alt-2","Ctrl-Alt-T","leftStart","rightEnd","Ctrl-Alt-U","Alt-Space","Alt-C","letter","Alt-L","Alt-;","Ctrl-/","Shift-Ctrl--","Shift-Alt-,","Shift-Alt-.","Ctrl-R","Shift-Alt-5","Alt-/","Ctrl-J","Alt-G G","Ctrl-X Tab","Ctrl-X Ctrl-X","Ctrl-X Ctrl-S","Ctrl-X Ctrl-W","Ctrl-X S","Ctrl-X F","Ctrl-X U","Ctrl-X K","Ctrl-X Delete","Ctrl-X H","Ctrl-Q Tab","templateHint","loadStyleExtensions","sname","lastEditor","modeDefaults","prologKeys","roleDefaults","moveLongClick","lc","long_click","sqrt","cancelLongClick","cm_highlight","continueComments","traceMark","setKeybinding","schema","isPengineSource","storageData","getBreakpoints","direct","mysrc","getSourceEx","stdoc","getSourceID","makeCurrent","setIsClean","printWithIframe","highlightError","chmark","clearMessages","isMyFile","charOffsetToPos","cppos","esel","cell_name","sr","l1","l2","restoreEditorSelection","cmsel","loffset","poff","goffset","l0","choff","cml","soff","toff","getExamples","inComment","comments","exlist","exl","ex","addExample","gotoLine","clearSearchMarkers","_searchMarkers","markMatches","myHeight","vp","contextAction","data-locindex","coord","anon","addVars","wrapQuery","tab_types","editDefaults","charno","cm_style","cm_hover_style","dropup","examplesButton","updateExamples","examples","mousedown","historyButton","aggregateButton","aggregates","runButton","tableSelected","tableCheckbox","tabled_results","maxHistoryLength","qediv","setProgramEditor","bg","getProgramEditor","setExamples","exs","ex0","addHistory","restoreHistory","cleanGen","unfold","DEFAULT_USER_FIELDS","clearAuthenticationCache","oncomplete","agt","xmlhttp","createXMLObject","ActiveXObject","openPopup","uri","closeCallback","Logout","Profile","logged_in","swish_profile_url","user_profile","get_profile","set_from_chat","chat_key","given_name","family_name","nick_name","external_identity","identity_provider","logout","logout_url","auth_method","http_logout","d3","ascending","bisector","ascendingComparator","hi","pair","cross","values0","values1","reduce","i0","value0","n0","n1","descending","variance","valueof","mean","deviation","constant","sequence","ticks","tickIncrement","power","LN10","e10","e5","tickStep","step0","step1","sturges","LN2","histogram","xz","domain","x0","tz","threshold","bin","bins","bisectRight","thresholds","freedmanDiaconis","scott","median","numbers","arrays","permute","indexes","permutes","xi","xj","shuffle","transpose","matrix","zip","identity$1","translateX","translateY","number$1","scale","center","bandwidth","entering","__axis","orient","tickValues","tickArguments","tickFormat","spacing","tickSizeInner","tickPadding","range0","range1","tickExit","tickEnter","epsilon","tickSizeOuter","slice$1","tickSize","axisTop","axisRight","axisBottom","axisLeft","Dispatch","parseTypenames","typenames","creatorInherit","namespaceURI","xhtml","createElementNS","creatorFixed","fullname","creator","none","selection_select","_groups","subgroups","subnode","subgroup","__data__","_parents","empty$1","selectorAll","selection_selectAll","selection_filter","matcher$1","sparse","selection_enter","_enter","EnterNode","_next","_parent","constant$1","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","keyPrefix","selection_data","enterGroup","updateGroup","_exit","selection_exit","selection_merge","selection$$1","groups0","groups1","m0","merges","group0","group1","selection_order","selection_sort","compareNode","ascending$1","sortgroups","sortgroup","selection_call","selection_nodes","nodes","selection_node","selection_size","selection_empty","selection_each","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","selection_attr","getAttributeNS","styleRemove","removeProperty","styleConstant","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","classList","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","constantNull","selection_insert","selection_remove","selection_cloneShallow","selection_cloneDeep","selection_clone","deep","selection_datum","property","filterContextListener","listener","contextListener","related","event1","event0","parseTypenames$1","onRemove","typename","__on","capture","onAdd","filterEvents","selection_on","customEvent","sourceEvent","dispatchEvent","CustomEvent","createEvent","initEvent","dispatchConstant","dispatchFunction","selection_dispatch","local$1","Local","nextId","ownerSVGElement","createSVGPoint","matrixTransform","getScreenCTM","inverse","clientTop","mouse","points","nopropagation","noevent","dragDisable","__noselect","MozUserSelect","yesdrag","noclick","constant$2","DragEvent","subject","defaultFilter$1","defaultContainer","defaultSubject","defaultTouchable","drag","mousedowned","touchable","touchstarted","touchmoved","touchended","touchending","gesture","beforestart","mousemoved","mouseupped","mousemoving","mousedownx","mousedowny","clickDistance2","gestures","sublisteners","listeners","p0","clickDistance","definition","Color","reHex3","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","rgbConvert","rgb","Hsl","hslConvert","hsl","hsl2rgb","labConvert","Lab","Hcl","deg2rad","rgb2xyz","xyz2lab","Xn","Yn","Zn","lab","t3","lab2xyz","xyz2rgb","hclConvert","atan2","rad2deg","hcl","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","cubehelix","basis","v0","v1","v2","v3","basis$1","basisClosed","constant$3","exponential","hue","gamma","nogamma","rgbSpline","spline","color$$1","array$1","na","interpolateValue","setTime","reinterpolate","object","zero","interpolateString","am","bm","bs","reA","reB","interpolateRgb","valueOf","interpolateRound","decompose","skewX","rotate","degrees","atan","parseCss","identity$2","cssNode","cssRoot","cssView","parseSvg","svgNode","baseVal","consolidate","interpolateTransform","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","cosh","exp","sinh","tanh","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","epsilon2","rho","b0","rho4","rho2","b1","coshr0","hsl$1","hue$$1","lab$1","hcl$1","cubehelix$1","cubehelixGamma","cubehelix$$1","quantize","interpolator","samples","clockNow","setFrame","clearNow","clock","clockSkew","Timer","_call","_time","restart","timerFlush","taskHead","wake","clockLast","nap","poke","pokeDelay","taskTail","sleep","timeout$1","elapsed","interval$1","schedule","timing","schedules","__transition","create$1","emptyOn","tween","emptyTween","ease","CREATED","get$1","set$1","STARTING","SCHEDULED","STARTED","RUNNING","ENDED","ENDING","interrupt","schedule$$1","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","_id","tweenValue","interpolate","attrRemove$1","attrRemoveNS$1","attrConstant$1","interpolate$$1","value1","value00","interpolate0","attrConstantNS$1","attrFunction$1","value10","attrFunctionNS$1","transition_attr","interpolateTransformSvg","attrTween","attrTweenNS","_value","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","transition_filter","Transition","_name","transition_merge","transition$$1","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","Selection$1","styleRemove$1","styleRemoveEnd","styleConstant$1","styleFunction$1","transition_style","interpolateTransformCss","styleTween","transition_styleTween","textConstant$1","textFunction$1","transition_text","transition_transition","id0","id1","newId","linear$1","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","sinIn","halfPi","sinOut","sinInOut","pi","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","defaultTiming","selection_transition","root$1","constant$4","BrushEvent","nopropagation$1","noevent$1","defaultFilter","defaultExtent","__brush","brushSelection","dim","brushX","brush$1","brushY","brush","XY","handles","redraw","started","handleSize","Emitter","point1","shifting","lockX","lockY","moving","point0","MODE_SPACE","MODE_DRAG","signX","e0","e1","signY","s0","s1","MODE_HANDLE","MODE_CENTER","flipX","flipY","emit","ended","keydowned","keyupped","signsX","signsY","selection1","selection0","starting","compareValue","chord","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","max$1","tau$1","padAngle","di","dj","subindex","sortChords","constant$5","Path","_x0","_y0","_x1","_y1","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","ribbon","argv","slice$2","sa0","halfPi$1","sa1","sx0","sy0","ta0","ta1","quadraticCurveTo","Map","map$1","createResult","setResult","sortValues","rollup","valuesByKey","sortKey","sortKeys","createObject","setObject","createMap","setMap","Set","set$2","objectConverter","columns","customConverter","inferColumns","columnSet","dsv","convert","parseRows","eof","EOF","EOL","QUOTE","NEWLINE","RETURN","DELIMITER","formatValue","formatRows","formatRow","reFormat","center$1","sx","sy","constant$6","jiggle","tree_add","_x","_y","cover","tree","xm","ym","xp","yp","_root","y0","addAll","yz","tree_cover","tree_data","visit","tree_extent","Quad","tree_find","x3","y3","quads","tree_remove","retainer","removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","defaultX","tree_x","defaultY","tree_y","quadtree","Quadtree","leaf_copy","vx","vy","collide","quad","rj","ri","yi","strength","ri2","iterations","visitAfter","radii","nodeById","nodeId","defaultStrength","alpha","distances","strengths","initializeStrength","initializeDistance","x$1","y$1","simulation","alphaMin","stepper","alphaTarget","alphaDecay","forces","velocityDecay","fy","initializeNodes","initialRadius","angle","initialAngle","initializeForce","manyBody","accumulate","weight","theta2","distanceMax2","distanceMin2","distanceMin","distanceMax","theta","radial","radiuses","x$2","y$2","formatDecimal","coefficient","exponent$1","formatGroup","grouping","thousands","formatNumerals","numerals","formatDefault","toPrecision","formatPrefixAuto","exponent","prefixExponent","formatRounded","formatSpecifier","specifier","FormatSpecifier","sign","comma","precision","formatTypes","identity$3","formatLocale","locale","newFormat","valuePrefix","valueSuffix","formatType","valueNegative","prefixes","maybeSuffix","decimal","currency","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","add$1","bv","av","acos","pi$3","asin","halfPi$2","haversin","sin$1","noop$1","streamGeometry","geometry","streamGeometryType","streamLine","coordinates","coordinate","streamPolygon","polygonStart","polygonEnd","geoStream","streamObjectType","areaRingStart","areaStream","areaPointFirst","areaRingEnd","areaPoint","lambda00","phi00","lambda","phi","radians","lambda0","cosPhi0","cos$1","quarterPi","sinPhi0","dLambda","sdLambda","adLambda","cosPhi","sinPhi","areaRingSum","areaSum","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","boundsPoint","lambda0$1","lambda1","phi0","phi1","linePoint","equatorial","inflection","phii","lambda2","sign$$1","lambdai","degrees$1","antimeridian","boundsLineStart","boundsStream","boundsLineEnd","boundsRingPoint","deltaSum","lambda00$1","phi00$1","boundsRingStart","boundsRingEnd","epsilon$2","rangeCompare","rangeContains","bounds","feature","deltaMax","centroidPoint","centroidPointCartesian","W0","X0","Y0","Z0","centroidLineStart","centroidStream","centroidLinePointFirst","z0","centroidLinePoint","W1","X1","Y1","Z1","centroidLineEnd","centroidRingStart","centroidRingPointFirst","centroidRingEnd","centroidRingPoint","lambda00$2","phi00$2","cx","cy","cz","X2","Y2","Z2","centroid","epsilon2$1","constant$7","compose","rotationIdentity","tau$3","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","cosRadius","sinRadius","circleRadius","clipBuffer","rejoin","pointEqual","Intersection","clipRejoin","segments","compareIntersection","startInside","clip","segment","link$1","isSubject","polygonContains","polygon","winding","sum$1","sinPhi1","cosPhi1","absDelta","phiArc","pointVisible","sink","pointLine","pointRing","ringSink","ringStart","ringEnd","ringSegments","ringBuffer","polygonStarted","validSegment","sphere","clipAntimeridianLine","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipAntimeridianInterpolate","clipCircle","c0","v00","point2","smallRadius","intersect","notHemisphere","two","pa","pb","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","meridian","ax","ay","bx","clipRectangle","corner","comparePoint","ca","activeStream","polygonInside","bufferStream","cleanInside","clipStream","v_","x_","y_","x__","y__","v__","extent$1","cacheStream","lengthLineStart","lengthStream","lengthPointFirst","lengthLineEnd","lambda0$2","sinPhi0$1","cosPhi0$1","lengthPoint","cosDelta","sinDelta","lengthSum","length$1","object$1","containsGeometry","containsGeometryType","containsPoint","containsLine","ab","containsPolygon","ringRadians","pointRadians","containsObjectType","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","interpolate$1","cy0","cy1","sy1","kx0","ky0","kx1","ky1","identity$4","areaRingStart$1","areaStream$1","areaPointFirst$1","areaPoint$1","x00","x0$1","y00","y0$1","areaRingSum$1","areaRingEnd$1","boundsPoint$1","x0$2","y0$2","centroidPoint$1","X0$1","Y0$1","Z0$1","centroidLineStart$1","centroidStream$1","centroidPointFirstLine","centroidPointLine","x0$3","y0$3","X1$1","Y1$1","Z1$1","centroidLineEnd$1","centroidRingStart$1","centroidPointFirstRing","centroidRingEnd$1","centroidPointRing","x00$1","y00$1","X2$1","Y2$1","Z2$1","PathContext","_context","lengthPointFirst$1","lengthStream$1","lengthPoint$1","x00$2","x0$4","y00$2","y0$4","lengthSum$1","PathString","_string","circle$1","index$1","pointRadius","contextStream","projectionStream","boundsStream$1","transformer","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","resample","project","delta2","resample$1","resampleNone","resampleLineTo","phi2","dx2","dy2","dz","cosMinDistance","resampleStream","maxDepth","ringPoint","a00","b00","c00","transformRotate","projectionMutator","projectAt","projectRotate","projectTransform","recenter","preclip","clipAntimeridian","postclip","projectResample","transformRadians","clipAngle","conicProjection","parallels","cylindricalEqualAreaRaw","conicEqualAreaRaw","r0y","conicEqualArea","albers","multiplex","streams","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualArea","azimuthalEqualAreaRaw","azimuthalEquidistant","azimuthalEquidistantRaw","mercatorRaw","tan","mercator","mercatorProjection","reclip","tany","conicConformalRaw","conicConformal","equirectangularRaw","equirectangular","conicEquidistantRaw","gy","nx","conicEquidistant","gnomonicRaw","gnomonic","scaleTranslate","kx","ky","tx","ty","identity$5","transform$$1","reflectX","reflectY","naturalEarth1Raw","phi4","naturalEarth1","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","defaultSeparation","meanX","meanXReduce","maxY","maxYReduce","leafLeft","leafRight","cluster","previousNode","eachAfter","separation","nodeSize","node_count","node_each","node_eachBefore","node_eachAfter","node_sum","node_sort","eachBefore","node_path","ancestor","leastCommonAncestor","aNodes","ancestors","bNodes","node_ancestors","node_descendants","node_leaves","leaves","node_links","hierarchy","childs","valued","defaultChildren","computeHeight","node_copy","shuffle$1","enclose","circles","slice$3","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","x21","y21","r21","r3","a3","c3","da","db","dc","intersects","Node$1","packEnclose","aa","sj","sk","pack","optional","required","constantZero","constant$8","defaultRadius$1","index$2","radiusLeaf","packChildren","translateChild","roundNode","treemapDice","partition","positionNode","defaultId","defaultParentId","parentId","stratify","nodeKey","nodeByKey","keyPrefix$1","ambiguous","preroot","defaultSeparation$1","nextLeft","nextRight","moveSubtree","wm","wp","executeShifts","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","treemapSlice","squarifyRatio","sumValue","newRatio","minRatio","beta","dice","index$3","treemap","paddingStack","paddingInner","squarify","paddingOuter","valueOffset","sums","valueTarget","valueLeft","valueRight","xk","yk","sliceDice","area$1","centroid$1","cross$1","lexicographicOrder","computeUpperHullIndexes","hull","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","contains$1","length$2","perimeter","Queue","_size","_error","_tasks","_waiting","_active","_ended","_start","poke$1","start$1","noabort","maybeNotify","concurrency","defaultSource$1","hasResponse","XDomainRequest","onprogress","fixCallback","defaultMimeType","dsv$1","responseOf","request$$1","ordinal","unknown","implicit","slice$5","band","rescale","ordinalRange","rangeRound","pointish","point$1","constant$9","number$2","deinterpolateLinear","deinterpolateClamp","deinterpolate","reinterpolateClamp","bimap","d0","polymap","clamp","continuous","piecewise","map$3","linearish","nice","linear$2","identity$6","reinterpolate$1","pow10","powp","logp","log2","reflect","log$1","logs","pows","raise$1","pow$1","sqrt$1","quantile$$1","invertExtent","quantiles","quantize$1","threshold$1","newInterval","floori","offseti","t0$1","t1$1","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","durationMinute$1","durationWeek$1","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","localDate","setFullYear","utcDate","UTC","setUTCFullYear","newYear","formatLocale$1","pads","newParse","newDate","week","day$$1","parseSpecifier","utcMonday","utcDay","getUTCFullYear","getUTCMonth","monday","day","getFullYear","getMonth","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","formatMonth","locale_months","formatPeriod","locale_periods","getHours","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","getUTCHours","dateTime","periods","days","shortDays","months","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","%","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcFormat","utcParse","requote","requoteRe","numberRe","percentRe","year","getMilliseconds","getMinutes","getSeconds","sunday","thursday","utcYear","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","dow","utcSunday","utcThursday","defaultLocale$1","locale$1","timeFormat","timeParse","formatIsoNative","parseIsoNative","date$1","number$3","calendar","year$$1","month$$1","hour$$1","minute$$1","second$$1","millisecond$$1","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","tickInterval","tickIntervals","durationYear","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","month","hour","minute","millisecond","utcTime","utcMonth","utcHour","utcMinute","rainbow$1","ts","rainbow","ramp","sequential","constant$10","acos$1","pi$4","asin$1","halfPi$3","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","x10","y10","x32","y32","cornerTangents","x01","y01","sqrt$2","ox","oy","x11","y11","max$2","cx0","cx1","dx0","dy0","dx1","dy1","abs$1","epsilon$3","tau$4","cos$2","sin$2","a01","a11","a10","da0","da1","ap","padRadius","min$1","cornerRadius","rc0","rc1","oc","kc","atan2$1","Linear","curveLinear","x$3","y$3","defined0","curve","defined","x$$1","y$$1","area$2","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending$1","identity$7","arcs","Radial","_curve","curveRadial","lineRadial","lineRadial$1","curveRadialLinear","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","linkSource","linkTarget","link$2","slice$6","curveHorizontal","bezierCurveTo","curveVertical","curveRadial$1","p3","linkHorizontal","linkVertical","linkRadial","draw","circle$2","noop$2","point$2","Basis","basis$2","BasisClosed","basisClosed$1","BasisOpen","basisOpen","Bundle","_basis","_beta","point$3","_k","_x2","_y2","Cardinal","tension","CardinalClosed","CardinalOpen","point$4","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","CatmullRomClosed","CatmullRomOpen","LinearClosed","linearClosed","sign$1","slope3","slope2","point$5","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","natural","Step","stepBefore","stepAfter","none$1","series","none$2","stackValue","oz","kz","sij","ki","si","diverging","yn","silhouette","wiggle","s2","sij0","sij1","s3","ascending$2","sum$2","descending$2","insideOut","tops","bottoms","constant$11","x$4","y$4","RedBlackTree","RedBlackNode","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","createEdge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","clipEdges","epsilon$4","createCell","site","cellHalfedgeAngle","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endY","nCells","v01","v11","v10","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","epsilon2$2","ha","hc","circlePool","firstCircle","detachCircle","Beach","createBeach","beach","beachPool","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","voronoi","polygons","triangles","constant$12","ZoomEvent","Transform","transform$1","__zoom","identity$8","nopropagation$2","noevent$2","defaultFilter$2","defaultExtent$1","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultTouchable$1","defaultConstrain","translateExtent","invertX","invertY","wheeled","dblclicked","scaleExtent","Gesture","wheelidled","wheel","wheelDelay","constrain","touch0","touch1","touchstarting","touchDelay","dp","scaleBy","scaleTo","translateBy","translateTo","ascendingBisect","bisectLeft","xlink","xmlns","matcher","vendorMatches","classed","reI","reN","reP","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","displayable","brighter","darker","rgbGamma","rgb$$1","rgbBasis","rgbBasisClosed","SQRT2","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","performance","selection_prototype","polyIn","polyOut","polyInOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","amplitude","period","elasticOut","elasticInOut","xy","pi$1","pi$2","tau$2","tauEpsilon","arcTo","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","proto","csv","csvParse","csvParseRows","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatRows","treeProto","temp","Feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","areaRing","areaSum$1","_radius","_line","_point","lengthRing","_circle","cxcy","descendants","resquarify","_squarify","slice$4","await","awaitAll","uniform","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","exponential$1","sourceRandomExponential","randomExponential","createContextualFragment","responseXML","csv$1","tsv$1","array$2","milliseconds","seconds","minutes","hours","tuesday","wednesday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","years","setUTCSeconds","utcMinutes","setUTCMinutes","utcHours","utcDays","utcTuesday","utcWednesday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","setUTCMonth","utcMonths","utcYears","formatIso","parseIso","category10","category20b","category20c","category20","cubehelix$3","warm","cool","viridis","magma","inferno","plasma","cross$2","tan30","tan30_2","diamond","kr","star","square","sqrt3","triangle","wye","symbols","_x3","_x4","_y3","_y4","bundle","cardinal","_x5","_y5","cardinalClosed","cardinal$$1","cardinalOpen","x23","y23","catmullRom","catmullRomClosed","catmullRom$$1","catmullRomOpen","_t0","px","py","grandpa","uncle","_found","applyX","applyY","rescaleX","rescaleY","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","quantile","dragEnable","dsvFormat","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeQuadInOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","forceCenter","forceCollide","forceLink","forceManyBody","forceRadial","forceSimulation","forceX","forceY","formatDefaultLocale","geoArea","geoBounds","geoCentroid","geoCircle","geoClipAntimeridian","geoClipCircle","geoClipExtent","geoClipRectangle","geoContains","geoDistance","geoGraticule","geoGraticule10","geoInterpolate","geoLength","geoPath","geoAlbers","geoAlbersUsa","geoAzimuthalEqualArea","geoAzimuthalEqualAreaRaw","geoAzimuthalEquidistant","geoAzimuthalEquidistantRaw","geoConicConformal","geoConicConformalRaw","geoConicEqualArea","geoConicEqualAreaRaw","geoConicEquidistant","geoConicEquidistantRaw","geoEquirectangular","geoEquirectangularRaw","geoGnomonic","geoGnomonicRaw","geoIdentity","geoProjection","geoProjectionMutator","geoMercator","geoMercatorRaw","geoNaturalEarth1","geoNaturalEarth1Raw","geoOrthographic","geoOrthographicRaw","geoStereographic","geoStereographicRaw","geoTransverseMercator","geoTransverseMercatorRaw","geoRotation","geoTransform","packSiblings","treemapBinary","treemapSliceDice","treemapSquarify","treemapResquarify","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateNumber","interpolateObject","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","interpolateCubehelixLong","polygonArea","polygonCentroid","polygonHull","polygonLength","scaleBand","scalePoint","scaleIdentity","scaleLinear","scaleLog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","schemeCategory10","schemeCategory20b","schemeCategory20c","schemeCategory20","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","scaleSequential","clientPoint","radialArea","radialLine","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","curveBasisClosed","curveBasisOpen","curveBasis","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","stackOffsetExpand","stackOffsetDiverging","stackOffsetNone","stackOffsetSilhouette","stackOffsetWiggle","stackOrderAscending","stackOrderDescending","stackOrderInsideOut","stackOrderNone","stackOrderReverse","timeInterval","timeMillisecond","timeMilliseconds","utcMillisecond","utcMilliseconds","timeSecond","timeSeconds","utcSecond","utcSeconds","timeMinute","timeMinutes","timeHour","timeHours","timeDay","timeDays","timeWeek","timeWeeks","timeSunday","timeSundays","timeMonday","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursday","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonth","timeMonths","timeYear","timeYears","utcWeek","utcWeeks","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","zoomTransform","zoomIdentity","AxisInternal","component","internal","innerTickSize","outerTickSize","withOuterTick","tickOffset","tickCulling","tickCentered","tickTextCharSize","tickTextRotate","tickLength","generateAxis","Component","componentKey","chart","Chart","$$","ChartInternal","loadConfig","beforeInit","afterInit","bindThis","argThis","c3_chart_fn","api","getDefaultConfig","axes","c3_axis_fn","c3_axis_internal_fn","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","defocused","regions","tooltipContainer","tooltipName","bars","arcLabelLine","areas","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","axisX","axisXLabel","axisY","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","_typeof","classCallCheck","instance","inherits","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","ReferenceError","isValue","isDefined","ceil10","asHalfPixel","diffDomain","notEmpty","c3_chart_internal_fn","hasValue","sanitise","getPathBox","pathSegList","generateTicks","copyScale","newScale","isCategory","textFormatted","formatted","updateRange","rangeExtent","updateTickTextCharSize","isVertical","tspanData","splitted","tickMultiline","splitTickText","spaceIndex","subtext","textWidth","tickText","tickWidth","updateTickLength","lineY2","tickPosition","textY","textTextAnchor","tspanDx","tspanDy","tickTransform","tickX","tickY","scale0","__chart__","scale1","ticksValues","tickUpdate","lineUpdate","textUpdate","tspans","tspanEnter","tspanUpdate","pathUpdate","rangeBand","isCentered","getTotalLength","culling","Axis","_Component","_this","main","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutTransition","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axis_y_tick_rotate","isTimeSeriesY","axis_y_tick_time_type","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axisId","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isInner","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","axis_x_height","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","updateLabels","withTransition","getPadding","domainLength","convertPixelsToAxisPadding","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","axisSubX","subx","isHidden","generate","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragging","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeParse","data_xLocaltime","data_xFormat","axis_x_localtime","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","bindto","selectChart","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","updateSizes","updateScales","subX","subY","subY2","orgXDomain","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initPie","initSubchart","initTooltip","initLegend","initTitle","initZoom","initSubchartBrush","initRegion","initGrid","grid_lines_front","initGridLines","updateTargets","initEventRect","axis_x_selection","selectionAsValue","getDefaultSelection","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","smoothLines","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","xForText","yForText","durationForExit","durationForAxis","transitionsToWait","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateCircleY","circleY","circleX","updateXgridFocus","data_empty_label_text","redrawEventRect","updateGrid","updateRegion","updateBar","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","generateFlow","isTabVisible","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","isPointShouldBeShown","point_show","isScatterType","opacityForText","xx","axis_x_categories","yv","yScale","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","observe","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","resizeIfElementDisplayed","callResizeFunctions","resizeFunctions","endall","parsedDate","mozHidden","msHidden","webkitHidden","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","measurementElement","lastPathSegment","numberOfItems","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","insertItemBefore","replaceItem","appendItem","pathSegArray","Builder","appendSegment","Source","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","_parseNumber","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","categories","size_width","size_height","targetIds","shown","targetId","clearLegendItemTextBoxCache","updateDataAttributes","baseTarget","baseValue","notfoundIds","orgDataCount","getMaxDataCount","getOtherTargetX","missing","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","updateXGrid","hideXGridFocus","flowTransition","isRegionOnX","xgridAttr","regionX","regionWidth","candidates","mapToTargetIds","selectorTargets","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","hideLegend","addXs","data_classes","data_colors","hasCaches","cacheIds","getCaches","loadFromArgs","getTargetSelectorSuffix","resetOther","data_selection_enabled","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","filterByX","getMousePosition","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","zoom_enabled","unzoom","zoom_x_max","zoom_x_min","orderFct","getOrderFunction","isOrderAsc","isOrderDesc","defaultSort","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","innerRadiusRatio","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","withoutUpdate","updated","rate","expandWidth","getArc","isArcType","transformForArcLabel","hasGauge","donut_label_ratio","pie_label_ratio","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPies","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","backgroundArc","arcLabelLines","mainArcLabelLine","arcData","classArc","interaction_enabled","_current","color_pattern","gauge_labelLine_show","innerLineLength","lineAngle","linePositioningAngle","data_onmouseover","selectedData","revertLegend","data_onmouseout","toggleShape","data_onclick","interpolated","gauge_label_show","gauge_units","addCache","cloneTarget","generateTargetClass","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","data_color","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_initialRange","zoom_privileged","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","this_config","req","dataResponse","responseURL","convertTsvToData","convertCsvToData","convertXsvToData","xsv","_parser$parseRows","_parser$parseRows2","targetKeys","new_rows","new_row","findValueInJson","pathArray","newRows","newRow","appendXs","isNotX","isX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","xValues","getXValue","idsForX","valueOnIndex","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","orderAsc","orderDesc","reducer","t1Sum","t2Sum","orderTargets","fct","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","dataLabelFormat","isNoneArc","isArc","findClosestFromTargets","findClosest","minDist","isWithinBar","xIndex","yIndex","convertValuesToStep","converted","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","firstX","lastX","withTrim","updateScale","trimXDomain","zoomDomain","getZoomDomain","mx","my","minX","maxX","minY","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","xgridEnter","updateYGrid","gridValues","ygridEnter","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLineEnter","ygridLineEnter","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","forX","toRemove","toShow","mouseout","unexpandCircles","unexpandBars","sameXData","expandCircles","expandBars","isWithinShape","getYScale","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","getTextBox","textElement","getTextRect","updatePositions","updateValues","withoutStep","areaLength","totalLength","itemLength","posMin","steps","margins","maxLength","isLast","tileWidth","itemHeight","maxHeight","widths","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","tiles","mainRegionEnter","regionY","regionHeight","getScale","forTimeseries","getX","_scale","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","unselectPath","isStepType","mainBars","mainBarEnter","barData","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","posX","posY","seg0","seg1","ey","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","linear-closed","basis-open","basis-closed","cardinal-open","cardinal-closed","monotone","isSplineType","mainLines","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","_regions","generateM","sWithRegion","diffx2","xOffset","x_diff","xv0","xv1","mainAreaEnter","orgAreaOpacity","generateGetAreaPoints","getAreaBaseValue","areaTargetsNum","areaOffset","lineOrScatterData","mainCircleEnter","pointR","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","legendWidthOnRight","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","initBrush","redrawForBrush","updateExtent","contextLineEnter","contextLine","contextBarEnter","contextBar","updateBarForSubchart","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","contextAreaEnter","redrawAreaForSubchart","drawAreaOnSub","mainTextEnter","barOrLineData","forFlow","font","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","getTooltipSortFunction","sortFunction","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","startEvent","redrawForZoom","updateDomain","svgPanZoom","./svg-pan-zoom.js","2","svgNS","_createZoomIn","_createZoomReset","_createZoomOut","controlIcons","getPublicInstance","zoomIn","zoomOut","./svg-utilities","originalState","activeState","updateCTMCached","updateCTM","createRequestAnimationFrame","refreshRate","viewBox","cacheViewBox","processCTM","setCTM","updateCTMOnNextFrame","simpleViewBoxCache","getBBox","getViewBox","getCTM","contain","getOriginalState","getZoom","getRelativeZoom","computeRelativeZoom","getPan","createSVGMatrix","isZoomDifferent","isPanDifferent","beforeZoom","updateCache","onZoom","beforePan","onPan","pendingUpdate","onUpdatedCTM","./utilities","4","viewportSelector","panEnabled","controlIconsEnabled","zoomEnabled","dblClickZoomEnabled","mouseWheelZoomEnabled","preventMouseEventsDefault","zoomScaleSensitivity","minZoom","maxZoom","customEventsHandler","eventsListenerElement","setupSvgAttributes","getBoundingClientRectNormalized","getOrCreateViewport","setBeforeZoom","setOnZoom","setBeforePan","setOnPan","setOnUpdatedCTM","lastMouseWheelEventTime","setupHandlers","eventListeners","handleMouseDown","touchstart","handleMouseUp","touchend","handleMouseMove","touchmove","touchleave","touchcancel","svgElement","haltEventListeners","enableMouseWheelZoom","wheelListener","handleMouseWheel","disableMouseWheelZoom","getEventPoint","zoomAtPoint","multiply","getSvgCenterPoint","publicZoom","computeFromRelativeZoom","publicZoomAtPoint","resetZoom","resetPan","pan","handleDblClick","mouseAndTouchNormalize","isDblClick","firstEventCTM","stateOrigin","updateBBox","panBy","disableControlIcons","enableControlIcons","publicInstance","enablePan","disablePan","isPanEnabled","enableZoom","disableZoom","isZoomEnabled","isControlIconsEnabled","enableDblClickZoom","disableDblClickZoom","isDblClickZoomEnabled","isMouseWheelZoomEnabled","setZoomScaleSensitivity","setMinZoom","setMaxZoom","zoomBy","zoomAtPointBy","getSizes","realZoom","getSvg","./control-icons","./shadow-viewport","./uniwheel","5","xmlNS","xmlnsNS","xlinkNS","evNS","internetExplorerRedisplayInterval","refreshDefsGlobal","6","deltaX","delatZ","onmousewheel","7","HTMLElement","SVGSVGElement","getSVGDocument","leading","trailing","menuBroadcast","swishLogo","setupModal","setupPanes","setupResize","setupUnload","Save ...","Info & history ...","Reload","Open recent","Share","Follow ...","Start TogetherJS ...","Export","Download","Print ...","Edit","Clear messages","Changes","View changes","Find (Ctrl-F)","Find and replace (Shift-Ctrl-F)","Jump to line (Alt-G)","Options","Semantic highlighting","Emacs Keybinding","Open document in new tab","Preserve state in browser","Examples","Help","show_beware","preserve_state","playFile","playURL","openExampleFunction","populateExamples","swish_examples","populateHelp","openHelpFunction","swish_help_index","prologSource","tabData","onlyglobal","fullscreen_origin","fullscreen_main","exitFullscreen","isFullscreen","collaborate","TogetherJS","urlArgs","waitSeconds","jquery-ui","bloodhound","tagmanager","svg-pan-zoom","cm/mode/prolog","cm/addon/hover/prolog-hover","cm/addon/hover/text-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","shim","deps"],"mappings":"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AA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EA9FA,4SA8FA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EA/FA,8QACA,qeA+FA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAtGA,qeAsGA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EArcA,kaACA,mRAqcA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAneA,kgBAoeA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAlgBA,kgBACA,kgBAkgBA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,E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","file":"swish-min.js.new","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";var b=a.fn.jquery.split(\" \")[0].split(\".\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\"bsTransitionEnd\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var c=a(this),e=c.data(\"bs.alert\");e||c.data(\"bs.alert\",e=new d(this)),\"string\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\"alert\"]',d=function(b){a(b).on(\"click\",c,this.close)};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\"closed.bs.alert\").remove()}var e=a(this),f=e.attr(\"data-target\");f||(f=e.attr(\"href\"),f=f&&f.replace(/.*(?=#[^\\s]*$)/,\"\"));var g=a(\"#\"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(\".alert\")),g.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(g.removeClass(\"in\"),a.support.transition&&g.hasClass(\"fade\")?g.one(\"bsTransitionEnd\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\"click.bs.alert.data-api\",c,d.prototype.close)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.button\",e=new c(this,f)),\"toggle\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\"3.3.7\",c.DEFAULTS={loadingText:\"loading...\"},c.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",null==f.resetText&&d.data(\"resetText\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")?(c.prop(\"checked\")&&(a=!1),b.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==c.prop(\"type\")&&(c.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(a=!1),this.$element.toggleClass(\"active\")),c.prop(\"checked\",this.$element.hasClass(\"active\")),a&&c.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(c){var d=a(c.target).closest(\".btn\");b.call(d,\"toggle\"),a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(c.preventDefault(),d.is(\"input,button\")?d.trigger(\"focus\"):d.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(b){a(b.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},c.DEFAULTS,d.data(),\"object\"==typeof b&&b),g=\"string\"==typeof b?b:f.slide;e||d.data(\"bs.carousel\",e=new c(this,f)),\"number\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",a.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",a.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",a.proxy(this.cycle,this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\".item\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\"prev\"==a&&0===c||\"next\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\"prev\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\"next\":\"prev\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},c.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},c.prototype.slide=function(b,d){var e=this.$element.find(\".item.active\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\"next\"==b?\"left\":\"right\",i=this;if(f.hasClass(\"active\"))return this.sliding=!1;var j=f[0],k=a.Event(\"slide.bs.carousel\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\"active\")}var m=a.Event(\"slid.bs.carousel\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\"slide\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\"bsTransitionEnd\",function(){f.removeClass([b,h].join(\" \")).addClass(\"active\"),e.removeClass([\"active\",h].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\"active\"),f.addClass(\"active\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\"data-target\")||(d=e.attr(\"href\"))&&d.replace(/.*(?=#[^\\s]+$)/,\"\"));if(f.hasClass(\"carousel\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\"data-slide-to\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\"bs.carousel\").to(h),c.preventDefault()}};a(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",e).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",e),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\"use strict\";function b(b){var c,d=b.attr(\"data-target\")||(c=b.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\"bs.collapse\"),f=a.extend({},d.DEFAULTS,c.data(),\"object\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\"bs.collapse\",e=new d(this,f)),\"string\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\"collapse\"][href=\"#'+b.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+b.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b,e=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(e&&e.length&&(b=e.data(\"bs.collapse\"),b&&b.transitioning))){var f=a.Event(\"show.bs.collapse\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\"hide\"),b||e.data(\"bs.collapse\",null));var g=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\"scroll\",g].join(\"-\"));this.$element.one(\"bsTransitionEnd\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return a.support.transition?void this.$element[c](0).one(\"bsTransitionEnd\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\"in\");a.attr(\"aria-expanded\",c),b.toggleClass(\"collapsed\",!c).attr(\"aria-expanded\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(d){var e=a(this);e.attr(\"data-target\")||d.preventDefault();var f=b(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":e.data();c.call(f,h)})}(jQuery),+function(a){\"use strict\";function b(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\"open\")&&(c&&\"click\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\"hide.bs.dropdown\",f)),c.isDefaultPrevented()||(d.attr(\"aria-expanded\",\"false\"),e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\"bs.dropdown\");d||c.data(\"bs.dropdown\",d=new g(this)),\"string\"==typeof b&&d[b].call(c)})}var e=\".dropdown-backdrop\",f='[data-toggle=\"dropdown\"]',g=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};g.VERSION=\"3.3.7\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=b(e),g=f.hasClass(\"open\");if(c(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;e.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\".disabled, :disabled\")){var e=b(d),g=e.hasClass(\"open\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\"focus\"),d.trigger(\"click\");var h=\" li:not(.disabled):visible a\",i=e.find(\".dropdown-menu\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger(\"focus\")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(\"click.bs.dropdown.data-api\",c).on(\"click.bs.dropdown.data-api\",\".dropdown form\",function(a){a.stopPropagation()}).on(\"click.bs.dropdown.data-api\",f,g.prototype.toggle).on(\"keydown.bs.dropdown.data-api\",f,g.prototype.keydown).on(\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",g.prototype.keydown)}(jQuery),+function(a){\"use strict\";function b(b,d){return this.each(function(){var e=a(this),f=e.data(\"bs.modal\"),g=a.extend({},c.DEFAULTS,e.data(),\"object\"==typeof b&&b);f||e.data(\"bs.modal\",f=new c(this,g)),\"string\"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(\".modal-dialog\"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(\".modal-content\").load(this.options.remote,a.proxy(function(){this.$element.trigger(\"loaded.bs.modal\")},this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event(\"show.bs.modal\",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass(\"modal-open\"),this.escape(),this.resize(),this.$element.on(\"click.dismiss.bs.modal\",'[data-dismiss=\"modal\"]',a.proxy(this.hide,this)),this.$dialog.on(\"mousedown.dismiss.bs.modal\",function(){d.$element.one(\"mouseup.dismiss.bs.modal\",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass(\"fade\");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass(\"in\"),d.enforceFocus();var f=a.Event(\"shown.bs.modal\",{relatedTarget:b});e?d.$dialog.one(\"bsTransitionEnd\",function(){d.$element.trigger(\"focus\").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger(\"focus\").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(\"hide.bs.modal\"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off(\"focusin.bs.modal\"),this.$element.removeClass(\"in\").off(\"click.dismiss.bs.modal\").off(\"mouseup.dismiss.bs.modal\"),this.$dialog.off(\"mousedown.dismiss.bs.modal\"),a.support.transition&&this.$element.hasClass(\"fade\")?this.$element.one(\"bsTransitionEnd\",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger(\"focus\")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(\"keydown.dismiss.bs.modal\",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off(\"keydown.dismiss.bs.modal\")},c.prototype.resize=function(){this.isShown?a(window).on(\"resize.bs.modal\",a.proxy(this.handleUpdate,this)):a(window).off(\"resize.bs.modal\")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass(\"modal-open\"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger(\"hidden.bs.modal\")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass(\"fade\")?\"fade\":\"\";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement(\"div\")).addClass(\"modal-backdrop \"+e).appendTo(this.$body),this.$element.on(\"click.dismiss.bs.modal\",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&(\"static\"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass(\"in\"),!b)return;f?this.$backdrop.one(\"bsTransitionEnd\",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass(\"in\");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass(\"fade\")?this.$backdrop.one(\"bsTransitionEnd\",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\"\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css(\"padding-right\")||0,10);this.originalBodyPad=document.body.style.paddingRight||\"\",this.bodyIsOverflowing&&this.$body.css(\"padding-right\",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css(\"padding-right\",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement(\"div\");a.className=\"modal-scrollbar-measure\",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',function(c){var d=a(this),e=d.attr(\"href\"),f=a(d.attr(\"data-target\")||e&&e.replace(/.*(?=#[^\\s]+$)/,\"\")),g=f.data(\"bs.modal\")?\"toggle\":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is(\"a\")&&c.preventDefault(),f.one(\"show.bs.modal\",function(a){a.isDefaultPrevented()||f.one(\"hidden.bs.modal\",function(){d.is(\":visible\")&&d.trigger(\"focus\")})}),b.call(f,g,this)})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tooltip\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.tooltip\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init(\"tooltip\",a,b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:\"top\",selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusin\"==b.type?\"focus\":\"hover\"]=!0),c.tip().hasClass(\"in\")||\"in\"==c.hoverState?void(c.hoverState=\"in\"):(clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusout\"==b.type?\"focus\":\"hover\"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\"id\",g),this.$element.attr(\"aria-describedby\",g),this.options.animation&&f.addClass(\"fade\");var h=\"function\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\s?auto?\\s?/i,j=i.test(h);j&&(h=h.replace(i,\"\")||\"top\"),f.detach().css({top:0,left:0,display:\"block\"}).addClass(h).data(\"bs.\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\"bottom\"==h&&k.bottom+m>o.bottom?\"top\":\"top\"==h&&k.top-m<o.top?\"bottom\":\"right\"==h&&k.right+l>o.width?\"left\":\"left\"==h&&k.left-l<o.left?\"right\":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger(\"shown.bs.\"+e.type),e.hoverState=null,\"out\"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css(\"margin-top\"),10),h=parseInt(d.css(\"margin-left\"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass(\"in\");var i=d[0].offsetWidth,j=d[0].offsetHeight;\"top\"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?\"offsetWidth\":\"offsetHeight\";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?\"left\":\"top\",50*(1-a/b)+\"%\").css(c?\"top\":\"left\",\"\")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(\".tooltip-inner\")[this.options.html?\"html\":\"text\"](b),a.removeClass(\"fade in top bottom left right\")},c.prototype.hide=function(b){function d(){\"in\"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr(\"aria-describedby\").trigger(\"hidden.bs.\"+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event(\"hide.bs.\"+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass(\"in\"),a.support.transition&&f.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(\"title\")||\"string\"!=typeof a.attr(\"data-original-title\"))&&a.attr(\"data-original-title\",a.attr(\"title\")||\"\").attr(\"title\",\"\")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d=\"BODY\"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return\"bottom\"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:\"top\"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:\"left\"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\"data-original-title\")||(\"function\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\"bs.\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\"in\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\".\"+a.type).removeData(\"bs.\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.popover\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\"popover\",a,b)};if(!a.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");c.VERSION=\"3.3.7\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\"use strict\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})}b.VERSION=\"3.3.7\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\"offset\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\"position\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\"target\")||b.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){\nthis.activeTarget=b,this.clear();var c=this.selector+'[data-target=\"'+b+'\"],'+this.selector+'[href=\"'+b+'\"]',d=a(c).parents(\"li\").addClass(\"active\");d.parent(\".dropdown-menu\").length&&(d=d.closest(\"li.dropdown\").addClass(\"active\")),d.trigger(\"activate.bs.scrollspy\")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,\".active\").removeClass(\"active\")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on(\"load.bs.scrollspy.data-api\",function(){a('[data-spy=\"scroll\"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tab\");e||d.data(\"bs.tab\",e=new c(this)),\"string\"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest(\"ul:not(.dropdown-menu)\"),d=b.data(\"target\");if(d||(d=b.attr(\"href\"),d=d&&d.replace(/.*(?=#[^\\s]*$)/,\"\")),!b.parent(\"li\").hasClass(\"active\")){var e=c.find(\".active:last a\"),f=a.Event(\"hide.bs.tab\",{relatedTarget:b[0]}),g=a.Event(\"show.bs.tab\",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest(\"li\"),c),this.activate(h,h.parent(),function(){e.trigger({type:\"hidden.bs.tab\",relatedTarget:b[0]}),b.trigger({type:\"shown.bs.tab\",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),h?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\").length&&b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),e&&e()}var g=d.find(\"> .active\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\"fade\")||!!d.find(\"> .fade\").length);g.length&&h?g.one(\"bsTransitionEnd\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\"in\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\"show\")};a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',e).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',e)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.affix\",e=new c(this,f)),\"string\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\"3.3.7\",c.RESET=\"affix affix-top affix-bottom\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\"top\"==this.affixed)return e<c&&\"top\";if(\"bottom\"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&\"bottom\":!(e+g<=a-d)&&\"bottom\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?\"top\":null!=d&&i+j>=a-d&&\"bottom\"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\"affix\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\"object\"!=typeof d&&(f=e=d),\"function\"==typeof e&&(e=d.top(this.$element)),\"function\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\"top\",\"\");var i=\"affix\"+(h?\"-\"+h:\"\"),j=a.Event(i+\".bs.affix\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\"bottom\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\ndefine(\"bootstrap\", [\"jquery\"], function(){});\n\n","/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){\"use strict\";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return\"function\"==typeof t&&\"number\"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement(\"script\");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?l[c.call(e)]||\"object\":typeof e}var b=\"3.3.1\",w=function(e,t){return new w.fn.init(e,t)},T=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;w.fn=w.prototype={jquery:\"3.3.1\",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:\"jQuery\"+(\"3.3.1\"+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==c.call(e))&&(!(t=i(e))||\"function\"==typeof(n=f.call(t,\"constructor\")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(T,\"\")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,\"string\"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),\"function\"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){l[\"[object \"+t+\"]\"]=t.toLowerCase()});function C(e){var t=!!e&&\"length\"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b=\"sizzle\"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",R=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",I=\"\\\\[\"+M+\"*(\"+R+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+R+\"))|)\"+M+\"*\\\\]\",W=\":(\"+R+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+I+\")*)|.*)\\\\)|)\",$=new RegExp(M+\"+\",\"g\"),B=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),F=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),_=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),z=new RegExp(\"=\"+M+\"*([^\\\\]'\\\"]*?)\"+M+\"*\\\\]\",\"g\"),X=new RegExp(W),U=new RegExp(\"^\"+R+\"$\"),V={ID:new RegExp(\"^#(\"+R+\")\"),CLASS:new RegExp(\"^\\\\.(\"+R+\")\"),TAG:new RegExp(\"^(\"+R+\"|[*])\"),ATTR:new RegExp(\"^\"+I),PSEUDO:new RegExp(\"^\"+W),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+P+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\\d$/i,Q=/^[^{]+\\{\\s*\\[native \\w/,J=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,K=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ee=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+\" \"]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if(\"object\"!==t.nodeName.toLowerCase()){(c=t.getAttribute(\"id\"))?c=c.replace(te,ne):t.setAttribute(\"id\",c=b),s=(h=a(e)).length;while(s--)h[s]=\"#\"+c+\" \"+ve(h[s]);v=h.join(\",\"),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace(B,\"$1\"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split(\"|\"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function de(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",re,!1):i.attachEvent&&i.attachEvent(\"onunload\",re)),n.attributes=ue(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML=\"<a id='\"+b+\"'></a><select id='\"+b+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&y.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||y.push(\"\\\\[\"+M+\"*(?:value|\"+P+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||y.push(\"~=\"),e.querySelectorAll(\":checked\").length||y.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||y.push(\".#.+[+~]\")}),ue(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&y.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&y.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&y.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),y.push(\",.*:\")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),v.push(\"!=\",W)}),y=y.length&&new RegExp(y.join(\"|\")),v=v.length&&new RegExp(v.join(\"|\")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,\"='$1']\"),n.matchesSelector&&g&&!S[t+\" \"]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+\"\").replace(te,ne)},oe.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace($,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,\"$1\"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||\"\")||oe.error(\"unsupported lang: \"+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+\" \"];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B,\" \")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&\"parentNode\"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||\"*\",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(B,\"$1\"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+\" \"];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(D).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))}),ue(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||le(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||le(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute(\"disabled\")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,\"string\"==typeof e){if(!(i=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,\"parentNode\")},parentsUntil:function(e,t,n){return k(e,\"parentNode\",n)},next:function(e){return P(e,\"nextSibling\")},prev:function(e){return P(e,\"previousSibling\")},nextAll:function(e){return k(e,\"nextSibling\")},prevAll:function(e){return k(e,\"previousSibling\")},nextUntil:function(e,t,n){return k(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return k(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,\"iframe\")?e.contentDocument:(N(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e=\"string\"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:\"\")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&\"string\"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},\"catch\":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError(\"Thenable self-resolution\");l=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener(\"DOMContentLoaded\",_),e.removeEventListener(\"load\",_),w.ready()}\"complete\"===r.readyState||\"loading\"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener(\"DOMContentLoaded\",_),e.addEventListener(\"load\",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,\"ms-\").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,ee=/[A-Z]/g;function te(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(ee,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,\"hasDataAttrs\"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf(\"data-\")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks(\"once memory\").add(function(){J.remove(e,[t+\"queue\",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=J.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+re+\")([a-z%]*)$\",\"i\"),oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&w.contains(e.ownerDocument,e)&&\"none\"===w.css(e,\"display\")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,\"\")},u=s(),l=n&&n[3]||(w.cssNumber[t]?\"\":\"px\"),c=(w.cssNumber[t]||\"px\"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===i&&(i=\"block\"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?(\"none\"===n&&(i[o]=J.get(r,\"display\")||null,i[o]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(i[o]=ce(r))):\"none\"!==n&&(i[o]=\"none\",J.set(r,\"display\",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],\"globalEval\",!t||J.get(t[n],\"globalEval\"))}var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),\"script\"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement(\"div\")),t=r.createElement(\"input\");t.setAttribute(\"type\",\"radio\"),t.setAttribute(\"checked\",\"checked\"),t.setAttribute(\"name\",\"t\"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML=\"<textarea>x</textarea>\",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return\"undefined\"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||\"\").split(\".\").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,\"handle events\")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,\"events\")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&N(this,\"input\"))return this.click(),!1},_default:function(e){return N(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Ae=/<script|<style|<link/i,je=/checked\\s*(?:[^=]|=\\s*.checked.)/i,qe=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Le(e,t){return N(e,\"table\")&&N(11!==t.nodeType?t:t.firstChild,\"tr\")?w(e).children(\"tbody\")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Oe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();\"input\"===n&&pe.test(e.type)?t.checked=e.checked:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&\"string\"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,\"script\"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,\"script\"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||\"\")&&!J.access(l,\"globalEval\")&&w.contains(c,l)&&(l.src&&\"module\"!==(l.type||\"\").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,\"\"),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,\"script\")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,\"script\")).length>0&&ve(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp(\"^(\"+re+\")(?!px)[a-z%]+$\",\"i\"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join(\"|\"),\"i\");!function(){function t(){if(c){l.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",c.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i=\"1%\"!==t.top,u=12===n(t.marginLeft),c.style.right=\"60%\",s=36===n(t.right),o=36===n(t.width),c.style.position=\"absolute\",a=36===c.offsetWidth||\"absolute\",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement(\"div\"),c=r.createElement(\"div\");c.style&&(c.style.backgroundClip=\"content-box\",c.cloneNode(!0).style.backgroundClip=\"\",h.clearCloneStyle=\"content-box\"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ve={letterSpacing:\"0\",fontWeight:\"400\"},Ge=[\"Webkit\",\"Moz\",\"ms\"],Ye=r.createElement(\"div\").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?(\"content\"===n&&(u-=w.css(e,\"padding\"+oe[a],!0,i)),\"margin\"!==n&&(u-=w.css(e,\"border\"+oe[a]+\"Width\",!0,i))):(u+=w.css(e,\"padding\"+oe[a],!0,i),\"padding\"!==n?u+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i):s+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o=\"border-box\"===w.css(e,\"boxSizing\",!1,r),a=o;if(We.test(i)){if(!n)return i;i=\"auto\"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),(\"auto\"===i||!parseFloat(i)&&\"inline\"===w.css(e,\"display\",!1,r))&&(i=e[\"offset\"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?\"border\":\"content\"),a,r,i)+\"px\"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),h.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),\"normal\"===i&&t in Ve&&(i=Ve[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a=\"border-box\"===w.css(e,\"boxSizing\",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),s&&(i=ie.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,\"marginLeft\"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),w.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=oe[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,\"fxshow\");n.queue||(null==(a=w._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,\"fx\").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,\"display\")),\"none\"===(c=w.css(e,\"display\"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,\"display\"),fe([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===w.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?\"hidden\"in y&&(g=y.hidden):y=J.access(e,\"fxshow\",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,\"fxshow\");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=[\"*\"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&\"object\"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each(function(){var t,n=J.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut(\"show\"),slideUp:ut(\"hide\"),slideToggle:ut(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement(\"input\"),t=r.createElement(\"select\").appendChild(r.createElement(\"option\"));e.type=\"checkbox\",h.checkOn=\"\"!==e.value,h.optSelected=t.selected,(e=r.createElement(\"input\")).value=\"t\",e.type=\"radio\",h.radioValue=\"t\"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&\"radio\"===t&&N(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(\" \")}function mt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function xt(e){return Array.isArray(e)?e:\"string\"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])while(r.indexOf(\" \"+o+\" \")>-1)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&\"boolean\"!==n||((t=mt(this))&&J.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":J.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&(\" \"+vt(mt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var bt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?\"\":e+\"\"})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(bt,\"\"):null==n?\"\":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,\"optgroup\"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),h.focusin=\"onfocusin\"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,\"type\")?t.type:t,x=f.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(m=(x=m.split(\".\")).shift(),x.sort()),c=m.indexOf(\":\")<0&&\"on\"+m,t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,\"events\")||{})[t.type]&&J.get(s,\"handle\"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\\?/;w.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||w.error(\"Invalid XML: \"+t),n};var St=/\\[\\]$/,Dt=/\\r?\\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==x(t))r(e,t);else for(i in t)jt(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Dt,\"\\r\\n\")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\\/\\//,It={},Wt={},$t=\"*/\".concat(\"*\"),Bt=r.createElement(\"a\");Bt.href=Ct.href;function Ft(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:\"GET\",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":$t,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks(\"once memory\"),x=h.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+\"\").replace(Rt,Ct.protocol+\"//\"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||\"*\").toLowerCase().match(M)||[\"\"],null==h.crossDomain){l=r.createElement(\"a\");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+\"//\"+Bt.host!=l.protocol+\"//\"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&\"string\"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,\"\"),h.hasContent?h.data&&h.processData&&0===(h.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(h.data=h.data.replace(qt,\"+\")):(d=h.url.slice(o.length),h.data&&(h.processData||\"string\"==typeof h.data)&&(o+=(kt.test(o)?\"&\":\"?\")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,\"$1\"),d=(kt.test(o)?\"&\":\"?\")+\"_=\"+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[o]),w.etag[o]&&E.setRequestHeader(\"If-None-Match\",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",h.contentType),E.setRequestHeader(\"Accept\",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(\"*\"!==h.dataTypes[0]?\", \"+$t+\"; q=0.01\":\"\"):h.accepts[\"*\"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C=\"abort\",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger(\"ajaxSend\",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort(\"timeout\")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,\"No Transport\");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||\"\",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[o]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[o]=T)),204===t||\"HEAD\"===h.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?\"ajaxSuccess\":\"ajaxError\",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger(\"ajaxComplete\",[E,h]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&\"withCredentials\"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),w.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(\"<script>\").prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&o(\"error\"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\\?(?=&|$)|\\?\\?/;w.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Yt.pop()||w.expando+\"_\"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Qt.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,\"$1\"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||w.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),\"script\"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument(\"\").body;return e.innerHTML=\"<form></form><form></form>\",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if(\"string\"!=typeof e)return[];\"boolean\"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&w.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?w(\"<div>\").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,\"position\"),f=w(e),p={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=w.css(e,\"top\"),u=w.css(e,\"left\"),(l=(\"absolute\"===c||\"fixed\"===c)&&(o+u).indexOf(\"auto\")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),\"using\"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===w.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===w.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,\"borderTopWidth\",!0),i.left+=w.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-w.css(r,\"marginTop\",!0),left:t.left-i.left-w.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===w.css(e,\"position\"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=\"pageYOffset\"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each([\"top\",\"left\"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+\"px\":n})}),w.each({Height:\"height\",Width:\"width\"},function(e,t){w.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||\"boolean\"!=typeof i),s=n||(!0===i||!0===o?\"margin\":\"border\");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),w.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module to get server configuration information. This module\n * fetches \"config.json\" relative  to  the   main  document.  The Prolog\n * server emits a  JSON  object  that   provides  the  location  of  all\n * explicitly  identified  HTTP  handlers.  These    are   intended  for\n * (typically) AJAX calls:\n *\n * ```\n *   $.ajax({ url: config.http.locations.swish_examples,\n *            ...\n * ```\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('config',[ \"jquery\" ],\n       function($) {\nvar KEY = \"SWISHCONFIG\";\n\n/* Configuration of various server components.  We provide\n   defaults for the case that these files are served from\n   a non-Prolog server.\n*/\n\nvar config;\n\nfunction getCachedConfig() {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    var str;\n\n    if ( (str = localStorage.getItem(KEY)) ) {\n      value = JSON.parse(str);\n      if ( value.hash == window.swish.config_hash )\n\treturn value.config;\n    }\n  }\n}\n\nfunction setCachedConfig(config) {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    localStorage.setItem(KEY, JSON.stringify(\n      { hash: window.swish.config_hash,\n        config: config\n      }));\n  }\n}\n\nif ( !config ) {\n  if ( !(config = getCachedConfig()) ) {\n    $.ajax(\"swish_config.json\",\n\t   { dataType: \"json\",\n\t     async: false,\n\t     success: function(data) {\n\t       config = data;\n\t       setCachedConfig(config);\n\t     },\n\t     error: function() {\n\t       alert(\"Failed to fetch configuration from server\");\n\t     }\n\t   });\n  }\n}\n\nreturn config;\n});\n\n\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage persistent data such as preferences.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('preferences',[\"jquery\"],\n       function($) {\n  var hasLocalStore = (typeof(Storage) !== \"undefined\");\n  var defaults = {};\n  var inform = {};\n\n  var preferences = {\n    /**\n     * @returns {Boolean} indicating whether persistent storage is\n     * supported.\n     */\n    persistent: function() {\n      return hasLocalStore;\n    },\n\n    /**\n     * Store that we do not want to see info dialogue with a given\n     * identifier again.\n     * @param {String} id\n     */\n    setNotAgain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\n\tif ( data.indexOf(id) < 0 ) {\n\t  data.push(id);\n\t  localStorage.setItem(\"notagain\", JSON.stringify(data));\n\t}\n      }\n    },\n\n    /**\n     * @returns {Boolean} `true` if the user choose not to see this\n     * dialogue again\n     * @param {String} id identifier to test\n     */\n    notagain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\treturn data.indexOf(id) >= 0;\n      }\n      return false;\n    },\n\n    /**\n     * Broadcast the change of a preference.\n     */\n    broadcast: function(name, value) {\n      var sel;\n\n      if ( inform.name == undefined )\n\tsel = \".swish-event-receiver\";\n      else if ( inform.name == null )\n\treturn;\n      else\n\tsel = inform.name;\n\n      $(sel).trigger(\"preference\", { name: name, value: value });\n    },\n\n    /**\n     * Set the value of a preference and broadcast it.\n     * FIXME: we should only broadcast if the value has changed.\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the value.  Values are stored\n     * using JSON serialization.\n     */\n    setVal: function(name, value) {\n      if ( hasLocalStore ) {\n\tlocalStorage.setItem(name, JSON.stringify(value));\n      }\n      this.broadcast(name, value);\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the default value.\n     */\n    setDefault: function(name, value) {\n      defaults[name] = value;\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     * @param {String} jQuery selector for elements to inform.  If\n     * `null`, nobody is informed.\n     */\n    setInform: function(name, value) {\n      inform[name] = value;\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     */\n    getVal: function(name) {\n      if ( hasLocalStore ) {\n\tvar str;\n\n\tif ( (str = localStorage.getItem(name)) ) {\n\t  value = JSON.parse(str);\n\t  return value;\n\t}\n      }\n      return defaults[name];\n    },\n\n    /**\n     * Set a preference value for a document.\n     */\n    setDocVal: function(docid, name, value) {\n      var prefs = preferences.getVal(docid)||{};\n      prefs[name] = value;\n      preferences.setVal(docid, prefs);\n    },\n\n    /**\n     * Get a preference value for a document.\n     */\n    getDocVal: function(docid, name, def) {\n      var prefs = preferences.getVal(docid)||{};\n      return prefs[name] === undefined ? def : prefs[name];\n    }\n  }\n\n  function readNotAgain() {\n    var str = localStorage.getItem(\"notagain\") || \"[]\";\n    var notagain;\n\n    try {\n      data = JSON.parse(str);\n      if ( typeof(data) != \"object\" )\n\tdata = [];\n    } catch(err) {\n      data = [];\n    }\n\n    return data;\n  }\n\n  return preferences;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage hyper links.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('links',[\"jquery\", \"config\", \"modal\"],\n       function($, config, modal) {\n\n  var functions = {\n    /** Decode a PlDoc specification and, if valid, open the\n     * corresponding documentation.\n     * @arg {String} from The PlDoc specification.  Accepted if it\n     * is of the form `[.*:].*[/]/?\\d+`\n     * @return Boolean `true` if the string was recognised\n     */\n    PlDoc: function(from, ev) {\n      function parsePred(s) {\n\tvar pred = {};\n\tvar i;\n\n\tif ( (i=s.indexOf(\":\")) > 0 ) {\n\t  pred.module = s.substring(0,i);\n\t  s = s.slice(i+1);\n\t}\n\tif ( (i=s.indexOf(\"/\")) > 0 ) {\n\t  pred.name = s.substring(0,i);\n\t  if ( s.charAt(i+1) == '/' )\t/* name//arity is a non-terminal */\n\t    pred.arity = parseInt(s.slice(i+2))+2;\n\t  else\n\t    pred.arity = parseInt(s.slice(i+1));\n\n\t  if ( !isNaN(pred.arity) )\n\t    return pred;\n\t}\n      }\n\n      if ( from ) {\n\tvar pred = parsePred(decodeURIComponent(from));\n\n\tif ( pred ) {\n\t  $(ev.target).closest(\"#ajaxModal\").modal('hide');\n\t  $(\".swish-event-receiver\").trigger(\"pldoc\", pred);\n\t  ev.preventDefault();\n\n\t  return true;\n\t}\n      }\n\n      return false;\n    },\n\n    /**\n     * Run a link that refers to a cell. Such a link has a\n     * `data-query=name` attribute and optionally a number of\n     * `data-Var=Value` attributes. Because attributes are\n     * case-insensitive, `Var` is matched case-insensitive against\n     * variables from the query.\n     */\n    runQueryLink: function(a, ev) {\n      var nb    = a.closest(\".notebook\");\n      var qname = a.data(\"query\");\n      var cell  = nb.find('.nb-cell[name=\"'+qname+'\"]');\n\n      if ( cell ) {\n\tvar vars = $().prologEditor('variables', cell.nbCell('text'), true);\n\tvar bindings = \"\";\n\tvar options  = {};\n\tvar novars   = [];\n\n\tfunction isVar(k) {\n\t  for(var i=0; i<vars.length; i++) {\n\t    if ( vars[i].toLowerCase() == k.toLowerCase() )\n\t      return vars[i];\n\t  }\n\t  novars.push(k);\n\t}\n\n\t$.each(a.data(), function(k, v) {\n\t  var vr;\n\n\t  if ( k !== 'query' && (vr=isVar(k)) ) {\n\t    if ( bindings != \"\" )\n\t      bindings += \", \";\n\t    bindings += vr + \" = (\" + v + \")\";\n\t  }\n\t});\n\n\tif ( novars.length > 0 ) {\n\t  modal.feedback({\n\t    owner:    nb,\n\t    type:     \"warning\",\n\t    duration: 3000,\n\t    html:     \"The variables <b>\" + novars.join(\", \") + \"</b> do not appear in \" +\n\t\t      \"query <b>\" + qname + \"</b>\"\n\t  });\n\t}\n\n\tif ( bindings != \"\" )\n          options.bindings = bindings;\n\n\tcell.nbCell('run', options);\n      }\n    },\n\n    /**\n     * Follow a link from a markdown or HTML cell. This recognises links\n     * to internal SWISH objects and handles them using AJAX calls\n     * rather then opening a new page.  If the link is not recognised,\n     * it is opened on a new tab/page.  Recognised:\n     *\n     *  - class=\"store\" links open a gitty store element in a tab\n     *  - class=\"file\" links opens a file in a tab\n     *  - PlDoc links creates a modal dialog holding the documentation\n     *  - data-query=<query-name> runs a query.  data-<Var>=<Value>\n     *    binds variables.\n     *\n     * @param {Event} ev is the event to follow form\n     */\n    followLink: function(ev) {\n      var a = $(ev.target).closest(\"a\");\n      var done = false;\n\n      function accept() {\n\tdone = true;\n\tev.preventDefault();\n\n\t$(ev.target).closest(\"#ajaxModal\").modal('hide');\n      }\n\n      if ( a.attr(\"href\") ) {\n\tvar swishStore    = config.http.locations.swish + \"p/\";\n\tvar swishExamples = config.http.locations.swish + \"example/\";\n\tvar href\t  = a.attr(\"href\");\n\tvar modal;\n\n\tif ( href.startsWith(swishStore) && !href.match(/#/) ) {\n\t  accept();\n\t  file = href.slice(swishStore.length);\n\t  $(ev.target).closest(\".swish\").swish('playFile', file);\n\t} else if ( a.hasClass(\"store\") ) {\n\t  accept();\n\t  modal.alert(\"File does not appear to come from gitty store?\");\n\t} else if ( a.hasClass(\"file\") ||\n\t\t    (href.startsWith(swishExamples) && !href.match(/#/)) ) {\n\t  accept();\n\t  $(ev.target).closest(\".swish\")\n\t\t      .swish('playURL', {url: href});\n\t} else if ( a.hasClass(\"builtin\") && href.match(/predicate=/) ) {\n\t  done = functions.PlDoc(href.split(\"predicate=\").pop(), ev);\n\t} else if ( href.match(/object=/) ) {\n\t  done = functions.PlDoc(href.split(\"object=\").pop(), ev);\n\t} else if ( (modal=$(ev.target).closest(\"#ajaxModal\")).length == 1 &&\n\t\t    href.match(/#/) )\n\t{ var id = href.split(\"#\").pop();\n\t  var target;\n\n\t  if ( (target=modal.find(\"#\"+id)).length == 1 )\n\t  { done = true;\n\t    ev.preventDefault();\n\t    modal.animate({scrollTop: target.position().top}, 2000);\n\t  }\n\t}\n\n\tif ( !done ) {\n\t  ev.preventDefault();\n\t  window.open(href, '_blank');\n\t}\n      } else if ( a.data(\"query\") ) {\n\tfunctions.runQueryLink(a, ev);\n      }\n    }\n  }\n\n  return functions;\n});\n\n","// Laconic simplifies the generation of DOM content.\n(function(context) {\n\n  // properly-cased attribute names for IE setAttribute support\n  var attributeMap = {\n    'acceptcharset'     : 'acceptCharset',\n    'accesskey'         : 'accessKey',\n    'allowtransparency' : 'allowTransparency',\n    'bgcolor'           : 'bgColor',\n    'cellpadding'       : 'cellPadding',\n    'cellspacing'       : 'cellSpacing',\n    'class'             : 'className',\n    'classname'         : 'className',\n    'colspan'           : 'colSpan',\n    'csstext'           : 'style',\n    'defaultchecked'    : 'defaultChecked',\n    'defaultselected'   : 'defaultSelected',\n    'defaultvalue'      : 'defaultValue',\n    'for'               : 'htmlFor',\n    'frameborder'       : 'frameBorder',\n    'hspace'            : 'hSpace',\n    'htmlfor'           : 'htmlFor',\n    'longdesc'          : 'longDesc',\n    'maxlength'         : 'maxLength',\n    'marginwidth'       : 'marginWidth',\n    'marginheight'      : 'marginHeight',\n    'noresize'          : 'noResize',\n    'noshade'           : 'noShade',\n    'readonly'          : 'readOnly',\n    'rowspan'           : 'rowSpan',\n    'tabindex'          : 'tabIndex',\n    'valign'            : 'vAlign',\n    'vspace'            : 'vSpace'\n  };\n\n  // The laconic function serves as a generic method for generating\n  // DOM content, and also as a placeholder for helper functions.\n  //\n  // The first parameter MUST be a string specifying the element's \n  // tag name.  \n  // \n  // An optional object of element attributs may follow directly \n  // after the tag name.  \n  // \n  // Additional arguments will be considered children of the new \n  // element and may consist of elements, strings, or numbers.\n  // \n  // for example:\n  // laconic('div', {'class' : 'foo'}, 'bar');\n  function laconic() {\n\n    // create a new element of the requested type\n    var el = document.createElement(arguments[0]);\n    \n    // walk through the rest of the arguments\n    for(var i=1; i<arguments.length; i++) {\n      var arg = arguments[i];\n      if(arg === null || arg === undefined) continue;\n\n      // if the argument is a dom node, we simply append it\n      if(arg.nodeType === 1) {\n        el.appendChild(arg); \n      }\n\n      // if the argument is a string or a number, we append it as\n      // a new text node\n      else if(\n          (!!(arg === '' || (arg && arg.charCodeAt && arg.substr))) ||\n          (!!(arg === 0  || (arg && arg.toExponential && arg.toFixed)))) {\n\n        el.appendChild(document.createTextNode(arg));\n      }\n\n      // if the argument is a plain-old object, and we're processing the first \n      // argument, then we apply the object's values as element attributes\n      else if(i === 1 && typeof(arg) === 'object') {\n        for(var key in arg) {\n          if(arg.hasOwnProperty(key)) {\n            var value = arg[key];\n            if(value !== null && value !== undefined) {\n              key = key.toLowerCase();\n              key = attributeMap[key] || key;\n\n              // if the key represents an event (onclick, onchange, etc)\n              // we'll set the href to '#' if none is given, and we'll apply\n              // the attribute directly to the element for IE7 support.\n              var isEvent = key.charAt(0) === 'o' && key.charAt(1) === 'n';\n              if(isEvent) {\n                if(arg.href === undefined && key === 'onclick') {\n                  el.setAttribute('href', '#');\n                }\n                el[key] = value;\n              }\n\n              // if we're setting the style attribute, we may need to \n              // use the cssText property\n              else if(key === 'style' && el.style.setAttribute) {\n                el.style.setAttribute('cssText', value);\n              }\n\n              // if we're setting an attribute that's not properly supported \n              // by IE7's setAttribute implementation, then we apply the \n              // attribute directly to the element\n              else if(key === 'className' || key === 'htmlFor') {\n                el[key] = value;\n              }\n\n              // otherwise, we use the standard setAttribute\n              else {\n                el.setAttribute(key, value);\n              }\n            }\n          }\n        }\n      }\n\n      // if the argument is an array, we append each element\n      else if(Object.prototype.toString.call(arg) === '[object Array]') {\n        for(var j=0; j<arg.length; j++) {\n          var child = arg[j];\n          if(child.nodeType === 1) {\n            el.appendChild(child);\n          }\n        }\n      }\n    }\n\n    // Add an appendTo method to the newly created element, which will allow\n    // the DOM insertion to be method chained to the creation.  For example:\n    // $el.div('foo').appendTo(document.body);\n    el.appendTo = function(parentNode) {\n      if(parentNode.nodeType === 1 && this.nodeType === 1) {\n        parentNode.appendChild(this);\n      }\n      return this;\n    };\n    \n    return el;\n  }\n\n  // registers a new 'tag' that can be used to automate\n  // the creation of a known element hierarchy\n  laconic.registerElement= function(name, renderer) {\n    if(!laconic[name]) {\n      laconic[name] = function() {\n        var el = laconic('div', {'class' : name});\n        renderer.apply(el, Array.prototype.slice.call(arguments));\n        return el;\n      };\n    }\n  };\n\n  // html 4 tags \n  var deprecatedTags = ['acronym', 'applet', 'basefont', 'big', 'center', 'dir',\n    'font', 'frame', 'frameset', 'noframes', 'strike', 'tt', 'u', 'xmp'];\n\n  // html 5 tags\n  var tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b',\n    'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption',\n    'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del',\n    'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset',\n    'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5',\n    'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img',\n    'input', 'ins', 'keygen', 'kbd', 'label', 'legend', 'li', 'link', 'map',\n    'mark', 'menu', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol',\n    'optgroup', 'option', 'output', 'p', 'picture', 'param', 'pre', 'progress', \n    'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', \n    'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', \n    'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n    'tr', 'ul', 'var', 'video', 'wbr'].concat(deprecatedTags);\n\n  // add our tag methods to the laconic object \n  var makeApply = function(tagName) {\n    return function() {\n      return laconic.apply(this, \n        [tagName].concat(Array.prototype.slice.call(arguments)));\n    };\n  };\n\n  for(var i=0; i<tags.length; i++) {\n    laconic[tags[i]] = makeApply(tags[i]);\n  }\n\n  // If we're in a CommonJS environment, we export our laconic methods\n  if(typeof module !== 'undefined' && module.exports) {\n    module.exports = laconic;\n  } \n\n  // otherwise, we attach them to the top level $.el namespace\n  else {\n    var dollar = context.$ || {};\n    dollar.el = laconic;\n    context.$ = dollar;\n  }\n}(this));\n\ndefine(\"laconic\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Show modal windows\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('modal',[ \"jquery\", \"config\", \"preferences\", \"links\", \"form\",\n\t \"laconic\", \"bootstrap\" ],\n       function($, config, preferences, links, form) {\n\n/* NOTE: form dependency is circular.  Form is initialized later. */\n\n(function($) {\n  var pluginName = 'swishModal';\n\n  /** @lends $.fn.modal */\n  var methods = {\n    /**\n     * Initialize the widget and listen for \"help\" events.\n     * @param {Object} options currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.on(\"help\", function(ev, data) {\n\t  elem.swishModal('showHelp', data);\n\t});\n\telem.on(\"pldoc\", function(ev, data) {\n\t  elem.swishModal('showPlDoc', data);\n\t});\n\telem.on(\"form\", function(ev, data) {\n\t  elem.swishModal('showForm', data);\n\t});\n\telem.on(\"dialog\", function(ev, data) {\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"error\", function(ev, data) { /* still needed? */\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"alert\", function(ev, str) {\n\t  var icon = \"<span class='glyphicon glyphicon-warning-sign'></span>\";\n\t  elem.swishModal('show', {title: icon, body:str});\n\t});\n\telem.on(\"ajaxError\", function(ev, jqXHR) {\n\t  elem.swishModal('showAjaxError', jqXHR);\n\t});\n\telem.on(\"feedback\", function(ev, options) {\n\t  elem.swishModal('feedback', options);\n\t});\n\telem.on(\"show\", function(ev, options) {\n\t  elem.swishModal('show', options);\n\t});\n\telem.on(\"server_form\", function(ev, options) {\n\t  elem.swishModal('server_form', options);\n\t});\n      });\n    },\n\n    /**\n     * Show a help file.  The help file is a normal HTML document.  The\n     * `<title>` element is used for the title, while the `<body>`\n     * carries the content of the help file.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showHelp: function(options) {\n      var that = this;\n\n      if ( options.notagain && preferences.notagain(options.notagain) )\n\treturn;\n\n      $.ajax({ url: config.http.locations.help + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"title\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /**\n     * Show a form.  The form is an HTML document.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showForm: function(options) {\n      var that = this;\n\n      $.ajax({ url: config.http.locations.form + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"legend\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /** Show PlDoc manual page\n     * @param {Object} options\n     * @param {String} options.name is the name of the predicate to show\n     * @param {String} options.arity arity of the predicate\n     * @param {String} [options.module] module of the predicate\n     */\n    showPlDoc: function(options) {\n      function docURL(options) {\n\tvar term = \"(\"+options.name+\")/\"+options.arity;\n\tif ( options.module )\t\t\t/* FIXME: must be valid Prolog term */\n\t  term = options.module+\":\"+term;\n\treturn   config.http.locations.pldoc_doc_for\n\t       + \"?header=false&object=\"\n\t       + encodeURIComponent(term);\n      }\n\n      function docBody(content, url) {\n\tcontent.parents(\"div.modal-dialog\").addClass(\"swish-embedded-manual\");\n\treturn \"<iframe class='swish-embedded-manual' \" +\n\t\t       \"onload='javascript:resizeIframe(this);' \" +\n                       \"src='\"+url+\"'>\" +\n\t       \"</iframe>\";\n      }\n\n      var data = { title: \"SWI-Prolog manual\",\n                   body:  function() {\n\t\t     return docBody(this, docURL(options))\n\t\t   }\n                 };\n\n      return this.swishModal('show', data);\n    },\n\n    /**\n     * Show a modal dialog.\n     * @param {Object} options\n     * @param {String} options.title HTML rendered as title\n     * @param {String|function} options.body  If this is a string the\n     * content is set using `$.html()`, else the function is called,\n     * where `this` refers to the jQuery content element and the\n     * function result is added to the content using `$.append()`.\n     * @param {String} options.notagain Identifier to stop this dialog\n     * showing\n     * @param {function} [options.onclose] If present, call this\n     * function if the modal window is closed.\n     */\n    show: function(options) {\n      var content = $.el.div({class:\"modal-body\"});\n      var title   = $.el.h2();\n      var md      = $.el.div({class:\"modal-content\"},\n\t\t\t     $.el.div({class:\"modal-header\"},\n\t\t\t\t      notAgain(options),\n\t\t\t\t      closeButton(),\n\t\t\t\t      title),\n\t\t\t     content);\n      var modalel = $.el.div({class:\"modal fade\", id:\"ajaxModal\",\n\t\t\t      tabindex:-1, role:\"dialog\"\n\t\t\t     },\n\t\t\t     $.el.div({class:\"modal-dialog\"},\n\t\t\t\t      md));\n      if ( options.notagain && preferences.persistent() ) {\n\t$(md).append($.el.div(\n\t  {class:\"modal-footer\"},\n\t  notAgain(options)));\n      }\n      content = $(content);\n      if ( typeof(options.body) == \"function\" ) {\n\tvar c = options.body.call(content);\n\tif ( c )\n\t  content.append(c);\n      } else {\n\tcontent.html(options.body);\n      }\n      $(title).html(options.title);\n      $(modalel).modal({show: true})\n\t\t.on(\"click\", \"a\", links.followLink)\n\t        .on(\"shown.bs.modal\", initTagsManagers)\n\t        .on(\"hidden.bs.modal\", function() {\n\t\t  if ( options.onclose )\n\t\t    options.onclose();\n\t\t  saveNotagain($(this));\n\t\t  $(this).remove();\n\t\t});\n\n      return this\n    },\n\n    /**\n     * Show a server-generated form and act on the buttons.\n     * @arg {Object} options\n     * @arg {String} options.url is the URL that generates the form\n     * content\n     * @arg {String} options.title sets the title of the form.\n     * @arg {Function} options.onreply is called after the form has\n     * been submitted.  `this` points at the submitting button and\n     * the first argument contains the server reply.\n     */\n\n    server_form: function(options) {\n      var modalel = $(this);\n\n      if ( form === undefined )\t\t\t/* circular dependency */\n\tform = require(\"form\");\n\n      return this.swishModal('show', {\n\ttitle: options.title,\n\tbody: function() {\n\t  elem = $(this);\n\t  $.ajax({ url: options.url,\n\t\t   data: options.data,\n\t\t   success: function(data) {\n\t\t     elem.append(data);\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modalel.swishModal('showAjaxError', jqXHDR);\n\t\t   }\n\t         });\n\n\t  elem.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var formel = $(ev.target).closest(\"form\");\n\t    var data   = form.serializeAsObject(formel, true);\n\t    var button = $(ev.target).closest(\"button\");\n\n\t    if ( button.data(\"form_data\") == false ) {\n\t      $.ajax({ url: button.data(\"action\"),\n\t               success: function(obj) {\n\t\t\t button.closest(\".modal\").modal('hide');\n\t\t\t if ( options.onreply )\n\t\t\t   options.onreply.call(button[0], obj);\n\t\t\t ev.preventDefault();\n\t\t\t return false;\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    } else {\n\t      $.ajax({ url: button.data(\"action\"),\n\t\t       data: JSON.stringify(data),\n\t\t       dataType: \"json\",\n\t\t       contentType: \"application/json\",\n\t\t       type: \"POST\",\n\t\t       success: function(obj) {\n\t\t\t if ( obj.status == \"success\" ) {\n\t\t\t   button.closest(\".modal\").modal('hide');\n\t\t\t   if ( options.onreply )\n\t\t\t     options.onreply.call(button[0], obj);\n\t\t\t   ev.preventDefault();\n\t\t\t   return false;\n\t\t\t } else if ( obj.status == \"error\" ) {\n\t\t\t   form.formError(formel, obj.error);\n\t\t\t } else {\n\t\t\t   alert(\"Updated failed: \" +\n\t\t\t\t JSON.serializeAsObject(obj));\n\t\t\t }\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    }\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Display information about an ajax error\n     */\n    showAjaxError: function(jqXHR) {\n      var dom = $.el.div();\n\n      $(dom).html(jqXHR.responseText);\n      var h1 = $(dom).find(\"h1\");\n      var title = h1.text() || \"Server error\";\n      h1.remove();\n\n      var data = { title: title,\n\t\t   body: dom\n\t\t };\n\n      this.swishModal('show', data);\n    },\n\n    /**\n     * Display briefly a feedback message\n     * @param {Object} options\n     * @param {String} options.html defines the HTML content that is\n     * rendered.\n     * @param {Number} [options.duration=1500] number of milliseconds\n     * that the message is visible.\n     * @param {Object} [options.owner=$(\"body\")] is the DOM element to\n     * which the feedback window is added.\n     */\n    feedback: function(options) {\n      var win = $.el.div({class:\"feedback \"+options.type||\"\"});\n      $(win).html(options.html);\n\n      $(options.owner||\"body\").append(win);\n      setTimeout(function() {\n\t$(win).hide(400, function() {\n\t  $(win).remove();\n\t});\n      }, options.duration||1500);\n      return this;\n    }\n  }; // methods\n\n  function saveNotagain(elem) {\n    if ( !elem.hasClass(\"modal\") )\n      elem = elem.closest(\".modal\");\n\n    elem.find(\"[data-notagain]\")\n\t.each(function() {\n      if ( $(this).prop(\"checked\") ) {\n\tpreferences.setNotAgain($(this).attr(\"data-notagain\"));\n\treturn false;\n      }\n    });\n  }\n\n  function closeButton() {\n    var button = $.el.button({ type:\"button\", class:\"close\",\n\t\t\t       \"data-dismiss\":\"modal\"\n                             });\n    $(button)\n\t.html(\"&times;\")\n\t.on(\"click\", function(ev) {\n\t  ev.preventDefault();\n\t  saveNotagain($(ev.target));\n\t});\n\n    return button;\n  }\n\n  function notAgain(options) {\n    if ( options.notagain && preferences.persistent() ) {\n      return $.el.label($.el.input({ type:\"checkbox\",\n\t\t\t\t     'data-notagain':options.notagain,\n\t\t\t\t     name:\"dismiss\"\n\t\t\t\t   }),\n\t\t\t\" Don't show again!\");\n    } else {\n      return \"\";\n    }\n  }\n\n  /**\n   * Tags managers must be initialised after the DOM is complete.\n   * This cooperates with `tagInput()` from `form.js`\n   */\n  function initTagsManagers() {\n    var set = $(this).find(\".tm-input\");\n\n    set.each(function() {\n      var elem = $(this);\n      var tags = elem.data(\"prefilled\");\n      var options = {};\n\n      if ( tags ) options.prefilled = tags;\n\n      elem.tagsManager(options);\n    });\n  }\n\n  /**\n   * See http://stackoverflow.com/questions/9975810/make-iframe-automatically-adjust-height-according-to-the-contents-without-using\n   */\n  window.resizeIframe = function(iframe) {\n    iframe.style.height = 0;\n    iframe.style.height = iframe.contentWindow.document.body.scrollHeight+20\n                          + 'px';\n  }\n\n  /**\n   * This class is a small layer around bootstrap $.modal that isolates\n   * us from bootstrap and provides most of the intermediate divs\n   * needed to create a nice modal window.  In addition, it listens to\n   * `\"help\"` events.\n   *\n   * @class swishModal\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swishModal = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  var ntfid = 1;\n\n  return {\n    ajaxError: function(jqXHR) {\n      $(\".swish-event-receiver\").trigger(\"ajaxError\", jqXHR);\n    },\n    feedback: function(options) {\n      $(\".swish-event-receiver\").trigger(\"feedback\", options);\n    },\n    alert: function(options) {\n      $(\".swish-event-receiver\").trigger(\"alert\", options);\n    },\n    help: function(options) {\n      $(\".swish-event-receiver\").trigger(\"help\", options);\n    },\n    show: function(options) {\n      $(\".swish-event-receiver\").trigger(\"show\", options);\n    },\n    server_form: function(options) {\n      $(\".swish-event-receiver\").trigger(\"server_form\", options);\n    },\n\n    /**\n     * Provide a brief notification for an element, typically an\n     * icon or similar object.\n     *\n     * @param {Object} options\n     * @param {String} options.html provides the inner html of the message.\n     * @param {Number} [options.fadeIn=400] provide the fade in time.\n     * @param {Number} [options.fadeOut=400] provide the fade out time.\n     * @param {Number} [options.time=5000] provide the show time.  The\n     * value `0` prevents a timeout.\n     */\n    notify: function(elem, options) {\n      var id = \"ntf-\"+(options.wsid||ntfid++);\n\n      var div  = $.el.div({ class:\"notification notify-arrow\",\n\t\t\t    id:id\n\t\t\t  });\n      var epos = elem.offset();\n\n      $(\"body\").append(div);\n      if ( options.html )\n\t$(div).html(options.html);\n      else if ( options.dom )\n\t$(div).append(options.dom);\n\n      $(div).css({ left: epos.left+elem.width()-$(div).outerWidth()+15,\n\t\t   top:  epos.top+elem.height()+12\n\t\t })\n\t    .on(\"click\", function(){$(div).remove();})\n\t    .show(options.fadeIn||400);\n\n      if ( options.time !== 0 ) {\n\tvar time = options.time;\n\n\tif ( !time )\n\t  time = elem.hasClass(\"myself\") ? 1000 : 5000;\n\n\tsetTimeout(function() {\n\t  $(div).hide(options.fadeOut||400, function() {\n\t    $(\"#\"+id).remove();\n\t    if ( options.onremove )\n\t      options.onremove(options);\n\t    elem.chat('unnotify', options.wsid);\n\t  });\n\t}, time);\n      }\n    }\n  };\n});\n\n\n","/* ===================================================\n * tagmanager.js v3.0.1\n * http://welldonethings.com/tags/manager\n * ===================================================\n * Copyright 2012 Max Favilli\n *\n * Licensed under the Mozilla Public License, Version 2.0 You may not use this work except in compliance with the License.\n *\n * http://www.mozilla.org/MPL/2.0/\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n(function($) {\n\n    \"use strict\";\n\n    var defaults = {\n        prefilled: null,\n        CapitalizeFirstLetter: false,\n        preventSubmitOnEnter: true,     // deprecated\n        isClearInputOnEsc: true,        // deprecated\n        externalTagId: false,\n        prefillIdFieldName: 'Id',\n        prefillValueFieldName: 'Value',\n        AjaxPush: null,\n        AjaxPushAllTags: null,\n        AjaxPushParameters: null,\n        delimiters: [9, 13, 44],        // tab, enter, comma\n        backspace: [8],\n        maxTags: 0,\n        hiddenTagListName: null,        // deprecated\n        hiddenTagListId: null,          // deprecated\n        replace: true,\n        output: null,\n        deleteTagsOnBackspace: true,    // deprecated\n        tagsContainer: null,\n        tagCloseIcon: 'x',\n        tagClass: '',\n        validator: null,\n        onlyTagList: false,\n        tagList: null,\n        fillInputOnTagRemove: false\n    },\n\n    publicMethods = {\n        pushTag : function (tag, ignoreEvents, externalTagId) {\n            var $self = $(this), opts = $self.data('opts'), alreadyInList, tlisLowerCase, max, tagId,\n            tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx, newTagId, newTagRemoveId, escaped,\n            html, $el, lastTagId, lastTagObj;\n\n            tag = privateMethods.trimTag(tag, opts.delimiterChars);\n\n            if (!tag || tag.length <= 0) { return; }\n\n            // check if restricted only to the tagList suggestions\n            if (opts.onlyTagList && undefined !== opts.tagList ){\n\n                //if the list has been updated by look pushed tag in the tagList. if not found return\n                if (opts.tagList){\n                    var $tagList = opts.tagList;\n\n                    // change each array item to lower case\n                    $.each($tagList, function(index, item) {\n                        $tagList[index] = item.toLowerCase();\n                    });\n                    var suggestion = $.inArray(tag.toLowerCase(), $tagList);\n\n                    if ( -1 === suggestion ) {\n                        //console.log(\"tag:\" + tag + \" not in tagList, not adding it\");\n                        return;\n                    } \n                }\n\n            }\n\n            if (opts.CapitalizeFirstLetter && tag.length > 1) {\n                tag = tag.charAt(0).toUpperCase() + tag.slice(1).toLowerCase();\n            }\n\n            // call the validator (if any) and do not let the tag pass if invalid\n            if (opts.validator && !opts.validator(tag)) {\n                $self.trigger('tm:invalid', tag)\n                return;\n            }\n\n            // dont accept new tags beyond the defined maximum\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) { return; }\n\n            alreadyInList = false;\n            //use jQuery.map to make this work in IE8 (pure JS map is JS 1.6 but IE8 only supports JS 1.5)\n            tlisLowerCase = jQuery.map(tlis, function(elem) {\n                return elem.toLowerCase();\n            });\n\n            idx = $.inArray(tag.toLowerCase(), tlisLowerCase);\n\n            if (-1 !== idx) {\n                // console.log(\"tag:\" + tag + \" !!already in list!!\");\n                alreadyInList = true;\n            }\n\n            if (alreadyInList) {\n                $self.trigger('tm:duplicated', tag);\n                if (opts.blinkClass) {\n                    for (var i = 0; i < 6; ++i) {\n                        $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).queue(function(next) {\n                            $(this).toggleClass(opts.blinkClass);\n                            next();\n                        }).delay(100);\n                    }\n                } else {\n                    $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).stop()\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100);\n                }\n            } else {\n                if (opts.externalTagId === true) {\n                    if (externalTagId === undefined) {\n                        $.error('externalTagId is not passed for tag -' + tag);\n                    }\n                    tagId = externalTagId;\n                } else {\n                    max = Math.max.apply(null, tlid);\n                    max = max === -Infinity ? 0 : max;\n\n                    tagId = ++max;\n                }\n                if (!ignoreEvents) { $self.trigger('tm:pushing', [tag, tagId]); }\n                tlis.push(tag);\n                tlid.push(tagId);\n\n                if (!ignoreEvents)\n                    if (opts.AjaxPush !== null && opts.AjaxPushAllTags == null) {\n                        if ($.inArray(tag, opts.prefilled) === -1) {\n                            $.post(opts.AjaxPush, $.extend({tag: tag}, opts.AjaxPushParameters));\n                        }\n                    }\n\n                // console.log(\"tagList: \" + tlis);\n\n                newTagId = $self.data(\"tm_rndid\") + '_' + tagId;\n                newTagRemoveId = $self.data(\"tm_rndid\") + '_Remover_' + tagId;\n                escaped = $(\"<span/>\").text(tag).html();\n\n                html = '<span class=\"' + privateMethods.tagClasses.call($self) + '\" id=\"' + newTagId + '\">';\n                html+= '<span>' + escaped + '</span>';\n                html+= '<a href=\"#\" class=\"tm-tag-remove\" id=\"' + newTagRemoveId + '\" TagIdToRemove=\"' + tagId + '\">';\n                html+= opts.tagCloseIcon + '</a></span> ';\n                $el = $(html);\n\n                if (opts.tagsContainer !== null) {\n                    $(opts.tagsContainer).append($el);\n                } else {\n                    if (tlid.length > 1) {\n                        lastTagObj = $self.siblings(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[tlid.length - 2]);\n                        lastTagObj.after($el);\n                    } else {\n                        $self.before($el);\n                    }\n                }\n\n                $el.find(\"#\" + newTagRemoveId).on(\"click\", $self, function(e) {\n                    e.preventDefault();\n                    var TagIdToRemove = parseInt($(this).attr(\"TagIdToRemove\"));\n                    privateMethods.spliceTag.call($self, TagIdToRemove, e.data);\n                });\n\n                privateMethods.refreshHiddenTagList.call($self);\n\n                if (!ignoreEvents) { $self.trigger('tm:pushed', [tag, tagId]); }\n\n                privateMethods.showOrHide.call($self);\n                //if (tagManagerOptions.maxTags > 0 && tlis.length >= tagManagerOptions.maxTags) {\n                //  obj.hide();\n                //}\n            }\n            $self.val(\"\");\n        },\n\n        popTag : function () {\n            var $self = $(this), tagId, tagBeingRemoved,\n            tlis = $self.data(\"tlis\"),\n            tlid = $self.data(\"tlid\");\n\n            if (tlid.length > 0) {\n              tagId = tlid.pop();\n\n              tagBeingRemoved = tlis[tlis.length - 1];\n              $self.trigger('tm:popping', [tagBeingRemoved, tagId]);\n              tlis.pop();\n\n              // console.log(\"TagIdToRemove: \" + tagId);\n              $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n              privateMethods.refreshHiddenTagList.call($self);\n              $self.trigger('tm:popped', [tagBeingRemoved, tagId]);\n              // console.log(tlis);\n            }\n        },\n\n        empty : function() {\n            var $self = $(this), tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), tagId;\n\n            while (tlid.length > 0) {\n                tagId = tlid.pop();\n                tlis.pop();\n                // console.log(\"TagIdToRemove: \" + tagId);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                privateMethods.refreshHiddenTagList.call($self);\n                // console.log(tlis);\n            }\n            $self.trigger('tm:emptied', null);\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        tags : function() {\n            var $self = this, tlis = $self.data(\"tlis\");\n            return tlis;\n        }\n    },\n\n    privateMethods = {\n        showOrHide : function () {\n            var $self = this, opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n\n            if (opts.maxTags > 0 && tlis.length < opts.maxTags) {\n                $self.show();\n                $self.trigger('tm:show');\n            }\n\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) {\n                $self.hide();\n                $self.trigger('tm:hide');\n            }\n        },\n\n        tagClasses : function () {\n            var $self = $(this), opts = $self.data('opts'), tagBaseClass = opts.tagBaseClass,\n            inputBaseClass = opts.inputBaseClass, cl;\n            // 1) default class (tm-tag)\n            cl = tagBaseClass;\n            // 2) interpolate from input class: tm-input-xxx --> tm-tag-xxx\n            if ($self.attr('class')) {\n                $.each($self.attr('class').split(' '), function (index, value) {\n                    if (value.indexOf(inputBaseClass + '-') !== -1) {\n                        cl += ' ' + tagBaseClass + value.substring(inputBaseClass.length);\n                    }\n                });\n            }\n            // 3) tags from tagClass option\n            cl += (opts.tagClass ? ' ' + opts.tagClass : '');\n            return cl;\n        },\n\n        trimTag : function (tag, delimiterChars) {\n            var i;\n            tag = $.trim(tag);\n            // truncate at the first delimiter char\n            i = 0;\n            for (i; i < tag.length; i++) {\n                if ($.inArray(tag.charCodeAt(i), delimiterChars) !== -1) { break; }\n            }\n            return tag.substring(0, i);\n        },\n\n        refreshHiddenTagList : function () {\n            var $self = $(this), tlis = $self.data(\"tlis\"), lhiddenTagList = $self.data(\"lhiddenTagList\");\n\n            if (lhiddenTagList) {\n                $(lhiddenTagList).val(tlis.join($self.data('opts').baseDelimiter)).change();\n            }\n\n            $self.trigger('tm:refresh', tlis.join($self.data('opts').baseDelimiter));\n        },\n\n        killEvent : function (e) {\n            e.cancelBubble = true;\n            e.returnValue = false;\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        keyInArray : function (e, ary) {\n            return $.inArray(e.which, ary) !== -1;\n        },\n\n        applyDelimiter : function (e) {\n            var $self = $(this);\n            publicMethods.pushTag.call($self,$(this).val());\n            e.preventDefault();\n        },\n\n        prefill: function (pta) {\n            var $self = $(this);\n            var opts = $self.data('opts')\n            $.each(pta, function (key, val) {\n                if (opts.externalTagId === true) {\n                    publicMethods.pushTag.call($self, val[opts.prefillValueFieldName], true, val[opts.prefillIdFieldName]);\n                } else {\n                    publicMethods.pushTag.call($self, val, true);\n                }\n            });\n        },\n\n        pushAllTags : function (e, tag) {\n            var $self = $(this), opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n            if (opts.AjaxPushAllTags) {\n                if (e.type !== 'tm:pushed' || $.inArray(tag, opts.prefilled) === -1) {\n                    $.post(opts.AjaxPush, $.extend({ tags: tlis.join(opts.baseDelimiter) }, opts.AjaxPushParameters));\n                }\n            }\n        },\n\n        spliceTag : function (tagId) {\n            var $self = this, tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx = $.inArray(tagId, tlid),\n            tagBeingRemoved;\n\n            // console.log(\"TagIdToRemove: \" + tagId);\n            // console.log(\"position: \" + idx);\n\n            if (-1 !== idx) {\n                tagBeingRemoved = tlis[idx];\n                $self.trigger('tm:splicing', [tagBeingRemoved, tagId]);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                tlis.splice(idx, 1);\n                tlid.splice(idx, 1);\n                privateMethods.refreshHiddenTagList.call($self);\n                $self.trigger('tm:spliced', [tagBeingRemoved, tagId]);\n                // console.log(tlis);\n            }\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        init : function (options) {\n            var opts = $.extend({}, defaults, options), delimiters, keyNums;\n\n            opts.hiddenTagListName = (opts.hiddenTagListName === null)\n                ? 'hidden-' + this.attr('name')\n                : opts.hiddenTagListName;\n\n            delimiters = opts.delimeters || opts.delimiters; // 'delimeter' is deprecated\n            keyNums = [9, 13, 17, 18, 19, 37, 38, 39, 40]; // delimiter values to be handled as key codes\n            opts.delimiterChars = [];\n            opts.delimiterKeys = [];\n\n            $.each(delimiters, function (i, v) {\n                if ($.inArray(v, keyNums) !== -1) {\n                    opts.delimiterKeys.push(v);\n                } else {\n                    opts.delimiterChars.push(v);\n                }\n            });\n\n            opts.baseDelimiter = String.fromCharCode(opts.delimiterChars[0] || 44);\n            opts.tagBaseClass = 'tm-tag';\n            opts.inputBaseClass = 'tm-input';\n\n            if (!$.isFunction(opts.validator)) { opts.validator = null; }\n\n            this.each(function() {\n                var $self = $(this), hiddenObj ='', rndid ='', albet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n                // prevent double-initialization of TagManager\n                if ($self.data('tagManager')) { return false; }\n                $self.data('tagManager', true);\n\n                for (var i = 0; i < 5; i++) {\n                  rndid += albet.charAt(Math.floor(Math.random() * albet.length));\n                }\n\n                $self.data(\"tm_rndid\", rndid);\n\n                // store instance-specific data in the DOM object\n                $self.data('opts',opts)\n                    .data('tlis', []) //list of string tags\n                    .data('tlid', []); //list of ID of the string tags\n\n                if (opts.output === null) {\n                    hiddenObj = $('<input/>', {\n                        type: 'hidden',\n                        name: opts.hiddenTagListName\n                    });\n                    $self.after(hiddenObj);\n                    $self.data(\"lhiddenTagList\", hiddenObj);\n                } else {\n                    $self.data(\"lhiddenTagList\", $(opts.output));\n                }\n\n                if (opts.AjaxPushAllTags) {\n                    $self.on('tm:spliced', privateMethods.pushAllTags);\n                    $self.on('tm:popped', privateMethods.pushAllTags);\n                    $self.on('tm:pushed', privateMethods.pushAllTags);\n                }\n\n                // hide popovers on focus and keypress events\n                $self.on('focus keypress', function(e) {\n                    if ($(this).popover) { $(this).popover('hide'); }\n                });\n\n                // handle ESC (keyup used for browser compatibility)\n                if (opts.isClearInputOnEsc) {\n                    $self.on('keyup', function(e) {\n                        if (e.which === 27) {\n                            // console.log('esc detected');\n                            $(this).val('');\n                            privateMethods.killEvent(e);\n                        }\n                    });\n                }\n\n                $self.on('keypress', function(e) {\n                    // push ASCII-based delimiters\n                    if (privateMethods.keyInArray(e, opts.delimiterChars)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                $self.on('keydown', function(e) {\n                    // disable ENTER\n                    if (e.which === 13) {\n                        if (opts.preventSubmitOnEnter) {\n                            privateMethods.killEvent(e);\n                        }\n                    }\n\n                    // push key-based delimiters (includes <enter> by default)\n                    if (privateMethods.keyInArray(e, opts.delimiterKeys)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                // BACKSPACE (keydown used for browser compatibility)\n                if (opts.deleteTagsOnBackspace) {\n                    $self.on('keydown', function(e) {\n                        if (privateMethods.keyInArray(e, opts.backspace)) {\n                            // console.log(\"backspace detected\");\n                            if ($(this).val().length <= 0) {\n                                publicMethods.popTag.call($self);\n                                privateMethods.killEvent(e);\n                            }\n                        }\n                    });\n                }\n\n                // on tag pop fill back the tag's content to the input field\n                if (opts.fillInputOnTagRemove) {\n                    $self.on('tm:popped', function(e, tag) {\n                        $(this).val(tag);\n                    });\n                }\n\n                $self.change(function(e) {\n                    if (!/webkit/.test(navigator.userAgent.toLowerCase())) {\n                        $self.focus();\n                    } // why?\n\n                    /* unimplemented mode to push tag on blur\n                     else if (tagManagerOptions.pushTagOnBlur) {\n                     console.log('change: pushTagOnBlur ' + tag);\n                     pushTag($(this).val());\n                     } */\n                    privateMethods.killEvent(e);\n                });\n\n                if (opts.prefilled !== null) {\n                    if (typeof (opts.prefilled) === \"object\") {\n                        privateMethods.prefill.call($self, opts.prefilled);\n                    } else if (typeof (opts.prefilled) === \"string\") {\n                        privateMethods.prefill.call($self, opts.prefilled.split(opts.baseDelimiter));\n                    } else if (typeof (opts.prefilled) === \"function\") {\n                        privateMethods.prefill.call($self, opts.prefilled());\n                    }\n                } else if (opts.output !== null) {\n                    if ($(opts.output) && $(opts.output).val()) { var existing_tags = $(opts.output); }\n                    privateMethods.prefill.call($self,$(opts.output).val().split(opts.baseDelimiter));\n                }\n\n            });\n\n            return this;\n        }\n    };\n\n    $.fn.tagsManager = function(method) {\n        var $self = $(this);\n\n        if (!(0 in this)) { return this; }\n\n        if ( publicMethods[method] ) {\n            return publicMethods[method].apply( $self, Array.prototype.slice.call(arguments, 1) );\n        } else if ( typeof method === 'object' || ! method ) {\n            return privateMethods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist.' );\n            return false;\n        }\n    };\n\n}(jQuery));\n\ndefine(\"tagmanager\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for handling\n * forms and functions to build Bootstrap forms easily.\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('form',[ \"jquery\", \"config\", \"modal\", \"laconic\", \"tagmanager\" ],\n       function($, config, modal) {\n\n  var LABELWIDTH = 3;\n\n  var form = {\n    /**\n     * Serialize a form as an object. The following normalizations are\n     * performed:\n     *   - Form fields that have an empty string are ignored unless\n     *     `ignore_empty` is `true`\n     *   - The value from a `<input type=\"checkbox\">`is converted\n     *     into a JavaScript boolean.\n     *\t - The value of a tag-list is converted into a list of strings.\n     * @returns {Object} holding the name/value pairs of the form\n     */\n    serializeAsObject: function(form, ignore_empty) {\n      var arr = form.serializeArray();\n      var inset = [];\n      var obj = {};\n\n      // get arrays of checkboxes\n      form.find(\"div.checkboxes.array\").each(function() {\n\tvar elem = $(this);\n\tvar set = [];\n\n\telem.find(\"input:checked\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  set.push(name);\n\t});\n\telem.find(\"input\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  inset.push(name);\n\t});\n\n\tobj[elem.attr(\"name\")] = set;\n      });\n\n      for(var i=0; i<arr.length; i++) {\n\tvar name  = arr[i].name;\n\tvar value = arr[i].value;\n\tvar input = form.find('[name=\"'+name+'\"]');\n\tvar type  = input.prop(\"type\");\n\tvar jvalue;\n\n\tif ( (jvalue = input.data('json-value')) ) {\n\t  obj[name] = jvalue;\n\t} else if ( value != \"\" || ignore_empty == true ) {\n\t  // deal with tag lists\n\t  if ( type == \"hidden\" && name.indexOf(\"hidden-\") == 0 ) {\n\t    name = name.slice(\"hidden-\".length);\n\t    if ( obj[name] == undefined ) {\n\t      obj[name] = value.split(\",\");\n\t    } else {\n\t      obj[name] = value.split(\",\").concat(obj[name]);\n\t    }\n\t  } else if ( type == \"text\" && input.hasClass(\"tag-list\") ) {\n\t    if ( value != \"\" ) {\n\t      if ( obj[name] !== undefined )\n\t\tobj[name].push(value);\n\t      else\n\t\tobj[name] = [value];\n\t    }\n\t  } else if ( type == \"number\" ) {\n\t    obj[name] = parseInt(value);\n\t  } else if ( type == \"checkbox\" ) {\n\t    if ( inset.indexOf(name) == -1 )\n\t      obj[name] = (value == \"on\" ? true : false);\n\t  } else {\n\t    obj[name] = value;\n\t  }\n\t}\n      }\n\n      // unchecked checkboxes are not reported\n      form.find(\"[type=checkbox]\").each(function() {\n\tvar checkbox = $(this);\n\tvar name = checkbox.prop('name');\n\tif ( checkbox.prop(\"disabled\") != true &&\n\t     obj[name] === undefined &&\n\t     inset.indexOf(name) == -1 )\n\t  obj[name] = false;\n      });\n\n      return obj;\n    },\n\n    /**\n     * Provide feedback about problems with form elements\n     * @param form is the form to decorate\n     * @param error is a pengine error message created by lib/form.pl\n     */\n\n    formError: function(formel, error) {\n      formel.find(\".has-error\").removeClass(\"has-error\");\n      formel.find(\".help-block.with-errors\").remove();\n\n      if ( error ) {\n\tif ( error.code == \"form_error\" || error.code == \"input_error\" ) {\n\t  errors = error.data.split(\"\\n\");\n\t  for(var i=0; i<errors.length; i++) {\n\t    var el = errors[i].split(/:\\s*(.*)?/);\n\n\t    form.fieldError(formel, el[0], el[1]);\n\t  }\n\t} else\n\t{ modal.alert(error.data);\n\t}\n      }\n    },\n\n    fieldError: function(form, field, msg) {\n      var input = form.find(\"input[name=\"+field+\"]\");\n\n      if ( input.length > 0 ) {\n\tvar group = input.closest(\".form-group\");\n\n\tif ( input.parent().hasClass(\"input-group\") )\n\t  input = input.parent();\n\n\tgroup.addClass(\"has-error\");\n\tinput.after($.el.p({class:\"help-block with-errors\"}, msg));\n      } else\n      { alert(\"Missing value for \"+field);\n      }\n    },\n\n    showDialog: function(data) {\n      $(\".swish-event-receiver\").trigger(\"dialog\", data);\n    },\n\n    /**\n     * Invoke the central broadcasting of SWISH\n     * @param {String} event is the event name\n     * @param {any} [data] is the associated data\n     */\n    formBroadcast: function(event, data) {\n      $(\".swish-event-receiver\").trigger(event, data);\n    },\n\n    dyn_clear: function(form, onclear) {\n      form.find('.has-clear input[type=\"text\"]').on('input propertychange',\n\t\t\t\t\t\t    function() {\n\tvar $this = $(this);\n\tvar visible = Boolean($this.val());\n\t$this.siblings('.form-control-clear').toggleClass('hidden', !visible);\n      }).trigger('propertychange');\n\n      form.find('.form-control-clear').click(function() {\n\tvar input = $(this).siblings('input[type=\"text\"]');\n\tinput.val('').trigger('propertychange').focus();\n\tif ( onclear )\n\t  onclear.call(input);\n      });\n    },\n\n    fields: {\n      fileName: function(name, public, example, disabled) {\n\tvar labeltext;\n\tvar empty = \"(leave empty for generated random name)\"\n\tvar fork, input;\n\tvar community_examples = config.swish.community_examples && example != undefined;\n\n\tif ( community_examples )\n\t  labeltext = \"Public | Example | name\";\n\telse\n\t  labeltext = \"Public | name\";\n\n        var elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", labeltext),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, other users can find this program\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"public\",\n\t\t\t\t\t\t      { checked: public\n\t\t\t\t\t\t      })),\n\t\t\t\t   community_examples ?\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, add to examples menu\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"example\",\n\t\t\t\t\t\t      { checked: example\n\t\t\t\t\t\t      })) : undefined,\n\t\t\t   input = textInput(\"name\",\n\t\t\t\t\t     {placeholder:\"Name \" + empty,\n\t\t\t\t\t      title:\"Public name of your program\",\n\t\t\t\t\t      value:name,\n\t\t\t\t\t      disabled:disabled}),\n\t\t\t   name ?\n\t\t\t     fork = $.el.span({class:\"input-group-btn\"\n\t\t\t\t\t      },\n\t\t\t\t\t      $.el.button({ class: \"btn btn-success\",\n\t\t\t\t\t\t\t    type: \"button\"\n\t\t\t\t\t\t\t  }, \"Fork\")) : undefined\n\t\t\t\t  )));\n\n\tif ( fork ) {\n\t  $(fork).on(\"click\", function() {\n\t    var btn = $(input).closest(\"form\").find(\".btn.btn-primary\");\n\t    $(input).attr(\"placeholder\", \"Fork as \" + empty);\n\t    $(input).val(\"\");\n\t    btn.text(btn.text().replace(\"Update\", \"Fork\"));\n\t  });\n\t}\n\n\treturn elem;\n      },\n\n      title: function(title) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"title\", \"Title\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"title\",\n\t\t\t\t    {placeholder:\"Descriptive title\",\n\t\t\t\t     value:title})));\n\treturn elem;\n      },\n\n      /**\n       * @param {String} [identity] if provided, this indicates that the\n       * author cannot be changed.\n       */\n      author: function(author, identity) {\n\tvar options = { placeholder:\"Your name\", value:author };\n\n\tif ( author && identity ) {\n\t  options.readonly = true;\n\t  options.title    = \"Verified author name\";\n\t}\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"author\", \"Author\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"author\", options)));\n\treturn elem;\n      },\n\n      link: function(link) {\n\tvar options = {\n\t  readonly: true,\n\t  title: \"Permalink\",\n\t  value: link\n\t};\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"link\", \"Link\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"link\", options)));\n\treturn elem;\n      },\n\n      date: function(stamp, labels, name) {\n\tname = name||label;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(name, labels),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(name,\n\t\t\t\t    {disabled: true,\n\t\t\t\t     value:new Date(stamp*1000).toLocaleString()\n\t\t\t\t    })));\n\treturn elem;\n      },\n\n      description: function(description) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"description\", \"Description\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"description\", {value:description})));\n\treturn elem;\n      },\n\n      commit_message: function(msg) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"commit_message\", \"Changes\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"commit_message\",\n\t\t\t\t   { value:msg,\n\t\t\t\t     placeholder:\"Describe your changes here\"\n\t\t\t\t   })));\n\treturn elem;\n      },\n\n      description: function(msg) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"description\", \"Description\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"description\",\n\t\t\t\t   { value:msg,\n\t\t\t\t     placeholder:\"Description\"\n\t\t\t\t   })));\n\treturn elem;\n      },\n\n      tags: function(tags) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"tags\", \"Tags\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  tagInput(\"tags\", \"Tags help finding this code\", tags)));\n\treturn elem;\n      },\n\n      /**\n       * Provide checkboxes for determining who may save a new version\n       * of this file\n       */\n      modify: function(who, canmodify) {\n\tvar fields = [];\n\tvar opts = { name:\"modify\", label:\"Can save new version\",\n\t\t     type:\"array\"\n\t\t   };\n\n\tfunction add(key, label) {\n\t  fields.push({ name:key,\n\t\t\tlabel:label,\n\t\t\tvalue:who.indexOf(key) != -1,\n\t\t\treadonly: !canmodify\n\t\t      });\n\t}\n\n\tadd(\"any\",   \"Anyone\");\n\tadd(\"login\", \"Logged in users\");\n\tadd(\"owner\", \"Only me\");\n\n\tif ( !canmodify )\n\t  opts.title = \"Only logged in users and owners can set permissions\";\n\telse\n\t  opts.title = \"Specify who can save an updated version of this file\";\n\n\treturn form.fields.checkboxes(fields, opts);\n      },\n\n      follow: function(email) {\n\treturn form.fields.checkboxes(\n\t\t [ { name: \"follow\", label: \"Follow this document\",\n\t\t     value:!!email, readonly:!email\n\t\t   }\n\t\t ],\n\t\t { name:\"options\", label:\"\",\n\t\t   title: \"Notify about activity (updates, chat)\\n\"+\n\t\t\t  \"Requires being logged in with valid email\"\n\t\t });\n      },\n\n      projection: function(projection) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"projection\", \"Projection\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"projection\",\n\t\t\t\t    {placeholder:\"Columns\", value:projection})));\n\treturn elem;\n      },\n\n      csvFormat: function(list, format) {\n\tvar elem;\n\n\tlist = list||[\"prolog\"];\n\tformat = format||list[0];\n\n\tif ( list.length == 1 ) {\n\t  elem = $.el.input({type:\"hidden\", name:\"format\", value:list[0]});\n\t} else {\n\t  elem = $.el.div({class:\"form-group\"},\n\t\t\t  label(\"format\", \"Format\"),\n\t\t\t  $.el.div({class:valgridw()},\n\t\t\t\t   select(\"format\",\n\t\t\t\t\t  list,\n\t\t\t\t\t  {value:format})));\n\t}\n\n\treturn elem;\n      },\n\n      /**\n       * Ask for limit and distinct to modify the solution set.\n       * @param {Number} [limit] is the max number of solutions to\n       * return\n       * @param {Boolean} [distinct] requests only to return distinct\n       * solutions.\n       */\n      limit: function(limit, distinct) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Distinct | limit\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked only return distinct results\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"distinct\",\n\t\t\t\t\t\t      { checked: distinct\n\t\t\t\t\t\t      })),\n\t\t\t\t   textInput(\"limit\",\n\t\t\t\t\t     {placeholder:\"Maximum result count (blank for unlimited)\",\n\t\t\t\t\t      title:\"Limit results\",\n\t\t\t\t\t      value:limit}))));\n\treturn elem;\n      },\n\n      /**\n       * @param {Array} boxes is a list of checkbox specifications.\n       * Uses .name, .label, .value (Boolean) and .readonly\n       */\n      checkboxes: function(boxes, options) {\n\tvar boxel;\n\n\toptions = $.extend({name:\"options\", label:\"Options\", col:LABELWIDTH},\n\t\t\t   options||{});\n\n\tvar dopts = { class: \"checkboxes col-xs-\"+(12-options.col),\n\t              name:  options.name\n\t\t    };\n\tif ( options.title ) dopts.title = options.title;\n\tif ( options.type  ) dopts.class += \" \"+options.type;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(options.name, options.label, options.col),\n\t\t boxel = $.el.div(dopts));\n\n\tfor(var k=0; k<boxes.length; k++) {\n\t  var box = boxes[k];\n\t  var opts = {type: \"checkbox\", name:box.name, autocomplete:\"false\"};\n\t  if ( box.value )\n\t    opts.checked = \"checked\";\n\t  if ( box.readonly )\n\t    opts.disabled = \"disabled\";\n\t  $(boxel).append($.el.label({class:\"checkbox-inline\"},\n\t\t\t\t     $.el.input(opts), box.label));\n\t}\n\n\treturn elem;\n      },\n\n      chunk: function(value) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"count\", \"Initial solutions\", 3),\n\t\t $.el.div({class:\"col-xs-9\"},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   textInput(\"chunk\",\n\t\t\t\t\t     { title:\"Initial number of solutions\",\n\t\t\t\t\t       type:\"number\",\n\t\t\t\t\t       value:value}))));\n\treturn elem;\n      },\n\n      name: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"name\",\n\t\t\t\t    {placeholder:\"Name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      filename: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"filename\", \"File name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"filename\",\n\t\t\t\t    {placeholder:\"File name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      hidden: function(name, value) {\n\tif ( value !== undefined )\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n      },\n\n      /**\n       * @param {Object} options\n       * @param {String} options.label is the label used for the\n       * primary button.\n       * @param {Function} options.action is called with two arguments,\n       * the _event_ and the serialized data from the embedded form\n       * @param {Number} options.offset determines the begin column in\n       * the grid (default 2)\n       */\n      buttons: function(options) {\n\toptions    = options||{};\n\tvar label  = options.label||\"Save program\";\n\tvar offset = options.offset||LABELWIDTH;\n\tvar button = $.el.button({ name:\"save\",\n\t\t\t\t   class:\"btn btn-primary\"\n\t\t\t\t },\n\t\t\t\t label);\n\n\t$(button).on(\"click\", function(ev) {\n\t  var elem = $(ev.target).parents(\"form\")[0];\n\t  var data = form.serializeAsObject($(elem));\n\n\t  options.action(ev, data);\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t $.el.div({class:\"col-xs-offset-\"+offset+\" col-xs-\"+(12-offset)},\n\t\t\t  button,\n\t\t\t  $.el.button({name:\"cancel\",\n\t\t\t\t       class:\"btn btn-danger\",\n\t\t\t\t       'data-dismiss':\"modal\"},\n\t\t\t\t      \"Cancel\")));\n\treturn elem;\n      },\n\n      /**\n       * Bootstrap radio button.  To get the value, use\n       * `$(\"label.active > input[name=Name]\").val();\n       * @param {String} name is the name of the radio button\n       * @param {Array(Object)} buttons is an array of objects with\n       * .active, .label and .value\n       */\n      radio: function(name, buttons, type) {\n\tvar elem = $.el.div({class:\"btn-group\", \"data-toggle\":\"buttons\"});\n\ttype = type||\"radio\"\n\n\tfor(var i=0; i<buttons.length; i++) {\n\t  var cls = \"btn btn-default btn-xs\";\n\t  if ( buttons[i].active )\n\t    cls += \" active\";\n\n\t  var opts = { type:type, name:name,\n\t               autocomplete:\"off\",\n\t\t       value:buttons[i].value\n\t\t     };\n\t  var lblopts = {class:cls};\n\t  if ( buttons[i].title )\n\t    lblopts.title = buttons[i].title;\n\t  $(elem).append($.el.label(lblopts,\n\t\t\t\t    $.el.input(opts),\n\t\t\t\t    buttons[i].label));\n\t}\n\n        return elem;\n      }\n    },\n\n    widgets: {\n      glyphIcon: function(glyph) {\n\treturn $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n      },\n\n      typeIcon: function(type) {\n\treturn $.el.span({class:\"dropdown-icon type-icon \"+type});\n      },\n\n      glyphIconButton: function(glyph, options) {\n\tvar attrs = {class:\"btn\", type:\"button\"};\n\n\tif ( options.action ) attrs['data-action'] = options.action;\n\tif ( options.title )  attrs.title          = options.title;\n\tif ( options.class )  attrs.class\t  += \" \"+options.class;\n\n\treturn $.el.button(attrs, form.widgets.glyphIcon(glyph));\n      },\n\n      /**\n       * Turn an icon into a dropdown button.\n       * @param {Object} options\n       * @param {Any}\t options.client is the `this` for the menu\n       *\t\t functions.\n       * @param {String} [options.divClass] additional class for the\n       * returned `div` element\n       * @param {String} [options.ulClass] additional class for the\n       * `ul` element that defines the menu.\n       * @param {Object} [options.actions] defines the menu items.\n       * this is passed to populateMenu()\n       * @returns {DIV} the downdown button\n       */\n      dropdownButton: function(icon, options) {\n\tif ( !options ) options = {};\n\tvar cls     = options.divClass;\n\tvar ulClass = options.ulClass;\n\n\tvar dropdown = $.el.div(\n\t  {class: \"btn-group dropdown\"+(cls?\" \"+cls:\"\")},\n\t  $.el.button(\n\t    {class:\"dropdown-toggle\",\n\t     \"data-toggle\":\"dropdown\"},\n\t    icon),\n\t  $.el.ul({class:\"dropdown-menu\"+(ulClass?\" \"+ulClass:\"\")}));\n\n\tif ( options.actions )\n\t  form.widgets.populateMenu($(dropdown), options.client, options.actions);\n\n\treturn dropdown;\n      },\n\n      populateMenu: function(menu, client, actions) {\n\tvar ul = menu.find(\".dropdown-menu\");\n\tvar data = ul.data(\"menu\")||{};\n\n\tfunction runMenu(ev, a) {\n\t  var action = $(a).data('action');\n\n\t  if ( action )\n\t    action.call(client, a);\n\t}\n\n\tfunction addMenuItem(label, onclick) {\n\t  if ( onclick !== undefined ) {\n\t    if ( label.indexOf(\"--\") == 0 ) {\n\t      ul.append($.el.li({class:\"divider\"}));\n\t    } else {\n\t      var a = $.el.a(label);\n\n\t      $(a).data('action', onclick);\n\t      ul.append($.el.li(a));\n\t    }\n\t  }\n\t}\n\n\tfor(var a in actions) {\n\t  if ( actions.hasOwnProperty(a) ) {\n\t    addMenuItem(a, actions[a]);\n\t  }\n\t}\n\n\tif ( !data.bound ) {\n\t  data.bound = true;\n\t  ul.on(\"click\", \"a\", function(ev) { runMenu(ev, this); } );\n\t}\n\n\tul.data(\"menu\", data);\n\n\treturn menu;\n      }\n    }\n  };\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\n  function valgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+(12-n);\n  }\n  function colgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+n;\n  }\n\n  function label(elemName, text, width) {\n    width = width || LABELWIDTH;\n    return $.el.label({class:\"control-label col-xs-\"+width+\"\", for:elemName}, text);\n  }\n\n  function checkbox(name, options) {\n    var attrs = {name:name, type:\"checkbox\"};\n    options = options||{};\n    if ( options.checked ) attrs.checked = \"checked\";\n    if ( options.title   ) attrs.title\t = options.title;\n    return $.el.input(attrs);\n  }\n\n  function textInput(name, options) {\n    var attrs = {name:name, type:\"text\", class:\"form-control\"};\n    options = options||{};\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n    if ( options.title )       attrs.title       = options.title;\n    if ( options.value )       attrs.value       = options.value;\n    if ( options.disabled )    attrs.disabled    = options.disabled;\n    if ( options.readonly )    attrs.readonly    = options.readonly;\n    if ( options.type )        attrs.type        = options.type;\n    return $.el.input(attrs);\n  }\n\n  function tagInput(name, placeholder, tags) {\n    var attrs = { name:name, type:\"text\",\n                  class:\"tm-input tag-list\"\n                };\n    if ( placeholder ) attrs.placeholder = placeholder;\n    var elem = $.el.input(attrs);\n    if ( tags )\n      $(elem).data(\"prefilled\", tags);\n    return elem;\n  }\n\n  function helpBlock(help) {\n    return $.el.p({class:\"help-block\"},\n\t\t  \"Make saved file public and give it a meaningful name\");\n  }\n\n  function textarea(name, options) {\n    var attrs = {name:name, class:\"form-control\"};\n    options = options||{};\n\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n\n    return $.el.textarea(attrs, options.value||\"\");\n  }\n\n  /**\n   * Create a bootstrap <select> element from a list of options\n   * @param {String} name is the name of the select element\n   * @param {Array} from is an array of options. Each options is a\n   * string or an object with keys `value` and `label`.\n   * @param {Object} [options]\n   * @param {Object} [options.value] If provided, the corresponding\n   * option is selected\n   */\n\n  function select(name, from, options) {\n    var select = $($.el.select({class:\"form-control\", name:name}));\n\n    options=options||{};\n\n    function addSelect(e) {\n      if ( typeof(e) == \"string\" ) {\n\tif ( e == options.value ) {\n\t  select.append($.el.option({selected:\"selected\"}, e));\n\t} else {\n\t  select.append($.el.option(e));\n\t}\n      } else {\n\tvar opts = {value:e.value};\n\tif ( e.value == options.value )\n\t  opts.selected = \"selected\";\n\n\tselect.append($.el.option(opts, e.label));\n      }\n    }\n\n    for(var i=0; i<from.length; i++)\n      addSelect(from[i]);\n\n    return select[0];\n  }\n\n  return form;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2018, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Small utilities\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('utils',[\"jquery\"],\n       function($) {\n\n  var utils = {\n    /**\n     * @param   {String} text is the text to be encoded\n     * @returns {String} HTML encoded version of text\n     */\n    htmlEncode: function(text) {\n      if ( !text ) return \"\";\n      return document.createElement('a')\n                     .appendChild(document.createTextNode(text))\n\t\t     .parentNode\n\t\t     .innerHTML;\n    },\n\n    /**\n     * @returns {String} (random) UUID\n     */\n    generateUUID: function() {\n      var d = new Date().getTime();\n      var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n\t.replace(/[xy]/g, function(c) {\n\t  var r = (d + Math.random()*16)%16 | 0;\n\t  d = Math.floor(d/16);\n\t  return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n\t});\n      return uuid;\n    },\n\n    flash: function(obj) {\n      obj.addClass(\"flash\");\n      setTimeout(function() { obj.removeClass(\"flash\"); }, 1500);\n    },\n\n    ago: function(time) {\n      var ago = ((new Date().getTime())/1000) - time;\n\n      if ( ago < 20  ) return \"just now\";\n      if ( ago < 60  ) return \"less then a minute ago\";\n      ago = Math.round(ago/60);\n      if ( ago < 120 ) return ago + \" minutes ago\";\n      ago = Math.round(ago/60);\n      if ( ago < 48 )  return ago + \" hours ago\";\n      ago = Math.round(ago/24);\n      if ( ago < 360 ) return ago + \" days ago\";\n      ago = Math.round(ago/365);\n      return ago + \" years ago\";\n    },\n\n    basename: function(path) {\n      return path ? path.split('/').pop() : null;\n    }\n  } // end of methods\n\n  if (typeof String.prototype.startsWith != 'function') {\n    String.prototype.startsWith = function(str) {\n      return this.lastIndexOf(str, 0) === 0;\n    };\n  }\n\n  return utils;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage application history. This file supports  two types of history:\n * plugin for the browser history  and  keep   track  of  issues such as\n * recently used files.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('history',[\"jquery\", \"preferences\", \"form\", \"utils\"],\n       function($, preferences, form, utils) {\n  var history = {\n\n\t\t /*******************************\n\t\t *\t BROWSER HISTORY\t*\n\t\t *******************************/\n\n    /**\n     * Push a new entry to the browser history.  Since we have tabs,\n     * there isn't much reason for a back button.  We merely use the\n     * history to switch the location bar to the current document.\n     */\n    push: function(options) {\n      var cpath = window.location.pathname;\n\n      if ( cpath != options.url ) {\n\tvar state = {location: options.url, reason: options.reason};\n\n\twindow.history.pushState(state, \"\", options.url);\n\tdocument.title = \"SWISH -- \"\n                       + (options.url ? utils.basename(options.url)\n\t\t\t              : \"SWI-Prolog for SHaring\");\n      }\n    },\n\n    /**\n     * Restore a previous browser history state.  simply ignores.\n     * See push() for details.\n     */\n    pop: function(e) {\n    },\n\n\t\t /*******************************\n\t\t *\t  RECENT DOCUMENTS\t*\n\t\t *******************************/\n\n    recentMaxLength: 10,\n\n    /**\n     * Add/refresh document to list of recent documents.\n     * @param {Object} doc\n     * @param {String} doc.id is the document _identifier_\n     * @param {String} [doc.label] is the document label for\n     * the _Open recent_ menu.  Default is the `id`.\n     * @param {String} doc.type is the type of document.\n     * A document of a specific type is opened by calling\n     * `history.openRecent.type.call(event, doc)`\n     */\n\n    addRecent: function(doc) {\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      function equalDocument(d1, d2) {\n\treturn d1.type == d2.type && d1.id == d2.id;\n      }\n\n      for(var i=0; i<recent.length; i++) {\n\tif ( equalDocument(doc, recent[i]) ) {\n\t  recent.splice(i,1);\n\t  break;\n\t}\n      }\n      while ( recent.length+1 > history.recentMaxLength )\n\trecent.pop();\n      recent.splice(0,0,doc);\n\n      preferences.setVal(\"recentDocuments\", recent);\n    },\n\n    openRecent: function(ev, doc) {\n      return history.openRecent[doc.st_type](ev, doc);\n    },\n\n    /**\n     * Fill a (navbar) <ul> with <li><a> elements, where\n     * each <a> carries the related entry as `data('document')`\n     */\n    updateRecentUL: function() {\n      var ul = $(this);\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      ul.html(\"\");\n      for(var i=0; i<recent.length; i++) {\n\tvar e = recent[i];\n\n\tif ( e.id ) {\n\t  var a = $.el.a(form.widgets.typeIcon(e.id.split(\".\").pop()),\n\t\t\t e.label||e.id);\n\n\t  $(a).data('document', e);\n\t  ul.append($.el.li(a));\n\t}\n      }\n    }\n  };\n\n  /**\n   * Open recent \"gitty\" document\n   */\n  history.openRecent.gitty = function(ev, doc) {\n    $(ev.target).parents(\".swish\").swish('playFile', doc.id);\n  };\n\n  window.onpopstate = history.pop;\n\n  return history;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with cooperation\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chat',[ \"jquery\", \"config\", \"preferences\", \"form\", \"modal\", \"utils\" ],\n       function($, config, preferences, form, modal, utils) {\n\nvar MIN_RECONNECT_DELAY =   1000;\nvar MAX_RECONNECT_DELAY = 300000;\n\n(function($) {\n  var pluginName = 'chat';\n  var reconnect_delay = MIN_RECONNECT_DELAY;\n  var last_open = null;\n\n  /** @lends $.fn.chat */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t/* add event handling */\n\telem.on(\"click\", function(ev) {\n\t  var li = $(ev.target).closest(\"li.user\");\n\n\t  if ( li.length == 1 )\n\t    elem.chat('unnotify', li.attr(\"id\"));\n\t});\n\telem.on(\"send\", function(ev, msg) {\n\t  elem.chat('send', msg);\n\t});\n\t$(window).bind(\"beforeunload\", function() {\n\t  elem.chat('disconnect');\n\t});\n\n\t/* setup websocket */\n\tif ( config.swish.chat ) {\n\t  elem.chat('connect');\n\t}\n      });\n    },\n\n\t\t /*******************************\n\t\t *\t      WEBSOCKET\t\t*\n\t\t *******************************/\n\n    /**\n     * Create a websocket connection to /chat on the SWISH server.\n     */\n    connect: function() {\n      var elem = this;\n      var data = this.data(pluginName);\n      var url  = window.location.host + config.http.locations.swish_chat;\n      var lead = \"?\";\n      var ws = window.location.protocol.replace(\"http\", \"ws\");\n\n      if ( data.connection && data.connection.readyState == 1 )\n\treturn this;\t\t\t/* already connected */\n\n      function add_pref_param(name, pname) {\n\tvar value = preferences.getVal(pname);\n\n\tif ( value ) {\n\t  if ( pname == \"anon-avatar\" ) {\n\t    /* hack to deal with possibly rebased server */\n\t    value = config.http.locations.avatar+value.split(\"/\").pop();\n\t  }\n\n\t  url += lead + name + \"=\" + encodeURIComponent(value);\n\t  lead = \"&\";\n\t}\n      }\n\n      add_pref_param(\"avatar\",   \"anon-avatar\");\n      add_pref_param(\"nickname\", \"nick-name\");\n\n      if ( data.reconnect ) {\t\t\t/* reconnecting */\n\turl += lead + \"reconnect\" + \"=\" + encodeURIComponent(data.reconnect);\n\tlead = \"&\";\n      }\n\n      try {\n\tdata.connection = new WebSocket(ws + \"//\" + url,\n\t\t\t\t\t['v1.chat.swish.swi-prolog.org']);\n      } catch(err) {\n\telem.chat('userCount', undefined);\n\treturn;\n      }\n\n      data.connection.onerror = function(error) {\n\telem.chat('userCount', undefined);\n      };\n      data.connection.onclose = function(ev) {\n\tif ( last_open == null ) {\n\t  reconnect_delay *= 2;\n\t  if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t    reconnect_delay = MAX_RECONNECT_DELAY;\n\t} else {\n\t  if ( getTime() - last_open > 300000 )\n\t  { reconnect_delay = MIN_RECONNECT_DELAY;\n\t  } else\n\t  { reconnect_delay *= 2;\n\t    if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t      reconnect_delay = MAX_RECONNECT_DELAY;\n\t  }\n\t}\n\tsetTimeout(function() {\n\t  elem.chat('connect');\n\t}, reconnect_delay);\n      };\n      data.connection.onmessage = function(e) {\n\tvar msg = JSON.parse(e.data);\n\tmsg.origin = e.origin;\n\tif ( msg.type )\n\t  elem.chat(msg.type, msg);\n\telse\n\t  console.log(e);\n      };\n      data.connection.onopen = function() {\n      };\n    },\n\n    empty_queue: function() {\n      var data = this.data(pluginName);\n\n      while( data.queue &&\n\t     data.queue.length > 0\n\t     && data.connection.readyState == 1 ) {\n\tvar str = data.queue.shift();\n\tdata.connection.send(str);\n      }\n    },\n\n    disconnect: function() {\n      var data = this.data(pluginName);\n\n      if ( data.connection ) {\n\tthis.chat('send', {type: \"unload\"});\n\tdata.connection.onclose = function(){};\n\tdata.connection.close();\n\tdata.connection = undefined;\n      }\n\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t   BASIC MESSAGES\t*\n\t\t *******************************/\n\n    /**\n     * @param {Object} msg is the JSON object to broadcast\n     */\n    send: function(msg) {\n      var data = this.data(pluginName);\n\n      if ( data && data.connection ) {\n\tvar str = JSON.stringify(msg);\n\n\tif ( data.connection.readyState != 1 ) {\n\t  if ( !data.queue )\n\t    data.queue = [str];\n\t  else\n\t    data.queue.push(str);\n\t  this.chat('connect');\n\t} else {\n\t  data.connection.send(str);\n\t}\n      }\n\n      return this;\n    },\n\n    subscribe: function(channel, sub_channel) {\n      var msg = { type: \"subscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n    unsubscribe: function(channel, subchannel) {\n      var msg = { type: \"unsubscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n\t\t /*******************************\n\t\t *\t      ACTIONS\t\t*\n\t\t *******************************/\n\n    /**\n     * The welcome message is sent by SWISH immediately after opening\n     * the websocket connection.  It provides the session UID for this\n     * user\n     */\n    welcome: function(e) {\n      var data = this.data(pluginName);\n\n      if ( data.wsid && data.wsid != e.wsid ) {\n\tthis.html(\"\");\t\t\t\t/* server restart? */\n      }\n\n      data.wsid = e.wsid;\n      data.reconnect = e.reconnect;\t\t/* reconnection token */\n      if ( e.avatar && e.avatar_source == 'generated' )\n\tpreferences.setVal(\"anon-avatar\", e.avatar);\n      e.role = \"self\";\n\n      var li = this.chat('addUser', e);\n      $(li).addClass(\"myself\");\n      this.chat('userCount', e.visitors);\n      last_open = getTime();\n\n      if ( e.check_login )\n\t$(\"#login\").login('update', \"check\");\n      else\n\t$(\".sourcelist\").trigger(\"login\");\n      $(\".storage\").storage('chat_status');\n      this.chat('empty_queue');\n    },\n\n    userCount: function(cnt) {\n      var elem = $(\"#user-count\");\n\n      if ( cnt == undefined ) {\n\telem.parent().hide();\n      } else {\n\telem.parent().show();\n\telem.text(cnt);\n      }\n    },\n\n    /**\n     * Replied when opening SWISH on a file to inform\n     * the new user about existing visitors to same\n     * files as are open in the current SWISH.  See\n     * inform_newby_about_existing_gazers/2.\n     */\n    gazers: function(e) {\n      if ( e.gazers ) {\n\tfor(var i=0; i<e.gazers.length; i++) {\n\t  var gazer = e.gazers[i];\n\t  this.chat('addUser', gazer);\n\t  if ( gazer.file )\n\t    this.chat('addUserFile', gazer.wsid, gazer.file);\n\t}\n      }\n    },\n\n    /**\n     * Replied if the profile associated with a visitor changes.  A\n     * key `reason` carries the reason for the change.\n     */\n\n    profile: function(e) {\n      var data = this.data(pluginName);\n      var li = $(\"#\"+e.wsid);\n\n      li.children(\"a\").html(\"\").append(avatar(e));\n      if ( e.avatar ) {\n\t$(\"*[data-userid=\"+e.wsid+\"] img.avatar\").attr(\"src\", e.avatar);\n\tif ( e.avatar_source == 'generated' )\n\t  preferences.setVal(\"anon-avatar\", e.avatar);\n      }\n\n      if ( e.name ) {\n\tli.prop('title', e.name);\n\tif ( e.reason == 'set-nick-name' ) {\n\t  e.html = \"Named <i>\"+utils.htmlEncode(e.name)+\"</i>\";\n\t  this.chat('notifyUser', e);\n\t}\n      }\n\n      if ( data.wsid == e.wsid ) {\t/* current user profile changed */\n\t$(\".sourcelist\").trigger(\"login\");\n      }\n    },\n\n    /**\n     * A user has rejoined. This is the case if we lost the\n     * connection and the connection was re-established.\n     */\n    rejoined: function(e) {\n      var avatars = $(\"#\"+e.wsid);\n\n      this.chat('lost', avatars, false);\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    /**\n     * A new user has joined.\n     */\n    joined: function(e) {\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    session_closed: function() {\n      $(\"#login\").login('update', \"session-closed\");\n    },\n\n    /**\n     * Display a notification by some user.\n     */\n    notify: function(e) {\n      this.chat('notifyUser', e);\n    },\n\n    /**\n     * Add incomming chat messages to the chatroom.  If there is no\n     * chatroom we should warn/open it\n     */\n    'chat-message': function(e) {\n      var rooms = $(\"div.chatroom\").chatroom('rooms', e.docid);\n\n      $(\".storage\").storage('chat_message', e);\n\n      if ( e.docid == \"gitty:\"+config.swish.hangout ) {\n\t$(\"#broadcast-bell\").chatbell('chat-message', e);\n      }\n\n      if ( rooms.length > 0 ) {\n\trooms.chatroom('add', e);\n\te.displayed = true;\n      } else {\n\tif ( $(\"#\"+e.user.id).length > 0 ) {\n\t  msg = $.extend({}, e);\n\t  msg.wsid = e.user.id;\n\t  msg.html = \"Wants to chat\";\n\t  this.chat('notifyUser', msg);\n\t}\n      }\n    },\n\n    /**\n     * Some action was forbidden\n     */\n\n     forbidden: function(e) {\n       modal.alert(e.message||\"Action is forbidden\");\n     },\n\n    /**\n     * Indicate we have read all messages upto a certain time stamp.\n     * @param {String} docid is the document id for which we should\n     * update the counter.\n     * @param {Number} time is the time of the last message read\n     * (seconds after 1/1/1970)\n     */\n    read_until: function(docid, time) {\n      preferences.setDocVal(docid, 'chatBar', time);\n    },\n\n\n\t\t /*******************************\n\t\t *\t        UI\t\t*\n\t\t *******************************/\n\n    /**\n     * Get the broadcast room\n     */\n     broadcast_room: function() {\n      return this.closest(\".swish\")\n                 .find(\".storage\")\n                 .storage('match', {file:config.swish.hangout});\n    },\n\n    /**\n     * Present a notification associated with a user. We do not\n     * add a user icon for open and close on the broadcast room if\n     * we do not have this open when the message arrives.\n     */\n    notifyUser: function(options) {\n      var elem = this;\n\n      function isBroadcast(options) {\n\treturn ( ( options.event == 'opened' ||\n\t\t   options.event == 'closed' ) &&\n\t\t options.event_argv &&\n\t\t options.event_argv[0] == config.swish.hangout\n\t       );\n      }\n\n      if ( isBroadcast(options) && !this.chat('broadcast_room') )\n\toptions.create_user = false;\n\n      var user_li = this.chat('addUser', options);\n\n      if ( user_li && user_li.length > 0 ) {\n\toptions.onremove = function() {\n\t  elem.chat('unnotify', options.wsid);\n\t};\n\tmodal.notify(user_li, options);\n\n\tthis.chat('updateFiles', options);\n      }\n    },\n\n    unnotify: function(wsid) {\n      if ( $(\"#\"+wsid).hasClass(\"removed\") )\n\tthis.chat('removeUser', wsid);\n\n      return this;\n    },\n\n    updateFiles: function(options) {\n      var data = $(this).data(pluginName);\n\n      function file() {\n\treturn options.event_argv[0];\n      }\n\n      if ( options.event == \"opened\" ) {\n\tthis.chat('addUserFile', options.wsid, file());\n      } else if ( options.event == \"closed\" ) {\n\tvar wsid = options.wsid == data.wsid ? undefined : options.wsid;\n\tthis.chat('removeUserFile', wsid, file(), true);\n      }\n    },\n\n    /**\n     * Return or add a user to the notification area.\n     * @param {Object} options\n     * @param {String} options.wsid Identifier for the user (a UUID)\n     * @param {String} [options.name] is the name of the user\n     * @returns {jQuery} the `li` element representing the user\n     */\n    addUser: function(options) {\n      var li = $(\"#\"+options.wsid);\n\n      if ( li.length == 0 )\n      { if ( options.create_user != false ) {\n\t  li = $(li_user(options.wsid, options));\n\t  this.prepend(li);\n        } else {\n\t  return null;\n\t}\n      } else {\n\tthis.chat('lost', li, false);\n      }\n\n      return li;\n    },\n\n    /**\n     * Remove a user avatar.  If a notification is pending we delay\n     * removal until the notification times out\n     */\n    removeUser: function(wsid) {\n      if ( typeof wsid == \"string\" ) {\n\twsid = {wsid:wsid};\n      }\n\n      if ( wsid.visitors !== undefined )\n\tthis.chat('userCount', wsid.visitors);\n      var li = $(\"#\"+wsid.wsid);\n      if ( li.length == 0 )\n\treturn this;\n\n      if ( wsid.reason != \"close\" ) {\n\tif ( $(\"#ntf-\"+wsid.wsid).length > 0 )\t/* notification pending */\n\t  li.addClass(\"removed\");\n\telse\n\t  li.hide(400, function() {this.remove();});\n      } else {\t\t\t\t\t/* connection was lost */\n\tthis.chat('lost', li, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Set/clear lost-connection state of users.\n     * @param {jQuery} li set of items to set/clear\n     * @param {Boolean} lost is `true` if we lost the connection\n     */\n    lost: function(li, lost) {\n      if ( lost ) {\n\tli.addClass(\"lost\");\n      } else {\n\tli.removeClass(\"lost\");\n      }\n\n      li.each(function() {\n\tvar elem = $(this);\n\tif ( lost ) {\n\t  elem.data('lost-timer',\n\t\t    setTimeout(function() {\n\t\t      if ( li.hasClass(\"lost\") )\n\t\t\tli.remove();\n\t\t    }, 60000));\n\t} else {\n\t  var tmo = elem.data('lost-timer');\n\t  if ( tmo ) {\n\t    clearTimeout(tmo);\n\t    elem.data('lost-timer', undefined);\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Get info about a specific user.\n     * @param {Array} [fields] lists the keys we want to have in the\n     * user objects.  Default is all we have.\n     */\n    user_info: function(fields) {\n      var li = $(this);\n      var user = {};\n\n      if ( !fields || fields.indexOf('id') >= 0 ) {\n\tuser.id = li.attr(\"id\");\n      }\n      if ( !fields || fields.indexOf('name') >= 0 ) {\n\tvar name = li.prop(\"title\");\n\tif ( name && name !== \"Me\" )\n\t  user.name = name;\n      }\n      if ( !fields || fields.indexOf('avatar') >= 0 ) {\n\tuser.avatar = li.find(\"img.avatar\").attr(\"src\");\n      }\n\n      return user;\n    },\n\n    /**\n     * Get the set of visible users.  The return is an object holding\n     * a key `self` and a key `users` bound to an array of users.\n     * `self` points to the user of this browser.  Self always has\n     * all keys\n     */\n    users: function(fields) {\n      var users = [];\n      var rc = {users:users};\n\n      this.find(\"li.user[id]\").each(function() {\n\tvar elem = $(this);\n\tvar self = elem.hasClass(\"myself\");\n\tvar user = elem.chat('user_info', self ? undefined : fields);\n\n\tif ( self ) {\n\t  rc.self = $.extend({}, user);\n\t  user.is_self = true;\n\t}\n\n\tusers.push(user);\n      });\n\n      return rc;\n    },\n\n    /**\n     * Get info on the _self_ user.\n     */\n    self: function(fields) {\n      var li = this.find(\"li.user.myself[id]\");\n\n      return li.chat('user_info', fields);\n    },\n\n    /**\n     * Browser `wsid` has opened `file`\n     */\n    addUserFile: function(wsid, file) {\n      var li = $(\"#\"+wsid);\n      var ul = li.find(\"ul.dropdown-menu\");\n      var fli;\n\n      ul.find(\"li.file\").each(function() {\n\tif ( $(this).data(\"file\") == file ) {\n\t  fli = this;\n\t  return false;\n\t}\n      });\n\n      if ( fli == undefined ) {\n\tvar type = file.split(\".\").pop();\n\tul.append(\n\t  $.el.li({class:\"file\", \"data-file\":file, title:\"Shared file\"},\n\t\t  $.el.a($.el.span({class: \"dropdown-icon type-icon \"+type}),\n\t\t\t file)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Remove a file associated with the user wsid.\n     * @param {String} [wsid] User for which to remove file.  If\n     * `undefined`, remove file for all users.\n     * @param {Boolean} [user_too] if `true', remove the user if\n     * the set of files becomes empty and this is not `myself`.\n     */\n    removeUserFile: function(wsid, file, user_too) {\n      var elem = this;\n\n      function removeFile(user_li) {\n\tvar ul = user_li.children(\"ul.dropdown-menu\");\n\n\tul.find(\"li.file\").each(function() {\n\t  if ( $(this).data(\"file\") == file ) {\n\t    $(this).remove();\n\t    if ( user_too &&\n\t\t !user_li.hasClass(\"myself\") &&\n\t\t ul.find(\"li.file\").length == 0 )\n\t      elem.chat('removeUser', user_li.attr(\"id\"));\n\t    return false;\n\t  }\n\t});\n      }\n\n      if ( wsid ) {\n\tremoveFile($(\"#\"+wsid));\n      } else {\n\tthis.children().each(function() {\n\t  removeFile($(this), file, user_too);\n\t});\n      }\n    }\n  }; // methods\n\n  // Private functions\n\n  /**\n   * Add an entry for a user to the notification area\n   */\n  function li_user(id, options) {\n    options = options||{};\n    var ul;\n    var a;\n    var name = options.name;\n\n    if ( !name && options.role == \"self\" )\n      name = \"Me\";\n    if ( !name )\n      name = id;\n\n    var li = $.el.li({class:\"dropdown user\", id:id, title:name},\n\t\t   a=$.el.a({ class:\"dropdown-toggle avatar\",\n\t\t\t      'data-toggle':\"dropdown\"\n\t\t\t    },\n\t\t\t    avatar(options)),\n\t\t  ul=$.el.ul({ class:\"dropdown-menu pull-right\",\n\t\t\t       title:\"\"\n\t\t\t     }));\n\n    if ( options.role == \"self\" ) {\n      $(a).append($.el.b({class:\"caret\"}));\n\n      var input = $.el.input({ type:\"text\",\n\t\t\t       placeholder:\"Nick name\",\n\t\t\t       value:options.name||\"\",\n\t\t\t       title:\"Nick name\"\n\t\t\t     });\n      ul.append($.el.li(input));\n      $(input).keypress(function(ev) {\n\tif ( ev.which == 13 ) {\n\t  var name = $(input).val().trim();\n\n\t  if ( name != \"\" ) {\n\t    $(\"#chat\").trigger('send',\n\t\t\t       { type:'set-nick-name',\n\t\t\t\t name: name\n\t\t\t       });\n\t    preferences.setVal(\"nick-name\", name);\n\t  }\n\t  $(input).closest('.dropdown.open').removeClass('open');\n\t}\n      });\n\n      form.widgets.populateMenu($(li), $(\"#chat\"), {\n/*\t\"Chat ...\": function() {\n\t  this.chat('start_chat');\n\t}\n*/\n      });\n\n      ul.append($.el.li({class:\"divider\"}));\n    }\n\n    return li;\n  }\n\n  function avatar(options) {\n    if ( options.avatar ) {\n      return $.el.img({ class:\"avatar\", src:options.avatar\n\t\t      });\n    } else {\n      return $.el.span({class:\"avatar glyphicon glyphicon-user\"})\n    }\n  }\n\n  /**\n   * @return {Number} time since 1/1/1970 in milliseconds\n   */\n  function getTime() {\n    var d = new Date();\n    return d.getTime();\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chat\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chat = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * JQuery Spliter Plugin\n * Copyright (C) 2010-2013 Jakub Jankiewicz <http://jcubic.pl>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n(function($, undefined) {\n    var count = 0;\n    var splitter_id = null;\n    var splitters = [];\n    var current_splitter = null;\n    $.fn.split = function(options) {\n        var data = this.data('splitter');\n        if (data) {\n            return data;\n        }\n        var panel_1;\n        var panel_2;\n        var settings = $.extend({\n            limit: 100,\n            orientation: 'horizontal',\n            position: '50%',\n            invisible: false,\n            onDragStart: $.noop,\n            onDragEnd: $.noop,\n            onDrag: $.noop\n        }, options || {});\n        this.settings = settings;\n        var cls;\n        var children = this.children();\n        if (settings.orientation == 'vertical') {\n            panel_1 = children.first().addClass('left_panel');\n            panel_2 = panel_1.next().addClass('right_panel');\n            cls = 'vsplitter';\n        } else if (settings.orientation == 'horizontal') {\n            panel_1 = children.first().addClass('top_panel')\n            panel_2 = panel_1.next().addClass('bottom_panel');\n            cls = 'hsplitter';\n        }\n        if (settings.invisible) {\n            cls += ' splitter-invisible';\n        }\n        var width = this.width();\n        var height = this.height();\n        var id = count++;\n        this.addClass('splitter_panel');\n        var splitter = $('<div/>').addClass(cls).bind('mouseenter touchstart', function() {\n            splitter_id = id;\n        }).bind('mouseleave touchend', function() {\n            splitter_id = null;\n        }).insertAfter(panel_1);\n        var position;\n\n        function get_position(position) {\n            if (typeof position === 'number') {\n                return position;\n            } else if (typeof position === 'string') {\n                var match = position.match(/^([0-9\\.]+)(px|%)$/);\n                if (match) {\n                    if (match[2] == 'px') {\n                        return +match[1];\n                    } else {\n                        if (settings.orientation == 'vertical') {\n                            return (width * +match[1]) / 100;\n                        } else if (settings.orientation == 'horizontal') {\n                            return (height * +match[1]) / 100;\n                        }\n                    }\n                } else {\n                    //throw position + ' is invalid value';\n                }\n            } else {\n                //throw 'position have invalid type';\n            }\n        }\n\n        var self = $.extend(this, {\n            refresh: function() {\n                var new_width = this.width();\n                var new_height = this.height();\n                if (width != new_width || height != new_height) {\n                    width = this.width();\n                    height = this.height();\n                    self.position(position);\n                }\n            },\n            position: (function() {\n                if (settings.orientation == 'vertical') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.width();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.width(position).outerWidth();\n                                panel_2.width(self.width()-pw);\n                                splitter.css('left', pw-sw2);\n                            } else {\n                                var pw = panel_1.width(position-sw2).outerWidth();\n                                panel_2.width(self.width()-pw-sw);\n                                splitter.css('left', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else if (settings.orientation == 'horizontal') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.height();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.height(position).outerHeight();\n                                panel_2.height(self.height()-pw);\n                                splitter.css('top', pw-sw2);\n                            } else {\n                                var pw = panel_1.height(position-sw2).outerHeight();\n                                panel_2.height(self.height()-pw-sw);\n                                splitter.css('top', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else {\n                    return $.noop;\n                }\n            })(),\n            orientation: settings.orientation,\n            limit: settings.limit,\n            isActive: function() {\n                return splitter_id === id;\n            },\n            destroy: function() {\n                self.removeClass('splitter_panel');\n                splitter.unbind('mouseenter');\n                splitter.unbind('mouseleave');\n                splitter.unbind('touchstart');\n                splitter.unbind('touchmove');\n                splitter.unbind('touchend');\n                splitter.unbind('touchleave');\n                splitter.unbind('touchcancel');\n                if (settings.orientation == 'vertical') {\n                    panel_1.removeClass('left_panel');\n                    panel_2.removeClass('right_panel');\n                } else if (settings.orientation == 'horizontal') {\n                    panel_1.removeClass('top_panel');\n                    panel_2.removeClass('bottom_panel');\n                }\n                self.unbind('splitter.resize');\n                self.find('.splitter_panel').trigger('splitter.resize');\n                splitters[id] = null;\n                splitter.remove();\n                var not_null = false;\n                for (var i=splitters.length; i--;) {\n                    if (splitters[i] !== null) {\n                        not_null = true;\n                        break;\n                    }\n                }\n                //remove document events when no splitters\n                if (!not_null) {\n                    $(document.documentElement).unbind('.splitter');\n                    $(window).unbind('resize.splitter');\n                    self.data('splitter', null);\n                    splitters = [];\n                    count = 0;\n                }\n            }\n        });\n        self.bind('splitter.resize', function(e) {\n            var pos = self.position();\n            if (self.orientation == 'vertical' &&\n                pos > self.width()) {\n                pos = self.width() - self.limit-1;\n            } else if (self.orientation == 'horizontal' &&\n                       pos > self.height()) {\n                pos = self.height() - self.limit-1;\n            }\n            if (pos < self.limit) {\n                pos = self.limit + 1;\n            }\n            self.position(pos, true);\n        });\n        //inital position of splitter\n        var pos;\n        if (settings.orientation == 'vertical') {\n            if (pos > width-settings.limit) {\n                pos = width-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        } else if (settings.orientation == 'horizontal') {\n            //position = height/2;\n            if (pos > height-settings.limit) {\n                pos = height-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        }\n        if (pos < settings.limit) {\n            pos = settings.limit;\n        }\n        self.position(pos, true);\n        if (splitters.length == 0) { // first time bind events to document\n            $(window).bind('resize.splitter', function() {\n                $.each(splitters, function(i, splitter) {\n                    if ( splitter ) splitter.refresh();\n                });\n            });\n            $(document.documentElement).bind('mousedown.splitter touchstart.splitter', function(e) {\n                if (splitter_id !== null) {\n                    current_splitter = splitters[splitter_id];\n                    $('<div class=\"splitterMask\"></div>').css('cursor', current_splitter.children().eq(1).css('cursor')).insertAfter(current_splitter);\n                    current_splitter.settings.onDragStart(e);\n                    return false;\n                }\n            }).bind('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function(e) {\n                if (current_splitter) {\n                    $('.splitterMask').remove();\n                    current_splitter.settings.onDragEnd(e);\n                    current_splitter = null;\n                }\n            }).bind('mousemove.splitter touchmove.splitter', function(e) {\n                if (current_splitter !== null) {\n                    var limit = current_splitter.limit;\n                    var offset = current_splitter.offset();\n                    if (current_splitter.orientation == 'vertical') {\n                        var pageX = e.pageX;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageX = e.originalEvent.changedTouches[0].pageX;\n                        }\n                        var x = pageX - offset.left;\n                        if (x <= current_splitter.limit) {\n                            x = current_splitter.limit + 1;\n                        } else if (x >= current_splitter.width() - limit) {\n                            x = current_splitter.width() - limit - 1;\n                        }\n                        if (x > current_splitter.limit &&\n                            x < current_splitter.width()-limit) {\n                            current_splitter.position(x, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    } else if (current_splitter.orientation == 'horizontal') {\n                        var pageY = e.pageY;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageY = e.originalEvent.changedTouches[0].pageY;\n                        }\n                        var y = pageY-offset.top;\n                        if (y <= current_splitter.limit) {\n                            y = current_splitter.limit + 1;\n                        } else if (y >= current_splitter.height() - limit) {\n                            y = current_splitter.height() - limit - 1;\n                        }\n                        if (y > current_splitter.limit &&\n                            y < current_splitter.height()-limit) {\n                            current_splitter.position(y, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    }\n                    current_splitter.settings.onDrag(e);\n                }\n            });\n        }\n        splitters.push(self);\n        self.data('splitter', self);\n        return self;\n    };\n})(jQuery);\n\ndefine(\"splitter\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with subwindow layout\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('pane',[ \"jquery\", \"splitter\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'tile';\n\n  /** @lends $.fn.tile */\n  var methods = {\n    /**\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar dir   = elem.hasClass(\"horizontal\") ? \"vertical\" : \"horizontal\";\n\tvar pos   = elem.attr(\"data-split\");\n\tvar panes = elem.children();\n\n\tpos = pos||\"50%\";\n\n\tpanes.each(function() {\n\t  $(this).wrap('<div class=\"pane-wrapper\"></div>')\n\t});\n\telem.addClass(\"pane-container\");\n\telem.split({ orientation:dir,\n\t             position:pos,\n\t\t     limit:10,\n\t\t     onDragStart: function() { elem.tile('resize_start'); },\n\t\t     onDrag: function(ev) { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd: function() { elem.tile('resize_save'); }\n\t           });\n\telem.tile('resize_save');\n\n\telem.on('fullscreen', function(ev, val) {\n\t  elem.tile('resize');\n\t});\n      });\n    },\n\n    resize_start: function() {\n      return this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\n\telem.find(\".reactive-size\").trigger(\"reactive-resize-start\",\n\t\t\t\t\t    info.splitter.orientation);\n      });\n    },\n\n    /**\n     * Save the current split location as a percentage, so we can\n     * maintain this percentage at subsequent resize events.  This\n     * is normally called after establishing the tile and after a\n     * user-initiated resize.\n     */\n    resize_save: function() {\n      this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\tvar length, pos;\n\n\tif ( info.splitter.orientation == 'horizontal' ) {\n\t  length = elem.height();\n\t  pos    = $(info.first).height();\n\t} else {\n\t  length = elem.width();\n\t  pos    = $(info.first).width();\n\t}\n\n\tvar percent = Math.round(((100 * pos) / length)) + \"%\";\n\n\tinfo.splitter.resizestart = percent;\n      });\n\n      this.find(\".reactive-size\").trigger(\"reactive-resize\");\n      return this;\n    },\n\n    /**\n     * Act on a resize by keeping the relative distribution and respect\n     * min/max style properties. This assumes that {@link resizestart}\n     * is called at the start of the windowresize.\n     * @example $(window).resize(function() { $(\".tile\").tile('resize'); });\n     */\n    resize: function() {\n      return this.each(function() {\n\tvar elem     = $(this);\n\tvar splitter = elem.split();\n\n\tif ( splitter.resizestart ) {\n\t  splitter.position(splitter.resizestart);\n\t  splitter.settings.onDrag(elem);\n\t}\n      });\n    },\n\n    /**\n     * Split a pane, adding a new pane above/below/left/right of the\n     * splitted pane.  `this` must be the pane content!\n     * @param {Element} pane is a `<div>` element providing the content\n     * for the new tile.\n     * @param {String} [rel] is one of `above`/`below`/`left`/`right`.\n     * Default is `\"below\"`\n     * @param {Number} [pos] is percentage of the height/width taken by\n     * the new pane\n     * @param {Number} [minheight] is the minimum height of the new tab\n     * in the case of a vertical split.\n     * @return {jQuery} parent `pane-container` that hold me and the note\n     * that was added next to me.\n     */\n    split: function(pane, rel, pos, minheight) {\n      rel = rel||\"below\";\n\n      var relto  = this;\n      var dir    = (rel == \"above\" || rel == \"below\") ? \"horizontal\" : \"vertical\";\n      var parent = relto.wrap('<div class=\"pane-container tile \"' +\n\t\t\t      flipdir(dir) +\n\t\t\t      '></div>')\n                        .parent();\n\n      if ( pos == undefined )\n\tpos = 50;\n      else if ( pos < 10 )\n\tpos = 10;\n      else if ( pos > 90 )\n\tpos = 90;\n\n      if ( minheight && dir == \"horizontal\" ) {\n\tsumh = this.height();\n\tleft = sumh*pos/100;\n\tif ( left < minheight && minheight < sumh*0.9 ) {\n\t  pos = (minheight*100/sumh);\n\t}\n      }\n\n      if ( rel == \"above\" || rel == \"left\" ) {\n\tparent.prepend(pane);\n      } else {\n\tpos = 100 - pos;\n\tparent.append(pane);\n      }\n\n      var panes = $(relto).add(pane);\n      panes.wrap('<div class=\"pane-wrapper\"></div>');\n\n      parent.split({ orientation:dir,\n\t\t     position:pos+\"%\",\n\t\t     limit:10,\n\t\t     onDragStart: function() { parent.tile('resize_start'); },\n\t\t     onDrag:      function() { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd:   function() { parent.tile('resize_save'); }\n\t\t   });\n      parent.tile('resize_save');\n      panes.trigger(\"pane.resize\");\n\n      return parent;\n    },\n\n    /**\n     * Remove a tile from the DOM, causing the remaining half to occupy\n     * the whole space.  Again, `this` is the content pane.\n     */\n     close: function() {\n      var pane = this;\n      var splitContainer = pane.closest(\".pane-container\");\n\n      splitContainer.split().destroy();\n      pane.parent().remove();\n      splitContainer.children().first().children().first().unwrap().unwrap();\n    }\n  }; // methods\n\n  function paneInfo(pane) {\n    var panes = pane.children();\n\n    return { splitter: pane.split(),\n             first:    $(panes[0]).children()[0],\n\t     second:   $(panes[2]).children()[0]\n           };\n  }\n\n  function flipdir(dir) {\n    return dir == \"horizontal\" ? \"vertical\" : \"horizontal\";\n  }\n\n  /**\n   * Generate a tiled subwindow layout from a hierarchy of `<div>`\n   * elements.  Below is the HTML that creates the SWISH 2.0 subwindow\n   * layout.  This plugin uses the class `horizontal` or `vertical` to\n   * decide on the direction of the split and the attribute `data-split`\n   * to locate the split location.\n   *\n   *     <div class=\"tile horizontal\" data-split=\"60%\">\n   *       <div class=\"prolog-editor\"></div>\n   *       <div class=\"tile vertical\" data-split=\"70%\">\n   *         <div class=\"prolog-runners\"></div>\n   *         <div class=\"prolog-query\"></div>\n   *       </div>\n   *     </div>\n   *\n   * @class tile\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example $(\".tile\").tile();\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tile = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"0.11.1\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e;\n                $e = $.Event(namespace + type);\n                (args = args || []).unshift($e);\n                this.$el.trigger.apply(this.$el, args);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function getRegex(patterns, caseSensitive, wordsOnly) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = o.name || nameGenerator();\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", this.name, suggestions, false);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", this.name, suggestions, true);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        rendered += suggestions.length;\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\n                        that.async && that.trigger(\"asyncReceived\", query);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $(\"<div>\").text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, isDatasetEmpty);\n                function isDatasetEmpty(dataset) {\n                    return dataset.isEmpty();\n                }\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n                this._updateHint();\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, payload, cancelMove;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                payload = data ? data.obj : null;\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", payload);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(newVal);\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n                autocomplete: \"off\",\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                autocomplete: \"off\",\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});\ndefine(\"typeahead\", [\"jquery\"], (function (global) {\n    return function () {\n        var ret, fn;\n       fn = function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      };\n        ret = fn.apply(global, arguments);\n        return ret;\n    };\n}(this)));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Support the SWISH search box.  This we want to find:\n *\n *   - Predicates based on templates we also use for template completion\n *   - Source code (line)\t\t[TBD]\n *   - Saved programs by\n *     - Name\n *     - Tag\n *     - Description\t\t\t[TBD]\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('search',[ \"jquery\", \"config\", \"utils\", \"bloodhound\", \"typeahead\" ],\n       function($, config, utils, Bloodhound) {\n\n(function($) {\n  var pluginName = 'search';\n\n  /** @lends $.fn.search */\n  var methods = {\n    /**\n     * Turn Bootstrap search input into a typeahead widget\n     * @param {Object}  [options]\n     * @param {Boolean} [options.search=true] If false, merely use\n     * typeahead to fill a value.\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar query;\t\t\t/* current query */\n\n\t\t /*******************************\n\t\t *\t FILE COMPLETION\t*\n\t\t *******************************/\n\n\tvar files = new Bloodhound({\n\t\t\tname: \"files\",\n\t\t\tremote: { url: config.http.locations.swish_typeahead +\n\t\t\t\t       \"?set=file&q=%QUERY\",\n\t\t\t\t  wildcard: '%QUERY'\n\t\t\t},\n\t\t\tdatumTokenizer: fileTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tfiles.initialize();\n\n\tfunction fileTokenizer(f) {\n\t  return (f.tags||[]).push(f.name);\n\t}\n\n\tfunction renderFile(f) {\n\t  function filetype(file) {\n\t    return file.split('.').pop();\n\t  }\n\t  function filebase(file) {\n\t    return file.split('.').slice(0,-1).join(\".\");\n\t  }\n\n\t  var str = \"<div class=\\\"tt-match file type-icon \"\n\t          + filetype(f.name)\n\t          + \"\\\">\"\n\t\t  + \"<span class=\\\"tt-label\\\">\"\n\t\t  + utils.htmlEncode(filebase(f.name));\n\t          + \"</span>\";\n\n\t  if ( f.tags ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    for(var i=0; i<f.tags.length; i++) {\n\t      var tag = f.tags[i];\n\t      str += \"<span class=\\\"tt-tag\\\">\"\n\t\t   + utils.htmlEncode(tag)\n\t\t   + \"</span>\";\n\t    }\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( f.title )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(f.title)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH STORE SOURCES\t*\n\t\t *******************************/\n\n\tvar storeContent = new Bloodhound({\n\t\t\t     name: \"store_content\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=store_content&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tstoreContent.initialize();\n\n\tvar currentFile  = null;\n\tvar currentAlias = null;\n\tfunction renderStoreSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    var ext = hit.file.split('.').pop();\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+ext+\"\\\">\"\n\t\t+ \"<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \"</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  return str+renderSourceMatch(hit);\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH REMOTE SOURCES\t*\n\t\t *******************************/\n\n\tvar sources = new Bloodhound({\n\t\t\tname: \"source\",\n\t\t\tlimit: 15,\n\t\t\tcache: false,\n\t\t\tquery_cache_length: 1,\n\t\t\tremote: {\n\t\t\t  url: config.http.locations.swish_typeahead +\n\t\t\t\t\"?set=sources&q=%QUERY\",\n\t\t\t  replace: bloodHoundURL\n\t\t\t},\n\t\t\tdatumTokenizer: sourceLineTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tsources.initialize();\n\n\tfunction sourceLineTokenizer(hit) {\n\t  return Bloodhound.tokenizers.whitespace(hit.text);\n\t}\n\n\tfunction renderSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+hit.ext+\"\\\">\"\n\t        + \"<span class=\\\"tt-path-alias\\\">\"\n\t        + utils.htmlEncode(hit.alias)\n\t\t+ \"</span>(<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \")</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  if ( hit.text )\n\t    str += renderSourceMatch(hit);\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *    PREDICATE COMPLETION\t*\n\t\t *******************************/\n\n\tfunction predicateMatcher(q, cb) {\n\t  var templates = config.swish.templates;\n\t  var matches = [];\n\t  var ql = q.split(\" \");\n\t  var pl = [];\n\n\t  for(var i=0; i<ql.length; i++)\n\t    pl.push({prefix:ql[i], regex:new RegExp(\"_\"+ql[i])});\n\n\t  for(var i=0; i<templates.length; i++) {\n\t    var templ = templates[i];\n\n\t    if ( templ.arity !== undefined ) {\n\t      for(var j=0, match=true; j<pl.length && match; j++) {\n\t\tif ( !(templ.name.startsWith(pl[j].prefix) ||\n\t\t       templ.name.match(pl[j].regex)) )\n\t\t  match=false;\n\t      }\n\t      if ( match )\n\t        matches.push(templ);\n\t    }\n\t  }\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderPredicate(p) {\n\t  var str = \"<div class=\\\"tt-match predicate\";\n\n\t  if ( p.type ) str += \" \" + p.type;\n\t  if ( p.mode ) str += \"\\\" title=\\\"\"\n                             + p.mode;\n\n\t  str += \"\\\">\"\n               + \"<span class=\\\"tt-label\\\">\"\n\t       + utils.htmlEncode(p.name)\n\t       + \"/\"\n\t       + p.arity\n\t       + \"</span>\";\n\n\t  if ( p.iso ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    if ( p.iso )\n\t      str += \"<span class=\\\"tt-tag\\\">ISO</span>\";\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( p.summary )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(p.summary)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *\t   SEARCH SOURCE\t*\n\t\t *******************************/\n\n\tvar sourceRE;\n\n\tfunction sourceMatcher(q, cb) {\n\t  query = q;\n\t  if ( q.length < 2 ) return [];\n\n\t  var matches = [];\n\t  var re = new RegExp(\"\\\\b\"+q, \"g\");\n\t  sourceRE = re;\n\n\t  $(\".prolog-editor\").each(function() {\n\t    var editor = this;\n\t    var m = $(editor).prologEditor('search', re, {max: 7});\n\n\t    for(var i=0; i<m.length; i++) {\n\t      m[i].editor = editor;\n\t      m[i].regex  = sourceRE;\n\t      matches.push(m[i]);\n\t    }\n\t  });\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderSourceMatch(hit) {\n\t  var text = hit.text;\n\t  var i;\n\n\t  if ( (i=text.search(sourceRE)) > 20 )\n\t    text = \"...\"+text.slice(i-17);\n\t  if ( text.length > 80 )\n\t    text = text.substring(0,80);\n\n\t  var str = \"<div class=\\\"tt-match source\\\">\"\n\t          + \"<span class=\\\"tt-line\\\">\"\n\t\t  + \"<span class=\\\"tt-lineno\\\">\"\n\t\t  + hit.line\n\t\t  + \"</span>\"\n\t\t  + \"<span class=\\\"tt-text\\\">\"\n\t\t  + utils.htmlEncode(text)\n\t          + \"</span>\"\n\t          + \"</span>\"\n\t\t  + \"</div>\";\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t       USERS\t\t*\n\t\t *******************************/\n\n\tvar users = new Bloodhound({\n\t\t\t     name: \"users\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=user&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tusers.initialize();\n\n\tfunction renderUser(hit) {\n\t  function avatar(hit) {\n\t    if ( hit.avatar ) {\n\t      return '<img class=\"avatar\" src=\"'+encodeURI(hit.avatar)+'\">';\n\t    } else {\n\t      return \"\";\n\t    }\n\t  }\n\n\t  var str = '<div class=\"tt-match user\">'\n\t\t  + avatar(hit)\n\t\t  + '<span class=\"tt-label\">'\n\t\t  + utils.htmlEncode(hit.name)\n\t\t  + '</span>'\n\t\t  + '</div>';\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t      COMBINE\t\t*\n\t\t *******************************/\n\n\tvar typeaheadProperties = {\n\t  source:\t\t\t/* local source */\n\t  { name: \"source\",\n\t    display: 'text',\n\t    source: sourceMatcher,\n\t    templates: { suggestion: renderSourceMatch }\n\t  },\n\t  sources:\t\t\t/* remote sources */\n\t  { name: \"sources\",\n\t    display: 'file',\n\t    source: sources.ttAdapter(),\n\t    templates: { suggestion: renderSourceLine },\n\t    limit: 15\n\t  },\n\t  files:\t\t\t/* files in gitty on name and tags */\n\t  { name: \"files\",\n\t    display: 'name',\n\t    source: files.ttAdapter(),\n\t    templates: { suggestion: renderFile }\n\t  },\n\t  store_content:\t\t/* file content in gitty */\n\t  { name: \"store_content\",\n\t    display: 'file',\n\t    source: storeContent.ttAdapter(),\n\t    templates: { suggestion: renderStoreSourceLine }\n\t  },\n\t  predicates:\t\t\t/* built-in and library predicates */\n\t  { name: \"predicates\",\n\t    display: function(p) {\n\t      return p.name+\"/\"+p.arity;\n\t    },\n\t    source: predicateMatcher,\n\t    templates: { suggestion: renderPredicate }\n\t  },\n\t  users:\t\t\t/* Users (profiles) */\n\t  { name: \"users\",\n\t    display: \"name\",\n\t    source: users.ttAdapter(),\n\t    templates: { suggestion: renderUser }\n\t  }\n\t};\n\n\t// Get the actual query string exchanged between\n\t// typeahead and Bloodhound.\n\tvar of = typeaheadProperties.sources.source;\n\ttypeaheadProperties.sources.source = function(q, cb) {\n\t  currentFile = null;\n\t  currentAlias = null;\n\t  sourceRE = new RegExp(RegExp.escape(q));\n\t  return of(q, cb);\n\t}\n\n\t/**\n\t * Assemble the sources\n\t */\n\n\tfunction ttSources(from) {\n\t  var sources = [];\n\t  var src = from.replace(/\\s+/g, ' ').split(\" \");\n\n\t  for(var i=0; i<src.length; i++) {\n\t    sources.push(typeaheadProperties[src[i]]);\n\t  }\n\n\t  return sources;\n\t}\n\n\t\t /*******************************\n\t\t *\t     TYPEAHEAD\t\t*\n\t\t *******************************/\n\n\telem.typeahead({ minLength: 2,\n\t\t\t highlight: true\n\t\t       },\n\t\t       ttSources(elem.data(\"search-in\")))\n\t  .on('typeahead:selected typeahead:autocompleted',\n\t      function(ev, datum) {\n\n\t\tif ( options.search == false ) {\n\t\t  elem.data(\"json-value\", datum);\n\t\t} else {\n\t\t  if ( datum.type == \"store\" ) {\n\t\t    if ( datum.query ) {\n\t\t      datum.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      datum.showAllMatches = true;\n\t\t    }\n\t\t    $(ev.target).closest(\".swish\").swish('playFile', datum);\n\t\t  } else if ( datum.arity !== undefined ) {\n\t\t    $(\".swish-event-receiver\").trigger(\"pldoc\", datum);\n\t\t  } else if ( datum.editor !== undefined &&\n\t\t\t      datum.line !== undefined ) {\n\t\t    $(datum.editor).prologEditor('gotoLine', datum.line,\n\t\t\t\t\t\t { regex: datum.regex,\n\t\t\t\t\t\t   showAllMatches: true\n\t\t\t\t\t\t });\n\t\t  } else if ( datum.alias !== undefined ) {\n\t\t    var url = encodeURI(\"/\"+datum.alias+\n\t\t\t\t\t\"/\"+datum.file+\n\t\t\t\t\t\".\"+datum.ext);\n\t\t    var play = { url:url, line:datum.line };\n\n\t\t    if ( datum.query ) {\n\t\t      play.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      play.showAllMatches = true;\n\t\t    }\n\n\t\t    $(ev.target).closest(\".swish\").swish('playURL', play);\n\t\t  } else {\n\t\t    elem.data(\"json-value\", datum);\n\t\t    console.log(elem.data(\"json-value\"));\n\t\t  }\n\t\t}\n\t      });\n\n\tif ( options.search != false ) {\n\t  elem.closest(\"form\").submit(function(ev) {\n\t    var data = elem.data(\"json-value\");\n\t    var str  = elem.val();\n\n\t    if ( !(data && data.datum && data.datum.label == str) )\n\t      data = str;\n\n\t    elem.val(\"\");\n\t    elem.data(\"json-value\", null);\n\n\t    elem.search('search', data);\n\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Search for the a given query.\n     *\n     * @param {String|Object} q specifies the search target. If it is a\n     * string, no autocompletion was performed.  If it is an object, it\n     * is the object returned by Bloodhound\n     */\n    search: function(q) {\n      alert(\"Full search not yet implemented\\n\"+\n\t    \"Please select from auto completion list\");\n    }\n  }; // methods\n\n  function bloodHoundURL(url, query) {\n    var url = url.replace('%QUERY',\n\t\t\t  encodeURIComponent(query));\n    var match = $(\"label.active > input[name=smatch]\").val();\n    if ( match )\n      url += \"&match=\"+match;\n\n    return url;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class search\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.search = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nRegExp.escape = function(string) {\n  return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\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// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('cm/lib/codemirror',factory) :\n\t(global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n// Kludges for bugs and behavior differences that can't be feature\n// detected are enabled based on userAgent etc sniffing.\nvar userAgent = navigator.userAgent;\nvar platform = navigator.platform;\n\nvar gecko = /gecko\\/\\d/i.test(userAgent);\nvar ie_upto10 = /MSIE \\d/.test(userAgent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\nvar edge = /Edge\\/(\\d+)/.exec(userAgent);\nvar ie = ie_upto10 || ie_11up || edge;\nvar ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\nvar webkit = !edge && /WebKit\\//.test(userAgent);\nvar qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\nvar chrome = !edge && /Chrome\\//.test(userAgent);\nvar presto = /Opera\\//.test(userAgent);\nvar safari = /Apple Computer/.test(navigator.vendor);\nvar mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\nvar phantom = /PhantomJS/.test(userAgent);\n\nvar ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\nvar android = /Android/.test(userAgent);\n// This is woefully incomplete. Suggestions for alternative methods welcome.\nvar mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\nvar mac = ios || /Mac/.test(platform);\nvar chromeOS = /\\bCrOS\\b/.test(userAgent);\nvar windows = /win/i.test(platform);\n\nvar presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\nif (presto_version) { presto_version = Number(presto_version[1]); }\nif (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\nvar flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\nvar captureRightClick = gecko || (ie && ie_version >= 9);\n\nfunction classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\nvar rmClass = function(node, cls) {\n  var current = node.className;\n  var match = classTest(cls).exec(current);\n  if (match) {\n    var after = current.slice(match.index + match[0].length);\n    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n  }\n};\n\nfunction removeChildren(e) {\n  for (var count = e.childNodes.length; count > 0; --count)\n    { e.removeChild(e.firstChild); }\n  return e\n}\n\nfunction removeChildrenAndAdd(parent, e) {\n  return removeChildren(parent).appendChild(e)\n}\n\nfunction elt(tag, content, className, style) {\n  var e = document.createElement(tag);\n  if (className) { e.className = className; }\n  if (style) { e.style.cssText = style; }\n  if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n  else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n  return e\n}\n// wrapper for elt, which removes the elt from the accessibility tree\nfunction eltP(tag, content, className, style) {\n  var e = elt(tag, content, className, style);\n  e.setAttribute(\"role\", \"presentation\");\n  return e\n}\n\nvar range;\nif (document.createRange) { range = function(node, start, end, endNode) {\n  var r = document.createRange();\n  r.setEnd(endNode || node, end);\n  r.setStart(node, start);\n  return r\n}; }\nelse { range = function(node, start, end) {\n  var r = document.body.createTextRange();\n  try { r.moveToElementText(node.parentNode); }\n  catch(e) { return r }\n  r.collapse(true);\n  r.moveEnd(\"character\", end);\n  r.moveStart(\"character\", start);\n  return r\n}; }\n\nfunction contains(parent, child) {\n  if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n    { child = child.parentNode; }\n  if (parent.contains)\n    { return parent.contains(child) }\n  do {\n    if (child.nodeType == 11) { child = child.host; }\n    if (child == parent) { return true }\n  } while (child = child.parentNode)\n}\n\nfunction activeElt() {\n  // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n  // IE < 10 will throw when accessed while the page is loading or in an iframe.\n  // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n  var activeElement;\n  try {\n    activeElement = document.activeElement;\n  } catch(e) {\n    activeElement = document.body || null;\n  }\n  while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n    { activeElement = activeElement.shadowRoot.activeElement; }\n  return activeElement\n}\n\nfunction addClass(node, cls) {\n  var current = node.className;\n  if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n}\nfunction joinClasses(a, b) {\n  var as = a.split(\" \");\n  for (var i = 0; i < as.length; i++)\n    { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n  return b\n}\n\nvar selectInput = function(node) { node.select(); };\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\n  { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\nelse if (ie) // Suppress mysterious IE10 errors\n  { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\nfunction bind(f) {\n  var args = Array.prototype.slice.call(arguments, 1);\n  return function(){return f.apply(null, args)}\n}\n\nfunction copyObj(obj, target, overwrite) {\n  if (!target) { target = {}; }\n  for (var prop in obj)\n    { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n      { target[prop] = obj[prop]; } }\n  return target\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countColumn(string, end, tabSize, startIndex, startValue) {\n  if (end == null) {\n    end = string.search(/[^\\s\\u00a0]/);\n    if (end == -1) { end = string.length; }\n  }\n  for (var i = startIndex || 0, n = startValue || 0;;) {\n    var nextTab = string.indexOf(\"\\t\", i);\n    if (nextTab < 0 || nextTab >= end)\n      { return n + (end - i) }\n    n += nextTab - i;\n    n += tabSize - (n % tabSize);\n    i = nextTab + 1;\n  }\n}\n\nvar Delayed = function() {this.id = null;};\nDelayed.prototype.set = function (ms, f) {\n  clearTimeout(this.id);\n  this.id = setTimeout(f, ms);\n};\n\nfunction indexOf(array, elt) {\n  for (var i = 0; i < array.length; ++i)\n    { if (array[i] == elt) { return i } }\n  return -1\n}\n\n// Number of pixels added to scroller and sizer to hide scrollbar\nvar scrollerGap = 30;\n\n// Returned or thrown by various protocols to signal 'I'm not\n// handling this'.\nvar Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n// Reused option objects for setSelection & friends\nvar sel_dontScroll = {scroll: false};\nvar sel_mouse = {origin: \"*mouse\"};\nvar sel_move = {origin: \"+move\"};\n\n// The inverse of countColumn -- find the offset that corresponds to\n// a particular column.\nfunction findColumn(string, goal, tabSize) {\n  for (var pos = 0, col = 0;;) {\n    var nextTab = string.indexOf(\"\\t\", pos);\n    if (nextTab == -1) { nextTab = string.length; }\n    var skipped = nextTab - pos;\n    if (nextTab == string.length || col + skipped >= goal)\n      { return pos + Math.min(skipped, goal - col) }\n    col += nextTab - pos;\n    col += tabSize - (col % tabSize);\n    pos = nextTab + 1;\n    if (col >= goal) { return pos }\n  }\n}\n\nvar spaceStrs = [\"\"];\nfunction spaceStr(n) {\n  while (spaceStrs.length <= n)\n    { spaceStrs.push(lst(spaceStrs) + \" \"); }\n  return spaceStrs[n]\n}\n\nfunction lst(arr) { return arr[arr.length-1] }\n\nfunction map(array, f) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n  return out\n}\n\nfunction insertSorted(array, value, score) {\n  var pos = 0, priority = score(value);\n  while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n  array.splice(pos, 0, value);\n}\n\nfunction nothing() {}\n\nfunction createObj(base, props) {\n  var inst;\n  if (Object.create) {\n    inst = Object.create(base);\n  } else {\n    nothing.prototype = base;\n    inst = new nothing();\n  }\n  if (props) { copyObj(props, inst); }\n  return inst\n}\n\nvar nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nfunction isWordCharBasic(ch) {\n  return /\\w/.test(ch) || ch > \"\\x80\" &&\n    (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n}\nfunction isWordChar(ch, helper) {\n  if (!helper) { return isWordCharBasic(ch) }\n  if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n  return helper.test(ch)\n}\n\nfunction isEmpty(obj) {\n  for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n  return true\n}\n\n// Extending unicode characters. A series of a non-extending char +\n// any number of extending chars is treated as a single unit as far\n// as editing and measuring is concerned. This is not fully correct,\n// since some scripts/fonts/browsers also treat other configurations\n// of code points as a group.\nvar extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\nfunction isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\nfunction skipExtendingChars(str, pos, dir) {\n  while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n  return pos\n}\n\n// Returns the value from the range [`from`; `to`] that satisfies\n// `pred` and is closest to `from`. Assumes that at least `to`\n// satisfies `pred`. Supports `from` being greater than `to`.\nfunction findFirst(pred, from, to) {\n  // At any point we are certain `to` satisfies `pred`, don't know\n  // whether `from` does.\n  var dir = from > to ? -1 : 1;\n  for (;;) {\n    if (from == to) { return from }\n    var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n    if (mid == from) { return pred(mid) ? from : to }\n    if (pred(mid)) { to = mid; }\n    else { from = mid + dir; }\n  }\n}\n\n// The display handles the DOM integration, both for input reading\n// and content drawing. It holds references to DOM nodes and\n// display-related state.\n\nfunction Display(place, doc, input) {\n  var d = this;\n  this.input = input;\n\n  // Covers bottom-right square when both scrollbars are present.\n  d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n  d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Covers bottom of gutter when coverGutterNextToScrollbar is on\n  // and h scrollbar is present.\n  d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n  d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Will contain the actual code, positioned to cover the viewport.\n  d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n  // Elements are added to these to represent selection and cursors.\n  d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n  d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n  // A visibility: hidden element used to find the size of things.\n  d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n  // When lines outside of the viewport are measured, they are drawn in this.\n  d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n  // Wraps everything that needs to exist inside the vertically-padded coordinate system\n  d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                    null, \"position: relative; outline: none\");\n  var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n  // Moved around its parent to cover visible view.\n  d.mover = elt(\"div\", [lines], null, \"position: relative\");\n  // Set to the height of the document, allowing scrolling.\n  d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n  d.sizerWidth = null;\n  // Behavior of elts with overflow: auto and padding is\n  // inconsistent across browsers. This is used to ensure the\n  // scrollable area is big enough.\n  d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n  // Will contain the gutters, if any.\n  d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n  d.lineGutter = null;\n  // Actual scrollable element.\n  d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n  d.scroller.setAttribute(\"tabIndex\", \"-1\");\n  // The element in which the editor lives.\n  d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n  // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n  if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n  if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n  if (place) {\n    if (place.appendChild) { place.appendChild(d.wrapper); }\n    else { place(d.wrapper); }\n  }\n\n  // Current rendered range (may be bigger than the view window).\n  d.viewFrom = d.viewTo = doc.first;\n  d.reportedViewFrom = d.reportedViewTo = doc.first;\n  // Information about the rendered lines.\n  d.view = [];\n  d.renderedView = null;\n  // Holds info about a single rendered line when it was rendered\n  // for measurement, while not in view.\n  d.externalMeasured = null;\n  // Empty space (in pixels) above the view\n  d.viewOffset = 0;\n  d.lastWrapHeight = d.lastWrapWidth = 0;\n  d.updateLineNumbers = null;\n\n  d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n  d.scrollbarsClipped = false;\n\n  // Used to only resize the line number gutter when necessary (when\n  // the amount of lines crosses a boundary that makes its width change)\n  d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n  // Set to true when a non-horizontal-scrolling line widget is\n  // added. As an optimization, line widget aligning is skipped when\n  // this is false.\n  d.alignWidgets = false;\n\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n  // Tracks the maximum line length so that the horizontal scrollbar\n  // can be kept static when scrolling.\n  d.maxLine = null;\n  d.maxLineLength = 0;\n  d.maxLineChanged = false;\n\n  // Used for measuring wheel scrolling granularity\n  d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n  // True when shift is held down.\n  d.shift = false;\n\n  // Used to track whether anything happened since the context menu\n  // was opened.\n  d.selForContextMenu = null;\n\n  d.activeTouch = null;\n\n  input.init(d);\n}\n\n// Find the line object corresponding to the given line number.\nfunction getLine(doc, n) {\n  n -= doc.first;\n  if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n  var chunk = doc;\n  while (!chunk.lines) {\n    for (var i = 0;; ++i) {\n      var child = chunk.children[i], sz = child.chunkSize();\n      if (n < sz) { chunk = child; break }\n      n -= sz;\n    }\n  }\n  return chunk.lines[n]\n}\n\n// Get the part of a document between two positions, as an array of\n// strings.\nfunction getBetween(doc, start, end) {\n  var out = [], n = start.line;\n  doc.iter(start.line, end.line + 1, function (line) {\n    var text = line.text;\n    if (n == end.line) { text = text.slice(0, end.ch); }\n    if (n == start.line) { text = text.slice(start.ch); }\n    out.push(text);\n    ++n;\n  });\n  return out\n}\n// Get the lines between from and to, as array of strings.\nfunction getLines(doc, from, to) {\n  var out = [];\n  doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n  return out\n}\n\n// Update the height of a line, propagating the height change\n// upwards to parent nodes.\nfunction updateLineHeight(line, height) {\n  var diff = height - line.height;\n  if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n}\n\n// Given a line object, find its line number by walking up through\n// its parent links.\nfunction lineNo(line) {\n  if (line.parent == null) { return null }\n  var cur = line.parent, no = indexOf(cur.lines, line);\n  for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n    for (var i = 0;; ++i) {\n      if (chunk.children[i] == cur) { break }\n      no += chunk.children[i].chunkSize();\n    }\n  }\n  return no + cur.first\n}\n\n// Find the line at the given vertical position, using the height\n// information in the document tree.\nfunction lineAtHeight(chunk, h) {\n  var n = chunk.first;\n  outer: do {\n    for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n      var child = chunk.children[i$1], ch = child.height;\n      if (h < ch) { chunk = child; continue outer }\n      h -= ch;\n      n += child.chunkSize();\n    }\n    return n\n  } while (!chunk.lines)\n  var i = 0;\n  for (; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i], lh = line.height;\n    if (h < lh) { break }\n    h -= lh;\n  }\n  return n + i\n}\n\nfunction isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\nfunction lineNumberFor(options, i) {\n  return String(options.lineNumberFormatter(i + options.firstLineNumber))\n}\n\n// A Pos instance represents a position within the text.\nfunction Pos(line, ch, sticky) {\n  if ( sticky === void 0 ) sticky = null;\n\n  if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n  this.line = line;\n  this.ch = ch;\n  this.sticky = sticky;\n}\n\n// Compare two positions, return 0 if they are the same, a negative\n// number when a is less, and a positive number otherwise.\nfunction cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\nfunction equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\nfunction copyPos(x) {return Pos(x.line, x.ch)}\nfunction maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\nfunction minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n// Most of the external API clips given positions to make sure they\n// actually exist within the document.\nfunction clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\nfunction clipPos(doc, pos) {\n  if (pos.line < doc.first) { return Pos(doc.first, 0) }\n  var last = doc.first + doc.size - 1;\n  if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n  return clipToLen(pos, getLine(doc, pos.line).text.length)\n}\nfunction clipToLen(pos, linelen) {\n  var ch = pos.ch;\n  if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n  else if (ch < 0) { return Pos(pos.line, 0) }\n  else { return pos }\n}\nfunction clipPosArray(doc, array) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n  return out\n}\n\n// Optimize some code when these features are not used.\nvar sawReadOnlySpans = false;\nvar sawCollapsedSpans = false;\n\nfunction seeReadOnlySpans() {\n  sawReadOnlySpans = true;\n}\n\nfunction seeCollapsedSpans() {\n  sawCollapsedSpans = true;\n}\n\n// TEXTMARKER SPANS\n\nfunction MarkedSpan(marker, from, to) {\n  this.marker = marker;\n  this.from = from; this.to = to;\n}\n\n// Search an array of spans for a span matching the given marker.\nfunction getMarkedSpanFor(spans, marker) {\n  if (spans) { for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.marker == marker) { return span }\n  } }\n}\n// Remove a span from an array, returning undefined if no spans are\n// left (we don't store arrays for lines without spans).\nfunction removeMarkedSpan(spans, span) {\n  var r;\n  for (var i = 0; i < spans.length; ++i)\n    { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n  return r\n}\n// Add a span to a line.\nfunction addMarkedSpan(line, span) {\n  line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n  span.marker.attachLine(line);\n}\n\n// Used for the algorithm that adjusts markers for a change in the\n// document. These functions cut an array of spans at a given\n// character position, returning an array of remaining chunks (or\n// undefined if nothing remains).\nfunction markedSpansBefore(old, startCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n    if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n    }\n  } }\n  return nw\n}\nfunction markedSpansAfter(old, endCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n    if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                            span.to == null ? null : span.to - endCh));\n    }\n  } }\n  return nw\n}\n\n// Given a change object, compute the new set of marker spans that\n// cover the line in which the change took place. Removes spans\n// entirely within the change, reconnects spans belonging to the\n// same marker that appear on both sides of the change, and cuts off\n// spans partially within the change. Returns an array of span\n// arrays with one element for each line in (after) the change.\nfunction stretchSpansOverChange(doc, change) {\n  if (change.full) { return null }\n  var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n  var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n  if (!oldFirst && !oldLast) { return null }\n\n  var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n  // Get the spans that 'stick out' on both sides\n  var first = markedSpansBefore(oldFirst, startCh, isInsert);\n  var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n  // Next, merge those two ends\n  var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n  if (first) {\n    // Fix up .to properties of first\n    for (var i = 0; i < first.length; ++i) {\n      var span = first[i];\n      if (span.to == null) {\n        var found = getMarkedSpanFor(last, span.marker);\n        if (!found) { span.to = startCh; }\n        else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n      }\n    }\n  }\n  if (last) {\n    // Fix up .from in last (or move them into first in case of sameLine)\n    for (var i$1 = 0; i$1 < last.length; ++i$1) {\n      var span$1 = last[i$1];\n      if (span$1.to != null) { span$1.to += offset; }\n      if (span$1.from == null) {\n        var found$1 = getMarkedSpanFor(first, span$1.marker);\n        if (!found$1) {\n          span$1.from = offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      } else {\n        span$1.from += offset;\n        if (sameLine) { (first || (first = [])).push(span$1); }\n      }\n    }\n  }\n  // Make sure we didn't create any zero-length spans\n  if (first) { first = clearEmptySpans(first); }\n  if (last && last != first) { last = clearEmptySpans(last); }\n\n  var newMarkers = [first];\n  if (!sameLine) {\n    // Fill gap with whole-line-spans\n    var gap = change.text.length - 2, gapMarkers;\n    if (gap > 0 && first)\n      { for (var i$2 = 0; i$2 < first.length; ++i$2)\n        { if (first[i$2].to == null)\n          { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n    for (var i$3 = 0; i$3 < gap; ++i$3)\n      { newMarkers.push(gapMarkers); }\n    newMarkers.push(last);\n  }\n  return newMarkers\n}\n\n// Remove spans that are empty and don't have a clearWhenEmpty\n// option of false.\nfunction clearEmptySpans(spans) {\n  for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n      { spans.splice(i--, 1); }\n  }\n  if (!spans.length) { return null }\n  return spans\n}\n\n// Used to 'clip' out readOnly ranges when making a change.\nfunction removeReadOnlyRanges(doc, from, to) {\n  var markers = null;\n  doc.iter(from.line, to.line + 1, function (line) {\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var mark = line.markedSpans[i].marker;\n      if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n        { (markers || (markers = [])).push(mark); }\n    } }\n  });\n  if (!markers) { return null }\n  var parts = [{from: from, to: to}];\n  for (var i = 0; i < markers.length; ++i) {\n    var mk = markers[i], m = mk.find(0);\n    for (var j = 0; j < parts.length; ++j) {\n      var p = parts[j];\n      if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n      var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n      if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n        { newParts.push({from: p.from, to: m.from}); }\n      if (dto > 0 || !mk.inclusiveRight && !dto)\n        { newParts.push({from: m.to, to: p.to}); }\n      parts.splice.apply(parts, newParts);\n      j += newParts.length - 3;\n    }\n  }\n  return parts\n}\n\n// Connect or disconnect spans from a line.\nfunction detachMarkedSpans(line) {\n  var spans = line.markedSpans;\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.detachLine(line); }\n  line.markedSpans = null;\n}\nfunction attachMarkedSpans(line, spans) {\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.attachLine(line); }\n  line.markedSpans = spans;\n}\n\n// Helpers used when computing which overlapping collapsed span\n// counts as the larger one.\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n// Returns a number indicating which of two overlapping collapsed\n// spans is larger (and thus includes the other). Falls back to\n// comparing ids when the spans cover exactly the same range.\nfunction compareCollapsedMarkers(a, b) {\n  var lenDiff = a.lines.length - b.lines.length;\n  if (lenDiff != 0) { return lenDiff }\n  var aPos = a.find(), bPos = b.find();\n  var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n  if (fromCmp) { return -fromCmp }\n  var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n  if (toCmp) { return toCmp }\n  return b.id - a.id\n}\n\n// Find out whether a line ends or starts in a collapsed span. If\n// so, return the marker for that span.\nfunction collapsedSpanAtSide(line, start) {\n  var sps = sawCollapsedSpans && line.markedSpans, found;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n      { found = sp.marker; }\n  } }\n  return found\n}\nfunction collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\nfunction collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n// Test whether there exists a collapsed span that partially\n// overlaps (covers the start or end, but not both) of a new span.\n// Such overlap is not allowed.\nfunction conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n  var line = getLine(doc, lineNo$$1);\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var i = 0; i < sps.length; ++i) {\n    var sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    var found = sp.marker.find(0);\n    var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n    var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n    if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n    if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n        fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n      { return true }\n  } }\n}\n\n// A visual line is a line as drawn on the screen. Folding, for\n// example, can cause multiple logical lines to appear on the same\n// visual line. This finds the start of the visual line that the\n// given line is part of (usually that is the line itself).\nfunction visualLine(line) {\n  var merged;\n  while (merged = collapsedSpanAtStart(line))\n    { line = merged.find(-1, true).line; }\n  return line\n}\n\nfunction visualLineEnd(line) {\n  var merged;\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return line\n}\n\n// Returns an array of logical lines that continue the visual line\n// started by the argument, or undefined if there are no such lines.\nfunction visualLineContinued(line) {\n  var merged, lines;\n  while (merged = collapsedSpanAtEnd(line)) {\n    line = merged.find(1, true).line\n    ;(lines || (lines = [])).push(line);\n  }\n  return lines\n}\n\n// Get the line number of the start of the visual line that the\n// given line number is part of.\nfunction visualLineNo(doc, lineN) {\n  var line = getLine(doc, lineN), vis = visualLine(line);\n  if (line == vis) { return lineN }\n  return lineNo(vis)\n}\n\n// Get the line number of the start of the next visual line after\n// the given line.\nfunction visualLineEndNo(doc, lineN) {\n  if (lineN > doc.lastLine()) { return lineN }\n  var line = getLine(doc, lineN), merged;\n  if (!lineIsHidden(doc, line)) { return lineN }\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return lineNo(line) + 1\n}\n\n// Compute whether a line is hidden. Lines count as hidden when they\n// are part of a visual line that starts with another line, or when\n// they are entirely covered by collapsed, non-widget span.\nfunction lineIsHidden(doc, line) {\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    if (sp.from == null) { return true }\n    if (sp.marker.widgetNode) { continue }\n    if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n      { return true }\n  } }\n}\nfunction lineIsHiddenInner(doc, line, span) {\n  if (span.to == null) {\n    var end = span.marker.find(1, true);\n    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n  }\n  if (span.marker.inclusiveRight && span.to == line.text.length)\n    { return true }\n  for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n    sp = line.markedSpans[i];\n    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n        (sp.to == null || sp.to != span.from) &&\n        (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n        lineIsHiddenInner(doc, line, sp)) { return true }\n  }\n}\n\n// Find the height above the given line.\nfunction heightAtLine(lineObj) {\n  lineObj = visualLine(lineObj);\n\n  var h = 0, chunk = lineObj.parent;\n  for (var i = 0; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i];\n    if (line == lineObj) { break }\n    else { h += line.height; }\n  }\n  for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n    for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n      var cur = p.children[i$1];\n      if (cur == chunk) { break }\n      else { h += cur.height; }\n    }\n  }\n  return h\n}\n\n// Compute the character length of a line, taking into account\n// collapsed ranges (see markText) that might hide parts, and join\n// other lines onto it.\nfunction lineLength(line) {\n  if (line.height == 0) { return 0 }\n  var len = line.text.length, merged, cur = line;\n  while (merged = collapsedSpanAtStart(cur)) {\n    var found = merged.find(0, true);\n    cur = found.from.line;\n    len += found.from.ch - found.to.ch;\n  }\n  cur = line;\n  while (merged = collapsedSpanAtEnd(cur)) {\n    var found$1 = merged.find(0, true);\n    len -= cur.text.length - found$1.from.ch;\n    cur = found$1.to.line;\n    len += cur.text.length - found$1.to.ch;\n  }\n  return len\n}\n\n// Find the longest line in the document.\nfunction findMaxLine(cm) {\n  var d = cm.display, doc = cm.doc;\n  d.maxLine = getLine(doc, doc.first);\n  d.maxLineLength = lineLength(d.maxLine);\n  d.maxLineChanged = true;\n  doc.iter(function (line) {\n    var len = lineLength(line);\n    if (len > d.maxLineLength) {\n      d.maxLineLength = len;\n      d.maxLine = line;\n    }\n  });\n}\n\n// BIDI HELPERS\n\nfunction iterateBidiSections(order, from, to, f) {\n  if (!order) { return f(from, to, \"ltr\", 0) }\n  var found = false;\n  for (var i = 0; i < order.length; ++i) {\n    var part = order[i];\n    if (part.from < to && part.to > from || from == to && part.to == from) {\n      f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n      found = true;\n    }\n  }\n  if (!found) { f(from, to, \"ltr\"); }\n}\n\nvar bidiOther = null;\nfunction getBidiPartAt(order, ch, sticky) {\n  var found;\n  bidiOther = null;\n  for (var i = 0; i < order.length; ++i) {\n    var cur = order[i];\n    if (cur.from < ch && cur.to > ch) { return i }\n    if (cur.to == ch) {\n      if (cur.from != cur.to && sticky == \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n    if (cur.from == ch) {\n      if (cur.from != cur.to && sticky != \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n  }\n  return found != null ? found : bidiOther\n}\n\n// Bidirectional ordering algorithm\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n// that this (partially) implements.\n\n// One-char codes used for character types:\n// L (L):   Left-to-Right\n// R (R):   Right-to-Left\n// r (AL):  Right-to-Left Arabic\n// 1 (EN):  European Number\n// + (ES):  European Number Separator\n// % (ET):  European Number Terminator\n// n (AN):  Arabic Number\n// , (CS):  Common Number Separator\n// m (NSM): Non-Spacing Mark\n// b (BN):  Boundary Neutral\n// s (B):   Paragraph Separator\n// t (S):   Segment Separator\n// w (WS):  Whitespace\n// N (ON):  Other Neutrals\n\n// Returns null if characters are ordered as they appear\n// (left-to-right), or an array of sections ({from, to, level}\n// objects) in the order in which they occur visually.\nvar bidiOrdering = (function() {\n  // Character types for codepoints 0 to 0xff\n  var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n  // Character types for codepoints 0x600 to 0x6f9\n  var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n  function charType(code) {\n    if (code <= 0xf7) { return lowTypes.charAt(code) }\n    else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n    else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n    else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n    else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n    else if (code == 0x200c) { return \"b\" }\n    else { return \"L\" }\n  }\n\n  var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n  var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n  function BidiSpan(level, from, to) {\n    this.level = level;\n    this.from = from; this.to = to;\n  }\n\n  return function(str, direction) {\n    var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n    var len = str.length, types = [];\n    for (var i = 0; i < len; ++i)\n      { types.push(charType(str.charCodeAt(i))); }\n\n    // W1. Examine each non-spacing mark (NSM) in the level run, and\n    // change the type of the NSM to the type of the previous\n    // character. If the NSM is at the start of the level run, it will\n    // get the type of sor.\n    for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n      var type = types[i$1];\n      if (type == \"m\") { types[i$1] = prev; }\n      else { prev = type; }\n    }\n\n    // W2. Search backwards from each instance of a European number\n    // until the first strong type (R, L, AL, or sor) is found. If an\n    // AL is found, change the type of the European number to Arabic\n    // number.\n    // W3. Change all ALs to R.\n    for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n      var type$1 = types[i$2];\n      if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n      else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n    }\n\n    // W4. A single European separator between two European numbers\n    // changes to a European number. A single common separator between\n    // two numbers of the same type changes to that type.\n    for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n      var type$2 = types[i$3];\n      if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n      else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n               (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n      prev$1 = type$2;\n    }\n\n    // W5. A sequence of European terminators adjacent to European\n    // numbers changes to all European numbers.\n    // W6. Otherwise, separators and terminators change to Other\n    // Neutral.\n    for (var i$4 = 0; i$4 < len; ++i$4) {\n      var type$3 = types[i$4];\n      if (type$3 == \",\") { types[i$4] = \"N\"; }\n      else if (type$3 == \"%\") {\n        var end = (void 0);\n        for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n        var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n        for (var j = i$4; j < end; ++j) { types[j] = replace; }\n        i$4 = end - 1;\n      }\n    }\n\n    // W7. Search backwards from each instance of a European number\n    // until the first strong type (R, L, or sor) is found. If an L is\n    // found, then change the type of the European number to L.\n    for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n      var type$4 = types[i$5];\n      if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n      else if (isStrong.test(type$4)) { cur$1 = type$4; }\n    }\n\n    // N1. A sequence of neutrals takes the direction of the\n    // surrounding strong text if the text on both sides has the same\n    // direction. European and Arabic numbers act as if they were R in\n    // terms of their influence on neutrals. Start-of-level-run (sor)\n    // and end-of-level-run (eor) are used at level run boundaries.\n    // N2. Any remaining neutrals take the embedding direction.\n    for (var i$6 = 0; i$6 < len; ++i$6) {\n      if (isNeutral.test(types[i$6])) {\n        var end$1 = (void 0);\n        for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n        var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n        var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n        var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n        for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n        i$6 = end$1 - 1;\n      }\n    }\n\n    // Here we depart from the documented algorithm, in order to avoid\n    // building up an actual levels array. Since there are only three\n    // levels (0, 1, 2) in an implementation that doesn't take\n    // explicit embedding into account, we can build up the order on\n    // the fly, without following the level-based algorithm.\n    var order = [], m;\n    for (var i$7 = 0; i$7 < len;) {\n      if (countsAsLeft.test(types[i$7])) {\n        var start = i$7;\n        for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n        order.push(new BidiSpan(0, start, i$7));\n      } else {\n        var pos = i$7, at = order.length;\n        for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n        for (var j$2 = pos; j$2 < i$7;) {\n          if (countsAsNum.test(types[j$2])) {\n            if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n            var nstart = j$2;\n            for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n            order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n            pos = j$2;\n          } else { ++j$2; }\n        }\n        if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n      }\n    }\n    if (direction == \"ltr\") {\n      if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n        order[0].from = m[0].length;\n        order.unshift(new BidiSpan(0, 0, m[0].length));\n      }\n      if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n        lst(order).to -= m[0].length;\n        order.push(new BidiSpan(0, len - m[0].length, len));\n      }\n    }\n\n    return direction == \"rtl\" ? order.reverse() : order\n  }\n})();\n\n// Get the bidi ordering for the given line (and cache it). Returns\n// false for lines that are fully left-to-right, and an array of\n// BidiSpan objects otherwise.\nfunction getOrder(line, direction) {\n  var order = line.order;\n  if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n  return order\n}\n\n// EVENT HANDLING\n\n// Lightweight event framework. on/off also work on DOM nodes,\n// registering native DOM handlers.\n\nvar noHandlers = [];\n\nvar on = function(emitter, type, f) {\n  if (emitter.addEventListener) {\n    emitter.addEventListener(type, f, false);\n  } else if (emitter.attachEvent) {\n    emitter.attachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers || (emitter._handlers = {});\n    map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n  }\n};\n\nfunction getHandlers(emitter, type) {\n  return emitter._handlers && emitter._handlers[type] || noHandlers\n}\n\nfunction off(emitter, type, f) {\n  if (emitter.removeEventListener) {\n    emitter.removeEventListener(type, f, false);\n  } else if (emitter.detachEvent) {\n    emitter.detachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n    if (arr) {\n      var index = indexOf(arr, f);\n      if (index > -1)\n        { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n    }\n  }\n}\n\nfunction signal(emitter, type /*, values...*/) {\n  var handlers = getHandlers(emitter, type);\n  if (!handlers.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2);\n  for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n}\n\n// The DOM events that CodeMirror handles can be overridden by\n// registering a (non-DOM) handler on the editor for the event name,\n// and preventDefault-ing the event in that handler.\nfunction signalDOMEvent(cm, e, override) {\n  if (typeof e == \"string\")\n    { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n  signal(cm, override || e.type, cm, e);\n  return e_defaultPrevented(e) || e.codemirrorIgnore\n}\n\nfunction signalCursorActivity(cm) {\n  var arr = cm._handlers && cm._handlers.cursorActivity;\n  if (!arr) { return }\n  var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n  for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n    { set.push(arr[i]); } }\n}\n\nfunction hasHandler(emitter, type) {\n  return getHandlers(emitter, type).length > 0\n}\n\n// Add on and off methods to a constructor's prototype, to make\n// registering events on such objects more convenient.\nfunction eventMixin(ctor) {\n  ctor.prototype.on = function(type, f) {on(this, type, f);};\n  ctor.prototype.off = function(type, f) {off(this, type, f);};\n}\n\n// Due to the fact that we still support jurassic IE versions, some\n// compatibility wrappers are needed.\n\nfunction e_preventDefault(e) {\n  if (e.preventDefault) { e.preventDefault(); }\n  else { e.returnValue = false; }\n}\nfunction e_stopPropagation(e) {\n  if (e.stopPropagation) { e.stopPropagation(); }\n  else { e.cancelBubble = true; }\n}\nfunction e_defaultPrevented(e) {\n  return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n}\nfunction e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\nfunction e_target(e) {return e.target || e.srcElement}\nfunction e_button(e) {\n  var b = e.which;\n  if (b == null) {\n    if (e.button & 1) { b = 1; }\n    else if (e.button & 2) { b = 3; }\n    else if (e.button & 4) { b = 2; }\n  }\n  if (mac && e.ctrlKey && b == 1) { b = 3; }\n  return b\n}\n\n// Detect drag-and-drop\nvar dragAndDrop = function() {\n  // There is *some* kind of drag-and-drop support in IE6-8, but I\n  // couldn't get it to work yet.\n  if (ie && ie_version < 9) { return false }\n  var div = elt('div');\n  return \"draggable\" in div || \"dragDrop\" in div\n}();\n\nvar zwspSupported;\nfunction zeroWidthElement(measure) {\n  if (zwspSupported == null) {\n    var test = elt(\"span\", \"\\u200b\");\n    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n    if (measure.firstChild.offsetHeight != 0)\n      { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n  }\n  var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n    elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n  node.setAttribute(\"cm-text\", \"\");\n  return node\n}\n\n// Feature-detect IE's crummy client rect reporting for bidi text\nvar badBidiRects;\nfunction hasBadBidiRects(measure) {\n  if (badBidiRects != null) { return badBidiRects }\n  var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n  var r0 = range(txt, 0, 1).getBoundingClientRect();\n  var r1 = range(txt, 1, 2).getBoundingClientRect();\n  removeChildren(measure);\n  if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n  return badBidiRects = (r1.right - r0.right < 3)\n}\n\n// See if \"\".split is the broken IE version, if so, provide an\n// alternative way to split lines.\nvar splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n  var pos = 0, result = [], l = string.length;\n  while (pos <= l) {\n    var nl = string.indexOf(\"\\n\", pos);\n    if (nl == -1) { nl = string.length; }\n    var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n    var rt = line.indexOf(\"\\r\");\n    if (rt != -1) {\n      result.push(line.slice(0, rt));\n      pos += rt + 1;\n    } else {\n      result.push(line);\n      pos = nl + 1;\n    }\n  }\n  return result\n} : function (string) { return string.split(/\\r\\n?|\\n/); };\n\nvar hasSelection = window.getSelection ? function (te) {\n  try { return te.selectionStart != te.selectionEnd }\n  catch(e) { return false }\n} : function (te) {\n  var range$$1;\n  try {range$$1 = te.ownerDocument.selection.createRange();}\n  catch(e) {}\n  if (!range$$1 || range$$1.parentElement() != te) { return false }\n  return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n};\n\nvar hasCopyEvent = (function () {\n  var e = elt(\"div\");\n  if (\"oncopy\" in e) { return true }\n  e.setAttribute(\"oncopy\", \"return;\");\n  return typeof e.oncopy == \"function\"\n})();\n\nvar badZoomedRects = null;\nfunction hasBadZoomedRects(measure) {\n  if (badZoomedRects != null) { return badZoomedRects }\n  var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n  var normal = node.getBoundingClientRect();\n  var fromRange = range(node, 0, 1).getBoundingClientRect();\n  return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n}\n\n// Known modes, by name and by MIME\nvar modes = {};\nvar mimeModes = {};\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nfunction defineMode(name, mode) {\n  if (arguments.length > 2)\n    { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n  modes[name] = mode;\n}\n\nfunction defineMIME(mime, spec) {\n  mimeModes[mime] = spec;\n}\n\n// Given a MIME type, a {name, ...options} config object, or a name\n// string, return a mode config object.\nfunction resolveMode(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    var found = mimeModes[spec.name];\n    if (typeof found == \"string\") { found = {name: found}; }\n    spec = createObj(found, spec);\n    spec.name = found.name;\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n    return resolveMode(\"application/xml\")\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n    return resolveMode(\"application/json\")\n  }\n  if (typeof spec == \"string\") { return {name: spec} }\n  else { return spec || {name: \"null\"} }\n}\n\n// Given a mode spec (anything that resolveMode accepts), find and\n// initialize an actual mode object.\nfunction getMode(options, spec) {\n  spec = resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) { return getMode(options, \"text/plain\") }\n  var modeObj = mfactory(options, spec);\n  if (modeExtensions.hasOwnProperty(spec.name)) {\n    var exts = modeExtensions[spec.name];\n    for (var prop in exts) {\n      if (!exts.hasOwnProperty(prop)) { continue }\n      if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n      modeObj[prop] = exts[prop];\n    }\n  }\n  modeObj.name = spec.name;\n  if (spec.helperType) { modeObj.helperType = spec.helperType; }\n  if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n    { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n  return modeObj\n}\n\n// This can be used to attach properties to mode objects from\n// outside the actual mode definition.\nvar modeExtensions = {};\nfunction extendMode(mode, properties) {\n  var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n  copyObj(properties, exts);\n}\n\nfunction copyState(mode, state) {\n  if (state === true) { return state }\n  if (mode.copyState) { return mode.copyState(state) }\n  var nstate = {};\n  for (var n in state) {\n    var val = state[n];\n    if (val instanceof Array) { val = val.concat([]); }\n    nstate[n] = val;\n  }\n  return nstate\n}\n\n// Given a mode and a state (for that mode), find the inner mode and\n// state at the position that the state refers to.\nfunction innerMode(mode, state) {\n  var info;\n  while (mode.innerMode) {\n    info = mode.innerMode(state);\n    if (!info || info.mode == mode) { break }\n    state = info.state;\n    mode = info.mode;\n  }\n  return info || {mode: mode, state: state}\n}\n\nfunction startState(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true\n}\n\n// STRING STREAM\n\n// Fed to the mode parsers, provides helper functions to make\n// parsers more succinct.\n\nvar StringStream = function(string, tabSize, lineOracle) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.tabSize = tabSize || 8;\n  this.lastColumnPos = this.lastColumnValue = 0;\n  this.lineStart = 0;\n  this.lineOracle = lineOracle;\n};\n\nStringStream.prototype.eol = function () {return this.pos >= this.string.length};\nStringStream.prototype.sol = function () {return this.pos == this.lineStart};\nStringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\nStringStream.prototype.next = function () {\n  if (this.pos < this.string.length)\n    { return this.string.charAt(this.pos++) }\n};\nStringStream.prototype.eat = function (match) {\n  var ch = this.string.charAt(this.pos);\n  var ok;\n  if (typeof match == \"string\") { ok = ch == match; }\n  else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n  if (ok) {++this.pos; return ch}\n};\nStringStream.prototype.eatWhile = function (match) {\n  var start = this.pos;\n  while (this.eat(match)){}\n  return this.pos > start\n};\nStringStream.prototype.eatSpace = function () {\n    var this$1 = this;\n\n  var start = this.pos;\n  while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n  return this.pos > start\n};\nStringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\nStringStream.prototype.skipTo = function (ch) {\n  var found = this.string.indexOf(ch, this.pos);\n  if (found > -1) {this.pos = found; return true}\n};\nStringStream.prototype.backUp = function (n) {this.pos -= n;};\nStringStream.prototype.column = function () {\n  if (this.lastColumnPos < this.start) {\n    this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n    this.lastColumnPos = this.start;\n  }\n  return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.indentation = function () {\n  return countColumn(this.string, null, this.tabSize) -\n    (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n  if (typeof pattern == \"string\") {\n    var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n    var substr = this.string.substr(this.pos, pattern.length);\n    if (cased(substr) == cased(pattern)) {\n      if (consume !== false) { this.pos += pattern.length; }\n      return true\n    }\n  } else {\n    var match = this.string.slice(this.pos).match(pattern);\n    if (match && match.index > 0) { return null }\n    if (match && consume !== false) { this.pos += match[0].length; }\n    return match\n  }\n};\nStringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\nStringStream.prototype.hideFirstChars = function (n, inner) {\n  this.lineStart += n;\n  try { return inner() }\n  finally { this.lineStart -= n; }\n};\nStringStream.prototype.lookAhead = function (n) {\n  var oracle = this.lineOracle;\n  return oracle && oracle.lookAhead(n)\n};\nStringStream.prototype.baseToken = function () {\n  var oracle = this.lineOracle;\n  return oracle && oracle.baseToken(this.pos)\n};\n\nvar SavedContext = function(state, lookAhead) {\n  this.state = state;\n  this.lookAhead = lookAhead;\n};\n\nvar Context = function(doc, state, line, lookAhead) {\n  this.state = state;\n  this.doc = doc;\n  this.line = line;\n  this.maxLookAhead = lookAhead || 0;\n  this.baseTokens = null;\n  this.baseTokenPos = 1;\n};\n\nContext.prototype.lookAhead = function (n) {\n  var line = this.doc.getLine(this.line + n);\n  if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n  return line\n};\n\nContext.prototype.baseToken = function (n) {\n    var this$1 = this;\n\n  if (!this.baseTokens) { return null }\n  while (this.baseTokens[this.baseTokenPos] <= n)\n    { this$1.baseTokenPos += 2; }\n  var type = this.baseTokens[this.baseTokenPos + 1];\n  return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n          size: this.baseTokens[this.baseTokenPos] - n}\n};\n\nContext.prototype.nextLine = function () {\n  this.line++;\n  if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n};\n\nContext.fromSaved = function (doc, saved, line) {\n  if (saved instanceof SavedContext)\n    { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n  else\n    { return new Context(doc, copyState(doc.mode, saved), line) }\n};\n\nContext.prototype.save = function (copy) {\n  var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n  return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n};\n\n\n// Compute a style array (an array starting with a mode generation\n// -- for invalidation -- followed by pairs of end positions and\n// style strings), which is used to highlight the tokens on the\n// line.\nfunction highlightLine(cm, line, context, forceToEnd) {\n  // A styles array always starts with a number identifying the\n  // mode/overlays that it is based on (for easy invalidation).\n  var st = [cm.state.modeGen], lineClasses = {};\n  // Compute the base array of styles\n  runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n          lineClasses, forceToEnd);\n  var state = context.state;\n\n  // Run overlays, adjust style array.\n  var loop = function ( o ) {\n    context.baseTokens = st;\n    var overlay = cm.state.overlays[o], i = 1, at = 0;\n    context.state = true;\n    runMode(cm, line.text, overlay.mode, context, function (end, style) {\n      var start = i;\n      // Ensure there's a token end at the current position, and that i points at it\n      while (at < end) {\n        var i_end = st[i];\n        if (i_end > end)\n          { st.splice(i, 1, end, st[i+1], i_end); }\n        i += 2;\n        at = Math.min(end, i_end);\n      }\n      if (!style) { return }\n      if (overlay.opaque) {\n        st.splice(start, i - start, end, \"overlay \" + style);\n        i = start + 2;\n      } else {\n        for (; start < i; start += 2) {\n          var cur = st[start+1];\n          st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n        }\n      }\n    }, lineClasses);\n    context.state = state;\n    context.baseTokens = null;\n    context.baseTokenPos = 1;\n  };\n\n  for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n  return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n}\n\nfunction getLineStyles(cm, line, updateFrontier) {\n  if (!line.styles || line.styles[0] != cm.state.modeGen) {\n    var context = getContextBefore(cm, lineNo(line));\n    var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n    var result = highlightLine(cm, line, context);\n    if (resetState) { context.state = resetState; }\n    line.stateAfter = context.save(!resetState);\n    line.styles = result.styles;\n    if (result.classes) { line.styleClasses = result.classes; }\n    else if (line.styleClasses) { line.styleClasses = null; }\n    if (updateFrontier === cm.doc.highlightFrontier)\n      { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n  }\n  return line.styles\n}\n\nfunction getContextBefore(cm, n, precise) {\n  var doc = cm.doc, display = cm.display;\n  if (!doc.mode.startState) { return new Context(doc, true, n) }\n  var start = findStartLine(cm, n, precise);\n  var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n  var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n  doc.iter(start, n, function (line) {\n    processLine(cm, line.text, context);\n    var pos = context.line;\n    line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n    context.nextLine();\n  });\n  if (precise) { doc.modeFrontier = context.line; }\n  return context\n}\n\n// Lightweight form of highlight -- proceed over this line and\n// update state, but don't save a style array. Used for lines that\n// aren't currently visible.\nfunction processLine(cm, text, context, startAt) {\n  var mode = cm.doc.mode;\n  var stream = new StringStream(text, cm.options.tabSize, context);\n  stream.start = stream.pos = startAt || 0;\n  if (text == \"\") { callBlankLine(mode, context.state); }\n  while (!stream.eol()) {\n    readToken(mode, stream, context.state);\n    stream.start = stream.pos;\n  }\n}\n\nfunction callBlankLine(mode, state) {\n  if (mode.blankLine) { return mode.blankLine(state) }\n  if (!mode.innerMode) { return }\n  var inner = innerMode(mode, state);\n  if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n}\n\nfunction readToken(mode, stream, state, inner) {\n  for (var i = 0; i < 10; i++) {\n    if (inner) { inner[0] = innerMode(mode, state).mode; }\n    var style = mode.token(stream, state);\n    if (stream.pos > stream.start) { return style }\n  }\n  throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n}\n\nvar Token = function(stream, type, state) {\n  this.start = stream.start; this.end = stream.pos;\n  this.string = stream.current();\n  this.type = type || null;\n  this.state = state;\n};\n\n// Utility for getTokenAt and getLineTokens\nfunction takeToken(cm, pos, precise, asArray) {\n  var doc = cm.doc, mode = doc.mode, style;\n  pos = clipPos(doc, pos);\n  var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n  var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n  if (asArray) { tokens = []; }\n  while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n    stream.start = stream.pos;\n    style = readToken(mode, stream, context.state);\n    if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n  }\n  return asArray ? tokens : new Token(stream, style, context.state)\n}\n\nfunction extractLineClasses(type, output) {\n  if (type) { for (;;) {\n    var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n    if (!lineClass) { break }\n    type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n    var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n    if (output[prop] == null)\n      { output[prop] = lineClass[2]; }\n    else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n      { output[prop] += \" \" + lineClass[2]; }\n  } }\n  return type\n}\n\n// Run the given mode's parser over a line, calling f for each token.\nfunction runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n  var flattenSpans = mode.flattenSpans;\n  if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n  var curStart = 0, curStyle = null;\n  var stream = new StringStream(text, cm.options.tabSize, context), style;\n  var inner = cm.options.addModeClass && [null];\n  if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n  while (!stream.eol()) {\n    if (stream.pos > cm.options.maxHighlightLength) {\n      flattenSpans = false;\n      if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n      stream.pos = text.length;\n      style = null;\n    } else {\n      style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n    }\n    if (inner) {\n      var mName = inner[0].name;\n      if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n    }\n    if (!flattenSpans || curStyle != style) {\n      while (curStart < stream.start) {\n        curStart = Math.min(stream.start, curStart + 5000);\n        f(curStart, curStyle);\n      }\n      curStyle = style;\n    }\n    stream.start = stream.pos;\n  }\n  while (curStart < stream.pos) {\n    // Webkit seems to refuse to render text nodes longer than 57444\n    // characters, and returns inaccurate measurements in nodes\n    // starting around 5000 chars.\n    var pos = Math.min(stream.pos, curStart + 5000);\n    f(pos, curStyle);\n    curStart = pos;\n  }\n}\n\n// Finds the line to start with when starting a parse. Tries to\n// find a line with a stateAfter, so that it can start with a\n// valid state. If that fails, it returns the line with the\n// smallest indentation, which tends to need the least context to\n// parse correctly.\nfunction findStartLine(cm, n, precise) {\n  var minindent, minline, doc = cm.doc;\n  var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n  for (var search = n; search > lim; --search) {\n    if (search <= doc.first) { return doc.first }\n    var line = getLine(doc, search - 1), after = line.stateAfter;\n    if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n      { return search }\n    var indented = countColumn(line.text, null, cm.options.tabSize);\n    if (minline == null || minindent > indented) {\n      minline = search - 1;\n      minindent = indented;\n    }\n  }\n  return minline\n}\n\nfunction retreatFrontier(doc, n) {\n  doc.modeFrontier = Math.min(doc.modeFrontier, n);\n  if (doc.highlightFrontier < n - 10) { return }\n  var start = doc.first;\n  for (var line = n - 1; line > start; line--) {\n    var saved = getLine(doc, line).stateAfter;\n    // change is on 3\n    // state on line 1 looked ahead 2 -- so saw 3\n    // test 1 + 2 < 3 should cover this\n    if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n      start = line + 1;\n      break\n    }\n  }\n  doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n}\n\n// LINE DATA STRUCTURE\n\n// Line objects. These hold state related to a line, including\n// highlighting info (the styles array).\nvar Line = function(text, markedSpans, estimateHeight) {\n  this.text = text;\n  attachMarkedSpans(this, markedSpans);\n  this.height = estimateHeight ? estimateHeight(this) : 1;\n};\n\nLine.prototype.lineNo = function () { return lineNo(this) };\neventMixin(Line);\n\n// Change the content (text, markers) of a line. Automatically\n// invalidates cached information and tries to re-estimate the\n// line's height.\nfunction updateLine(line, text, markedSpans, estimateHeight) {\n  line.text = text;\n  if (line.stateAfter) { line.stateAfter = null; }\n  if (line.styles) { line.styles = null; }\n  if (line.order != null) { line.order = null; }\n  detachMarkedSpans(line);\n  attachMarkedSpans(line, markedSpans);\n  var estHeight = estimateHeight ? estimateHeight(line) : 1;\n  if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n}\n\n// Detach a line from the document tree and its markers.\nfunction cleanUpLine(line) {\n  line.parent = null;\n  detachMarkedSpans(line);\n}\n\n// Convert a style as returned by a mode (either null, or a string\n// containing one or more styles) to a CSS style. This is cached,\n// and also looks for line-wide styles.\nvar styleToClassCache = {};\nvar styleToClassCacheWithMode = {};\nfunction interpretTokenStyle(style, options) {\n  if (!style || /^\\s*$/.test(style)) { return null }\n  var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n  return cache[style] ||\n    (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n}\n\n// Render the DOM representation of the text of a line. Also builds\n// up a 'line map', which points at the DOM nodes that represent\n// specific stretches of text, and is used by the measuring code.\n// The returned object contains the DOM node, this map, and\n// information about line-wide styles that were set by the mode.\nfunction buildLineContent(cm, lineView) {\n  // The padding-right forces the element to have a 'border', which\n  // is needed on Webkit to be able to get line-level bounding\n  // rectangles for it (in measureChar).\n  var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n  var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                 col: 0, pos: 0, cm: cm,\n                 trailingSpace: false,\n                 splitSpaces: (ie || webkit) && cm.getOption(\"lineWrapping\")};\n  lineView.measure = {};\n\n  // Iterate over the logical lines that make up this visual line.\n  for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n    var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n    builder.pos = 0;\n    builder.addToken = buildToken;\n    // Optionally wire in some hacks into the token-rendering\n    // algorithm, to deal with browser quirks.\n    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n      { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n    builder.map = [];\n    var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n    if (line.styleClasses) {\n      if (line.styleClasses.bgClass)\n        { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n      if (line.styleClasses.textClass)\n        { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n    }\n\n    // Ensure at least a single node is present, for measuring.\n    if (builder.map.length == 0)\n      { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n    // Store the map and a cache object for the current logical line\n    if (i == 0) {\n      lineView.measure.map = builder.map;\n      lineView.measure.cache = {};\n    } else {\n      (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n      ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n    }\n  }\n\n  // See issue #2901\n  if (webkit) {\n    var last = builder.content.lastChild;\n    if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n      { builder.content.className = \"cm-tab-wrap-hack\"; }\n  }\n\n  signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n  if (builder.pre.className)\n    { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n  return builder\n}\n\nfunction defaultSpecialCharPlaceholder(ch) {\n  var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n  token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n  token.setAttribute(\"aria-label\", token.title);\n  return token\n}\n\n// Build up the DOM representation for a single token, and add it to\n// the line map. Takes care to render special characters separately.\nfunction buildToken(builder, text, style, startStyle, endStyle, title, css) {\n  if (!text) { return }\n  var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n  var special = builder.cm.state.specialChars, mustWrap = false;\n  var content;\n  if (!special.test(text)) {\n    builder.col += text.length;\n    content = document.createTextNode(displayText);\n    builder.map.push(builder.pos, builder.pos + text.length, content);\n    if (ie && ie_version < 9) { mustWrap = true; }\n    builder.pos += text.length;\n  } else {\n    content = document.createDocumentFragment();\n    var pos = 0;\n    while (true) {\n      special.lastIndex = pos;\n      var m = special.exec(text);\n      var skipped = m ? m.index - pos : text.length - pos;\n      if (skipped) {\n        var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n        else { content.appendChild(txt); }\n        builder.map.push(builder.pos, builder.pos + skipped, txt);\n        builder.col += skipped;\n        builder.pos += skipped;\n      }\n      if (!m) { break }\n      pos += skipped + 1;\n      var txt$1 = (void 0);\n      if (m[0] == \"\\t\") {\n        var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n        txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n        txt$1.setAttribute(\"role\", \"presentation\");\n        txt$1.setAttribute(\"cm-text\", \"\\t\");\n        builder.col += tabWidth;\n      } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n        txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        builder.col += 1;\n      } else {\n        txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n        else { content.appendChild(txt$1); }\n        builder.col += 1;\n      }\n      builder.map.push(builder.pos, builder.pos + 1, txt$1);\n      builder.pos++;\n    }\n  }\n  builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n  if (style || startStyle || endStyle || mustWrap || css) {\n    var fullStyle = style || \"\";\n    if (startStyle) { fullStyle += startStyle; }\n    if (endStyle) { fullStyle += endStyle; }\n    var token = elt(\"span\", [content], fullStyle, css);\n    if (title) { token.title = title; }\n    return builder.content.appendChild(token)\n  }\n  builder.content.appendChild(content);\n}\n\nfunction splitSpaces(text, trailingBefore) {\n  if (text.length > 1 && !/  /.test(text)) { return text }\n  var spaceBefore = trailingBefore, result = \"\";\n  for (var i = 0; i < text.length; i++) {\n    var ch = text.charAt(i);\n    if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n      { ch = \"\\u00a0\"; }\n    result += ch;\n    spaceBefore = ch == \" \";\n  }\n  return result\n}\n\n// Work around nonsense dimensions being reported for stretches of\n// right-to-left text.\nfunction buildTokenBadBidi(inner, order) {\n  return function (builder, text, style, startStyle, endStyle, title, css) {\n    style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n    var start = builder.pos, end = start + text.length;\n    for (;;) {\n      // Find the part that overlaps with the start of this text\n      var part = (void 0);\n      for (var i = 0; i < order.length; i++) {\n        part = order[i];\n        if (part.to > start && part.from <= start) { break }\n      }\n      if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) }\n      inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);\n      startStyle = null;\n      text = text.slice(part.to - start);\n      start = part.to;\n    }\n  }\n}\n\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n  var widget = !ignoreWidget && marker.widgetNode;\n  if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n  if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n    if (!widget)\n      { widget = builder.content.appendChild(document.createElement(\"span\")); }\n    widget.setAttribute(\"cm-marker\", marker.id);\n  }\n  if (widget) {\n    builder.cm.display.input.setUneditable(widget);\n    builder.content.appendChild(widget);\n  }\n  builder.pos += size;\n  builder.trailingSpace = false;\n}\n\n// Outputs a number of spans to make up a line, taking highlighting\n// and marked text into account.\nfunction insertLineContent(line, builder, styles) {\n  var spans = line.markedSpans, allText = line.text, at = 0;\n  if (!spans) {\n    for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n      { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n    return\n  }\n\n  var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n  var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n  for (;;) {\n    if (nextChange == pos) { // Update current marker set\n      spanStyle = spanEndStyle = spanStartStyle = title = css = \"\";\n      collapsed = null; nextChange = Infinity;\n      var foundBookmarks = [], endStyles = (void 0);\n      for (var j = 0; j < spans.length; ++j) {\n        var sp = spans[j], m = sp.marker;\n        if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n          foundBookmarks.push(m);\n        } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n          if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n            nextChange = sp.to;\n            spanEndStyle = \"\";\n          }\n          if (m.className) { spanStyle += \" \" + m.className; }\n          if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n          if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n          if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n          if (m.title && !title) { title = m.title; }\n          if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n            { collapsed = sp; }\n        } else if (sp.from > pos && nextChange > sp.from) {\n          nextChange = sp.from;\n        }\n      }\n      if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n        { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n      if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n        { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n      if (collapsed && (collapsed.from || 0) == pos) {\n        buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                           collapsed.marker, collapsed.from == null);\n        if (collapsed.to == null) { return }\n        if (collapsed.to == pos) { collapsed = false; }\n      }\n    }\n    if (pos >= len) { break }\n\n    var upto = Math.min(len, nextChange);\n    while (true) {\n      if (text) {\n        var end = pos + text.length;\n        if (!collapsed) {\n          var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n          builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                           spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title, css);\n        }\n        if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n        pos = end;\n        spanStartStyle = \"\";\n      }\n      text = allText.slice(at, at = styles[i++]);\n      style = interpretTokenStyle(styles[i++], builder.cm.options);\n    }\n  }\n}\n\n\n// These objects are used to represent the visible (currently drawn)\n// part of the document. A LineView may correspond to multiple\n// logical lines, if those are connected by collapsed ranges.\nfunction LineView(doc, line, lineN) {\n  // The starting line\n  this.line = line;\n  // Continuing lines, if any\n  this.rest = visualLineContinued(line);\n  // Number of logical lines in this visual line\n  this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n  this.node = this.text = null;\n  this.hidden = lineIsHidden(doc, line);\n}\n\n// Create a range of LineView objects for the given lines.\nfunction buildViewArray(cm, from, to) {\n  var array = [], nextPos;\n  for (var pos = from; pos < to; pos = nextPos) {\n    var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n    nextPos = pos + view.size;\n    array.push(view);\n  }\n  return array\n}\n\nvar operationGroup = null;\n\nfunction pushOperation(op) {\n  if (operationGroup) {\n    operationGroup.ops.push(op);\n  } else {\n    op.ownsGroup = operationGroup = {\n      ops: [op],\n      delayedCallbacks: []\n    };\n  }\n}\n\nfunction fireCallbacksForOps(group) {\n  // Calls delayed callbacks and cursorActivity handlers until no\n  // new ones appear\n  var callbacks = group.delayedCallbacks, i = 0;\n  do {\n    for (; i < callbacks.length; i++)\n      { callbacks[i].call(null); }\n    for (var j = 0; j < group.ops.length; j++) {\n      var op = group.ops[j];\n      if (op.cursorActivityHandlers)\n        { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n          { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n    }\n  } while (i < callbacks.length)\n}\n\nfunction finishOperation(op, endCb) {\n  var group = op.ownsGroup;\n  if (!group) { return }\n\n  try { fireCallbacksForOps(group); }\n  finally {\n    operationGroup = null;\n    endCb(group);\n  }\n}\n\nvar orphanDelayedCallbacks = null;\n\n// Often, we want to signal events at a point where we are in the\n// middle of some work, but don't want the handler to start calling\n// other methods on the editor, which might be in an inconsistent\n// state or simply not expect any other events to happen.\n// signalLater looks whether there are any handlers, and schedules\n// them to be executed when the last operation ends, or, if no\n// operation is active, when a timeout fires.\nfunction signalLater(emitter, type /*, values...*/) {\n  var arr = getHandlers(emitter, type);\n  if (!arr.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2), list;\n  if (operationGroup) {\n    list = operationGroup.delayedCallbacks;\n  } else if (orphanDelayedCallbacks) {\n    list = orphanDelayedCallbacks;\n  } else {\n    list = orphanDelayedCallbacks = [];\n    setTimeout(fireOrphanDelayed, 0);\n  }\n  var loop = function ( i ) {\n    list.push(function () { return arr[i].apply(null, args); });\n  };\n\n  for (var i = 0; i < arr.length; ++i)\n    loop( i );\n}\n\nfunction fireOrphanDelayed() {\n  var delayed = orphanDelayedCallbacks;\n  orphanDelayedCallbacks = null;\n  for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n}\n\n// When an aspect of a line changes, a string is added to\n// lineView.changes. This updates the relevant part of the line's\n// DOM structure.\nfunction updateLineForChanges(cm, lineView, lineN, dims) {\n  for (var j = 0; j < lineView.changes.length; j++) {\n    var type = lineView.changes[j];\n    if (type == \"text\") { updateLineText(cm, lineView); }\n    else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n    else if (type == \"class\") { updateLineClasses(cm, lineView); }\n    else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n  }\n  lineView.changes = null;\n}\n\n// Lines with gutter elements, widgets or a background class need to\n// be wrapped, and have the extra elements added to the wrapper div\nfunction ensureLineWrapped(lineView) {\n  if (lineView.node == lineView.text) {\n    lineView.node = elt(\"div\", null, null, \"position: relative\");\n    if (lineView.text.parentNode)\n      { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n    lineView.node.appendChild(lineView.text);\n    if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n  }\n  return lineView.node\n}\n\nfunction updateLineBackground(cm, lineView) {\n  var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n  if (cls) { cls += \" CodeMirror-linebackground\"; }\n  if (lineView.background) {\n    if (cls) { lineView.background.className = cls; }\n    else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n  } else if (cls) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    cm.display.input.setUneditable(lineView.background);\n  }\n}\n\n// Wrapper around buildLineContent which will reuse the structure\n// in display.externalMeasured when possible.\nfunction getLineContent(cm, lineView) {\n  var ext = cm.display.externalMeasured;\n  if (ext && ext.line == lineView.line) {\n    cm.display.externalMeasured = null;\n    lineView.measure = ext.measure;\n    return ext.built\n  }\n  return buildLineContent(cm, lineView)\n}\n\n// Redraw the line's text. Interacts with the background and text\n// classes because the mode may output tokens that influence these\n// classes.\nfunction updateLineText(cm, lineView) {\n  var cls = lineView.text.className;\n  var built = getLineContent(cm, lineView);\n  if (lineView.text == lineView.node) { lineView.node = built.pre; }\n  lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n  lineView.text = built.pre;\n  if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n    lineView.bgClass = built.bgClass;\n    lineView.textClass = built.textClass;\n    updateLineClasses(cm, lineView);\n  } else if (cls) {\n    lineView.text.className = cls;\n  }\n}\n\nfunction updateLineClasses(cm, lineView) {\n  updateLineBackground(cm, lineView);\n  if (lineView.line.wrapClass)\n    { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n  else if (lineView.node != lineView.text)\n    { lineView.node.className = \"\"; }\n  var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n  lineView.text.className = textClass || \"\";\n}\n\nfunction updateLineGutter(cm, lineView, lineN, dims) {\n  if (lineView.gutter) {\n    lineView.node.removeChild(lineView.gutter);\n    lineView.gutter = null;\n  }\n  if (lineView.gutterBackground) {\n    lineView.node.removeChild(lineView.gutterBackground);\n    lineView.gutterBackground = null;\n  }\n  if (lineView.line.gutterClass) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                    (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(lineView.gutterBackground);\n    wrap.insertBefore(lineView.gutterBackground, lineView.text);\n  }\n  var markers = lineView.line.gutterMarkers;\n  if (cm.options.lineNumbers || markers) {\n    var wrap$1 = ensureLineWrapped(lineView);\n    var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(gutterWrap);\n    wrap$1.insertBefore(gutterWrap, lineView.text);\n    if (lineView.line.gutterClass)\n      { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n      { lineView.lineNumber = gutterWrap.appendChild(\n        elt(\"div\", lineNumberFor(cm.options, lineN),\n            \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n            (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n    if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n      var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n      if (found)\n        { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                   (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n    } }\n  }\n}\n\nfunction updateLineWidgets(cm, lineView, dims) {\n  if (lineView.alignable) { lineView.alignable = null; }\n  for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n    next = node.nextSibling;\n    if (node.className == \"CodeMirror-linewidget\")\n      { lineView.node.removeChild(node); }\n  }\n  insertLineWidgets(cm, lineView, dims);\n}\n\n// Build a line's DOM representation from scratch\nfunction buildLineElement(cm, lineView, lineN, dims) {\n  var built = getLineContent(cm, lineView);\n  lineView.text = lineView.node = built.pre;\n  if (built.bgClass) { lineView.bgClass = built.bgClass; }\n  if (built.textClass) { lineView.textClass = built.textClass; }\n\n  updateLineClasses(cm, lineView);\n  updateLineGutter(cm, lineView, lineN, dims);\n  insertLineWidgets(cm, lineView, dims);\n  return lineView.node\n}\n\n// A lineView may contain multiple logical lines (when merged by\n// collapsed spans). The widgets for all of them need to be drawn.\nfunction insertLineWidgets(cm, lineView, dims) {\n  insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n  if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n    { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n}\n\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n  if (!line.widgets) { return }\n  var wrap = ensureLineWrapped(lineView);\n  for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n    var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n    if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n    positionLineWidget(widget, node, lineView, dims);\n    cm.display.input.setUneditable(node);\n    if (allowAbove && widget.above)\n      { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n    else\n      { wrap.appendChild(node); }\n    signalLater(widget, \"redraw\");\n  }\n}\n\nfunction positionLineWidget(widget, node, lineView, dims) {\n  if (widget.noHScroll) {\n    (lineView.alignable || (lineView.alignable = [])).push(node);\n    var width = dims.wrapperWidth;\n    node.style.left = dims.fixedPos + \"px\";\n    if (!widget.coverGutter) {\n      width -= dims.gutterTotalWidth;\n      node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n    }\n    node.style.width = width + \"px\";\n  }\n  if (widget.coverGutter) {\n    node.style.zIndex = 5;\n    node.style.position = \"relative\";\n    if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n  }\n}\n\nfunction widgetHeight(widget) {\n  if (widget.height != null) { return widget.height }\n  var cm = widget.doc.cm;\n  if (!cm) { return 0 }\n  if (!contains(document.body, widget.node)) {\n    var parentStyle = \"position: relative;\";\n    if (widget.coverGutter)\n      { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n    if (widget.noHScroll)\n      { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n  }\n  return widget.height = widget.node.parentNode.offsetHeight\n}\n\n// Return true when the given mouse event happened in a widget\nfunction eventInWidget(display, e) {\n  for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n    if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n        (n.parentNode == display.sizer && n != display.mover))\n      { return true }\n  }\n}\n\n// POSITION MEASUREMENT\n\nfunction paddingTop(display) {return display.lineSpace.offsetTop}\nfunction paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\nfunction paddingH(display) {\n  if (display.cachedPaddingH) { return display.cachedPaddingH }\n  var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n  var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n  var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n  if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n  return data\n}\n\nfunction scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\nfunction displayWidth(cm) {\n  return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n}\nfunction displayHeight(cm) {\n  return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n}\n\n// Ensure the lineView.wrapping.heights array is populated. This is\n// an array of bottom offsets for the lines that make up a drawn\n// line. When lineWrapping is on, there might be more than one\n// height.\nfunction ensureLineHeights(cm, lineView, rect) {\n  var wrapping = cm.options.lineWrapping;\n  var curWidth = wrapping && displayWidth(cm);\n  if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n    var heights = lineView.measure.heights = [];\n    if (wrapping) {\n      lineView.measure.width = curWidth;\n      var rects = lineView.text.firstChild.getClientRects();\n      for (var i = 0; i < rects.length - 1; i++) {\n        var cur = rects[i], next = rects[i + 1];\n        if (Math.abs(cur.bottom - next.bottom) > 2)\n          { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n      }\n    }\n    heights.push(rect.bottom - rect.top);\n  }\n}\n\n// Find a line map (mapping character offsets to text nodes) and a\n// measurement cache for the given line number. (A line view might\n// contain multiple lines when collapsed ranges are present.)\nfunction mapFromLineView(lineView, line, lineN) {\n  if (lineView.line == line)\n    { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n  for (var i = 0; i < lineView.rest.length; i++)\n    { if (lineView.rest[i] == line)\n      { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n  for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n    { if (lineNo(lineView.rest[i$1]) > lineN)\n      { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n}\n\n// Render a line into the hidden node display.externalMeasured. Used\n// when measurement is needed for a line that's not in the viewport.\nfunction updateExternalMeasurement(cm, line) {\n  line = visualLine(line);\n  var lineN = lineNo(line);\n  var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n  view.lineN = lineN;\n  var built = view.built = buildLineContent(cm, view);\n  view.text = built.pre;\n  removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n  return view\n}\n\n// Get a {top, bottom, left, right} box (in line-local coordinates)\n// for a given character.\nfunction measureChar(cm, line, ch, bias) {\n  return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n}\n\n// Find a line view that corresponds to the given line number.\nfunction findViewForLine(cm, lineN) {\n  if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n    { return cm.display.view[findViewIndex(cm, lineN)] }\n  var ext = cm.display.externalMeasured;\n  if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n    { return ext }\n}\n\n// Measurement can be split in two steps, the set-up work that\n// applies to the whole line, and the measurement of the actual\n// character. Functions like coordsChar, that need to do a lot of\n// measurements in a row, can thus ensure that the set-up work is\n// only done once.\nfunction prepareMeasureForLine(cm, line) {\n  var lineN = lineNo(line);\n  var view = findViewForLine(cm, lineN);\n  if (view && !view.text) {\n    view = null;\n  } else if (view && view.changes) {\n    updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    cm.curOp.forceUpdate = true;\n  }\n  if (!view)\n    { view = updateExternalMeasurement(cm, line); }\n\n  var info = mapFromLineView(view, line, lineN);\n  return {\n    line: line, view: view, rect: null,\n    map: info.map, cache: info.cache, before: info.before,\n    hasHeights: false\n  }\n}\n\n// Given a prepared measurement object, measures the position of an\n// actual character (or fetches it from the cache).\nfunction measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n  if (prepared.before) { ch = -1; }\n  var key = ch + (bias || \"\"), found;\n  if (prepared.cache.hasOwnProperty(key)) {\n    found = prepared.cache[key];\n  } else {\n    if (!prepared.rect)\n      { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n    if (!prepared.hasHeights) {\n      ensureLineHeights(cm, prepared.view, prepared.rect);\n      prepared.hasHeights = true;\n    }\n    found = measureCharInner(cm, prepared, ch, bias);\n    if (!found.bogus) { prepared.cache[key] = found; }\n  }\n  return {left: found.left, right: found.right,\n          top: varHeight ? found.rtop : found.top,\n          bottom: varHeight ? found.rbottom : found.bottom}\n}\n\nvar nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\nfunction nodeAndOffsetInLineMap(map$$1, ch, bias) {\n  var node, start, end, collapse, mStart, mEnd;\n  // First, search the line map for the text node corresponding to,\n  // or closest to, the target character.\n  for (var i = 0; i < map$$1.length; i += 3) {\n    mStart = map$$1[i];\n    mEnd = map$$1[i + 1];\n    if (ch < mStart) {\n      start = 0; end = 1;\n      collapse = \"left\";\n    } else if (ch < mEnd) {\n      start = ch - mStart;\n      end = start + 1;\n    } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n      end = mEnd - mStart;\n      start = end - 1;\n      if (ch >= mEnd) { collapse = \"right\"; }\n    }\n    if (start != null) {\n      node = map$$1[i + 2];\n      if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n        { collapse = bias; }\n      if (bias == \"left\" && start == 0)\n        { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n          node = map$$1[(i -= 3) + 2];\n          collapse = \"left\";\n        } }\n      if (bias == \"right\" && start == mEnd - mStart)\n        { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n          node = map$$1[(i += 3) + 2];\n          collapse = \"right\";\n        } }\n      break\n    }\n  }\n  return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n}\n\nfunction getUsefulRect(rects, bias) {\n  var rect = nullRect;\n  if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n    if ((rect = rects[i]).left != rect.right) { break }\n  } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n    if ((rect = rects[i$1]).left != rect.right) { break }\n  } }\n  return rect\n}\n\nfunction measureCharInner(cm, prepared, ch, bias) {\n  var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n  var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n  var rect;\n  if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n    for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n      while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n      while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n      if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n        { rect = node.parentNode.getBoundingClientRect(); }\n      else\n        { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n      if (rect.left || rect.right || start == 0) { break }\n      end = start;\n      start = start - 1;\n      collapse = \"right\";\n    }\n    if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n  } else { // If it is a widget, simply get the box for the whole widget.\n    if (start > 0) { collapse = bias = \"right\"; }\n    var rects;\n    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n      { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n    else\n      { rect = node.getBoundingClientRect(); }\n  }\n  if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n    var rSpan = node.parentNode.getClientRects()[0];\n    if (rSpan)\n      { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n    else\n      { rect = nullRect; }\n  }\n\n  var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n  var mid = (rtop + rbot) / 2;\n  var heights = prepared.view.measure.heights;\n  var i = 0;\n  for (; i < heights.length - 1; i++)\n    { if (mid < heights[i]) { break } }\n  var top = i ? heights[i - 1] : 0, bot = heights[i];\n  var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                top: top, bottom: bot};\n  if (!rect.left && !rect.right) { result.bogus = true; }\n  if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n  return result\n}\n\n// Work around problem with bounding client rects on ranges being\n// returned incorrectly when zoomed on IE10 and below.\nfunction maybeUpdateRectForZooming(measure, rect) {\n  if (!window.screen || screen.logicalXDPI == null ||\n      screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n    { return rect }\n  var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n  var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n  return {left: rect.left * scaleX, right: rect.right * scaleX,\n          top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n}\n\nfunction clearLineMeasurementCacheFor(lineView) {\n  if (lineView.measure) {\n    lineView.measure.cache = {};\n    lineView.measure.heights = null;\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { lineView.measure.caches[i] = {}; } }\n  }\n}\n\nfunction clearLineMeasurementCache(cm) {\n  cm.display.externalMeasure = null;\n  removeChildren(cm.display.lineMeasure);\n  for (var i = 0; i < cm.display.view.length; i++)\n    { clearLineMeasurementCacheFor(cm.display.view[i]); }\n}\n\nfunction clearCaches(cm) {\n  clearLineMeasurementCache(cm);\n  cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n  if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n  cm.display.lineNumChars = null;\n}\n\nfunction pageScrollX() {\n  // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n  // which causes page_Offset and bounding client rects to use\n  // different reference viewports and invalidate our calculations.\n  if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n  return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n}\nfunction pageScrollY() {\n  if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n  return window.pageYOffset || (document.documentElement || document.body).scrollTop\n}\n\nfunction widgetTopHeight(lineObj) {\n  var height = 0;\n  if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n    { height += widgetHeight(lineObj.widgets[i]); } } }\n  return height\n}\n\n// Converts a {top, bottom, left, right} box from line-local\n// coordinates into another coordinate system. Context may be one of\n// \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n// or \"page\".\nfunction intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n  if (!includeWidgets) {\n    var height = widgetTopHeight(lineObj);\n    rect.top += height; rect.bottom += height;\n  }\n  if (context == \"line\") { return rect }\n  if (!context) { context = \"local\"; }\n  var yOff = heightAtLine(lineObj);\n  if (context == \"local\") { yOff += paddingTop(cm.display); }\n  else { yOff -= cm.display.viewOffset; }\n  if (context == \"page\" || context == \"window\") {\n    var lOff = cm.display.lineSpace.getBoundingClientRect();\n    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n    var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n    rect.left += xOff; rect.right += xOff;\n  }\n  rect.top += yOff; rect.bottom += yOff;\n  return rect\n}\n\n// Coverts a box from \"div\" coords to another coordinate system.\n// Context may be \"window\", \"page\", \"div\", or \"local\"./null.\nfunction fromCoordSystem(cm, coords, context) {\n  if (context == \"div\") { return coords }\n  var left = coords.left, top = coords.top;\n  // First move into \"page\" coordinate system\n  if (context == \"page\") {\n    left -= pageScrollX();\n    top -= pageScrollY();\n  } else if (context == \"local\" || !context) {\n    var localBox = cm.display.sizer.getBoundingClientRect();\n    left += localBox.left;\n    top += localBox.top;\n  }\n\n  var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n  return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n}\n\nfunction charCoords(cm, pos, context, lineObj, bias) {\n  if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n  return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n}\n\n// Returns a box for a given cursor position, which may have an\n// 'other' property containing the position of the secondary cursor\n// on a bidi boundary.\n// A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n// and after `char - 1` in writing order of `char - 1`\n// A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n// and before `char` in writing order of `char`\n// Examples (upper-case letters are RTL, lower-case are LTR):\n//     Pos(0, 1, ...)\n//     before   after\n// ab     a|b     a|b\n// aB     a|B     aB|\n// Ab     |Ab     A|b\n// AB     B|A     B|A\n// Every position after the last character on a line is considered to stick\n// to the last character on the line.\nfunction cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n  lineObj = lineObj || getLine(cm.doc, pos.line);\n  if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n  function get(ch, right) {\n    var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n    if (right) { m.left = m.right; } else { m.right = m.left; }\n    return intoCoordSystem(cm, lineObj, m, context)\n  }\n  var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n  if (ch >= lineObj.text.length) {\n    ch = lineObj.text.length;\n    sticky = \"before\";\n  } else if (ch <= 0) {\n    ch = 0;\n    sticky = \"after\";\n  }\n  if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n  function getBidi(ch, partPos, invert) {\n    var part = order[partPos], right = part.level == 1;\n    return get(invert ? ch - 1 : ch, right != invert)\n  }\n  var partPos = getBidiPartAt(order, ch, sticky);\n  var other = bidiOther;\n  var val = getBidi(ch, partPos, sticky == \"before\");\n  if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n  return val\n}\n\n// Used to cheaply estimate the coordinates for a position. Used for\n// intermediate scroll updates.\nfunction estimateCoords(cm, pos) {\n  var left = 0;\n  pos = clipPos(cm.doc, pos);\n  if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n  var lineObj = getLine(cm.doc, pos.line);\n  var top = heightAtLine(lineObj) + paddingTop(cm.display);\n  return {left: left, right: left, top: top, bottom: top + lineObj.height}\n}\n\n// Positions returned by coordsChar contain some extra information.\n// xRel is the relative x position of the input coordinates compared\n// to the found position (so xRel > 0 means the coordinates are to\n// the right of the character position, for example). When outside\n// is true, that means the coordinates lie outside the line's\n// vertical range.\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\n  var pos = Pos(line, ch, sticky);\n  pos.xRel = xRel;\n  if (outside) { pos.outside = true; }\n  return pos\n}\n\n// Compute the character position closest to the given coordinates.\n// Input must be lineSpace-local (\"div\" coordinate system).\nfunction coordsChar(cm, x, y) {\n  var doc = cm.doc;\n  y += cm.display.viewOffset;\n  if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n  var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n  if (lineN > last)\n    { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n  if (x < 0) { x = 0; }\n\n  var lineObj = getLine(doc, lineN);\n  for (;;) {\n    var found = coordsCharInner(cm, lineObj, lineN, x, y);\n    var merged = collapsedSpanAtEnd(lineObj);\n    var mergedPos = merged && merged.find(0, true);\n    if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n      { lineN = lineNo(lineObj = mergedPos.to.line); }\n    else\n      { return found }\n  }\n}\n\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n  y -= widgetTopHeight(lineObj);\n  var end = lineObj.text.length;\n  var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n  end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n  return {begin: begin, end: end}\n}\n\nfunction wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n  if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n  var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n  return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n}\n\n// Returns true if the given side of a box is after the given\n// coordinates, in top-to-bottom, left-to-right order.\nfunction boxIsAfter(box, x, y, left) {\n  return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n}\n\nfunction coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n  // Move y into line-local coordinate space\n  y -= heightAtLine(lineObj);\n  var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n  // When directly calling `measureCharPrepared`, we have to adjust\n  // for the widgets at this line.\n  var widgetHeight$$1 = widgetTopHeight(lineObj);\n  var begin = 0, end = lineObj.text.length, ltr = true;\n\n  var order = getOrder(lineObj, cm.doc.direction);\n  // If the line isn't plain left-to-right text, first figure out\n  // which bidi section the coordinates fall into.\n  if (order) {\n    var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n                 (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n    ltr = part.level != 1;\n    // The awkward -1 offsets are needed because findFirst (called\n    // on these below) will treat its first bound as inclusive,\n    // second as exclusive, but we want to actually address the\n    // characters in the part's range\n    begin = ltr ? part.from : part.to - 1;\n    end = ltr ? part.to : part.from - 1;\n  }\n\n  // A binary search to find the first character whose bounding box\n  // starts after the coordinates. If we run across any whose box wrap\n  // the coordinates, store that.\n  var chAround = null, boxAround = null;\n  var ch = findFirst(function (ch) {\n    var box = measureCharPrepared(cm, preparedMeasure, ch);\n    box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n    if (!boxIsAfter(box, x, y, false)) { return false }\n    if (box.top <= y && box.left <= x) {\n      chAround = ch;\n      boxAround = box;\n    }\n    return true\n  }, begin, end);\n\n  var baseX, sticky, outside = false;\n  // If a box around the coordinates was found, use that\n  if (boxAround) {\n    // Distinguish coordinates nearer to the left or right side of the box\n    var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n    ch = chAround + (atStart ? 0 : 1);\n    sticky = atStart ? \"after\" : \"before\";\n    baseX = atLeft ? boxAround.left : boxAround.right;\n  } else {\n    // (Adjust for extended bound, if necessary.)\n    if (!ltr && (ch == end || ch == begin)) { ch++; }\n    // To determine which side to associate with, get the box to the\n    // left of the character and compare it's vertical position to the\n    // coordinates\n    sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n      (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n      \"after\" : \"before\";\n    // Now get accurate coordinates for this place, in order to get a\n    // base X position\n    var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n    baseX = coords.left;\n    outside = y < coords.top || y >= coords.bottom;\n  }\n\n  ch = skipExtendingChars(lineObj.text, ch, 1);\n  return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n}\n\nfunction coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) {\n  // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n  // situation, we can take this ordering to correspond to the visual\n  // ordering. This finds the first part whose end is after the given\n  // coordinates.\n  var index = findFirst(function (i) {\n    var part = order[i], ltr = part.level != 1;\n    return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n                                   \"line\", lineObj, preparedMeasure), x, y, true)\n  }, 0, order.length - 1);\n  var part = order[index];\n  // If this isn't the first part, the part's start is also after\n  // the coordinates, and the coordinates aren't on the same line as\n  // that start, move one part back.\n  if (index > 0) {\n    var ltr = part.level != 1;\n    var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n                             \"line\", lineObj, preparedMeasure);\n    if (boxIsAfter(start, x, y, true) && start.top > y)\n      { part = order[index - 1]; }\n  }\n  return part\n}\n\nfunction coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n  // In a wrapped line, rtl text on wrapping boundaries can do things\n  // that don't correspond to the ordering in our `order` array at\n  // all, so a binary search doesn't work, and we want to return a\n  // part that only spans one line so that the binary search in\n  // coordsCharInner is safe. As such, we first find the extent of the\n  // wrapped line, and then do a flat search in which we discard any\n  // spans that aren't on the line.\n  var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n  var begin = ref.begin;\n  var end = ref.end;\n  if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n  var part = null, closestDist = null;\n  for (var i = 0; i < order.length; i++) {\n    var p = order[i];\n    if (p.from >= end || p.to <= begin) { continue }\n    var ltr = p.level != 1;\n    var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n    // Weigh against spans ending before this, so that they are only\n    // picked if nothing ends after\n    var dist = endX < x ? x - endX + 1e9 : endX - x;\n    if (!part || closestDist > dist) {\n      part = p;\n      closestDist = dist;\n    }\n  }\n  if (!part) { part = order[order.length - 1]; }\n  // Clip the part to the wrapped line.\n  if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n  if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n  return part\n}\n\nvar measureText;\n// Compute the default text height.\nfunction textHeight(display) {\n  if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n  if (measureText == null) {\n    measureText = elt(\"pre\");\n    // Measure a bunch of lines, for browsers that compute\n    // fractional heights.\n    for (var i = 0; i < 49; ++i) {\n      measureText.appendChild(document.createTextNode(\"x\"));\n      measureText.appendChild(elt(\"br\"));\n    }\n    measureText.appendChild(document.createTextNode(\"x\"));\n  }\n  removeChildrenAndAdd(display.measure, measureText);\n  var height = measureText.offsetHeight / 50;\n  if (height > 3) { display.cachedTextHeight = height; }\n  removeChildren(display.measure);\n  return height || 1\n}\n\n// Compute the default character width.\nfunction charWidth(display) {\n  if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n  var anchor = elt(\"span\", \"xxxxxxxxxx\");\n  var pre = elt(\"pre\", [anchor]);\n  removeChildrenAndAdd(display.measure, pre);\n  var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n  if (width > 2) { display.cachedCharWidth = width; }\n  return width || 10\n}\n\n// Do a bulk-read of the DOM positions and sizes needed to draw the\n// view, so that we don't interleave reading and writing to the DOM.\nfunction getDimensions(cm) {\n  var d = cm.display, left = {}, width = {};\n  var gutterLeft = d.gutters.clientLeft;\n  for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n    left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n    width[cm.options.gutters[i]] = n.clientWidth;\n  }\n  return {fixedPos: compensateForHScroll(d),\n          gutterTotalWidth: d.gutters.offsetWidth,\n          gutterLeft: left,\n          gutterWidth: width,\n          wrapperWidth: d.wrapper.clientWidth}\n}\n\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n// but using getBoundingClientRect to get a sub-pixel-accurate\n// result.\nfunction compensateForHScroll(display) {\n  return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n}\n\n// Returns a function that estimates the height of a line, to use as\n// first approximation until the line becomes visible (and is thus\n// properly measurable).\nfunction estimateHeight(cm) {\n  var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n  var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n  return function (line) {\n    if (lineIsHidden(cm.doc, line)) { return 0 }\n\n    var widgetsHeight = 0;\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n      if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n    } }\n\n    if (wrapping)\n      { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n    else\n      { return widgetsHeight + th }\n  }\n}\n\nfunction estimateLineHeights(cm) {\n  var doc = cm.doc, est = estimateHeight(cm);\n  doc.iter(function (line) {\n    var estHeight = est(line);\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  });\n}\n\n// Given a mouse event, find the corresponding position. If liberal\n// is false, it checks whether a gutter or scrollbar was clicked,\n// and returns null if it was. forRect is used by rectangular\n// selections, and tries to estimate a character position even for\n// coordinates beyond the right of the text.\nfunction posFromMouse(cm, e, liberal, forRect) {\n  var display = cm.display;\n  if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n  var x, y, space = display.lineSpace.getBoundingClientRect();\n  // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n  try { x = e.clientX - space.left; y = e.clientY - space.top; }\n  catch (e) { return null }\n  var coords = coordsChar(cm, x, y), line;\n  if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n    var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n  }\n  return coords\n}\n\n// Find the view element corresponding to a given line. Return null\n// when the line isn't visible.\nfunction findViewIndex(cm, n) {\n  if (n >= cm.display.viewTo) { return null }\n  n -= cm.display.viewFrom;\n  if (n < 0) { return null }\n  var view = cm.display.view;\n  for (var i = 0; i < view.length; i++) {\n    n -= view[i].size;\n    if (n < 0) { return i }\n  }\n}\n\nfunction updateSelection(cm) {\n  cm.display.input.showSelection(cm.display.input.prepareSelection());\n}\n\nfunction prepareSelection(cm, primary) {\n  if ( primary === void 0 ) primary = true;\n\n  var doc = cm.doc, result = {};\n  var curFragment = result.cursors = document.createDocumentFragment();\n  var selFragment = result.selection = document.createDocumentFragment();\n\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    if (!primary && i == doc.sel.primIndex) { continue }\n    var range$$1 = doc.sel.ranges[i];\n    if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n    var collapsed = range$$1.empty();\n    if (collapsed || cm.options.showCursorWhenSelecting)\n      { drawSelectionCursor(cm, range$$1.head, curFragment); }\n    if (!collapsed)\n      { drawSelectionRange(cm, range$$1, selFragment); }\n  }\n  return result\n}\n\n// Draws a cursor for the given range\nfunction drawSelectionCursor(cm, head, output) {\n  var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n  var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n  cursor.style.left = pos.left + \"px\";\n  cursor.style.top = pos.top + \"px\";\n  cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n  if (pos.other) {\n    // Secondary cursor, shown when on a 'jump' in bi-directional text\n    var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n    otherCursor.style.display = \"\";\n    otherCursor.style.left = pos.other.left + \"px\";\n    otherCursor.style.top = pos.other.top + \"px\";\n    otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n  }\n}\n\nfunction cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n// Draws the given range as a highlighted selection\nfunction drawSelectionRange(cm, range$$1, output) {\n  var display = cm.display, doc = cm.doc;\n  var fragment = document.createDocumentFragment();\n  var padding = paddingH(cm.display), leftSide = padding.left;\n  var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n  var docLTR = doc.direction == \"ltr\";\n\n  function add(left, top, width, bottom) {\n    if (top < 0) { top = 0; }\n    top = Math.round(top);\n    bottom = Math.round(bottom);\n    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n  }\n\n  function drawForLine(line, fromArg, toArg) {\n    var lineObj = getLine(doc, line);\n    var lineLen = lineObj.text.length;\n    var start, end;\n    function coords(ch, bias) {\n      return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n    }\n\n    function wrapX(pos, dir, side) {\n      var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n      var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n      var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n      return coords(ch, prop)[prop]\n    }\n\n    var order = getOrder(lineObj, doc.direction);\n    iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n      var ltr = dir == \"ltr\";\n      var fromPos = coords(from, ltr ? \"left\" : \"right\");\n      var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n      var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n      var first = i == 0, last = !order || i == order.length - 1;\n      if (toPos.top - fromPos.top <= 3) { // Single line\n        var openLeft = (docLTR ? openStart : openEnd) && first;\n        var openRight = (docLTR ? openEnd : openStart) && last;\n        var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n        var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n        add(left, fromPos.top, right - left, fromPos.bottom);\n      } else { // Multiple lines\n        var topLeft, topRight, botLeft, botRight;\n        if (ltr) {\n          topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n          topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n          botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n          botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n        } else {\n          topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n          topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n          botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n          botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n        }\n        add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n        if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n        add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n      }\n\n      if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n      if (cmpCoords(toPos, start) < 0) { start = toPos; }\n      if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n      if (cmpCoords(toPos, end) < 0) { end = toPos; }\n    });\n    return {start: start, end: end}\n  }\n\n  var sFrom = range$$1.from(), sTo = range$$1.to();\n  if (sFrom.line == sTo.line) {\n    drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n  } else {\n    var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n    var singleVLine = visualLine(fromLine) == visualLine(toLine);\n    var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n    var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n    if (singleVLine) {\n      if (leftEnd.top < rightStart.top - 2) {\n        add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n        add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n      } else {\n        add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n      }\n    }\n    if (leftEnd.bottom < rightStart.top)\n      { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n  }\n\n  output.appendChild(fragment);\n}\n\n// Cursor-blinking\nfunction restartBlink(cm) {\n  if (!cm.state.focused) { return }\n  var display = cm.display;\n  clearInterval(display.blinker);\n  var on = true;\n  display.cursorDiv.style.visibility = \"\";\n  if (cm.options.cursorBlinkRate > 0)\n    { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n      cm.options.cursorBlinkRate); }\n  else if (cm.options.cursorBlinkRate < 0)\n    { display.cursorDiv.style.visibility = \"hidden\"; }\n}\n\nfunction ensureFocus(cm) {\n  if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n}\n\nfunction delayBlurEvent(cm) {\n  cm.state.delayingBlurEvent = true;\n  setTimeout(function () { if (cm.state.delayingBlurEvent) {\n    cm.state.delayingBlurEvent = false;\n    onBlur(cm);\n  } }, 100);\n}\n\nfunction onFocus(cm, e) {\n  if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n  if (cm.options.readOnly == \"nocursor\") { return }\n  if (!cm.state.focused) {\n    signal(cm, \"focus\", cm, e);\n    cm.state.focused = true;\n    addClass(cm.display.wrapper, \"CodeMirror-focused\");\n    // This test prevents this from firing when a context\n    // menu is closed (since the input reset would kill the\n    // select-all detection hack)\n    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n      cm.display.input.reset();\n      if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n    }\n    cm.display.input.receivedFocus();\n  }\n  restartBlink(cm);\n}\nfunction onBlur(cm, e) {\n  if (cm.state.delayingBlurEvent) { return }\n\n  if (cm.state.focused) {\n    signal(cm, \"blur\", cm, e);\n    cm.state.focused = false;\n    rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n  }\n  clearInterval(cm.display.blinker);\n  setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n}\n\n// Read the actual heights of the rendered lines, and update their\n// stored heights to match.\nfunction updateHeightsInViewport(cm) {\n  var display = cm.display;\n  var prevBottom = display.lineDiv.offsetTop;\n  for (var i = 0; i < display.view.length; i++) {\n    var cur = display.view[i], height = (void 0);\n    if (cur.hidden) { continue }\n    if (ie && ie_version < 8) {\n      var bot = cur.node.offsetTop + cur.node.offsetHeight;\n      height = bot - prevBottom;\n      prevBottom = bot;\n    } else {\n      var box = cur.node.getBoundingClientRect();\n      height = box.bottom - box.top;\n    }\n    var diff = cur.line.height - height;\n    if (height < 2) { height = textHeight(display); }\n    if (diff > .005 || diff < -.005) {\n      updateLineHeight(cur.line, height);\n      updateWidgetHeight(cur.line);\n      if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n        { updateWidgetHeight(cur.rest[j]); } }\n    }\n  }\n}\n\n// Read and store the height of line widgets associated with the\n// given line.\nfunction updateWidgetHeight(line) {\n  if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n    var w = line.widgets[i], parent = w.node.parentNode;\n    if (parent) { w.height = parent.offsetHeight; }\n  } }\n}\n\n// Compute the lines that are visible in a given viewport (defaults\n// the the current scroll position). viewport may contain top,\n// height, and ensure (see op.scrollToPos) properties.\nfunction visibleLines(display, doc, viewport) {\n  var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n  top = Math.floor(top - paddingTop(display));\n  var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n  var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n  // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n  // forces those lines into the viewport (if possible).\n  if (viewport && viewport.ensure) {\n    var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n    if (ensureFrom < from) {\n      from = ensureFrom;\n      to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n      from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n      to = ensureTo;\n    }\n  }\n  return {from: from, to: Math.max(to, from + 1)}\n}\n\n// Re-align line numbers and gutter marks to compensate for\n// horizontal scrolling.\nfunction alignHorizontally(cm) {\n  var display = cm.display, view = display.view;\n  if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n  var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n  var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n  for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n    if (cm.options.fixedGutter) {\n      if (view[i].gutter)\n        { view[i].gutter.style.left = left; }\n      if (view[i].gutterBackground)\n        { view[i].gutterBackground.style.left = left; }\n    }\n    var align = view[i].alignable;\n    if (align) { for (var j = 0; j < align.length; j++)\n      { align[j].style.left = left; } }\n  } }\n  if (cm.options.fixedGutter)\n    { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n}\n\n// Used to ensure that the line number gutter is still the right\n// size for the current document size. Returns true when an update\n// is needed.\nfunction maybeUpdateLineNumberWidth(cm) {\n  if (!cm.options.lineNumbers) { return false }\n  var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n  if (last.length != display.lineNumChars) {\n    var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                               \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n    var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n    display.lineGutter.style.width = \"\";\n    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n    display.lineNumWidth = display.lineNumInnerWidth + padding;\n    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n    display.lineGutter.style.width = display.lineNumWidth + \"px\";\n    updateGutterSpace(cm);\n    return true\n  }\n  return false\n}\n\n// SCROLLING THINGS INTO VIEW\n\n// If an editor sits on the top or bottom of the window, partially\n// scrolled out of view, this ensures that the cursor is visible.\nfunction maybeScrollWindow(cm, rect) {\n  if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n  var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n  if (rect.top + box.top < 0) { doScroll = true; }\n  else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n  if (doScroll != null && !phantom) {\n    var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n    cm.display.lineSpace.appendChild(scrollNode);\n    scrollNode.scrollIntoView(doScroll);\n    cm.display.lineSpace.removeChild(scrollNode);\n  }\n}\n\n// Scroll a given position into view (immediately), verifying that\n// it actually became visible (as line heights are accurately\n// measured, the position of something may 'drift' during drawing).\nfunction scrollPosIntoView(cm, pos, end, margin) {\n  if (margin == null) { margin = 0; }\n  var rect;\n  if (!cm.options.lineWrapping && pos == end) {\n    // Set pos and end to the cursor positions around the character pos sticks to\n    // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n    // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n    pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n    end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n  }\n  for (var limit = 0; limit < 5; limit++) {\n    var changed = false;\n    var coords = cursorCoords(cm, pos);\n    var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n    rect = {left: Math.min(coords.left, endCoords.left),\n            top: Math.min(coords.top, endCoords.top) - margin,\n            right: Math.max(coords.left, endCoords.left),\n            bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n    var scrollPos = calculateScrollPos(cm, rect);\n    var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n    if (scrollPos.scrollTop != null) {\n      updateScrollTop(cm, scrollPos.scrollTop);\n      if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n    }\n    if (scrollPos.scrollLeft != null) {\n      setScrollLeft(cm, scrollPos.scrollLeft);\n      if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n    }\n    if (!changed) { break }\n  }\n  return rect\n}\n\n// Scroll a given set of coordinates into view (immediately).\nfunction scrollIntoView(cm, rect) {\n  var scrollPos = calculateScrollPos(cm, rect);\n  if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n  if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n}\n\n// Calculate a new scroll position needed to scroll the given\n// rectangle into view. Returns an object with scrollTop and\n// scrollLeft properties. When these are undefined, the\n// vertical/horizontal position does not need to be adjusted.\nfunction calculateScrollPos(cm, rect) {\n  var display = cm.display, snapMargin = textHeight(cm.display);\n  if (rect.top < 0) { rect.top = 0; }\n  var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n  var screen = displayHeight(cm), result = {};\n  if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n  var docBottom = cm.doc.height + paddingVert(display);\n  var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n  if (rect.top < screentop) {\n    result.scrollTop = atTop ? 0 : rect.top;\n  } else if (rect.bottom > screentop + screen) {\n    var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n    if (newTop != screentop) { result.scrollTop = newTop; }\n  }\n\n  var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n  var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n  var tooWide = rect.right - rect.left > screenw;\n  if (tooWide) { rect.right = rect.left + screenw; }\n  if (rect.left < 10)\n    { result.scrollLeft = 0; }\n  else if (rect.left < screenleft)\n    { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n  else if (rect.right > screenw + screenleft - 3)\n    { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n  return result\n}\n\n// Store a relative adjustment to the scroll position in the current\n// operation (to be applied when the operation finishes).\nfunction addToScrollTop(cm, top) {\n  if (top == null) { return }\n  resolveScrollToPos(cm);\n  cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n}\n\n// Make sure that at the end of the operation the current cursor is\n// shown.\nfunction ensureCursorVisible(cm) {\n  resolveScrollToPos(cm);\n  var cur = cm.getCursor();\n  cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n}\n\nfunction scrollToCoords(cm, x, y) {\n  if (x != null || y != null) { resolveScrollToPos(cm); }\n  if (x != null) { cm.curOp.scrollLeft = x; }\n  if (y != null) { cm.curOp.scrollTop = y; }\n}\n\nfunction scrollToRange(cm, range$$1) {\n  resolveScrollToPos(cm);\n  cm.curOp.scrollToPos = range$$1;\n}\n\n// When an operation has its scrollToPos property set, and another\n// scroll action is applied before the end of the operation, this\n// 'simulates' scrolling that position into view in a cheap way, so\n// that the effect of intermediate scroll commands is not ignored.\nfunction resolveScrollToPos(cm) {\n  var range$$1 = cm.curOp.scrollToPos;\n  if (range$$1) {\n    cm.curOp.scrollToPos = null;\n    var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n    scrollToCoordsRange(cm, from, to, range$$1.margin);\n  }\n}\n\nfunction scrollToCoordsRange(cm, from, to, margin) {\n  var sPos = calculateScrollPos(cm, {\n    left: Math.min(from.left, to.left),\n    top: Math.min(from.top, to.top) - margin,\n    right: Math.max(from.right, to.right),\n    bottom: Math.max(from.bottom, to.bottom) + margin\n  });\n  scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n}\n\n// Sync the scrollable area and scrollbars, ensure the viewport\n// covers the visible area.\nfunction updateScrollTop(cm, val) {\n  if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n  if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n  setScrollTop(cm, val, true);\n  if (gecko) { updateDisplaySimple(cm); }\n  startWorker(cm, 100);\n}\n\nfunction setScrollTop(cm, val, forceScroll) {\n  val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n  if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n  cm.doc.scrollTop = val;\n  cm.display.scrollbars.setScrollTop(val);\n  if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n}\n\n// Sync scroller and scrollbar, ensure the gutter elements are\n// aligned.\nfunction setScrollLeft(cm, val, isScroller, forceScroll) {\n  val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n  if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n  cm.doc.scrollLeft = val;\n  alignHorizontally(cm);\n  if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n  cm.display.scrollbars.setScrollLeft(val);\n}\n\n// SCROLLBARS\n\n// Prepare DOM reads needed to update the scrollbars. Done in one\n// shot to minimize update/measure roundtrips.\nfunction measureForScrollbars(cm) {\n  var d = cm.display, gutterW = d.gutters.offsetWidth;\n  var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n  return {\n    clientHeight: d.scroller.clientHeight,\n    viewHeight: d.wrapper.clientHeight,\n    scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n    viewWidth: d.wrapper.clientWidth,\n    barLeft: cm.options.fixedGutter ? gutterW : 0,\n    docHeight: docH,\n    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n    nativeBarWidth: d.nativeBarWidth,\n    gutterWidth: gutterW\n  }\n}\n\nvar NativeScrollbars = function(place, scroll, cm) {\n  this.cm = cm;\n  var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n  var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n  place(vert); place(horiz);\n\n  on(vert, \"scroll\", function () {\n    if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n  });\n  on(horiz, \"scroll\", function () {\n    if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n  });\n\n  this.checkedZeroWidth = false;\n  // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n  if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n};\n\nNativeScrollbars.prototype.update = function (measure) {\n  var needsH = measure.scrollWidth > measure.clientWidth + 1;\n  var needsV = measure.scrollHeight > measure.clientHeight + 1;\n  var sWidth = measure.nativeBarWidth;\n\n  if (needsV) {\n    this.vert.style.display = \"block\";\n    this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n    var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n    // A bug in IE8 can cause this value to be negative, so guard it.\n    this.vert.firstChild.style.height =\n      Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n  } else {\n    this.vert.style.display = \"\";\n    this.vert.firstChild.style.height = \"0\";\n  }\n\n  if (needsH) {\n    this.horiz.style.display = \"block\";\n    this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n    this.horiz.style.left = measure.barLeft + \"px\";\n    var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n    this.horiz.firstChild.style.width =\n      Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n  } else {\n    this.horiz.style.display = \"\";\n    this.horiz.firstChild.style.width = \"0\";\n  }\n\n  if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n    if (sWidth == 0) { this.zeroWidthHack(); }\n    this.checkedZeroWidth = true;\n  }\n\n  return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n};\n\nNativeScrollbars.prototype.setScrollLeft = function (pos) {\n  if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n  if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n};\n\nNativeScrollbars.prototype.setScrollTop = function (pos) {\n  if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n  if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n};\n\nNativeScrollbars.prototype.zeroWidthHack = function () {\n  var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n  this.horiz.style.height = this.vert.style.width = w;\n  this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n  this.disableHoriz = new Delayed;\n  this.disableVert = new Delayed;\n};\n\nNativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n  bar.style.pointerEvents = \"auto\";\n  function maybeDisable() {\n    // To find out whether the scrollbar is still visible, we\n    // check whether the element under the pixel in the bottom\n    // right corner of the scrollbar box is the scrollbar box\n    // itself (when the bar is still visible) or its filler child\n    // (when the bar is hidden). If it is still visible, we keep\n    // it enabled, if it's hidden, we disable pointer events.\n    var box = bar.getBoundingClientRect();\n    var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n        : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n    if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n    else { delay.set(1000, maybeDisable); }\n  }\n  delay.set(1000, maybeDisable);\n};\n\nNativeScrollbars.prototype.clear = function () {\n  var parent = this.horiz.parentNode;\n  parent.removeChild(this.horiz);\n  parent.removeChild(this.vert);\n};\n\nvar NullScrollbars = function () {};\n\nNullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\nNullScrollbars.prototype.setScrollLeft = function () {};\nNullScrollbars.prototype.setScrollTop = function () {};\nNullScrollbars.prototype.clear = function () {};\n\nfunction updateScrollbars(cm, measure) {\n  if (!measure) { measure = measureForScrollbars(cm); }\n  var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n  updateScrollbarsInner(cm, measure);\n  for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n    if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n      { updateHeightsInViewport(cm); }\n    updateScrollbarsInner(cm, measureForScrollbars(cm));\n    startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n  }\n}\n\n// Re-synchronize the fake scrollbars with the actual size of the\n// content.\nfunction updateScrollbarsInner(cm, measure) {\n  var d = cm.display;\n  var sizes = d.scrollbars.update(measure);\n\n  d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n  d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n  d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n  if (sizes.right && sizes.bottom) {\n    d.scrollbarFiller.style.display = \"block\";\n    d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n    d.scrollbarFiller.style.width = sizes.right + \"px\";\n  } else { d.scrollbarFiller.style.display = \"\"; }\n  if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n    d.gutterFiller.style.display = \"block\";\n    d.gutterFiller.style.height = sizes.bottom + \"px\";\n    d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n  } else { d.gutterFiller.style.display = \"\"; }\n}\n\nvar scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\nfunction initScrollbars(cm) {\n  if (cm.display.scrollbars) {\n    cm.display.scrollbars.clear();\n    if (cm.display.scrollbars.addClass)\n      { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n    // Prevent clicks in the scrollbars from killing focus\n    on(node, \"mousedown\", function () {\n      if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n    });\n    node.setAttribute(\"cm-not-content\", \"true\");\n  }, function (pos, axis) {\n    if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n    else { updateScrollTop(cm, pos); }\n  }, cm);\n  if (cm.display.scrollbars.addClass)\n    { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n}\n\n// Operations are used to wrap a series of changes to the editor\n// state in such a way that each change won't have to update the\n// cursor and display (which would be awkward, slow, and\n// error-prone). Instead, display updates are batched and then all\n// combined and executed at once.\n\nvar nextOpId = 0;\n// Start a new operation.\nfunction startOperation(cm) {\n  cm.curOp = {\n    cm: cm,\n    viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n    startHeight: cm.doc.height, // Used to detect need to update scrollbar\n    forceUpdate: false,      // Used to force a redraw\n    updateInput: null,       // Whether to reset the input textarea\n    typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n    changeObjs: null,        // Accumulated changes, for firing change events\n    cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n    cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n    selectionChanged: false, // Whether the selection needs to be redrawn\n    updateMaxLine: false,    // Set when the widest line needs to be determined anew\n    scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n    scrollToPos: null,       // Used to scroll to a specific position\n    focus: false,\n    id: ++nextOpId           // Unique ID\n  };\n  pushOperation(cm.curOp);\n}\n\n// Finish an operation, updating the display and signalling delayed events\nfunction endOperation(cm) {\n  var op = cm.curOp;\n  finishOperation(op, function (group) {\n    for (var i = 0; i < group.ops.length; i++)\n      { group.ops[i].cm.curOp = null; }\n    endOperations(group);\n  });\n}\n\n// The DOM updates done when an operation finishes are batched so\n// that the minimum number of relayouts are required.\nfunction endOperations(group) {\n  var ops = group.ops;\n  for (var i = 0; i < ops.length; i++) // Read DOM\n    { endOperation_R1(ops[i]); }\n  for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n    { endOperation_W1(ops[i$1]); }\n  for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n    { endOperation_R2(ops[i$2]); }\n  for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n    { endOperation_W2(ops[i$3]); }\n  for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n    { endOperation_finish(ops[i$4]); }\n}\n\nfunction endOperation_R1(op) {\n  var cm = op.cm, display = cm.display;\n  maybeClipScrollbars(cm);\n  if (op.updateMaxLine) { findMaxLine(cm); }\n\n  op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n    op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                       op.scrollToPos.to.line >= display.viewTo) ||\n    display.maxLineChanged && cm.options.lineWrapping;\n  op.update = op.mustUpdate &&\n    new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n}\n\nfunction endOperation_W1(op) {\n  op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n}\n\nfunction endOperation_R2(op) {\n  var cm = op.cm, display = cm.display;\n  if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n  op.barMeasure = measureForScrollbars(cm);\n\n  // If the max line changed since it was last measured, measure it,\n  // and ensure the document's width matches it.\n  // updateDisplay_W2 will use these properties to do the actual resizing\n  if (display.maxLineChanged && !cm.options.lineWrapping) {\n    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n    cm.display.sizerWidth = op.adjustWidthTo;\n    op.barMeasure.scrollWidth =\n      Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n  }\n\n  if (op.updatedDisplay || op.selectionChanged)\n    { op.preparedSelection = display.input.prepareSelection(); }\n}\n\nfunction endOperation_W2(op) {\n  var cm = op.cm;\n\n  if (op.adjustWidthTo != null) {\n    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n    if (op.maxScrollLeft < cm.doc.scrollLeft)\n      { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n    cm.display.maxLineChanged = false;\n  }\n\n  var takeFocus = op.focus && op.focus == activeElt();\n  if (op.preparedSelection)\n    { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n  if (op.updatedDisplay || op.startHeight != cm.doc.height)\n    { updateScrollbars(cm, op.barMeasure); }\n  if (op.updatedDisplay)\n    { setDocumentHeight(cm, op.barMeasure); }\n\n  if (op.selectionChanged) { restartBlink(cm); }\n\n  if (cm.state.focused && op.updateInput)\n    { cm.display.input.reset(op.typing); }\n  if (takeFocus) { ensureFocus(op.cm); }\n}\n\nfunction endOperation_finish(op) {\n  var cm = op.cm, display = cm.display, doc = cm.doc;\n\n  if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n  // Abort mouse wheel delta measurement, when scrolling explicitly\n  if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n    { display.wheelStartX = display.wheelStartY = null; }\n\n  // Propagate the scroll position to the actual DOM scroller\n  if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n  if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n  // If we need to scroll a specific position into view, do so.\n  if (op.scrollToPos) {\n    var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n    maybeScrollWindow(cm, rect);\n  }\n\n  // Fire events for markers that are hidden/unidden by editing or\n  // undoing\n  var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n  if (hidden) { for (var i = 0; i < hidden.length; ++i)\n    { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n  if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n    { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n  if (display.wrapper.offsetHeight)\n    { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n  // Fire change events, and delayed event handlers\n  if (op.changeObjs)\n    { signal(cm, \"changes\", cm, op.changeObjs); }\n  if (op.update)\n    { op.update.finish(); }\n}\n\n// Run the given function in an operation\nfunction runInOp(cm, f) {\n  if (cm.curOp) { return f() }\n  startOperation(cm);\n  try { return f() }\n  finally { endOperation(cm); }\n}\n// Wraps a function in an operation. Returns the wrapped function.\nfunction operation(cm, f) {\n  return function() {\n    if (cm.curOp) { return f.apply(cm, arguments) }\n    startOperation(cm);\n    try { return f.apply(cm, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n// Used to add methods to editor and doc instances, wrapping them in\n// operations.\nfunction methodOp(f) {\n  return function() {\n    if (this.curOp) { return f.apply(this, arguments) }\n    startOperation(this);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(this); }\n  }\n}\nfunction docMethodOp(f) {\n  return function() {\n    var cm = this.cm;\n    if (!cm || cm.curOp) { return f.apply(this, arguments) }\n    startOperation(cm);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n\n// Updates the display.view data structure for a given change to the\n// document. From and to are in pre-change coordinates. Lendiff is\n// the amount of lines added or subtracted by the change. This is\n// used for changes that span multiple lines, or change the way\n// lines are divided into visual lines. regLineChange (below)\n// registers single-line changes.\nfunction regChange(cm, from, to, lendiff) {\n  if (from == null) { from = cm.doc.first; }\n  if (to == null) { to = cm.doc.first + cm.doc.size; }\n  if (!lendiff) { lendiff = 0; }\n\n  var display = cm.display;\n  if (lendiff && to < display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers > from))\n    { display.updateLineNumbers = from; }\n\n  cm.curOp.viewChanged = true;\n\n  if (from >= display.viewTo) { // Change after\n    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n      { resetView(cm); }\n  } else if (to <= display.viewFrom) { // Change before\n    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n      resetView(cm);\n    } else {\n      display.viewFrom += lendiff;\n      display.viewTo += lendiff;\n    }\n  } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n    resetView(cm);\n  } else if (from <= display.viewFrom) { // Top overlap\n    var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cut) {\n      display.view = display.view.slice(cut.index);\n      display.viewFrom = cut.lineN;\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  } else if (to >= display.viewTo) { // Bottom overlap\n    var cut$1 = viewCuttingPoint(cm, from, from, -1);\n    if (cut$1) {\n      display.view = display.view.slice(0, cut$1.index);\n      display.viewTo = cut$1.lineN;\n    } else {\n      resetView(cm);\n    }\n  } else { // Gap in the middle\n    var cutTop = viewCuttingPoint(cm, from, from, -1);\n    var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cutTop && cutBot) {\n      display.view = display.view.slice(0, cutTop.index)\n        .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n        .concat(display.view.slice(cutBot.index));\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  }\n\n  var ext = display.externalMeasured;\n  if (ext) {\n    if (to < ext.lineN)\n      { ext.lineN += lendiff; }\n    else if (from < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n  }\n}\n\n// Register a change to a single line. Type must be one of \"text\",\n// \"gutter\", \"class\", \"widget\"\nfunction regLineChange(cm, line, type) {\n  cm.curOp.viewChanged = true;\n  var display = cm.display, ext = cm.display.externalMeasured;\n  if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n    { display.externalMeasured = null; }\n\n  if (line < display.viewFrom || line >= display.viewTo) { return }\n  var lineView = display.view[findViewIndex(cm, line)];\n  if (lineView.node == null) { return }\n  var arr = lineView.changes || (lineView.changes = []);\n  if (indexOf(arr, type) == -1) { arr.push(type); }\n}\n\n// Clear the view.\nfunction resetView(cm) {\n  cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n  cm.display.view = [];\n  cm.display.viewOffset = 0;\n}\n\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\n  var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n  if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n    { return {index: index, lineN: newN} }\n  var n = cm.display.viewFrom;\n  for (var i = 0; i < index; i++)\n    { n += view[i].size; }\n  if (n != oldN) {\n    if (dir > 0) {\n      if (index == view.length - 1) { return null }\n      diff = (n + view[index].size) - oldN;\n      index++;\n    } else {\n      diff = n - oldN;\n    }\n    oldN += diff; newN += diff;\n  }\n  while (visualLineNo(cm.doc, newN) != newN) {\n    if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n    newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n    index += dir;\n  }\n  return {index: index, lineN: newN}\n}\n\n// Force the view to cover a given range, adding empty view element\n// or clipping off existing ones as needed.\nfunction adjustView(cm, from, to) {\n  var display = cm.display, view = display.view;\n  if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n    display.view = buildViewArray(cm, from, to);\n    display.viewFrom = from;\n  } else {\n    if (display.viewFrom > from)\n      { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n    else if (display.viewFrom < from)\n      { display.view = display.view.slice(findViewIndex(cm, from)); }\n    display.viewFrom = from;\n    if (display.viewTo < to)\n      { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n    else if (display.viewTo > to)\n      { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n  }\n  display.viewTo = to;\n}\n\n// Count the number of lines in the view whose DOM representation is\n// out of date (or nonexistent).\nfunction countDirtyView(cm) {\n  var view = cm.display.view, dirty = 0;\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n  }\n  return dirty\n}\n\n// HIGHLIGHT WORKER\n\nfunction startWorker(cm, time) {\n  if (cm.doc.highlightFrontier < cm.display.viewTo)\n    { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n}\n\nfunction highlightWorker(cm) {\n  var doc = cm.doc;\n  if (doc.highlightFrontier >= cm.display.viewTo) { return }\n  var end = +new Date + cm.options.workTime;\n  var context = getContextBefore(cm, doc.highlightFrontier);\n  var changedLines = [];\n\n  doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n    if (context.line >= cm.display.viewFrom) { // Visible\n      var oldStyles = line.styles;\n      var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n      var highlighted = highlightLine(cm, line, context, true);\n      if (resetState) { context.state = resetState; }\n      line.styles = highlighted.styles;\n      var oldCls = line.styleClasses, newCls = highlighted.classes;\n      if (newCls) { line.styleClasses = newCls; }\n      else if (oldCls) { line.styleClasses = null; }\n      var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n        oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n      for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n      if (ischange) { changedLines.push(context.line); }\n      line.stateAfter = context.save();\n      context.nextLine();\n    } else {\n      if (line.text.length <= cm.options.maxHighlightLength)\n        { processLine(cm, line.text, context); }\n      line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n      context.nextLine();\n    }\n    if (+new Date > end) {\n      startWorker(cm, cm.options.workDelay);\n      return true\n    }\n  });\n  doc.highlightFrontier = context.line;\n  doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n  if (changedLines.length) { runInOp(cm, function () {\n    for (var i = 0; i < changedLines.length; i++)\n      { regLineChange(cm, changedLines[i], \"text\"); }\n  }); }\n}\n\n// DISPLAY DRAWING\n\nvar DisplayUpdate = function(cm, viewport, force) {\n  var display = cm.display;\n\n  this.viewport = viewport;\n  // Store some values that we'll need later (but don't want to force a relayout for)\n  this.visible = visibleLines(display, cm.doc, viewport);\n  this.editorIsHidden = !display.wrapper.offsetWidth;\n  this.wrapperHeight = display.wrapper.clientHeight;\n  this.wrapperWidth = display.wrapper.clientWidth;\n  this.oldDisplayWidth = displayWidth(cm);\n  this.force = force;\n  this.dims = getDimensions(cm);\n  this.events = [];\n};\n\nDisplayUpdate.prototype.signal = function (emitter, type) {\n  if (hasHandler(emitter, type))\n    { this.events.push(arguments); }\n};\nDisplayUpdate.prototype.finish = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.events.length; i++)\n    { signal.apply(null, this$1.events[i]); }\n};\n\nfunction maybeClipScrollbars(cm) {\n  var display = cm.display;\n  if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n    display.heightForcer.style.height = scrollGap(cm) + \"px\";\n    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n    display.scrollbarsClipped = true;\n  }\n}\n\nfunction selectionSnapshot(cm) {\n  if (cm.hasFocus()) { return null }\n  var active = activeElt();\n  if (!active || !contains(cm.display.lineDiv, active)) { return null }\n  var result = {activeElt: active};\n  if (window.getSelection) {\n    var sel = window.getSelection();\n    if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n      result.anchorNode = sel.anchorNode;\n      result.anchorOffset = sel.anchorOffset;\n      result.focusNode = sel.focusNode;\n      result.focusOffset = sel.focusOffset;\n    }\n  }\n  return result\n}\n\nfunction restoreSelection(snapshot) {\n  if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n  snapshot.activeElt.focus();\n  if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n    var sel = window.getSelection(), range$$1 = document.createRange();\n    range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n    range$$1.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range$$1);\n    sel.extend(snapshot.focusNode, snapshot.focusOffset);\n  }\n}\n\n// Does the actual updating of the line display. Bails out\n// (returning false) when there is nothing to be done and forced is\n// false.\nfunction updateDisplayIfNeeded(cm, update) {\n  var display = cm.display, doc = cm.doc;\n\n  if (update.editorIsHidden) {\n    resetView(cm);\n    return false\n  }\n\n  // Bail out if the visible area is already rendered and nothing changed.\n  if (!update.force &&\n      update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n      display.renderedView == display.view && countDirtyView(cm) == 0)\n    { return false }\n\n  if (maybeUpdateLineNumberWidth(cm)) {\n    resetView(cm);\n    update.dims = getDimensions(cm);\n  }\n\n  // Compute a suitable new viewport (from & to)\n  var end = doc.first + doc.size;\n  var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n  var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n  if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n  if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n  if (sawCollapsedSpans) {\n    from = visualLineNo(cm.doc, from);\n    to = visualLineEndNo(cm.doc, to);\n  }\n\n  var different = from != display.viewFrom || to != display.viewTo ||\n    display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n  adjustView(cm, from, to);\n\n  display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n  // Position the mover div to align with the current scroll position\n  cm.display.mover.style.top = display.viewOffset + \"px\";\n\n  var toUpdate = countDirtyView(cm);\n  if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n    { return false }\n\n  // For big changes, we hide the enclosing element during the\n  // update, since that speeds up the operations on most browsers.\n  var selSnapshot = selectionSnapshot(cm);\n  if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n  patchDisplay(cm, display.updateLineNumbers, update.dims);\n  if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n  display.renderedView = display.view;\n  // There might have been a widget with a focused element that got\n  // hidden or updated, if so re-focus it.\n  restoreSelection(selSnapshot);\n\n  // Prevent selection and cursors from interfering with the scroll\n  // width and height.\n  removeChildren(display.cursorDiv);\n  removeChildren(display.selectionDiv);\n  display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n  if (different) {\n    display.lastWrapHeight = update.wrapperHeight;\n    display.lastWrapWidth = update.wrapperWidth;\n    startWorker(cm, 400);\n  }\n\n  display.updateLineNumbers = null;\n\n  return true\n}\n\nfunction postUpdateDisplay(cm, update) {\n  var viewport = update.viewport;\n\n  for (var first = true;; first = false) {\n    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n      // Clip forced viewport to actual scrollable area.\n      if (viewport && viewport.top != null)\n        { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n      // Updated line heights might result in the drawn area not\n      // actually covering the viewport. Keep looping until it does.\n      update.visible = visibleLines(cm.display, cm.doc, viewport);\n      if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n        { break }\n    }\n    if (!updateDisplayIfNeeded(cm, update)) { break }\n    updateHeightsInViewport(cm);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n    update.force = false;\n  }\n\n  update.signal(cm, \"update\", cm);\n  if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n    cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n  }\n}\n\nfunction updateDisplaySimple(cm, viewport) {\n  var update = new DisplayUpdate(cm, viewport);\n  if (updateDisplayIfNeeded(cm, update)) {\n    updateHeightsInViewport(cm);\n    postUpdateDisplay(cm, update);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n    update.finish();\n  }\n}\n\n// Sync the actual display DOM structure with display.view, removing\n// nodes for lines that are no longer in view, and creating the ones\n// that are not there yet, and updating the ones that are out of\n// date.\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\n  var display = cm.display, lineNumbers = cm.options.lineNumbers;\n  var container = display.lineDiv, cur = container.firstChild;\n\n  function rm(node) {\n    var next = node.nextSibling;\n    // Works around a throw-scroll bug in OS X Webkit\n    if (webkit && mac && cm.display.currentWheelTarget == node)\n      { node.style.display = \"none\"; }\n    else\n      { node.parentNode.removeChild(node); }\n    return next\n  }\n\n  var view = display.view, lineN = display.viewFrom;\n  // Loop over the elements in the view, syncing cur (the DOM nodes\n  // in display.lineDiv) with the view as we go.\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (lineView.hidden) {\n    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n      var node = buildLineElement(cm, lineView, lineN, dims);\n      container.insertBefore(node, cur);\n    } else { // Already drawn\n      while (cur != lineView.node) { cur = rm(cur); }\n      var updateNumber = lineNumbers && updateNumbersFrom != null &&\n        updateNumbersFrom <= lineN && lineView.lineNumber;\n      if (lineView.changes) {\n        if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n        updateLineForChanges(cm, lineView, lineN, dims);\n      }\n      if (updateNumber) {\n        removeChildren(lineView.lineNumber);\n        lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n      }\n      cur = lineView.node.nextSibling;\n    }\n    lineN += lineView.size;\n  }\n  while (cur) { cur = rm(cur); }\n}\n\nfunction updateGutterSpace(cm) {\n  var width = cm.display.gutters.offsetWidth;\n  cm.display.sizer.style.marginLeft = width + \"px\";\n}\n\nfunction setDocumentHeight(cm, measure) {\n  cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n  cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n  cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n}\n\n// Rebuild the gutter elements, ensure the margin to the left of the\n// code matches their width.\nfunction updateGutters(cm) {\n  var gutters = cm.display.gutters, specs = cm.options.gutters;\n  removeChildren(gutters);\n  var i = 0;\n  for (; i < specs.length; ++i) {\n    var gutterClass = specs[i];\n    var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n    if (gutterClass == \"CodeMirror-linenumbers\") {\n      cm.display.lineGutter = gElt;\n      gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n    }\n  }\n  gutters.style.display = i ? \"\" : \"none\";\n  updateGutterSpace(cm);\n}\n\n// Make sure the gutters options contains the element\n// \"CodeMirror-linenumbers\" when the lineNumbers option is true.\nfunction setGuttersForLineNumbers(options) {\n  var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n  if (found == -1 && options.lineNumbers) {\n    options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n  } else if (found > -1 && !options.lineNumbers) {\n    options.gutters = options.gutters.slice(0);\n    options.gutters.splice(found, 1);\n  }\n}\n\n// Since the delta values reported on mouse wheel events are\n// unstandardized between browsers and even browser versions, and\n// generally horribly unpredictable, this code starts by measuring\n// the scroll effect that the first few mouse wheel events have,\n// and, from that, detects the way it can convert deltas to pixel\n// offsets afterwards.\n//\n// The reason we want to know the amount a wheel event will scroll\n// is that it gives us a chance to update the display before the\n// actual scrolling happens, reducing flickering.\n\nvar wheelSamples = 0;\nvar wheelPixelsPerUnit = null;\n// Fill in a browser-detected starting value on browsers where we\n// know one. These don't have to be accurate -- the result of them\n// being wrong would just be a slight flicker on the first wheel\n// scroll (if it is large enough).\nif (ie) { wheelPixelsPerUnit = -.53; }\nelse if (gecko) { wheelPixelsPerUnit = 15; }\nelse if (chrome) { wheelPixelsPerUnit = -.7; }\nelse if (safari) { wheelPixelsPerUnit = -1/3; }\n\nfunction wheelEventDelta(e) {\n  var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n  if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n  if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n  else if (dy == null) { dy = e.wheelDelta; }\n  return {x: dx, y: dy}\n}\nfunction wheelEventPixels(e) {\n  var delta = wheelEventDelta(e);\n  delta.x *= wheelPixelsPerUnit;\n  delta.y *= wheelPixelsPerUnit;\n  return delta\n}\n\nfunction onScrollWheel(cm, e) {\n  var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n  var display = cm.display, scroll = display.scroller;\n  // Quit if there's nothing to scroll here\n  var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n  var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n  if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n  // Webkit browsers on OS X abort momentum scrolls when the target\n  // of the scroll event is removed from the scrollable element.\n  // This hack (see related code in patchDisplay) makes sure the\n  // element is kept around.\n  if (dy && mac && webkit) {\n    outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n      for (var i = 0; i < view.length; i++) {\n        if (view[i].node == cur) {\n          cm.display.currentWheelTarget = cur;\n          break outer\n        }\n      }\n    }\n  }\n\n  // On some browsers, horizontal scrolling will cause redraws to\n  // happen before the gutter has been realigned, causing it to\n  // wriggle around in a most unseemly way. When we have an\n  // estimated pixels/delta value, we just handle horizontal\n  // scrolling entirely here. It'll be slightly off from native, but\n  // better than glitching out.\n  if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n    if (dy && canScrollY)\n      { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n    setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n    // Only prevent default scrolling if vertical scrolling is\n    // actually possible. Otherwise, it causes vertical scroll\n    // jitter on OSX trackpads when deltaX is small and deltaY\n    // is large (issue #3579)\n    if (!dy || (dy && canScrollY))\n      { e_preventDefault(e); }\n    display.wheelStartX = null; // Abort measurement, if in progress\n    return\n  }\n\n  // 'Project' the visible viewport to cover the area that is being\n  // scrolled into view (if we know enough to estimate it).\n  if (dy && wheelPixelsPerUnit != null) {\n    var pixels = dy * wheelPixelsPerUnit;\n    var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n    if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n    else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n    updateDisplaySimple(cm, {top: top, bottom: bot});\n  }\n\n  if (wheelSamples < 20) {\n    if (display.wheelStartX == null) {\n      display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n      display.wheelDX = dx; display.wheelDY = dy;\n      setTimeout(function () {\n        if (display.wheelStartX == null) { return }\n        var movedX = scroll.scrollLeft - display.wheelStartX;\n        var movedY = scroll.scrollTop - display.wheelStartY;\n        var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n          (movedX && display.wheelDX && movedX / display.wheelDX);\n        display.wheelStartX = display.wheelStartY = null;\n        if (!sample) { return }\n        wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n        ++wheelSamples;\n      }, 200);\n    } else {\n      display.wheelDX += dx; display.wheelDY += dy;\n    }\n  }\n}\n\n// Selection objects are immutable. A new one is created every time\n// the selection changes. A selection is one or more non-overlapping\n// (and non-touching) ranges, sorted, and an integer that indicates\n// which one is the primary selection (the one that's scrolled into\n// view, that getCursor returns, etc).\nvar Selection = function(ranges, primIndex) {\n  this.ranges = ranges;\n  this.primIndex = primIndex;\n};\n\nSelection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\nSelection.prototype.equals = function (other) {\n    var this$1 = this;\n\n  if (other == this) { return true }\n  if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var here = this$1.ranges[i], there = other.ranges[i];\n    if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n  }\n  return true\n};\n\nSelection.prototype.deepCopy = function () {\n    var this$1 = this;\n\n  var out = [];\n  for (var i = 0; i < this.ranges.length; i++)\n    { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n  return new Selection(out, this.primIndex)\n};\n\nSelection.prototype.somethingSelected = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.ranges.length; i++)\n    { if (!this$1.ranges[i].empty()) { return true } }\n  return false\n};\n\nSelection.prototype.contains = function (pos, end) {\n    var this$1 = this;\n\n  if (!end) { end = pos; }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var range = this$1.ranges[i];\n    if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n      { return i }\n  }\n  return -1\n};\n\nvar Range = function(anchor, head) {\n  this.anchor = anchor; this.head = head;\n};\n\nRange.prototype.from = function () { return minPos(this.anchor, this.head) };\nRange.prototype.to = function () { return maxPos(this.anchor, this.head) };\nRange.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n// Take an unsorted, potentially overlapping set of ranges, and\n// build a selection out of it. 'Consumes' ranges array (modifying\n// it).\nfunction normalizeSelection(ranges, primIndex) {\n  var prim = ranges[primIndex];\n  ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n  primIndex = indexOf(ranges, prim);\n  for (var i = 1; i < ranges.length; i++) {\n    var cur = ranges[i], prev = ranges[i - 1];\n    if (cmp(prev.to(), cur.from()) >= 0) {\n      var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n      var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n      if (i <= primIndex) { --primIndex; }\n      ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n    }\n  }\n  return new Selection(ranges, primIndex)\n}\n\nfunction simpleSelection(anchor, head) {\n  return new Selection([new Range(anchor, head || anchor)], 0)\n}\n\n// Compute the position of the end of a change (its 'to' property\n// refers to the pre-change end).\nfunction changeEnd(change) {\n  if (!change.text) { return change.to }\n  return Pos(change.from.line + change.text.length - 1,\n             lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n}\n\n// Adjust a position to refer to the post-change position of the\n// same text, or the end of the change if the change covers it.\nfunction adjustForChange(pos, change) {\n  if (cmp(pos, change.from) < 0) { return pos }\n  if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n  var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n  if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n  return Pos(line, ch)\n}\n\nfunction computeSelAfterChange(doc, change) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    var range = doc.sel.ranges[i];\n    out.push(new Range(adjustForChange(range.anchor, change),\n                       adjustForChange(range.head, change)));\n  }\n  return normalizeSelection(out, doc.sel.primIndex)\n}\n\nfunction offsetPos(pos, old, nw) {\n  if (pos.line == old.line)\n    { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n  else\n    { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n}\n\n// Used by replaceSelections to allow moving the selection to the\n// start or around the replaced test. Hint may be \"start\" or \"around\".\nfunction computeReplacedSel(doc, changes, hint) {\n  var out = [];\n  var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n    var from = offsetPos(change.from, oldPrev, newPrev);\n    var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n    oldPrev = change.to;\n    newPrev = to;\n    if (hint == \"around\") {\n      var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n      out[i] = new Range(inv ? to : from, inv ? from : to);\n    } else {\n      out[i] = new Range(from, from);\n    }\n  }\n  return new Selection(out, doc.sel.primIndex)\n}\n\n// Used to get the editor into a consistent state again when options change.\n\nfunction loadMode(cm) {\n  cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n  resetModeState(cm);\n}\n\nfunction resetModeState(cm) {\n  cm.doc.iter(function (line) {\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n  });\n  cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n  startWorker(cm, 100);\n  cm.state.modeGen++;\n  if (cm.curOp) { regChange(cm); }\n}\n\n// DOCUMENT DATA STRUCTURE\n\n// By default, updates that start and end at the beginning of a line\n// are treated specially, in order to make the association of line\n// widgets and marker elements with the text behave more intuitive.\nfunction isWholeLineUpdate(doc, change) {\n  return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n    (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n}\n\n// Perform a change on the document data structure.\nfunction updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n  function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n  function update(line, text, spans) {\n    updateLine(line, text, spans, estimateHeight$$1);\n    signalLater(line, \"change\", line, change);\n  }\n  function linesFor(start, end) {\n    var result = [];\n    for (var i = start; i < end; ++i)\n      { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n    return result\n  }\n\n  var from = change.from, to = change.to, text = change.text;\n  var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n  var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n  // Adjust the line structure\n  if (change.full) {\n    doc.insert(0, linesFor(0, text.length));\n    doc.remove(text.length, doc.size - text.length);\n  } else if (isWholeLineUpdate(doc, change)) {\n    // This is a whole-line replace. Treated specially to make\n    // sure line objects move the way they are supposed to.\n    var added = linesFor(0, text.length - 1);\n    update(lastLine, lastLine.text, lastSpans);\n    if (nlines) { doc.remove(from.line, nlines); }\n    if (added.length) { doc.insert(from.line, added); }\n  } else if (firstLine == lastLine) {\n    if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n    } else {\n      var added$1 = linesFor(1, text.length - 1);\n      added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      doc.insert(from.line + 1, added$1);\n    }\n  } else if (text.length == 1) {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n    doc.remove(from.line + 1, nlines);\n  } else {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n    var added$2 = linesFor(1, text.length - 1);\n    if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n    doc.insert(from.line + 1, added$2);\n  }\n\n  signalLater(doc, \"change\", doc, change);\n}\n\n// Call f for all linked documents.\nfunction linkedDocs(doc, f, sharedHistOnly) {\n  function propagate(doc, skip, sharedHist) {\n    if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n      var rel = doc.linked[i];\n      if (rel.doc == skip) { continue }\n      var shared = sharedHist && rel.sharedHist;\n      if (sharedHistOnly && !shared) { continue }\n      f(rel.doc, shared);\n      propagate(rel.doc, doc, shared);\n    } }\n  }\n  propagate(doc, null, true);\n}\n\n// Attach a document to an editor.\nfunction attachDoc(cm, doc) {\n  if (doc.cm) { throw new Error(\"This document is already in use.\") }\n  cm.doc = doc;\n  doc.cm = cm;\n  estimateLineHeights(cm);\n  loadMode(cm);\n  setDirectionClass(cm);\n  if (!cm.options.lineWrapping) { findMaxLine(cm); }\n  cm.options.mode = doc.modeOption;\n  regChange(cm);\n}\n\nfunction setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n}\n\nfunction directionChanged(cm) {\n  runInOp(cm, function () {\n    setDirectionClass(cm);\n    regChange(cm);\n  });\n}\n\nfunction History(startGen) {\n  // Arrays of change events and selections. Doing something adds an\n  // event to done and clears undo. Undoing moves events from done\n  // to undone, redoing moves them in the other direction.\n  this.done = []; this.undone = [];\n  this.undoDepth = Infinity;\n  // Used to track when changes can be merged into a single undo\n  // event\n  this.lastModTime = this.lastSelTime = 0;\n  this.lastOp = this.lastSelOp = null;\n  this.lastOrigin = this.lastSelOrigin = null;\n  // Used by the isClean() method\n  this.generation = this.maxGeneration = startGen || 1;\n}\n\n// Create a history change event from an updateDoc-style change\n// object.\nfunction historyChangeFromChange(doc, change) {\n  var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n  attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n  linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n  return histChange\n}\n\n// Pop all selection events off the end of a history array. Stop at\n// a change event.\nfunction clearSelectionEvents(array) {\n  while (array.length) {\n    var last = lst(array);\n    if (last.ranges) { array.pop(); }\n    else { break }\n  }\n}\n\n// Find the top change event in the history. Pop off selection\n// events that are in the way.\nfunction lastChangeEvent(hist, force) {\n  if (force) {\n    clearSelectionEvents(hist.done);\n    return lst(hist.done)\n  } else if (hist.done.length && !lst(hist.done).ranges) {\n    return lst(hist.done)\n  } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n    hist.done.pop();\n    return lst(hist.done)\n  }\n}\n\n// Register a change in the history. Merges changes that are within\n// a single operation, or are close together with an origin that\n// allows merging (starting with \"+\") into a single event.\nfunction addChangeToHistory(doc, change, selAfter, opId) {\n  var hist = doc.history;\n  hist.undone.length = 0;\n  var time = +new Date, cur;\n  var last;\n\n  if ((hist.lastOp == opId ||\n       hist.lastOrigin == change.origin && change.origin &&\n       ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n        change.origin.charAt(0) == \"*\")) &&\n      (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n    // Merge this change into the last event\n    last = lst(cur.changes);\n    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n      // Optimized case for simple insertion -- don't want to add\n      // new changesets for every character typed\n      last.to = changeEnd(change);\n    } else {\n      // Add new sub-event\n      cur.changes.push(historyChangeFromChange(doc, change));\n    }\n  } else {\n    // Can not be merged, start a new event.\n    var before = lst(hist.done);\n    if (!before || !before.ranges)\n      { pushSelectionToHistory(doc.sel, hist.done); }\n    cur = {changes: [historyChangeFromChange(doc, change)],\n           generation: hist.generation};\n    hist.done.push(cur);\n    while (hist.done.length > hist.undoDepth) {\n      hist.done.shift();\n      if (!hist.done[0].ranges) { hist.done.shift(); }\n    }\n  }\n  hist.done.push(selAfter);\n  hist.generation = ++hist.maxGeneration;\n  hist.lastModTime = hist.lastSelTime = time;\n  hist.lastOp = hist.lastSelOp = opId;\n  hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n  if (!last) { signal(doc, \"historyAdded\"); }\n}\n\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\n  var ch = origin.charAt(0);\n  return ch == \"*\" ||\n    ch == \"+\" &&\n    prev.ranges.length == sel.ranges.length &&\n    prev.somethingSelected() == sel.somethingSelected() &&\n    new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n}\n\n// Called whenever the selection changes, sets the new selection as\n// the pending selection in the history, and pushes the old pending\n// selection into the 'done' array when it was significantly\n// different (in number of selected ranges, emptiness, or time).\nfunction addSelectionToHistory(doc, sel, opId, options) {\n  var hist = doc.history, origin = options && options.origin;\n\n  // A new event is started when the previous origin does not match\n  // the current, or the origins don't allow matching. Origins\n  // starting with * are always merged, those starting with + are\n  // merged when similar and close together in time.\n  if (opId == hist.lastSelOp ||\n      (origin && hist.lastSelOrigin == origin &&\n       (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n        selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n    { hist.done[hist.done.length - 1] = sel; }\n  else\n    { pushSelectionToHistory(sel, hist.done); }\n\n  hist.lastSelTime = +new Date;\n  hist.lastSelOrigin = origin;\n  hist.lastSelOp = opId;\n  if (options && options.clearRedo !== false)\n    { clearSelectionEvents(hist.undone); }\n}\n\nfunction pushSelectionToHistory(sel, dest) {\n  var top = lst(dest);\n  if (!(top && top.ranges && top.equals(sel)))\n    { dest.push(sel); }\n}\n\n// Used to store marked span information in the history.\nfunction attachLocalSpans(doc, change, from, to) {\n  var existing = change[\"spans_\" + doc.id], n = 0;\n  doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n    if (line.markedSpans)\n      { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n    ++n;\n  });\n}\n\n// When un/re-doing restores text containing marked spans, those\n// that have been explicitly cleared should not be restored.\nfunction removeClearedSpans(spans) {\n  if (!spans) { return null }\n  var out;\n  for (var i = 0; i < spans.length; ++i) {\n    if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n    else if (out) { out.push(spans[i]); }\n  }\n  return !out ? spans : out.length ? out : null\n}\n\n// Retrieve and filter the old marked spans stored in a change event.\nfunction getOldSpans(doc, change) {\n  var found = change[\"spans_\" + doc.id];\n  if (!found) { return null }\n  var nw = [];\n  for (var i = 0; i < change.text.length; ++i)\n    { nw.push(removeClearedSpans(found[i])); }\n  return nw\n}\n\n// Used for un/re-doing changes from the history. Combines the\n// result of computing the existing spans with the set of spans that\n// existed in the history (so that deleting around a span and then\n// undoing brings back the span).\nfunction mergeOldSpans(doc, change) {\n  var old = getOldSpans(doc, change);\n  var stretched = stretchSpansOverChange(doc, change);\n  if (!old) { return stretched }\n  if (!stretched) { return old }\n\n  for (var i = 0; i < old.length; ++i) {\n    var oldCur = old[i], stretchCur = stretched[i];\n    if (oldCur && stretchCur) {\n      spans: for (var j = 0; j < stretchCur.length; ++j) {\n        var span = stretchCur[j];\n        for (var k = 0; k < oldCur.length; ++k)\n          { if (oldCur[k].marker == span.marker) { continue spans } }\n        oldCur.push(span);\n      }\n    } else if (stretchCur) {\n      old[i] = stretchCur;\n    }\n  }\n  return old\n}\n\n// Used both to provide a JSON-safe object in .getHistory, and, when\n// detaching a document, to split the history in two\nfunction copyHistoryArray(events, newGroup, instantiateSel) {\n  var copy = [];\n  for (var i = 0; i < events.length; ++i) {\n    var event = events[i];\n    if (event.ranges) {\n      copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n      continue\n    }\n    var changes = event.changes, newChanges = [];\n    copy.push({changes: newChanges});\n    for (var j = 0; j < changes.length; ++j) {\n      var change = changes[j], m = (void 0);\n      newChanges.push({from: change.from, to: change.to, text: change.text});\n      if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n        if (indexOf(newGroup, Number(m[1])) > -1) {\n          lst(newChanges)[prop] = change[prop];\n          delete change[prop];\n        }\n      } } }\n    }\n  }\n  return copy\n}\n\n// The 'scroll' parameter given to many of these indicated whether\n// the new cursor position should be scrolled into view after\n// modifying the selection.\n\n// If shift is held or the extend flag is set, extends a range to\n// include a given position (and optionally a second position).\n// Otherwise, simply returns the range between the given positions.\n// Used for cursor motion and such.\nfunction extendRange(range, head, other, extend) {\n  if (extend) {\n    var anchor = range.anchor;\n    if (other) {\n      var posBefore = cmp(head, anchor) < 0;\n      if (posBefore != (cmp(other, anchor) < 0)) {\n        anchor = head;\n        head = other;\n      } else if (posBefore != (cmp(head, other) < 0)) {\n        head = other;\n      }\n    }\n    return new Range(anchor, head)\n  } else {\n    return new Range(other || head, head)\n  }\n}\n\n// Extend the primary selection range, discard the rest.\nfunction extendSelection(doc, head, other, options, extend) {\n  if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n  setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n}\n\n// Extend all selections (pos is an array of selections with length\n// equal the number of selections)\nfunction extendSelections(doc, heads, options) {\n  var out = [];\n  var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n  for (var i = 0; i < doc.sel.ranges.length; i++)\n    { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n  var newSel = normalizeSelection(out, doc.sel.primIndex);\n  setSelection(doc, newSel, options);\n}\n\n// Updates a single range in the selection.\nfunction replaceOneSelection(doc, i, range, options) {\n  var ranges = doc.sel.ranges.slice(0);\n  ranges[i] = range;\n  setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n}\n\n// Reset the selection to a single range.\nfunction setSimpleSelection(doc, anchor, head, options) {\n  setSelection(doc, simpleSelection(anchor, head), options);\n}\n\n// Give beforeSelectionChange handlers a change to influence a\n// selection update.\nfunction filterSelectionChange(doc, sel, options) {\n  var obj = {\n    ranges: sel.ranges,\n    update: function(ranges) {\n      var this$1 = this;\n\n      this.ranges = [];\n      for (var i = 0; i < ranges.length; i++)\n        { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                   clipPos(doc, ranges[i].head)); }\n    },\n    origin: options && options.origin\n  };\n  signal(doc, \"beforeSelectionChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n  if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }\n  else { return sel }\n}\n\nfunction setSelectionReplaceHistory(doc, sel, options) {\n  var done = doc.history.done, last = lst(done);\n  if (last && last.ranges) {\n    done[done.length - 1] = sel;\n    setSelectionNoUndo(doc, sel, options);\n  } else {\n    setSelection(doc, sel, options);\n  }\n}\n\n// Set a new selection.\nfunction setSelection(doc, sel, options) {\n  setSelectionNoUndo(doc, sel, options);\n  addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n}\n\nfunction setSelectionNoUndo(doc, sel, options) {\n  if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n    { sel = filterSelectionChange(doc, sel, options); }\n\n  var bias = options && options.bias ||\n    (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n  setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n  if (!(options && options.scroll === false) && doc.cm)\n    { ensureCursorVisible(doc.cm); }\n}\n\nfunction setSelectionInner(doc, sel) {\n  if (sel.equals(doc.sel)) { return }\n\n  doc.sel = sel;\n\n  if (doc.cm) {\n    doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n    signalCursorActivity(doc.cm);\n  }\n  signalLater(doc, \"cursorActivity\", doc);\n}\n\n// Verify that the selection does not partially select any atomic\n// marked ranges.\nfunction reCheckSelection(doc) {\n  setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n}\n\n// Return a selection that does not partially select any atomic\n// ranges.\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\n  var out;\n  for (var i = 0; i < sel.ranges.length; i++) {\n    var range = sel.ranges[i];\n    var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n    var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n    var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n    if (out || newAnchor != range.anchor || newHead != range.head) {\n      if (!out) { out = sel.ranges.slice(0, i); }\n      out[i] = new Range(newAnchor, newHead);\n    }\n  }\n  return out ? normalizeSelection(out, sel.primIndex) : sel\n}\n\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n  var line = getLine(doc, pos.line);\n  if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n    var sp = line.markedSpans[i], m = sp.marker;\n    if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n        (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n      if (mayClear) {\n        signal(m, \"beforeCursorEnter\");\n        if (m.explicitlyCleared) {\n          if (!line.markedSpans) { break }\n          else {--i; continue}\n        }\n      }\n      if (!m.atomic) { continue }\n\n      if (oldPos) {\n        var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n        if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n          { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n          { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n      }\n\n      var far = m.find(dir < 0 ? -1 : 1);\n      if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n        { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n      return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n    }\n  } }\n  return pos\n}\n\n// Ensure a given position is not inside an atomic range.\nfunction skipAtomic(doc, pos, oldPos, bias, mayClear) {\n  var dir = bias || 1;\n  var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n      skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n  if (!found) {\n    doc.cantEdit = true;\n    return Pos(doc.first, 0)\n  }\n  return found\n}\n\nfunction movePos(doc, pos, dir, line) {\n  if (dir < 0 && pos.ch == 0) {\n    if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n    else { return null }\n  } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n    if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n    else { return null }\n  } else {\n    return new Pos(pos.line, pos.ch + dir)\n  }\n}\n\nfunction selectAll(cm) {\n  cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n}\n\n// UPDATING\n\n// Allow \"beforeChange\" event handlers to influence a change\nfunction filterChange(doc, change, update) {\n  var obj = {\n    canceled: false,\n    from: change.from,\n    to: change.to,\n    text: change.text,\n    origin: change.origin,\n    cancel: function () { return obj.canceled = true; }\n  };\n  if (update) { obj.update = function (from, to, text, origin) {\n    if (from) { obj.from = clipPos(doc, from); }\n    if (to) { obj.to = clipPos(doc, to); }\n    if (text) { obj.text = text; }\n    if (origin !== undefined) { obj.origin = origin; }\n  }; }\n  signal(doc, \"beforeChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n  if (obj.canceled) { return null }\n  return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n}\n\n// Apply a change to a document, and add it to the document's\n// history, and propagating it to all linked documents.\nfunction makeChange(doc, change, ignoreReadOnly) {\n  if (doc.cm) {\n    if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n    if (doc.cm.state.suppressEdits) { return }\n  }\n\n  if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n    change = filterChange(doc, change, true);\n    if (!change) { return }\n  }\n\n  // Possibly split or suppress the update based on the presence\n  // of read-only spans in its range.\n  var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n  if (split) {\n    for (var i = split.length - 1; i >= 0; --i)\n      { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n  } else {\n    makeChangeInner(doc, change);\n  }\n}\n\nfunction makeChangeInner(doc, change) {\n  if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n  var selAfter = computeSelAfterChange(doc, change);\n  addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n  makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n  var rebased = [];\n\n  linkedDocs(doc, function (doc, sharedHist) {\n    if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n      rebaseHist(doc.history, change);\n      rebased.push(doc.history);\n    }\n    makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n  });\n}\n\n// Revert a change stored in a document's history.\nfunction makeChangeFromHistory(doc, type, allowSelectionOnly) {\n  var suppress = doc.cm && doc.cm.state.suppressEdits;\n  if (suppress && !allowSelectionOnly) { return }\n\n  var hist = doc.history, event, selAfter = doc.sel;\n  var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n  // Verify that there is a useable event (so that ctrl-z won't\n  // needlessly clear selection events)\n  var i = 0;\n  for (; i < source.length; i++) {\n    event = source[i];\n    if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n      { break }\n  }\n  if (i == source.length) { return }\n  hist.lastOrigin = hist.lastSelOrigin = null;\n\n  for (;;) {\n    event = source.pop();\n    if (event.ranges) {\n      pushSelectionToHistory(event, dest);\n      if (allowSelectionOnly && !event.equals(doc.sel)) {\n        setSelection(doc, event, {clearRedo: false});\n        return\n      }\n      selAfter = event;\n    } else if (suppress) {\n      source.push(event);\n      return\n    } else { break }\n  }\n\n  // Build up a reverse change object to add to the opposite history\n  // stack (redo when undoing, and vice versa).\n  var antiChanges = [];\n  pushSelectionToHistory(selAfter, dest);\n  dest.push({changes: antiChanges, generation: hist.generation});\n  hist.generation = event.generation || ++hist.maxGeneration;\n\n  var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n  var loop = function ( i ) {\n    var change = event.changes[i];\n    change.origin = type;\n    if (filter && !filterChange(doc, change, false)) {\n      source.length = 0;\n      return {}\n    }\n\n    antiChanges.push(historyChangeFromChange(doc, change));\n\n    var after = i ? computeSelAfterChange(doc, change) : lst(source);\n    makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n    if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n    var rebased = [];\n\n    // Propagate to the linked documents\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n    });\n  };\n\n  for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n    var returned = loop( i$1 );\n\n    if ( returned ) return returned.v;\n  }\n}\n\n// Sub-views need their line numbers shifted when text is added\n// above or below them in the parent document.\nfunction shiftDoc(doc, distance) {\n  if (distance == 0) { return }\n  doc.first += distance;\n  doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n    Pos(range.anchor.line + distance, range.anchor.ch),\n    Pos(range.head.line + distance, range.head.ch)\n  ); }), doc.sel.primIndex);\n  if (doc.cm) {\n    regChange(doc.cm, doc.first, doc.first - distance, distance);\n    for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n      { regLineChange(doc.cm, l, \"gutter\"); }\n  }\n}\n\n// More lower-level change function, handling only a single document\n// (not linked ones).\nfunction makeChangeSingleDoc(doc, change, selAfter, spans) {\n  if (doc.cm && !doc.cm.curOp)\n    { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n  if (change.to.line < doc.first) {\n    shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n    return\n  }\n  if (change.from.line > doc.lastLine()) { return }\n\n  // Clip the change to the size of this doc\n  if (change.from.line < doc.first) {\n    var shift = change.text.length - 1 - (doc.first - change.from.line);\n    shiftDoc(doc, shift);\n    change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n              text: [lst(change.text)], origin: change.origin};\n  }\n  var last = doc.lastLine();\n  if (change.to.line > last) {\n    change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n              text: [change.text[0]], origin: change.origin};\n  }\n\n  change.removed = getBetween(doc, change.from, change.to);\n\n  if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n  if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n  else { updateDoc(doc, change, spans); }\n  setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n}\n\n// Handle the interaction of a change to a document with the editor\n// that this document is part of.\nfunction makeChangeSingleDocInEditor(cm, change, spans) {\n  var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n  var recomputeMaxLength = false, checkWidthStart = from.line;\n  if (!cm.options.lineWrapping) {\n    checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n    doc.iter(checkWidthStart, to.line + 1, function (line) {\n      if (line == display.maxLine) {\n        recomputeMaxLength = true;\n        return true\n      }\n    });\n  }\n\n  if (doc.sel.contains(change.from, change.to) > -1)\n    { signalCursorActivity(cm); }\n\n  updateDoc(doc, change, spans, estimateHeight(cm));\n\n  if (!cm.options.lineWrapping) {\n    doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n      var len = lineLength(line);\n      if (len > display.maxLineLength) {\n        display.maxLine = line;\n        display.maxLineLength = len;\n        display.maxLineChanged = true;\n        recomputeMaxLength = false;\n      }\n    });\n    if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n  }\n\n  retreatFrontier(doc, from.line);\n  startWorker(cm, 400);\n\n  var lendiff = change.text.length - (to.line - from.line) - 1;\n  // Remember that these lines changed, for updating the display\n  if (change.full)\n    { regChange(cm); }\n  else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n    { regLineChange(cm, from.line, \"text\"); }\n  else\n    { regChange(cm, from.line, to.line + 1, lendiff); }\n\n  var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n  if (changeHandler || changesHandler) {\n    var obj = {\n      from: from, to: to,\n      text: change.text,\n      removed: change.removed,\n      origin: change.origin\n    };\n    if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n    if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n  }\n  cm.display.selForContextMenu = null;\n}\n\nfunction replaceRange(doc, code, from, to, origin) {\n  if (!to) { to = from; }\n  if (cmp(to, from) < 0) { var assign;\n    (assign = [to, from], from = assign[0], to = assign[1]); }\n  if (typeof code == \"string\") { code = doc.splitLines(code); }\n  makeChange(doc, {from: from, to: to, text: code, origin: origin});\n}\n\n// Rebasing/resetting history to deal with externally-sourced changes\n\nfunction rebaseHistSelSingle(pos, from, to, diff) {\n  if (to < pos.line) {\n    pos.line += diff;\n  } else if (from < pos.line) {\n    pos.line = from;\n    pos.ch = 0;\n  }\n}\n\n// Tries to rebase an array of history events given a change in the\n// document. If the change touches the same lines as the event, the\n// event, and everything 'behind' it, is discarded. If the change is\n// before the event, the event's positions are updated. Uses a\n// copy-on-write scheme for the positions, to avoid having to\n// reallocate them all on every rebase, but also avoid problems with\n// shared position objects being unsafely updated.\nfunction rebaseHistArray(array, from, to, diff) {\n  for (var i = 0; i < array.length; ++i) {\n    var sub = array[i], ok = true;\n    if (sub.ranges) {\n      if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n      for (var j = 0; j < sub.ranges.length; j++) {\n        rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n        rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n      }\n      continue\n    }\n    for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n      var cur = sub.changes[j$1];\n      if (to < cur.from.line) {\n        cur.from = Pos(cur.from.line + diff, cur.from.ch);\n        cur.to = Pos(cur.to.line + diff, cur.to.ch);\n      } else if (from <= cur.to.line) {\n        ok = false;\n        break\n      }\n    }\n    if (!ok) {\n      array.splice(0, i + 1);\n      i = 0;\n    }\n  }\n}\n\nfunction rebaseHist(hist, change) {\n  var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n  rebaseHistArray(hist.done, from, to, diff);\n  rebaseHistArray(hist.undone, from, to, diff);\n}\n\n// Utility for applying a change to a line by handle or number,\n// returning the number and optionally registering the line as\n// changed.\nfunction changeLine(doc, handle, changeType, op) {\n  var no = handle, line = handle;\n  if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n  else { no = lineNo(handle); }\n  if (no == null) { return null }\n  if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n  return line\n}\n\n// The document is represented as a BTree consisting of leaves, with\n// chunk of lines in them, and branches, with up to ten leaves or\n// other branch nodes below them. The top node is always a branch\n// node, and is the document object itself (meaning it has\n// additional methods and properties).\n//\n// All nodes have parent links. The tree is used both to go from\n// line numbers to line objects, and to go from objects to numbers.\n// It also indexes by height, and is used to convert between height\n// and line object, and to find the total height of the document.\n//\n// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\nfunction LeafChunk(lines) {\n  var this$1 = this;\n\n  this.lines = lines;\n  this.parent = null;\n  var height = 0;\n  for (var i = 0; i < lines.length; ++i) {\n    lines[i].parent = this$1;\n    height += lines[i].height;\n  }\n  this.height = height;\n}\n\nLeafChunk.prototype = {\n  chunkSize: function() { return this.lines.length },\n\n  // Remove the n lines at offset 'at'.\n  removeInner: function(at, n) {\n    var this$1 = this;\n\n    for (var i = at, e = at + n; i < e; ++i) {\n      var line = this$1.lines[i];\n      this$1.height -= line.height;\n      cleanUpLine(line);\n      signalLater(line, \"delete\");\n    }\n    this.lines.splice(at, n);\n  },\n\n  // Helper used to collapse a small branch into a single leaf.\n  collapse: function(lines) {\n    lines.push.apply(lines, this.lines);\n  },\n\n  // Insert the given array of lines at offset 'at', count them as\n  // having the given height.\n  insertInner: function(at, lines, height) {\n    var this$1 = this;\n\n    this.height += height;\n    this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n    for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n  },\n\n  // Used to iterate over a part of the tree.\n  iterN: function(at, n, op) {\n    var this$1 = this;\n\n    for (var e = at + n; at < e; ++at)\n      { if (op(this$1.lines[at])) { return true } }\n  }\n};\n\nfunction BranchChunk(children) {\n  var this$1 = this;\n\n  this.children = children;\n  var size = 0, height = 0;\n  for (var i = 0; i < children.length; ++i) {\n    var ch = children[i];\n    size += ch.chunkSize(); height += ch.height;\n    ch.parent = this$1;\n  }\n  this.size = size;\n  this.height = height;\n  this.parent = null;\n}\n\nBranchChunk.prototype = {\n  chunkSize: function() { return this.size },\n\n  removeInner: function(at, n) {\n    var this$1 = this;\n\n    this.size -= n;\n    for (var i = 0; i < this.children.length; ++i) {\n      var child = this$1.children[i], sz = child.chunkSize();\n      if (at < sz) {\n        var rm = Math.min(n, sz - at), oldHeight = child.height;\n        child.removeInner(at, rm);\n        this$1.height -= oldHeight - child.height;\n        if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n        if ((n -= rm) == 0) { break }\n        at = 0;\n      } else { at -= sz; }\n    }\n    // If the result is smaller than 25 lines, ensure that it is a\n    // single leaf node.\n    if (this.size - n < 25 &&\n        (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n      var lines = [];\n      this.collapse(lines);\n      this.children = [new LeafChunk(lines)];\n      this.children[0].parent = this;\n    }\n  },\n\n  collapse: function(lines) {\n    var this$1 = this;\n\n    for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n  },\n\n  insertInner: function(at, lines, height) {\n    var this$1 = this;\n\n    this.size += lines.length;\n    this.height += height;\n    for (var i = 0; i < this.children.length; ++i) {\n      var child = this$1.children[i], sz = child.chunkSize();\n      if (at <= sz) {\n        child.insertInner(at, lines, height);\n        if (child.lines && child.lines.length > 50) {\n          // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n          // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n          var remaining = child.lines.length % 25 + 25;\n          for (var pos = remaining; pos < child.lines.length;) {\n            var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n            child.height -= leaf.height;\n            this$1.children.splice(++i, 0, leaf);\n            leaf.parent = this$1;\n          }\n          child.lines = child.lines.slice(0, remaining);\n          this$1.maybeSpill();\n        }\n        break\n      }\n      at -= sz;\n    }\n  },\n\n  // When a node has grown, check whether it should be split.\n  maybeSpill: function() {\n    if (this.children.length <= 10) { return }\n    var me = this;\n    do {\n      var spilled = me.children.splice(me.children.length - 5, 5);\n      var sibling = new BranchChunk(spilled);\n      if (!me.parent) { // Become the parent node\n        var copy = new BranchChunk(me.children);\n        copy.parent = me;\n        me.children = [copy, sibling];\n        me = copy;\n     } else {\n        me.size -= sibling.size;\n        me.height -= sibling.height;\n        var myIndex = indexOf(me.parent.children, me);\n        me.parent.children.splice(myIndex + 1, 0, sibling);\n      }\n      sibling.parent = me.parent;\n    } while (me.children.length > 10)\n    me.parent.maybeSpill();\n  },\n\n  iterN: function(at, n, op) {\n    var this$1 = this;\n\n    for (var i = 0; i < this.children.length; ++i) {\n      var child = this$1.children[i], sz = child.chunkSize();\n      if (at < sz) {\n        var used = Math.min(n, sz - at);\n        if (child.iterN(at, used, op)) { return true }\n        if ((n -= used) == 0) { break }\n        at = 0;\n      } else { at -= sz; }\n    }\n  }\n};\n\n// Line widgets are block elements displayed above or below a line.\n\nvar LineWidget = function(doc, node, options) {\n  var this$1 = this;\n\n  if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n    { this$1[opt] = options[opt]; } } }\n  this.doc = doc;\n  this.node = node;\n};\n\nLineWidget.prototype.clear = function () {\n    var this$1 = this;\n\n  var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n  if (no == null || !ws) { return }\n  for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n  if (!ws.length) { line.widgets = null; }\n  var height = widgetHeight(this);\n  updateLineHeight(line, Math.max(0, line.height - height));\n  if (cm) {\n    runInOp(cm, function () {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n    });\n    signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n  }\n};\n\nLineWidget.prototype.changed = function () {\n    var this$1 = this;\n\n  var oldH = this.height, cm = this.doc.cm, line = this.line;\n  this.height = null;\n  var diff = widgetHeight(this) - oldH;\n  if (!diff) { return }\n  updateLineHeight(line, line.height + diff);\n  if (cm) {\n    runInOp(cm, function () {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n    });\n  }\n};\neventMixin(LineWidget);\n\nfunction adjustScrollWhenAboveVisible(cm, line, diff) {\n  if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n    { addToScrollTop(cm, diff); }\n}\n\nfunction addLineWidget(doc, handle, node, options) {\n  var widget = new LineWidget(doc, node, options);\n  var cm = doc.cm;\n  if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n  changeLine(doc, handle, \"widget\", function (line) {\n    var widgets = line.widgets || (line.widgets = []);\n    if (widget.insertAt == null) { widgets.push(widget); }\n    else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n    widget.line = line;\n    if (cm && !lineIsHidden(doc, line)) {\n      var aboveVisible = heightAtLine(line) < doc.scrollTop;\n      updateLineHeight(line, line.height + widgetHeight(widget));\n      if (aboveVisible) { addToScrollTop(cm, widget.height); }\n      cm.curOp.forceUpdate = true;\n    }\n    return true\n  });\n  if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n  return widget\n}\n\n// TEXTMARKERS\n\n// Created with markText and setBookmark methods. A TextMarker is a\n// handle that can be used to clear or find a marked position in the\n// document. Line objects hold arrays (markedSpans) containing\n// {from, to, marker} object pointing to such marker objects, and\n// indicating that such a marker is present on that line. Multiple\n// lines may point to the same marker when it spans across lines.\n// The spans will have null for their from/to properties when the\n// marker continues beyond the start/end of the line. Markers have\n// links back to the lines they currently touch.\n\n// Collapsed markers have unique ids, in order to be able to order\n// them, which is needed for uniquely determining an outer marker\n// when they overlap (they may nest, but not partially overlap).\nvar nextMarkerId = 0;\n\nvar TextMarker = function(doc, type) {\n  this.lines = [];\n  this.type = type;\n  this.doc = doc;\n  this.id = ++nextMarkerId;\n};\n\n// Clear the marker.\nTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  var cm = this.doc.cm, withOp = cm && !cm.curOp;\n  if (withOp) { startOperation(cm); }\n  if (hasHandler(this, \"clear\")) {\n    var found = this.find();\n    if (found) { signalLater(this, \"clear\", found.from, found.to); }\n  }\n  var min = null, max = null;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n    else if (cm) {\n      if (span.to != null) { max = lineNo(line); }\n      if (span.from != null) { min = lineNo(line); }\n    }\n    line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n    if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n      { updateLineHeight(line, textHeight(cm.display)); }\n  }\n  if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n    var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n    if (len > cm.display.maxLineLength) {\n      cm.display.maxLine = visual;\n      cm.display.maxLineLength = len;\n      cm.display.maxLineChanged = true;\n    }\n  } }\n\n  if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n  this.lines.length = 0;\n  this.explicitlyCleared = true;\n  if (this.atomic && this.doc.cantEdit) {\n    this.doc.cantEdit = false;\n    if (cm) { reCheckSelection(cm.doc); }\n  }\n  if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n  if (withOp) { endOperation(cm); }\n  if (this.parent) { this.parent.clear(); }\n};\n\n// Find the position of the marker in the document. Returns a {from,\n// to} object by default. Side can be passed to get a specific side\n// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n// Pos objects returned contain a line object, rather than a line\n// number (used to prevent looking up the same line twice).\nTextMarker.prototype.find = function (side, lineObj) {\n    var this$1 = this;\n\n  if (side == null && this.type == \"bookmark\") { side = 1; }\n  var from, to;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (span.from != null) {\n      from = Pos(lineObj ? line : lineNo(line), span.from);\n      if (side == -1) { return from }\n    }\n    if (span.to != null) {\n      to = Pos(lineObj ? line : lineNo(line), span.to);\n      if (side == 1) { return to }\n    }\n  }\n  return from && {from: from, to: to}\n};\n\n// Signals that the marker's widget changed, and surrounding layout\n// should be recomputed.\nTextMarker.prototype.changed = function () {\n    var this$1 = this;\n\n  var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n  if (!pos || !cm) { return }\n  runInOp(cm, function () {\n    var line = pos.line, lineN = lineNo(pos.line);\n    var view = findViewForLine(cm, lineN);\n    if (view) {\n      clearLineMeasurementCacheFor(view);\n      cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n    }\n    cm.curOp.updateMaxLine = true;\n    if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n      var oldHeight = widget.height;\n      widget.height = null;\n      var dHeight = widgetHeight(widget) - oldHeight;\n      if (dHeight)\n        { updateLineHeight(line, line.height + dHeight); }\n    }\n    signalLater(cm, \"markerChanged\", cm, this$1);\n  });\n};\n\nTextMarker.prototype.attachLine = function (line) {\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;\n    if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n      { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n  }\n  this.lines.push(line);\n};\n\nTextMarker.prototype.detachLine = function (line) {\n  this.lines.splice(indexOf(this.lines, line), 1);\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n  }\n};\neventMixin(TextMarker);\n\n// Create a marker, wire it up to the right lines, and\nfunction markText(doc, from, to, options, type) {\n  // Shared markers (across linked documents) are handled separately\n  // (markTextShared will call out to this again, once per\n  // document).\n  if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n  // Ensure we are in an operation.\n  if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n  var marker = new TextMarker(doc, type), diff = cmp(from, to);\n  if (options) { copyObj(options, marker, false); }\n  // Don't connect empty markers unless clearWhenEmpty is false\n  if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n    { return marker }\n  if (marker.replacedWith) {\n    // Showing up as a widget implies collapsed (widget replaces text)\n    marker.collapsed = true;\n    marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n    if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n    if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n  }\n  if (marker.collapsed) {\n    if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n        from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n      { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n    seeCollapsedSpans();\n  }\n\n  if (marker.addToHistory)\n    { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n  var curLine = from.line, cm = doc.cm, updateMaxLine;\n  doc.iter(curLine, to.line + 1, function (line) {\n    if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n      { updateMaxLine = true; }\n    if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n    addMarkedSpan(line, new MarkedSpan(marker,\n                                       curLine == from.line ? from.ch : null,\n                                       curLine == to.line ? to.ch : null));\n    ++curLine;\n  });\n  // lineIsHidden depends on the presence of the spans, so needs a second pass\n  if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n    if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n  }); }\n\n  if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n  if (marker.readOnly) {\n    seeReadOnlySpans();\n    if (doc.history.done.length || doc.history.undone.length)\n      { doc.clearHistory(); }\n  }\n  if (marker.collapsed) {\n    marker.id = ++nextMarkerId;\n    marker.atomic = true;\n  }\n  if (cm) {\n    // Sync editor state\n    if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n    if (marker.collapsed)\n      { regChange(cm, from.line, to.line + 1); }\n    else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\n      { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n    if (marker.atomic) { reCheckSelection(cm.doc); }\n    signalLater(cm, \"markerAdded\", cm, marker);\n  }\n  return marker\n}\n\n// SHARED TEXTMARKERS\n\n// A shared marker spans multiple linked documents. It is\n// implemented as a meta-marker-object controlling multiple normal\n// markers.\nvar SharedTextMarker = function(markers, primary) {\n  var this$1 = this;\n\n  this.markers = markers;\n  this.primary = primary;\n  for (var i = 0; i < markers.length; ++i)\n    { markers[i].parent = this$1; }\n};\n\nSharedTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  this.explicitlyCleared = true;\n  for (var i = 0; i < this.markers.length; ++i)\n    { this$1.markers[i].clear(); }\n  signalLater(this, \"clear\");\n};\n\nSharedTextMarker.prototype.find = function (side, lineObj) {\n  return this.primary.find(side, lineObj)\n};\neventMixin(SharedTextMarker);\n\nfunction markTextShared(doc, from, to, options, type) {\n  options = copyObj(options);\n  options.shared = false;\n  var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n  var widget = options.widgetNode;\n  linkedDocs(doc, function (doc) {\n    if (widget) { options.widgetNode = widget.cloneNode(true); }\n    markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n    for (var i = 0; i < doc.linked.length; ++i)\n      { if (doc.linked[i].isParent) { return } }\n    primary = lst(markers);\n  });\n  return new SharedTextMarker(markers, primary)\n}\n\nfunction findSharedMarkers(doc) {\n  return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n}\n\nfunction copySharedMarkers(doc, markers) {\n  for (var i = 0; i < markers.length; i++) {\n    var marker = markers[i], pos = marker.find();\n    var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n    if (cmp(mFrom, mTo)) {\n      var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n      marker.markers.push(subMark);\n      subMark.parent = marker;\n    }\n  }\n}\n\nfunction detachSharedMarkers(markers) {\n  var loop = function ( i ) {\n    var marker = markers[i], linked = [marker.primary.doc];\n    linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n    for (var j = 0; j < marker.markers.length; j++) {\n      var subMarker = marker.markers[j];\n      if (indexOf(linked, subMarker.doc) == -1) {\n        subMarker.parent = null;\n        marker.markers.splice(j--, 1);\n      }\n    }\n  };\n\n  for (var i = 0; i < markers.length; i++) loop( i );\n}\n\nvar nextDocId = 0;\nvar Doc = function(text, mode, firstLine, lineSep, direction) {\n  if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n  if (firstLine == null) { firstLine = 0; }\n\n  BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n  this.first = firstLine;\n  this.scrollTop = this.scrollLeft = 0;\n  this.cantEdit = false;\n  this.cleanGeneration = 1;\n  this.modeFrontier = this.highlightFrontier = firstLine;\n  var start = Pos(firstLine, 0);\n  this.sel = simpleSelection(start);\n  this.history = new History(null);\n  this.id = ++nextDocId;\n  this.modeOption = mode;\n  this.lineSep = lineSep;\n  this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n  this.extend = false;\n\n  if (typeof text == \"string\") { text = this.splitLines(text); }\n  updateDoc(this, {from: start, to: start, text: text});\n  setSelection(this, simpleSelection(start), sel_dontScroll);\n};\n\nDoc.prototype = createObj(BranchChunk.prototype, {\n  constructor: Doc,\n  // Iterate over the document. Supports two forms -- with only one\n  // argument, it calls that for each line in the document. With\n  // three, it iterates over the range given by the first two (with\n  // the second being non-inclusive).\n  iter: function(from, to, op) {\n    if (op) { this.iterN(from - this.first, to - from, op); }\n    else { this.iterN(this.first, this.first + this.size, from); }\n  },\n\n  // Non-public interface for adding and removing lines.\n  insert: function(at, lines) {\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n    this.insertInner(at - this.first, lines, height);\n  },\n  remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n  // From here, the methods are part of the public interface. Most\n  // are also available from CodeMirror (editor) instances.\n\n  getValue: function(lineSep) {\n    var lines = getLines(this, this.first, this.first + this.size);\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n  setValue: docMethodOp(function(code) {\n    var top = Pos(this.first, 0), last = this.first + this.size - 1;\n    makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                      text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n    if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n    setSelection(this, simpleSelection(top), sel_dontScroll);\n  }),\n  replaceRange: function(code, from, to, origin) {\n    from = clipPos(this, from);\n    to = to ? clipPos(this, to) : from;\n    replaceRange(this, code, from, to, origin);\n  },\n  getRange: function(from, to, lineSep) {\n    var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n\n  getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n  getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n  getLineNumber: function(line) {return lineNo(line)},\n\n  getLineHandleVisualStart: function(line) {\n    if (typeof line == \"number\") { line = getLine(this, line); }\n    return visualLine(line)\n  },\n\n  lineCount: function() {return this.size},\n  firstLine: function() {return this.first},\n  lastLine: function() {return this.first + this.size - 1},\n\n  clipPos: function(pos) {return clipPos(this, pos)},\n\n  getCursor: function(start) {\n    var range$$1 = this.sel.primary(), pos;\n    if (start == null || start == \"head\") { pos = range$$1.head; }\n    else if (start == \"anchor\") { pos = range$$1.anchor; }\n    else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n    else { pos = range$$1.from(); }\n    return pos\n  },\n  listSelections: function() { return this.sel.ranges },\n  somethingSelected: function() {return this.sel.somethingSelected()},\n\n  setCursor: docMethodOp(function(line, ch, options) {\n    setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n  }),\n  setSelection: docMethodOp(function(anchor, head, options) {\n    setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n  }),\n  extendSelection: docMethodOp(function(head, other, options) {\n    extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n  }),\n  extendSelections: docMethodOp(function(heads, options) {\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  extendSelectionsBy: docMethodOp(function(f, options) {\n    var heads = map(this.sel.ranges, f);\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  setSelections: docMethodOp(function(ranges, primary, options) {\n    var this$1 = this;\n\n    if (!ranges.length) { return }\n    var out = [];\n    for (var i = 0; i < ranges.length; i++)\n      { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n                         clipPos(this$1, ranges[i].head)); }\n    if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n    setSelection(this, normalizeSelection(out, primary), options);\n  }),\n  addSelection: docMethodOp(function(anchor, head, options) {\n    var ranges = this.sel.ranges.slice(0);\n    ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n    setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n  }),\n\n  getSelection: function(lineSep) {\n    var this$1 = this;\n\n    var ranges = this.sel.ranges, lines;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      lines = lines ? lines.concat(sel) : sel;\n    }\n    if (lineSep === false) { return lines }\n    else { return lines.join(lineSep || this.lineSeparator()) }\n  },\n  getSelections: function(lineSep) {\n    var this$1 = this;\n\n    var parts = [], ranges = this.sel.ranges;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n      parts[i] = sel;\n    }\n    return parts\n  },\n  replaceSelection: function(code, collapse, origin) {\n    var dup = [];\n    for (var i = 0; i < this.sel.ranges.length; i++)\n      { dup[i] = code; }\n    this.replaceSelections(dup, collapse, origin || \"+input\");\n  },\n  replaceSelections: docMethodOp(function(code, collapse, origin) {\n    var this$1 = this;\n\n    var changes = [], sel = this.sel;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range$$1 = sel.ranges[i];\n      changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n    }\n    var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n    for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n      { makeChange(this$1, changes[i$1]); }\n    if (newSel) { setSelectionReplaceHistory(this, newSel); }\n    else if (this.cm) { ensureCursorVisible(this.cm); }\n  }),\n  undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n  redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n  undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n  redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n  setExtending: function(val) {this.extend = val;},\n  getExtending: function() {return this.extend},\n\n  historySize: function() {\n    var hist = this.history, done = 0, undone = 0;\n    for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n    for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n    return {undo: done, redo: undone}\n  },\n  clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n  markClean: function() {\n    this.cleanGeneration = this.changeGeneration(true);\n  },\n  changeGeneration: function(forceSplit) {\n    if (forceSplit)\n      { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n    return this.history.generation\n  },\n  isClean: function (gen) {\n    return this.history.generation == (gen || this.cleanGeneration)\n  },\n\n  getHistory: function() {\n    return {done: copyHistoryArray(this.history.done),\n            undone: copyHistoryArray(this.history.undone)}\n  },\n  setHistory: function(histData) {\n    var hist = this.history = new History(this.history.maxGeneration);\n    hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n    hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n  },\n\n  setGutterMarker: docMethodOp(function(line, gutterID, value) {\n    return changeLine(this, line, \"gutter\", function (line) {\n      var markers = line.gutterMarkers || (line.gutterMarkers = {});\n      markers[gutterID] = value;\n      if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n      return true\n    })\n  }),\n\n  clearGutter: docMethodOp(function(gutterID) {\n    var this$1 = this;\n\n    this.iter(function (line) {\n      if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n        changeLine(this$1, line, \"gutter\", function () {\n          line.gutterMarkers[gutterID] = null;\n          if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n          return true\n        });\n      }\n    });\n  }),\n\n  lineInfo: function(line) {\n    var n;\n    if (typeof line == \"number\") {\n      if (!isLine(this, line)) { return null }\n      n = line;\n      line = getLine(this, line);\n      if (!line) { return null }\n    } else {\n      n = lineNo(line);\n      if (n == null) { return null }\n    }\n    return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n            textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n            widgets: line.widgets}\n  },\n\n  addLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      if (!line[prop]) { line[prop] = cls; }\n      else if (classTest(cls).test(line[prop])) { return false }\n      else { line[prop] += \" \" + cls; }\n      return true\n    })\n  }),\n  removeLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      var cur = line[prop];\n      if (!cur) { return false }\n      else if (cls == null) { line[prop] = null; }\n      else {\n        var found = cur.match(classTest(cls));\n        if (!found) { return false }\n        var end = found.index + found[0].length;\n        line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n      }\n      return true\n    })\n  }),\n\n  addLineWidget: docMethodOp(function(handle, node, options) {\n    return addLineWidget(this, handle, node, options)\n  }),\n  removeLineWidget: function(widget) { widget.clear(); },\n\n  markText: function(from, to, options) {\n    return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n  },\n  setBookmark: function(pos, options) {\n    var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                    insertLeft: options && options.insertLeft,\n                    clearWhenEmpty: false, shared: options && options.shared,\n                    handleMouseEvents: options && options.handleMouseEvents};\n    pos = clipPos(this, pos);\n    return markText(this, pos, pos, realOpts, \"bookmark\")\n  },\n  findMarksAt: function(pos) {\n    pos = clipPos(this, pos);\n    var markers = [], spans = getLine(this, pos.line).markedSpans;\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if ((span.from == null || span.from <= pos.ch) &&\n          (span.to == null || span.to >= pos.ch))\n        { markers.push(span.marker.parent || span.marker); }\n    } }\n    return markers\n  },\n  findMarks: function(from, to, filter) {\n    from = clipPos(this, from); to = clipPos(this, to);\n    var found = [], lineNo$$1 = from.line;\n    this.iter(from.line, to.line + 1, function (line) {\n      var spans = line.markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; i++) {\n        var span = spans[i];\n        if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n              span.from == null && lineNo$$1 != from.line ||\n              span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n            (!filter || filter(span.marker)))\n          { found.push(span.marker.parent || span.marker); }\n      } }\n      ++lineNo$$1;\n    });\n    return found\n  },\n  getAllMarks: function() {\n    var markers = [];\n    this.iter(function (line) {\n      var sps = line.markedSpans;\n      if (sps) { for (var i = 0; i < sps.length; ++i)\n        { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n    });\n    return markers\n  },\n\n  posFromIndex: function(off) {\n    var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n    this.iter(function (line) {\n      var sz = line.text.length + sepSize;\n      if (sz > off) { ch = off; return true }\n      off -= sz;\n      ++lineNo$$1;\n    });\n    return clipPos(this, Pos(lineNo$$1, ch))\n  },\n  indexFromPos: function (coords) {\n    coords = clipPos(this, coords);\n    var index = coords.ch;\n    if (coords.line < this.first || coords.ch < 0) { return 0 }\n    var sepSize = this.lineSeparator().length;\n    this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n      index += line.text.length + sepSize;\n    });\n    return index\n  },\n\n  copy: function(copyHistory) {\n    var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                      this.modeOption, this.first, this.lineSep, this.direction);\n    doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n    doc.sel = this.sel;\n    doc.extend = false;\n    if (copyHistory) {\n      doc.history.undoDepth = this.history.undoDepth;\n      doc.setHistory(this.getHistory());\n    }\n    return doc\n  },\n\n  linkedDoc: function(options) {\n    if (!options) { options = {}; }\n    var from = this.first, to = this.first + this.size;\n    if (options.from != null && options.from > from) { from = options.from; }\n    if (options.to != null && options.to < to) { to = options.to; }\n    var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n    if (options.sharedHist) { copy.history = this.history\n    ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n    copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n    copySharedMarkers(copy, findSharedMarkers(this));\n    return copy\n  },\n  unlinkDoc: function(other) {\n    var this$1 = this;\n\n    if (other instanceof CodeMirror$1) { other = other.doc; }\n    if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n      var link = this$1.linked[i];\n      if (link.doc != other) { continue }\n      this$1.linked.splice(i, 1);\n      other.unlinkDoc(this$1);\n      detachSharedMarkers(findSharedMarkers(this$1));\n      break\n    } }\n    // If the histories were shared, split them again\n    if (other.history == this.history) {\n      var splitIds = [other.id];\n      linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n      other.history = new History(null);\n      other.history.done = copyHistoryArray(this.history.done, splitIds);\n      other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n    }\n  },\n  iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n  getMode: function() {return this.mode},\n  getEditor: function() {return this.cm},\n\n  splitLines: function(str) {\n    if (this.lineSep) { return str.split(this.lineSep) }\n    return splitLinesAuto(str)\n  },\n  lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n  setDirection: docMethodOp(function (dir) {\n    if (dir != \"rtl\") { dir = \"ltr\"; }\n    if (dir == this.direction) { return }\n    this.direction = dir;\n    this.iter(function (line) { return line.order = null; });\n    if (this.cm) { directionChanged(this.cm); }\n  })\n});\n\n// Public alias.\nDoc.prototype.eachLine = Doc.prototype.iter;\n\n// Kludge to work around strange IE behavior where it'll sometimes\n// re-fire a series of drag-related events right after the drop (#1551)\nvar lastDrop = 0;\n\nfunction onDrop(e) {\n  var cm = this;\n  clearDragCursor(cm);\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n    { return }\n  e_preventDefault(e);\n  if (ie) { lastDrop = +new Date; }\n  var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n  if (!pos || cm.isReadOnly()) { return }\n  // Might be a file drop, in which case we simply extract the text\n  // and insert it.\n  if (files && files.length && window.FileReader && window.File) {\n    var n = files.length, text = Array(n), read = 0;\n    var loadFile = function (file, i) {\n      if (cm.options.allowDropFileTypes &&\n          indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n        { return }\n\n      var reader = new FileReader;\n      reader.onload = operation(cm, function () {\n        var content = reader.result;\n        if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n        text[i] = content;\n        if (++read == n) {\n          pos = clipPos(cm.doc, pos);\n          var change = {from: pos, to: pos,\n                        text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n                        origin: \"paste\"};\n          makeChange(cm.doc, change);\n          setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n        }\n      });\n      reader.readAsText(file);\n    };\n    for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n  } else { // Normal drop\n    // Don't do a replace if the drop happened inside of the selected text.\n    if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n      cm.state.draggingText(e);\n      // Ensure the editor is re-focused\n      setTimeout(function () { return cm.display.input.focus(); }, 20);\n      return\n    }\n    try {\n      var text$1 = e.dataTransfer.getData(\"Text\");\n      if (text$1) {\n        var selected;\n        if (cm.state.draggingText && !cm.state.draggingText.copy)\n          { selected = cm.listSelections(); }\n        setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n        if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n          { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n        cm.replaceSelection(text$1, \"around\", \"paste\");\n        cm.display.input.focus();\n      }\n    }\n    catch(e){}\n  }\n}\n\nfunction onDragStart(cm, e) {\n  if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n  e.dataTransfer.setData(\"Text\", cm.getSelection());\n  e.dataTransfer.effectAllowed = \"copyMove\";\n\n  // Use dummy image instead of default browsers image.\n  // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n  if (e.dataTransfer.setDragImage && !safari) {\n    var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n    img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n    if (presto) {\n      img.width = img.height = 1;\n      cm.display.wrapper.appendChild(img);\n      // Force a relayout, or Opera won't use our image for some obscure reason\n      img._top = img.offsetTop;\n    }\n    e.dataTransfer.setDragImage(img, 0, 0);\n    if (presto) { img.parentNode.removeChild(img); }\n  }\n}\n\nfunction onDragOver(cm, e) {\n  var pos = posFromMouse(cm, e);\n  if (!pos) { return }\n  var frag = document.createDocumentFragment();\n  drawSelectionCursor(cm, pos, frag);\n  if (!cm.display.dragCursor) {\n    cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n    cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n  }\n  removeChildrenAndAdd(cm.display.dragCursor, frag);\n}\n\nfunction clearDragCursor(cm) {\n  if (cm.display.dragCursor) {\n    cm.display.lineSpace.removeChild(cm.display.dragCursor);\n    cm.display.dragCursor = null;\n  }\n}\n\n// These must be handled carefully, because naively registering a\n// handler for each editor will cause the editors to never be\n// garbage collected.\n\nfunction forEachCodeMirror(f) {\n  if (!document.getElementsByClassName) { return }\n  var byClass = document.getElementsByClassName(\"CodeMirror\");\n  for (var i = 0; i < byClass.length; i++) {\n    var cm = byClass[i].CodeMirror;\n    if (cm) { f(cm); }\n  }\n}\n\nvar globalsRegistered = false;\nfunction ensureGlobalHandlers() {\n  if (globalsRegistered) { return }\n  registerGlobalHandlers();\n  globalsRegistered = true;\n}\nfunction registerGlobalHandlers() {\n  // When the window resizes, we need to refresh active editors.\n  var resizeTimer;\n  on(window, \"resize\", function () {\n    if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n      resizeTimer = null;\n      forEachCodeMirror(onResize);\n    }, 100); }\n  });\n  // When the window loses focus, we want to show the editor as blurred\n  on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n}\n// Called when the window resizes\nfunction onResize(cm) {\n  var d = cm.display;\n  if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\n    { return }\n  // Might be a text scaling operation, clear size caches.\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n  d.scrollbarsClipped = false;\n  cm.setSize();\n}\n\nvar keyNames = {\n  3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n  106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n};\n\n// Number keys\nfor (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n// Alphabetic keys\nfor (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n// Function keys\nfor (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\nvar keyMap = {};\n\nkeyMap.basic = {\n  \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n  \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n  \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n  \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n  \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n  \"Esc\": \"singleSelection\"\n};\n// Note that the save and find-related commands aren't defined by\n// default. User code or addons can define them. Unknown commands\n// are simply ignored.\nkeyMap.pcDefault = {\n  \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n  \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n  \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n  \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n  \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n  \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n  \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n  fallthrough: \"basic\"\n};\n// Very basic readline/emacs-style bindings, which are standard on Mac.\nkeyMap.emacsy = {\n  \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n  \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n  \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n  \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n  \"Ctrl-O\": \"openLine\"\n};\nkeyMap.macDefault = {\n  \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n  \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n  \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n  \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n  \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n  \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n  \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n  fallthrough: [\"basic\", \"emacsy\"]\n};\nkeyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n// KEYMAP DISPATCH\n\nfunction normalizeKeyName(name) {\n  var parts = name.split(/-(?!$)/);\n  name = parts[parts.length - 1];\n  var alt, ctrl, shift, cmd;\n  for (var i = 0; i < parts.length - 1; i++) {\n    var mod = parts[i];\n    if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n    else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n    else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n    else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n    else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n  }\n  if (alt) { name = \"Alt-\" + name; }\n  if (ctrl) { name = \"Ctrl-\" + name; }\n  if (cmd) { name = \"Cmd-\" + name; }\n  if (shift) { name = \"Shift-\" + name; }\n  return name\n}\n\n// This is a kludge to keep keymaps mostly working as raw objects\n// (backwards compatibility) while at the same time support features\n// like normalization and multi-stroke key bindings. It compiles a\n// new normalized keymap, and then updates the old object to reflect\n// this.\nfunction normalizeKeyMap(keymap) {\n  var copy = {};\n  for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n    var value = keymap[keyname];\n    if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n    if (value == \"...\") { delete keymap[keyname]; continue }\n\n    var keys = map(keyname.split(\" \"), normalizeKeyName);\n    for (var i = 0; i < keys.length; i++) {\n      var val = (void 0), name = (void 0);\n      if (i == keys.length - 1) {\n        name = keys.join(\" \");\n        val = value;\n      } else {\n        name = keys.slice(0, i + 1).join(\" \");\n        val = \"...\";\n      }\n      var prev = copy[name];\n      if (!prev) { copy[name] = val; }\n      else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n    }\n    delete keymap[keyname];\n  } }\n  for (var prop in copy) { keymap[prop] = copy[prop]; }\n  return keymap\n}\n\nfunction lookupKey(key, map$$1, handle, context) {\n  map$$1 = getKeyMap(map$$1);\n  var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n  if (found === false) { return \"nothing\" }\n  if (found === \"...\") { return \"multi\" }\n  if (found != null && handle(found)) { return \"handled\" }\n\n  if (map$$1.fallthrough) {\n    if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n      { return lookupKey(key, map$$1.fallthrough, handle, context) }\n    for (var i = 0; i < map$$1.fallthrough.length; i++) {\n      var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n      if (result) { return result }\n    }\n  }\n}\n\n// Modifier key presses don't count as 'real' key presses for the\n// purpose of keymap fallthrough.\nfunction isModifierKey(value) {\n  var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n  return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n}\n\nfunction addModifierNames(name, event, noShift) {\n  var base = name;\n  if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n  if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n  if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n  if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n  return name\n}\n\n// Look up the name of a key as indicated by an event object.\nfunction keyName(event, noShift) {\n  if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n  var name = keyNames[event.keyCode];\n  if (name == null || event.altGraphKey) { return false }\n  // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n  // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n  if (event.keyCode == 3 && event.code) { name = event.code; }\n  return addModifierNames(name, event, noShift)\n}\n\nfunction getKeyMap(val) {\n  return typeof val == \"string\" ? keyMap[val] : val\n}\n\n// Helper for deleting text near the selection(s), used to implement\n// backspace, delete, and similar functionality.\nfunction deleteNearSelection(cm, compute) {\n  var ranges = cm.doc.sel.ranges, kill = [];\n  // Build up a set of ranges to kill first, merging overlapping\n  // ranges.\n  for (var i = 0; i < ranges.length; i++) {\n    var toKill = compute(ranges[i]);\n    while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n      var replaced = kill.pop();\n      if (cmp(replaced.from, toKill.from) < 0) {\n        toKill.from = replaced.from;\n        break\n      }\n    }\n    kill.push(toKill);\n  }\n  // Next, remove those actual ranges.\n  runInOp(cm, function () {\n    for (var i = kill.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n    ensureCursorVisible(cm);\n  });\n}\n\nfunction moveCharLogically(line, ch, dir) {\n  var target = skipExtendingChars(line.text, ch + dir, dir);\n  return target < 0 || target > line.text.length ? null : target\n}\n\nfunction moveLogically(line, start, dir) {\n  var ch = moveCharLogically(line, start.ch, dir);\n  return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n}\n\nfunction endOfLine(visually, cm, lineObj, lineNo, dir) {\n  if (visually) {\n    var order = getOrder(lineObj, cm.doc.direction);\n    if (order) {\n      var part = dir < 0 ? lst(order) : order[0];\n      var moveInStorageOrder = (dir < 0) == (part.level == 1);\n      var sticky = moveInStorageOrder ? \"after\" : \"before\";\n      var ch;\n      // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n      // it could be that the last bidi part is not on the last visual line,\n      // since visual lines contain content order-consecutive chunks.\n      // Thus, in rtl, we are looking for the first (content-order) character\n      // in the rtl chunk that is on the last line (that is, the same line\n      // as the last (content-order) character).\n      if (part.level > 0 || cm.doc.direction == \"rtl\") {\n        var prep = prepareMeasureForLine(cm, lineObj);\n        ch = dir < 0 ? lineObj.text.length - 1 : 0;\n        var targetTop = measureCharPrepared(cm, prep, ch).top;\n        ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n        if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n      } else { ch = dir < 0 ? part.to : part.from; }\n      return new Pos(lineNo, ch, sticky)\n    }\n  }\n  return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n}\n\nfunction moveVisually(cm, line, start, dir) {\n  var bidi = getOrder(line, cm.doc.direction);\n  if (!bidi) { return moveLogically(line, start, dir) }\n  if (start.ch >= line.text.length) {\n    start.ch = line.text.length;\n    start.sticky = \"before\";\n  } else if (start.ch <= 0) {\n    start.ch = 0;\n    start.sticky = \"after\";\n  }\n  var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n  if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n    // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n    // nothing interesting happens.\n    return moveLogically(line, start, dir)\n  }\n\n  var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n  var prep;\n  var getWrappedLineExtent = function (ch) {\n    if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n    prep = prep || prepareMeasureForLine(cm, line);\n    return wrappedLineExtentChar(cm, line, prep, ch)\n  };\n  var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n  if (cm.doc.direction == \"rtl\" || part.level == 1) {\n    var moveInStorageOrder = (part.level == 1) == (dir < 0);\n    var ch = mv(start, moveInStorageOrder ? 1 : -1);\n    if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n      // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n      var sticky = moveInStorageOrder ? \"before\" : \"after\";\n      return new Pos(start.line, ch, sticky)\n    }\n  }\n\n  // Case 3: Could not move within this bidi part in this visual line, so leave\n  // the current bidi part\n\n  var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n    var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n      ? new Pos(start.line, mv(ch, 1), \"before\")\n      : new Pos(start.line, ch, \"after\"); };\n\n    for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n      var part = bidi[partPos];\n      var moveInStorageOrder = (dir > 0) == (part.level != 1);\n      var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n      if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n      ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n      if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n    }\n  };\n\n  // Case 3a: Look for other bidi parts on the same visual line\n  var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n  if (res) { return res }\n\n  // Case 3b: Look for other bidi parts on the next visual line\n  var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n  if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n    res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n    if (res) { return res }\n  }\n\n  // Case 4: Nowhere to move\n  return null\n}\n\n// Commands are parameter-less actions that can be performed on an\n// editor, mostly used for keybindings.\nvar commands = {\n  selectAll: selectAll,\n  singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n  killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n    if (range.empty()) {\n      var len = getLine(cm.doc, range.head.line).text.length;\n      if (range.head.ch == len && range.head.line < cm.lastLine())\n        { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n      else\n        { return {from: range.head, to: Pos(range.head.line, len)} }\n    } else {\n      return {from: range.from(), to: range.to()}\n    }\n  }); },\n  deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0),\n    to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n  }); }); },\n  delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0), to: range.from()\n  }); }); },\n  delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n    return {from: leftPos, to: range.from()}\n  }); },\n  delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n    return {from: range.from(), to: rightPos }\n  }); },\n  undo: function (cm) { return cm.undo(); },\n  redo: function (cm) { return cm.redo(); },\n  undoSelection: function (cm) { return cm.undoSelection(); },\n  redoSelection: function (cm) { return cm.redoSelection(); },\n  goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n  goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n  goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n    {origin: \"+move\", bias: -1}\n  ); },\n  goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.cursorCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.cursorCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: 0, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.cursorCoords(range.head, \"div\").top + 5;\n    var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n    if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n    return pos\n  }, sel_move); },\n  goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n  goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n  goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n  goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n  goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n  goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n  goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n  goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n  goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n  goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n  goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n  goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n  delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n  delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n  delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n  delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n  delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n  delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n  indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n  indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n  indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n  insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n  insertSoftTab: function (cm) {\n    var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].from();\n      var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n      spaces.push(spaceStr(tabSize - col % tabSize));\n    }\n    cm.replaceSelections(spaces);\n  },\n  defaultTab: function (cm) {\n    if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n    else { cm.execCommand(\"insertTab\"); }\n  },\n  // Swap the two chars left and right of each selection's head.\n  // Move cursor behind the two swapped characters afterwards.\n  //\n  // Doesn't consider line feeds a character.\n  // Doesn't scan more than one line above to find a character.\n  // Doesn't do anything on an empty line.\n  // Doesn't do anything with non-empty selections.\n  transposeChars: function (cm) { return runInOp(cm, function () {\n    var ranges = cm.listSelections(), newSel = [];\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) { continue }\n      var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n      if (line) {\n        if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n        if (cur.ch > 0) {\n          cur = new Pos(cur.line, cur.ch + 1);\n          cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                          Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n        } else if (cur.line > cm.doc.first) {\n          var prev = getLine(cm.doc, cur.line - 1).text;\n          if (prev) {\n            cur = new Pos(cur.line, 1);\n            cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                            prev.charAt(prev.length - 1),\n                            Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n          }\n        }\n      }\n      newSel.push(new Range(cur, cur));\n    }\n    cm.setSelections(newSel);\n  }); },\n  newlineAndIndent: function (cm) { return runInOp(cm, function () {\n    var sels = cm.listSelections();\n    for (var i = sels.length - 1; i >= 0; i--)\n      { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n    sels = cm.listSelections();\n    for (var i$1 = 0; i$1 < sels.length; i$1++)\n      { cm.indentLine(sels[i$1].from().line, null, true); }\n    ensureCursorVisible(cm);\n  }); },\n  openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n  toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n};\n\n\nfunction lineStart(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLine(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, visual, lineN, 1)\n}\nfunction lineEnd(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLineEnd(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, line, lineN, -1)\n}\nfunction lineStartSmart(cm, pos) {\n  var start = lineStart(cm, pos.line);\n  var line = getLine(cm.doc, start.line);\n  var order = getOrder(line, cm.doc.direction);\n  if (!order || order[0].level == 0) {\n    var firstNonWS = Math.max(0, line.text.search(/\\S/));\n    var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n    return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n  }\n  return start\n}\n\n// Run a handler that was bound to a key.\nfunction doHandleBinding(cm, bound, dropShift) {\n  if (typeof bound == \"string\") {\n    bound = commands[bound];\n    if (!bound) { return false }\n  }\n  // Ensure previous input has been read, so that the handler sees a\n  // consistent view of the document\n  cm.display.input.ensurePolled();\n  var prevShift = cm.display.shift, done = false;\n  try {\n    if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n    if (dropShift) { cm.display.shift = false; }\n    done = bound(cm) != Pass;\n  } finally {\n    cm.display.shift = prevShift;\n    cm.state.suppressEdits = false;\n  }\n  return done\n}\n\nfunction lookupKeyForEditor(cm, name, handle) {\n  for (var i = 0; i < cm.state.keyMaps.length; i++) {\n    var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n    if (result) { return result }\n  }\n  return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n    || lookupKey(name, cm.options.keyMap, handle, cm)\n}\n\n// Note that, despite the name, this function is also used to check\n// for bound mouse clicks.\n\nvar stopSeq = new Delayed;\n\nfunction dispatchKey(cm, name, e, handle) {\n  var seq = cm.state.keySeq;\n  if (seq) {\n    if (isModifierKey(name)) { return \"handled\" }\n    if (/\\'$/.test(name))\n      { cm.state.keySeq = null; }\n    else\n      { stopSeq.set(50, function () {\n        if (cm.state.keySeq == seq) {\n          cm.state.keySeq = null;\n          cm.display.input.reset();\n        }\n      }); }\n    if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n  }\n  return dispatchKeyInner(cm, name, e, handle)\n}\n\nfunction dispatchKeyInner(cm, name, e, handle) {\n  var result = lookupKeyForEditor(cm, name, handle);\n\n  if (result == \"multi\")\n    { cm.state.keySeq = name; }\n  if (result == \"handled\")\n    { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n  if (result == \"handled\" || result == \"multi\") {\n    e_preventDefault(e);\n    restartBlink(cm);\n  }\n\n  return !!result\n}\n\n// Handle a key from the keydown event.\nfunction handleKeyBinding(cm, e) {\n  var name = keyName(e, true);\n  if (!name) { return false }\n\n  if (e.shiftKey && !cm.state.keySeq) {\n    // First try to resolve full name (including 'Shift-'). Failing\n    // that, see if there is a cursor-motion command (starting with\n    // 'go') bound to the keyname without 'Shift-'.\n    return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n        || dispatchKey(cm, name, e, function (b) {\n             if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n               { return doHandleBinding(cm, b) }\n           })\n  } else {\n    return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n  }\n}\n\n// Handle a key from the keypress event\nfunction handleCharBinding(cm, e, ch) {\n  return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n}\n\nvar lastStoppedKey = null;\nfunction onKeyDown(e) {\n  var cm = this;\n  cm.curOp.focus = activeElt();\n  if (signalDOMEvent(cm, e)) { return }\n  // IE does strange things with escape.\n  if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n  var code = e.keyCode;\n  cm.display.shift = code == 16 || e.shiftKey;\n  var handled = handleKeyBinding(cm, e);\n  if (presto) {\n    lastStoppedKey = handled ? code : null;\n    // Opera has no cut event... we try to at least catch the key combo\n    if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n      { cm.replaceSelection(\"\", null, \"cut\"); }\n  }\n\n  // Turn mouse into crosshair when Alt is held on Mac.\n  if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n    { showCrossHair(cm); }\n}\n\nfunction showCrossHair(cm) {\n  var lineDiv = cm.display.lineDiv;\n  addClass(lineDiv, \"CodeMirror-crosshair\");\n\n  function up(e) {\n    if (e.keyCode == 18 || !e.altKey) {\n      rmClass(lineDiv, \"CodeMirror-crosshair\");\n      off(document, \"keyup\", up);\n      off(document, \"mouseover\", up);\n    }\n  }\n  on(document, \"keyup\", up);\n  on(document, \"mouseover\", up);\n}\n\nfunction onKeyUp(e) {\n  if (e.keyCode == 16) { this.doc.sel.shift = false; }\n  signalDOMEvent(this, e);\n}\n\nfunction onKeyPress(e) {\n  var cm = this;\n  if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n  var keyCode = e.keyCode, charCode = e.charCode;\n  if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n  if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n  var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n  // Some browsers fire keypress events for backspace\n  if (ch == \"\\x08\") { return }\n  if (handleCharBinding(cm, e, ch)) { return }\n  cm.display.input.onKeyPress(e);\n}\n\nvar DOUBLECLICK_DELAY = 400;\n\nvar PastClick = function(time, pos, button) {\n  this.time = time;\n  this.pos = pos;\n  this.button = button;\n};\n\nPastClick.prototype.compare = function (time, pos, button) {\n  return this.time + DOUBLECLICK_DELAY > time &&\n    cmp(pos, this.pos) == 0 && button == this.button\n};\n\nvar lastClick;\nvar lastDoubleClick;\nfunction clickRepeat(pos, button) {\n  var now = +new Date;\n  if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n    lastClick = lastDoubleClick = null;\n    return \"triple\"\n  } else if (lastClick && lastClick.compare(now, pos, button)) {\n    lastDoubleClick = new PastClick(now, pos, button);\n    lastClick = null;\n    return \"double\"\n  } else {\n    lastClick = new PastClick(now, pos, button);\n    lastDoubleClick = null;\n    return \"single\"\n  }\n}\n\n// A mouse down can be a single click, double click, triple click,\n// start of selection drag, start of text drag, new cursor\n// (ctrl-click), rectangle drag (alt-drag), or xwin\n// middle-click-paste. Or it might be a click on something we should\n// not interfere with, such as a scrollbar or widget.\nfunction onMouseDown(e) {\n  var cm = this, display = cm.display;\n  if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n  display.input.ensurePolled();\n  display.shift = e.shiftKey;\n\n  if (eventInWidget(display, e)) {\n    if (!webkit) {\n      // Briefly turn off draggability, to allow widgets to do\n      // normal dragging things.\n      display.scroller.draggable = false;\n      setTimeout(function () { return display.scroller.draggable = true; }, 100);\n    }\n    return\n  }\n  if (clickInGutter(cm, e)) { return }\n  var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n  window.focus();\n\n  // #3261: make sure, that we're not starting a second selection\n  if (button == 1 && cm.state.selectingText)\n    { cm.state.selectingText(e); }\n\n  if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n  if (button == 1) {\n    if (pos) { leftButtonDown(cm, pos, repeat, e); }\n    else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n  } else if (button == 2) {\n    if (pos) { extendSelection(cm.doc, pos); }\n    setTimeout(function () { return display.input.focus(); }, 20);\n  } else if (button == 3) {\n    if (captureRightClick) { onContextMenu(cm, e); }\n    else { delayBlurEvent(cm); }\n  }\n}\n\nfunction handleMappedButton(cm, button, pos, repeat, event) {\n  var name = \"Click\";\n  if (repeat == \"double\") { name = \"Double\" + name; }\n  else if (repeat == \"triple\") { name = \"Triple\" + name; }\n  name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n  return dispatchKey(cm,  addModifierNames(name, event), event, function (bound) {\n    if (typeof bound == \"string\") { bound = commands[bound]; }\n    if (!bound) { return false }\n    var done = false;\n    try {\n      if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n      done = bound(cm, pos) != Pass;\n    } finally {\n      cm.state.suppressEdits = false;\n    }\n    return done\n  })\n}\n\nfunction configureMouse(cm, repeat, event) {\n  var option = cm.getOption(\"configureMouse\");\n  var value = option ? option(cm, repeat, event) : {};\n  if (value.unit == null) {\n    var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n    value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n  }\n  if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n  if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n  if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n  return value\n}\n\nfunction leftButtonDown(cm, pos, repeat, event) {\n  if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n  else { cm.curOp.focus = activeElt(); }\n\n  var behavior = configureMouse(cm, repeat, event);\n\n  var sel = cm.doc.sel, contained;\n  if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n      repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n      (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n      (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n    { leftButtonStartDrag(cm, event, pos, behavior); }\n  else\n    { leftButtonSelect(cm, event, pos, behavior); }\n}\n\n// Start a text drag. When it ends, see if any dragging actually\n// happen, and treat as a click if it didn't.\nfunction leftButtonStartDrag(cm, event, pos, behavior) {\n  var display = cm.display, moved = false;\n  var dragEnd = operation(cm, function (e) {\n    if (webkit) { display.scroller.draggable = false; }\n    cm.state.draggingText = false;\n    off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n    off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n    off(display.scroller, \"dragstart\", dragStart);\n    off(display.scroller, \"drop\", dragEnd);\n    if (!moved) {\n      e_preventDefault(e);\n      if (!behavior.addNew)\n        { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n      // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n      if (webkit || ie && ie_version == 9)\n        { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n      else\n        { display.input.focus(); }\n    }\n  });\n  var mouseMove = function(e2) {\n    moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n  };\n  var dragStart = function () { return moved = true; };\n  // Let the drag handler handle this.\n  if (webkit) { display.scroller.draggable = true; }\n  cm.state.draggingText = dragEnd;\n  dragEnd.copy = !behavior.moveOnDrag;\n  // IE's approach to draggable\n  if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n  on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n  on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n  on(display.scroller, \"dragstart\", dragStart);\n  on(display.scroller, \"drop\", dragEnd);\n\n  delayBlurEvent(cm);\n  setTimeout(function () { return display.input.focus(); }, 20);\n}\n\nfunction rangeForUnit(cm, pos, unit) {\n  if (unit == \"char\") { return new Range(pos, pos) }\n  if (unit == \"word\") { return cm.findWordAt(pos) }\n  if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n  var result = unit(cm, pos);\n  return new Range(result.from, result.to)\n}\n\n// Normal selection, as opposed to text dragging.\nfunction leftButtonSelect(cm, event, start, behavior) {\n  var display = cm.display, doc = cm.doc;\n  e_preventDefault(event);\n\n  var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n  if (behavior.addNew && !behavior.extend) {\n    ourIndex = doc.sel.contains(start);\n    if (ourIndex > -1)\n      { ourRange = ranges[ourIndex]; }\n    else\n      { ourRange = new Range(start, start); }\n  } else {\n    ourRange = doc.sel.primary();\n    ourIndex = doc.sel.primIndex;\n  }\n\n  if (behavior.unit == \"rectangle\") {\n    if (!behavior.addNew) { ourRange = new Range(start, start); }\n    start = posFromMouse(cm, event, true, true);\n    ourIndex = -1;\n  } else {\n    var range$$1 = rangeForUnit(cm, start, behavior.unit);\n    if (behavior.extend)\n      { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n    else\n      { ourRange = range$$1; }\n  }\n\n  if (!behavior.addNew) {\n    ourIndex = 0;\n    setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n    startSel = doc.sel;\n  } else if (ourIndex == -1) {\n    ourIndex = ranges.length;\n    setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\n                 {scroll: false, origin: \"*mouse\"});\n  } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n    setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                 {scroll: false, origin: \"*mouse\"});\n    startSel = doc.sel;\n  } else {\n    replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n  }\n\n  var lastPos = start;\n  function extendTo(pos) {\n    if (cmp(lastPos, pos) == 0) { return }\n    lastPos = pos;\n\n    if (behavior.unit == \"rectangle\") {\n      var ranges = [], tabSize = cm.options.tabSize;\n      var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n      var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n      var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n      for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n           line <= end; line++) {\n        var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n        if (left == right)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n        else if (text.length > leftPos)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n      }\n      if (!ranges.length) { ranges.push(new Range(start, start)); }\n      setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                   {origin: \"*mouse\", scroll: false});\n      cm.scrollIntoView(pos);\n    } else {\n      var oldRange = ourRange;\n      var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n      var anchor = oldRange.anchor, head;\n      if (cmp(range$$1.anchor, anchor) > 0) {\n        head = range$$1.head;\n        anchor = minPos(oldRange.from(), range$$1.anchor);\n      } else {\n        head = range$$1.anchor;\n        anchor = maxPos(oldRange.to(), range$$1.head);\n      }\n      var ranges$1 = startSel.ranges.slice(0);\n      ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n      setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);\n    }\n  }\n\n  var editorSize = display.wrapper.getBoundingClientRect();\n  // Used to ensure timeout re-tries don't fire when another extend\n  // happened in the meantime (clearTimeout isn't reliable -- at\n  // least on Chrome, the timeouts still happen even when cleared,\n  // if the clear happens after their scheduled firing time).\n  var counter = 0;\n\n  function extend(e) {\n    var curCount = ++counter;\n    var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n    if (!cur) { return }\n    if (cmp(cur, lastPos) != 0) {\n      cm.curOp.focus = activeElt();\n      extendTo(cur);\n      var visible = visibleLines(display, doc);\n      if (cur.line >= visible.to || cur.line < visible.from)\n        { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n    } else {\n      var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n      if (outside) { setTimeout(operation(cm, function () {\n        if (counter != curCount) { return }\n        display.scroller.scrollTop += outside;\n        extend(e);\n      }), 50); }\n    }\n  }\n\n  function done(e) {\n    cm.state.selectingText = false;\n    counter = Infinity;\n    e_preventDefault(e);\n    display.input.focus();\n    off(display.wrapper.ownerDocument, \"mousemove\", move);\n    off(display.wrapper.ownerDocument, \"mouseup\", up);\n    doc.history.lastSelOrigin = null;\n  }\n\n  var move = operation(cm, function (e) {\n    if (!e_button(e)) { done(e); }\n    else { extend(e); }\n  });\n  var up = operation(cm, done);\n  cm.state.selectingText = up;\n  on(display.wrapper.ownerDocument, \"mousemove\", move);\n  on(display.wrapper.ownerDocument, \"mouseup\", up);\n}\n\n// Used when mouse-selecting to adjust the anchor to the proper side\n// of a bidi jump depending on the visual position of the head.\nfunction bidiSimplify(cm, range$$1) {\n  var anchor = range$$1.anchor;\n  var head = range$$1.head;\n  var anchorLine = getLine(cm.doc, anchor.line);\n  if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n  var order = getOrder(anchorLine);\n  if (!order) { return range$$1 }\n  var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n  if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n  var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n  if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n  // Compute the relative visual position of the head compared to the\n  // anchor (<0 is to the left, >0 to the right)\n  var leftSide;\n  if (head.line != anchor.line) {\n    leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n  } else {\n    var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n    var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n    if (headIndex == boundary - 1 || headIndex == boundary)\n      { leftSide = dir < 0; }\n    else\n      { leftSide = dir > 0; }\n  }\n\n  var usePart = order[boundary + (leftSide ? -1 : 0)];\n  var from = leftSide == (usePart.level == 1);\n  var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n  return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n}\n\n\n// Determines whether an event happened in the gutter, and fires the\n// handlers for the corresponding event.\nfunction gutterEvent(cm, e, type, prevent) {\n  var mX, mY;\n  if (e.touches) {\n    mX = e.touches[0].clientX;\n    mY = e.touches[0].clientY;\n  } else {\n    try { mX = e.clientX; mY = e.clientY; }\n    catch(e) { return false }\n  }\n  if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n  if (prevent) { e_preventDefault(e); }\n\n  var display = cm.display;\n  var lineBox = display.lineDiv.getBoundingClientRect();\n\n  if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n  mY -= lineBox.top - display.viewOffset;\n\n  for (var i = 0; i < cm.options.gutters.length; ++i) {\n    var g = display.gutters.childNodes[i];\n    if (g && g.getBoundingClientRect().right >= mX) {\n      var line = lineAtHeight(cm.doc, mY);\n      var gutter = cm.options.gutters[i];\n      signal(cm, type, cm, line, gutter, e);\n      return e_defaultPrevented(e)\n    }\n  }\n}\n\nfunction clickInGutter(cm, e) {\n  return gutterEvent(cm, e, \"gutterClick\", true)\n}\n\n// CONTEXT MENU HANDLING\n\n// To make the context menu work, we need to briefly unhide the\n// textarea (making it as unobtrusive as possible) to let the\n// right-click take effect on it.\nfunction onContextMenu(cm, e) {\n  if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n  if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n  cm.display.input.onContextMenu(e);\n}\n\nfunction contextMenuInGutter(cm, e) {\n  if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n  return gutterEvent(cm, e, \"gutterContextMenu\", false)\n}\n\nfunction themeChanged(cm) {\n  cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n    cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n  clearCaches(cm);\n}\n\nvar Init = {toString: function(){return \"CodeMirror.Init\"}};\n\nvar defaults = {};\nvar optionHandlers = {};\n\nfunction defineOptions(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) { optionHandlers[name] =\n      notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n  }\n\n  CodeMirror.defineOption = option;\n\n  // Passed to option handlers when there is no old value.\n  CodeMirror.Init = Init;\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n  option(\"mode\", null, function (cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function (cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n\n  option(\"lineSeparator\", null, function (cm, val) {\n    cm.doc.lineSep = val;\n    if (!val) { return }\n    var newBreaks = [], lineNo = cm.doc.first;\n    cm.doc.iter(function (line) {\n      for (var pos = 0;;) {\n        var found = line.text.indexOf(val, pos);\n        if (found == -1) { break }\n        pos = found + val.length;\n        newBreaks.push(Pos(lineNo, found));\n      }\n      lineNo++;\n    });\n    for (var i = newBreaks.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n  });\n  option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n    cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    if (old != Init) { cm.refresh(); }\n  });\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n  option(\"electricChars\", true);\n  option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n    throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n  }, true);\n  option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function (cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", function (cm, val, old) {\n    var next = getKeyMap(val);\n    var prev = old != Init && getKeyMap(old);\n    if (prev && prev.detach) { prev.detach(cm, next); }\n    if (next.attach) { next.attach(cm, prev || null); }\n  });\n  option(\"extraKeys\", null);\n  option(\"configureMouse\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function (cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n  option(\"scrollbarStyle\", \"native\", function (cm) {\n    initScrollbars(cm);\n    updateScrollbars(cm);\n    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n  }, true);\n  option(\"lineNumbers\", false, function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n  option(\"lineWiseCopyCut\", true);\n  option(\"pasteLinesPerSelection\", true);\n\n  option(\"readOnly\", false, function (cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n    }\n    cm.display.input.readOnlyChanged(val);\n  });\n  option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n  option(\"dragDrop\", true, dragDropChanged);\n  option(\"allowDropFileTypes\", null);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function (cm, val) {\n    if (!val) { cm.display.input.resetPosition(); }\n  });\n\n  option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n  option(\"autofocus\", null);\n  option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n}\n\nfunction guttersChanged(cm) {\n  updateGutters(cm);\n  regChange(cm);\n  alignHorizontally(cm);\n}\n\nfunction dragDropChanged(cm, value, old) {\n  var wasOn = old && old != Init;\n  if (!value != !wasOn) {\n    var funcs = cm.display.dragFunctions;\n    var toggle = value ? on : off;\n    toggle(cm.display.scroller, \"dragstart\", funcs.start);\n    toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n    toggle(cm.display.scroller, \"dragover\", funcs.over);\n    toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n    toggle(cm.display.scroller, \"drop\", funcs.drop);\n  }\n}\n\nfunction wrappingChanged(cm) {\n  if (cm.options.lineWrapping) {\n    addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    cm.display.sizer.style.minWidth = \"\";\n    cm.display.sizerWidth = null;\n  } else {\n    rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    findMaxLine(cm);\n  }\n  estimateLineHeights(cm);\n  regChange(cm);\n  clearCaches(cm);\n  setTimeout(function () { return updateScrollbars(cm); }, 100);\n}\n\n// A CodeMirror instance represents an editor. This is the object\n// that user code is usually dealing with.\n\nfunction CodeMirror$1(place, options) {\n  var this$1 = this;\n\n  if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) }\n\n  this.options = options = options ? copyObj(options) : {};\n  // Determine effective options based on given values and defaults.\n  copyObj(defaults, options, false);\n  setGuttersForLineNumbers(options);\n\n  var doc = options.value;\n  if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n  this.doc = doc;\n\n  var input = new CodeMirror$1.inputStyles[options.inputStyle](this);\n  var display = this.display = new Display(place, doc, input);\n  display.wrapper.CodeMirror = this;\n  updateGutters(this);\n  themeChanged(this);\n  if (options.lineWrapping)\n    { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n  initScrollbars(this);\n\n  this.state = {\n    keyMaps: [],  // stores maps added by addKeyMap\n    overlays: [], // highlighting overlays, as added by addOverlay\n    modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n    overwrite: false,\n    delayingBlurEvent: false,\n    focused: false,\n    suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n    pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\n    selectingText: false,\n    draggingText: false,\n    highlight: new Delayed(), // stores highlight worker timeout\n    keySeq: null,  // Unfinished key sequence\n    specialChars: null\n  };\n\n  if (options.autofocus && !mobile) { display.input.focus(); }\n\n  // Override magic textarea content restore that IE sometimes does\n  // on our hidden textarea on reload\n  if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n  registerEventHandlers(this);\n  ensureGlobalHandlers();\n\n  startOperation(this);\n  this.curOp.forceUpdate = true;\n  attachDoc(this, doc);\n\n  if ((options.autofocus && !mobile) || this.hasFocus())\n    { setTimeout(bind(onFocus, this), 20); }\n  else\n    { onBlur(this); }\n\n  for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n    { optionHandlers[opt](this$1, options[opt], Init); } }\n  maybeUpdateLineNumberWidth(this);\n  if (options.finishInit) { options.finishInit(this); }\n  for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n  endOperation(this);\n  // Suppress optimizelegibility in Webkit, since it breaks text\n  // measuring on line wrapping boundaries.\n  if (webkit && options.lineWrapping &&\n      getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n    { display.lineDiv.style.textRendering = \"auto\"; }\n}\n\n// The default configuration options.\nCodeMirror$1.defaults = defaults;\n// Functions to run when options are changed.\nCodeMirror$1.optionHandlers = optionHandlers;\n\n// Attach the necessary event handlers when initializing the editor\nfunction registerEventHandlers(cm) {\n  var d = cm.display;\n  on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n  // Older IE's will not fire a second mousedown for a double click\n  if (ie && ie_version < 11)\n    { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n      if (signalDOMEvent(cm, e)) { return }\n      var pos = posFromMouse(cm, e);\n      if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n      e_preventDefault(e);\n      var word = cm.findWordAt(pos);\n      extendSelection(cm.doc, word.anchor, word.head);\n    })); }\n  else\n    { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n  // Some browsers fire contextmenu *after* opening the menu, at\n  // which point we can't mess with it anymore. Context menu is\n  // handled in onMouseDown for these browsers.\n  if (!captureRightClick) { on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); }); }\n\n  // Used to suppress mouse event handling when a touch happens\n  var touchFinished, prevTouch = {end: 0};\n  function finishTouch() {\n    if (d.activeTouch) {\n      touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n      prevTouch = d.activeTouch;\n      prevTouch.end = +new Date;\n    }\n  }\n  function isMouseLikeTouchEvent(e) {\n    if (e.touches.length != 1) { return false }\n    var touch = e.touches[0];\n    return touch.radiusX <= 1 && touch.radiusY <= 1\n  }\n  function farAway(touch, other) {\n    if (other.left == null) { return true }\n    var dx = other.left - touch.left, dy = other.top - touch.top;\n    return dx * dx + dy * dy > 20 * 20\n  }\n  on(d.scroller, \"touchstart\", function (e) {\n    if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n      d.input.ensurePolled();\n      clearTimeout(touchFinished);\n      var now = +new Date;\n      d.activeTouch = {start: now, moved: false,\n                       prev: now - prevTouch.end <= 300 ? prevTouch : null};\n      if (e.touches.length == 1) {\n        d.activeTouch.left = e.touches[0].pageX;\n        d.activeTouch.top = e.touches[0].pageY;\n      }\n    }\n  });\n  on(d.scroller, \"touchmove\", function () {\n    if (d.activeTouch) { d.activeTouch.moved = true; }\n  });\n  on(d.scroller, \"touchend\", function (e) {\n    var touch = d.activeTouch;\n    if (touch && !eventInWidget(d, e) && touch.left != null &&\n        !touch.moved && new Date - touch.start < 300) {\n      var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n      if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n        { range = new Range(pos, pos); }\n      else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n        { range = cm.findWordAt(pos); }\n      else // Triple tap\n        { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n      cm.setSelection(range.anchor, range.head);\n      cm.focus();\n      e_preventDefault(e);\n    }\n    finishTouch();\n  });\n  on(d.scroller, \"touchcancel\", finishTouch);\n\n  // Sync scrolling between fake scrollbars and real scrollable\n  // area, ensure viewport is updated when scrolling.\n  on(d.scroller, \"scroll\", function () {\n    if (d.scroller.clientHeight) {\n      updateScrollTop(cm, d.scroller.scrollTop);\n      setScrollLeft(cm, d.scroller.scrollLeft, true);\n      signal(cm, \"scroll\", cm);\n    }\n  });\n\n  // Listen to wheel events in order to try and update the viewport on time.\n  on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n  on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n  // Prevent wrapper from ever scrolling\n  on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n  d.dragFunctions = {\n    enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n    over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n    start: function (e) { return onDragStart(cm, e); },\n    drop: operation(cm, onDrop),\n    leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n  };\n\n  var inp = d.input.getField();\n  on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n  on(inp, \"keydown\", operation(cm, onKeyDown));\n  on(inp, \"keypress\", operation(cm, onKeyPress));\n  on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n  on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n}\n\nvar initHooks = [];\nCodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); };\n\n// Indent the given line. The how parameter can be \"smart\",\n// \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n// (typically set to true for forced single-line indents), empty\n// lines are not indented, and places where the mode returns Pass\n// are left alone.\nfunction indentLine(cm, n, how, aggressive) {\n  var doc = cm.doc, state;\n  if (how == null) { how = \"add\"; }\n  if (how == \"smart\") {\n    // Fall back to \"prev\" when the mode doesn't have an indentation\n    // method.\n    if (!doc.mode.indent) { how = \"prev\"; }\n    else { state = getContextBefore(cm, n).state; }\n  }\n\n  var tabSize = cm.options.tabSize;\n  var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n  if (line.stateAfter) { line.stateAfter = null; }\n  var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n  if (!aggressive && !/\\S/.test(line.text)) {\n    indentation = 0;\n    how = \"not\";\n  } else if (how == \"smart\") {\n    indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n    if (indentation == Pass || indentation > 150) {\n      if (!aggressive) { return }\n      how = \"prev\";\n    }\n  }\n  if (how == \"prev\") {\n    if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n    else { indentation = 0; }\n  } else if (how == \"add\") {\n    indentation = curSpace + cm.options.indentUnit;\n  } else if (how == \"subtract\") {\n    indentation = curSpace - cm.options.indentUnit;\n  } else if (typeof how == \"number\") {\n    indentation = curSpace + how;\n  }\n  indentation = Math.max(0, indentation);\n\n  var indentString = \"\", pos = 0;\n  if (cm.options.indentWithTabs)\n    { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n  if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n  if (indentString != curSpaceString) {\n    replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    line.stateAfter = null;\n    return true\n  } else {\n    // Ensure that, if the cursor was in the whitespace at the start\n    // of the line, it is moved to the end of that space.\n    for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n      var range = doc.sel.ranges[i$1];\n      if (range.head.line == n && range.head.ch < curSpaceString.length) {\n        var pos$1 = Pos(n, curSpaceString.length);\n        replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n        break\n      }\n    }\n  }\n}\n\n// This will be set to a {lineWise: bool, text: [string]} object, so\n// that, when pasting, we know what kind of selections the copied\n// text was made out of.\nvar lastCopied = null;\n\nfunction setLastCopied(newLastCopied) {\n  lastCopied = newLastCopied;\n}\n\nfunction applyTextInput(cm, inserted, deleted, sel, origin) {\n  var doc = cm.doc;\n  cm.display.shift = false;\n  if (!sel) { sel = doc.sel; }\n\n  var paste = cm.state.pasteIncoming || origin == \"paste\";\n  var textLines = splitLinesAuto(inserted), multiPaste = null;\n  // When pasting N lines into N selections, insert one line per selection\n  if (paste && sel.ranges.length > 1) {\n    if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n      if (sel.ranges.length % lastCopied.text.length == 0) {\n        multiPaste = [];\n        for (var i = 0; i < lastCopied.text.length; i++)\n          { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n      }\n    } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n      multiPaste = map(textLines, function (l) { return [l]; });\n    }\n  }\n\n  var updateInput;\n  // Normal behavior is to insert the new text into every selection\n  for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n    var range$$1 = sel.ranges[i$1];\n    var from = range$$1.from(), to = range$$1.to();\n    if (range$$1.empty()) {\n      if (deleted && deleted > 0) // Handle deletion\n        { from = Pos(from.line, from.ch - deleted); }\n      else if (cm.state.overwrite && !paste) // Handle overwrite\n        { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n      else if (lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n        { from = to = Pos(from.line, 0); }\n    }\n    updateInput = cm.curOp.updateInput;\n    var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                       origin: origin || (paste ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\")};\n    makeChange(cm.doc, changeEvent);\n    signalLater(cm, \"inputRead\", cm, changeEvent);\n  }\n  if (inserted && !paste)\n    { triggerElectric(cm, inserted); }\n\n  ensureCursorVisible(cm);\n  cm.curOp.updateInput = updateInput;\n  cm.curOp.typing = true;\n  cm.state.pasteIncoming = cm.state.cutIncoming = false;\n}\n\nfunction handlePaste(e, cm) {\n  var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n  if (pasted) {\n    e.preventDefault();\n    if (!cm.isReadOnly() && !cm.options.disableInput)\n      { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n    return true\n  }\n}\n\nfunction triggerElectric(cm, inserted) {\n  // When an 'electric' character is inserted, immediately trigger a reindent\n  if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n  var sel = cm.doc.sel;\n\n  for (var i = sel.ranges.length - 1; i >= 0; i--) {\n    var range$$1 = sel.ranges[i];\n    if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n    var mode = cm.getModeAt(range$$1.head);\n    var indented = false;\n    if (mode.electricChars) {\n      for (var j = 0; j < mode.electricChars.length; j++)\n        { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n          indented = indentLine(cm, range$$1.head.line, \"smart\");\n          break\n        } }\n    } else if (mode.electricInput) {\n      if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n        { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n    }\n    if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n  }\n}\n\nfunction copyableRanges(cm) {\n  var text = [], ranges = [];\n  for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n    var line = cm.doc.sel.ranges[i].head.line;\n    var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n    ranges.push(lineRange);\n    text.push(cm.getRange(lineRange.anchor, lineRange.head));\n  }\n  return {text: text, ranges: ranges}\n}\n\nfunction disableBrowserMagic(field, spellcheck) {\n  field.setAttribute(\"autocorrect\", \"off\");\n  field.setAttribute(\"autocapitalize\", \"off\");\n  field.setAttribute(\"spellcheck\", !!spellcheck);\n}\n\nfunction hiddenTextarea() {\n  var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n  var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n  // The textarea is kept positioned near the cursor to prevent the\n  // fact that it'll be scrolled into view on input from scrolling\n  // our fake cursor out of view. On webkit, when wrap=off, paste is\n  // very slow. So make the area wide instead.\n  if (webkit) { te.style.width = \"1000px\"; }\n  else { te.setAttribute(\"wrap\", \"off\"); }\n  // If border: 0; -- iOS fails to open keyboard (issue #1287)\n  if (ios) { te.style.border = \"1px solid black\"; }\n  disableBrowserMagic(te);\n  return div\n}\n\n// The publicly visible API. Note that methodOp(f) means\n// 'wrap f in an operation, performed on its `this` parameter'.\n\n// This is not the complete set of editor methods. Most of the\n// methods defined on the Doc type are also injected into\n// CodeMirror.prototype, for backwards compatibility and\n// convenience.\n\nvar addEditorMethods = function(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  var helpers = CodeMirror.helpers = {};\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); this.display.input.focus();},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") { return }\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        { operation(this, optionHandlers[option])(this, value, old); }\n      signal(this, \"optionChange\", this, option);\n    },\n\n    getOption: function(option) {return this.options[option]},\n    getDoc: function() {return this.doc},\n\n    addKeyMap: function(map$$1, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n    },\n    removeKeyMap: function(map$$1) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n          maps.splice(i, 1);\n          return true\n        } }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n      insertSorted(this.state.overlays,\n                   {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                    priority: (options && options.priority) || 0},\n                   function (overlay) { return overlay.priority; });\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var this$1 = this;\n\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this$1.state.modeGen++;\n          regChange(this$1);\n          return\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n        else { dir = dir ? \"add\" : \"subtract\"; }\n      }\n      if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n    }),\n    indentSelection: methodOp(function(how) {\n      var this$1 = this;\n\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range$$1 = ranges[i];\n        if (!range$$1.empty()) {\n          var from = range$$1.from(), to = range$$1.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            { indentLine(this$1, j, how); }\n          var newRanges = this$1.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n        } else if (range$$1.head.line > end) {\n          indentLine(this$1, range$$1.head.line, how, true);\n          end = range$$1.head.line;\n          if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      return takeToken(this, pos, precise)\n    },\n\n    getLineTokens: function(line, precise) {\n      return takeToken(this, Pos(line), precise, true)\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) { type = styles[2]; }\n      else { for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n        else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n        else { type = styles[mid * 2 + 2]; break }\n      } }\n      var cut = type ? type.indexOf(\"overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) { return mode }\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0]\n    },\n\n    getHelpers: function(pos, type) {\n      var this$1 = this;\n\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) { return found }\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) { found.push(help[mode[type]]); }\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) { found.push(val); }\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n        var cur = help._global[i$1];\n        if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n          { found.push(cur.val); }\n      }\n      return found\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getContextBefore(this, line + 1, precise).state\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range$$1 = this.doc.sel.primary();\n      if (start == null) { pos = range$$1.head; }\n      else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n      else { pos = start ? range$$1.from() : range$$1.to(); }\n      return cursorCoords(this, pos, mode || \"page\")\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top)\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset)\n    },\n    heightAtLine: function(line, mode, includeWidgets) {\n      var end = false, lineObj;\n      if (typeof line == \"number\") {\n        var last = this.doc.first + this.doc.size - 1;\n        if (line < this.doc.first) { line = this.doc.first; }\n        else if (line > last) { line = last; end = true; }\n        lineObj = getLine(this.doc, line);\n      } else {\n        lineObj = line;\n      }\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0)\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display) },\n    defaultCharWidth: function() { return charWidth(this.display) },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      node.setAttribute(\"cm-ignore-events\", \"true\");\n      this.display.input.setUneditable(node);\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          { top = pos.top - node.offsetHeight; }\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          { top = pos.bottom; }\n        if (left + node.offsetWidth > hspace)\n          { left = hspace - node.offsetWidth; }\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") { left = 0; }\n        else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n    triggerOnMouseDown: methodOp(onMouseDown),\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        { return commands[cmd].call(null, this) }\n    },\n\n    triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n    findPosH: function(from, amount, unit, visually) {\n      var this$1 = this;\n\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        cur = findPosH(this$1.doc, cur, dir, unit, visually);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      this.extendSelectionsBy(function (range$$1) {\n        if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n          { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n        else\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        { doc.replaceSelection(\"\", null, \"+delete\"); }\n      else\n        { deleteNearSelection(this, function (range$$1) {\n          var other = findPosH(doc, range$$1.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n        }); }\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var this$1 = this;\n\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        var coords = cursorCoords(this$1, cur, \"div\");\n        if (x == null) { x = coords.left; }\n        else { coords.left = x; }\n        cur = findPosV(this$1, coords, dir, unit);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      var doc = this.doc, goals = [];\n      var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function (range$$1) {\n        if (collapse)\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n        var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n        if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n        goals.push(headPos.left);\n        var pos = findPosV(this$1, headPos, dir, unit);\n        if (unit == \"page\" && range$$1 == doc.sel.primary())\n          { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n        return pos\n      }, sel_move);\n      if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n        { doc.sel.ranges[i].goalColumn = goals[i]; } }\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function (ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n          : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n        while (start > 0 && check(line.charAt(start - 1))) { --start; }\n        while (end < line.length && check(line.charAt(end))) { ++end; }\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end))\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) { return }\n      if (this.state.overwrite = !this.state.overwrite)\n        { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n      else\n        { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return this.display.input.getField() == activeElt() },\n    isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n    scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n              clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n    },\n\n    scrollIntoView: methodOp(function(range$$1, margin) {\n      if (range$$1 == null) {\n        range$$1 = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) { margin = this.options.cursorScrollMargin; }\n      } else if (typeof range$$1 == \"number\") {\n        range$$1 = {from: Pos(range$$1, 0), to: null};\n      } else if (range$$1.from == null) {\n        range$$1 = {from: range$$1, to: null};\n      }\n      if (!range$$1.to) { range$$1.to = range$$1.from; }\n      range$$1.margin = margin || 0;\n\n      if (range$$1.from.line != null) {\n        scrollToRange(this, range$$1);\n      } else {\n        scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var this$1 = this;\n\n      var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n      if (width != null) { this.display.wrapper.style.width = interpret(width); }\n      if (height != null) { this.display.wrapper.style.height = interpret(height); }\n      if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n      var lineNo$$1 = this.display.viewFrom;\n      this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n        if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n          { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n        ++lineNo$$1;\n      });\n      this.curOp.forceUpdate = true;\n      signal(this, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f)},\n    startOperation: function(){return startOperation(this)},\n    endOperation: function(){return endOperation(this)},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        { estimateLineHeights(this); }\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      this.display.input.reset();\n      scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old\n    }),\n\n    getInputField: function(){return this.display.input.getField()},\n    getWrapperElement: function(){return this.display.wrapper},\n    getScrollerElement: function(){return this.display.scroller},\n    getGutterElement: function(){return this.display.gutters}\n  };\n  eventMixin(CodeMirror);\n\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n};\n\n// Used for horizontal relative motion. Dir is -1 or 1 (left or\n// right), unit can be \"char\", \"column\" (like char, but doesn't\n// cross line boundaries), \"word\" (across next word), or \"group\" (to\n// the start of next group of word or non-word-non-whitespace\n// chars). The visually param controls whether, in right-to-left\n// text, direction 1 means to move towards the next index in the\n// string, or towards the character to the right of the current\n// position. The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosH(doc, pos, dir, unit, visually) {\n  var oldPos = pos;\n  var origDir = dir;\n  var lineObj = getLine(doc, pos.line);\n  function findNextLine() {\n    var l = pos.line + dir;\n    if (l < doc.first || l >= doc.first + doc.size) { return false }\n    pos = new Pos(l, pos.ch, pos.sticky);\n    return lineObj = getLine(doc, l)\n  }\n  function moveOnce(boundToLine) {\n    var next;\n    if (visually) {\n      next = moveVisually(doc.cm, lineObj, pos, dir);\n    } else {\n      next = moveLogically(lineObj, pos, dir);\n    }\n    if (next == null) {\n      if (!boundToLine && findNextLine())\n        { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n      else\n        { return false }\n    } else {\n      pos = next;\n    }\n    return true\n  }\n\n  if (unit == \"char\") {\n    moveOnce();\n  } else if (unit == \"column\") {\n    moveOnce(true);\n  } else if (unit == \"word\" || unit == \"group\") {\n    var sawType = null, group = unit == \"group\";\n    var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n    for (var first = true;; first = false) {\n      if (dir < 0 && !moveOnce(!first)) { break }\n      var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n      var type = isWordChar(cur, helper) ? \"w\"\n        : group && cur == \"\\n\" ? \"n\"\n        : !group || /\\s/.test(cur) ? null\n        : \"p\";\n      if (group && !first && !type) { type = \"s\"; }\n      if (sawType && sawType != type) {\n        if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n        break\n      }\n\n      if (type) { sawType = type; }\n      if (dir > 0 && !moveOnce(!first)) { break }\n    }\n  }\n  var result = skipAtomic(doc, pos, oldPos, origDir, true);\n  if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n  return result\n}\n\n// For relative vertical movement. Dir may be -1 or 1. Unit can be\n// \"page\" or \"line\". The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosV(cm, pos, dir, unit) {\n  var doc = cm.doc, x = pos.left, y;\n  if (unit == \"page\") {\n    var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n    var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n    y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n  } else if (unit == \"line\") {\n    y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n  }\n  var target;\n  for (;;) {\n    target = coordsChar(cm, x, y);\n    if (!target.outside) { break }\n    if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n    y += dir * 5;\n  }\n  return target\n}\n\n// CONTENTEDITABLE INPUT STYLE\n\nvar ContentEditableInput = function(cm) {\n  this.cm = cm;\n  this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n  this.polling = new Delayed();\n  this.composing = null;\n  this.gracePeriod = false;\n  this.readDOMTimeout = null;\n};\n\nContentEditableInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = input.cm;\n  var div = input.div = display.lineDiv;\n  disableBrowserMagic(div, cm.options.spellcheck);\n\n  on(div, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n    // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n    if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n  });\n\n  on(div, \"compositionstart\", function (e) {\n    this$1.composing = {data: e.data, done: false};\n  });\n  on(div, \"compositionupdate\", function (e) {\n    if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n  });\n  on(div, \"compositionend\", function (e) {\n    if (this$1.composing) {\n      if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n      this$1.composing.done = true;\n    }\n  });\n\n  on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n  on(div, \"input\", function () {\n    if (!this$1.composing) { this$1.readFromDOMSoon(); }\n  });\n\n  function onCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.operation(function () {\n          cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n          cm.replaceSelection(\"\", null, \"cut\");\n        });\n      }\n    }\n    if (e.clipboardData) {\n      e.clipboardData.clearData();\n      var content = lastCopied.text.join(\"\\n\");\n      // iOS exposes the clipboard API, but seems to discard content inserted into it\n      e.clipboardData.setData(\"Text\", content);\n      if (e.clipboardData.getData(\"Text\") == content) {\n        e.preventDefault();\n        return\n      }\n    }\n    // Old-fashioned briefly-focus-a-textarea hack\n    var kludge = hiddenTextarea(), te = kludge.firstChild;\n    cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n    te.value = lastCopied.text.join(\"\\n\");\n    var hadFocus = document.activeElement;\n    selectInput(te);\n    setTimeout(function () {\n      cm.display.lineSpace.removeChild(kludge);\n      hadFocus.focus();\n      if (hadFocus == div) { input.showPrimarySelection(); }\n    }, 50);\n  }\n  on(div, \"copy\", onCopyCut);\n  on(div, \"cut\", onCopyCut);\n};\n\nContentEditableInput.prototype.prepareSelection = function () {\n  var result = prepareSelection(this.cm, false);\n  result.focus = this.cm.state.focused;\n  return result\n};\n\nContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n  if (!info || !this.cm.display.view.length) { return }\n  if (info.focus || takeFocus) { this.showPrimarySelection(); }\n  this.showMultipleSelections(info);\n};\n\nContentEditableInput.prototype.showPrimarySelection = function () {\n  var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n  var from = prim.from(), to = prim.to();\n\n  if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n      cmp(minPos(curAnchor, curFocus), from) == 0 &&\n      cmp(maxPos(curAnchor, curFocus), to) == 0)\n    { return }\n\n  var view = cm.display.view;\n  var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n      {node: view[0].measure.map[2], offset: 0};\n  var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n  if (!end) {\n    var measure = view[view.length - 1].measure;\n    var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n    end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n  }\n\n  if (!start || !end) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var old = sel.rangeCount && sel.getRangeAt(0), rng;\n  try { rng = range(start.node, start.offset, end.offset, end.node); }\n  catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n  if (rng) {\n    if (!gecko && cm.state.focused) {\n      sel.collapse(start.node, start.offset);\n      if (!rng.collapsed) {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n    } else {\n      sel.removeAllRanges();\n      sel.addRange(rng);\n    }\n    if (old && sel.anchorNode == null) { sel.addRange(old); }\n    else if (gecko) { this.startGracePeriod(); }\n  }\n  this.rememberSelection();\n};\n\nContentEditableInput.prototype.startGracePeriod = function () {\n    var this$1 = this;\n\n  clearTimeout(this.gracePeriod);\n  this.gracePeriod = setTimeout(function () {\n    this$1.gracePeriod = false;\n    if (this$1.selectionChanged())\n      { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n  }, 20);\n};\n\nContentEditableInput.prototype.showMultipleSelections = function (info) {\n  removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n  removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n};\n\nContentEditableInput.prototype.rememberSelection = function () {\n  var sel = window.getSelection();\n  this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n  this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n};\n\nContentEditableInput.prototype.selectionInEditor = function () {\n  var sel = window.getSelection();\n  if (!sel.rangeCount) { return false }\n  var node = sel.getRangeAt(0).commonAncestorContainer;\n  return contains(this.div, node)\n};\n\nContentEditableInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\") {\n    if (!this.selectionInEditor())\n      { this.showSelection(this.prepareSelection(), true); }\n    this.div.focus();\n  }\n};\nContentEditableInput.prototype.blur = function () { this.div.blur(); };\nContentEditableInput.prototype.getField = function () { return this.div };\n\nContentEditableInput.prototype.supportsTouch = function () { return true };\n\nContentEditableInput.prototype.receivedFocus = function () {\n  var input = this;\n  if (this.selectionInEditor())\n    { this.pollSelection(); }\n  else\n    { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n  function poll() {\n    if (input.cm.state.focused) {\n      input.pollSelection();\n      input.polling.set(input.cm.options.pollInterval, poll);\n    }\n  }\n  this.polling.set(this.cm.options.pollInterval, poll);\n};\n\nContentEditableInput.prototype.selectionChanged = function () {\n  var sel = window.getSelection();\n  return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n    sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n};\n\nContentEditableInput.prototype.pollSelection = function () {\n  if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n  var sel = window.getSelection(), cm = this.cm;\n  // On Android Chrome (version 56, at least), backspacing into an\n  // uneditable block element will put the cursor in that element,\n  // and then, because it's not editable, hide the virtual keyboard.\n  // Because Android doesn't allow us to actually detect backspace\n  // presses in a sane way, this code checks for when that happens\n  // and simulates a backspace press in this case.\n  if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n    this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n    this.blur();\n    this.focus();\n    return\n  }\n  if (this.composing) { return }\n  this.rememberSelection();\n  var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (anchor && head) { runInOp(cm, function () {\n    setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n    if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n  }); }\n};\n\nContentEditableInput.prototype.pollContent = function () {\n  if (this.readDOMTimeout != null) {\n    clearTimeout(this.readDOMTimeout);\n    this.readDOMTimeout = null;\n  }\n\n  var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n  var from = sel.from(), to = sel.to();\n  if (from.ch == 0 && from.line > cm.firstLine())\n    { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n  if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n    { to = Pos(to.line + 1, 0); }\n  if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n  var fromIndex, fromLine, fromNode;\n  if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n    fromLine = lineNo(display.view[0].line);\n    fromNode = display.view[0].node;\n  } else {\n    fromLine = lineNo(display.view[fromIndex].line);\n    fromNode = display.view[fromIndex - 1].node.nextSibling;\n  }\n  var toIndex = findViewIndex(cm, to.line);\n  var toLine, toNode;\n  if (toIndex == display.view.length - 1) {\n    toLine = display.viewTo - 1;\n    toNode = display.lineDiv.lastChild;\n  } else {\n    toLine = lineNo(display.view[toIndex + 1].line) - 1;\n    toNode = display.view[toIndex + 1].node.previousSibling;\n  }\n\n  if (!fromNode) { return false }\n  var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n  var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n  while (newText.length > 1 && oldText.length > 1) {\n    if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n    else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n    else { break }\n  }\n\n  var cutFront = 0, cutEnd = 0;\n  var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n  while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n    { ++cutFront; }\n  var newBot = lst(newText), oldBot = lst(oldText);\n  var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                           oldBot.length - (oldText.length == 1 ? cutFront : 0));\n  while (cutEnd < maxCutEnd &&\n         newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n    { ++cutEnd; }\n  // Try to move start of change to start of selection if ambiguous\n  if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n    while (cutFront && cutFront > from.ch &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n      cutFront--;\n      cutEnd++;\n    }\n  }\n\n  newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n  newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n  var chFrom = Pos(fromLine, cutFront);\n  var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n  if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n    replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n    return true\n  }\n};\n\nContentEditableInput.prototype.ensurePolled = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.reset = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.forceCompositionEnd = function () {\n  if (!this.composing) { return }\n  clearTimeout(this.readDOMTimeout);\n  this.composing = null;\n  this.updateFromDOM();\n  this.div.blur();\n  this.div.focus();\n};\nContentEditableInput.prototype.readFromDOMSoon = function () {\n    var this$1 = this;\n\n  if (this.readDOMTimeout != null) { return }\n  this.readDOMTimeout = setTimeout(function () {\n    this$1.readDOMTimeout = null;\n    if (this$1.composing) {\n      if (this$1.composing.done) { this$1.composing = null; }\n      else { return }\n    }\n    this$1.updateFromDOM();\n  }, 80);\n};\n\nContentEditableInput.prototype.updateFromDOM = function () {\n    var this$1 = this;\n\n  if (this.cm.isReadOnly() || !this.pollContent())\n    { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n};\n\nContentEditableInput.prototype.setUneditable = function (node) {\n  node.contentEditable = \"false\";\n};\n\nContentEditableInput.prototype.onKeyPress = function (e) {\n  if (e.charCode == 0 || this.composing) { return }\n  e.preventDefault();\n  if (!this.cm.isReadOnly())\n    { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n};\n\nContentEditableInput.prototype.readOnlyChanged = function (val) {\n  this.div.contentEditable = String(val != \"nocursor\");\n};\n\nContentEditableInput.prototype.onContextMenu = function () {};\nContentEditableInput.prototype.resetPosition = function () {};\n\nContentEditableInput.prototype.needsContentAttribute = true;\n\nfunction posToDOM(cm, pos) {\n  var view = findViewForLine(cm, pos.line);\n  if (!view || view.hidden) { return null }\n  var line = getLine(cm.doc, pos.line);\n  var info = mapFromLineView(view, line, pos.line);\n\n  var order = getOrder(line, cm.doc.direction), side = \"left\";\n  if (order) {\n    var partPos = getBidiPartAt(order, pos.ch);\n    side = partPos % 2 ? \"right\" : \"left\";\n  }\n  var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n  result.offset = result.collapse == \"right\" ? result.end : result.start;\n  return result\n}\n\nfunction isInGutter(node) {\n  for (var scan = node; scan; scan = scan.parentNode)\n    { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n  return false\n}\n\nfunction badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\nfunction domTextBetween(cm, from, to, fromLine, toLine) {\n  var text = \"\", closing = false, lineSep = cm.doc.lineSeparator();\n  function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n  function close() {\n    if (closing) {\n      text += lineSep;\n      closing = false;\n    }\n  }\n  function addText(str) {\n    if (str) {\n      close();\n      text += str;\n    }\n  }\n  function walk(node) {\n    if (node.nodeType == 1) {\n      var cmText = node.getAttribute(\"cm-text\");\n      if (cmText != null) {\n        addText(cmText || node.textContent.replace(/\\u200b/g, \"\"));\n        return\n      }\n      var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n      if (markerID) {\n        var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n        if (found.length && (range$$1 = found[0].find(0)))\n          { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n        return\n      }\n      if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n      var isBlock = /^(pre|div|p)$/i.test(node.nodeName);\n      if (isBlock) { close(); }\n      for (var i = 0; i < node.childNodes.length; i++)\n        { walk(node.childNodes[i]); }\n      if (isBlock) { closing = true; }\n    } else if (node.nodeType == 3) {\n      addText(node.nodeValue);\n    }\n  }\n  for (;;) {\n    walk(from);\n    if (from == to) { break }\n    from = from.nextSibling;\n  }\n  return text\n}\n\nfunction domToPos(cm, node, offset) {\n  var lineNode;\n  if (node == cm.display.lineDiv) {\n    lineNode = cm.display.lineDiv.childNodes[offset];\n    if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n    node = null; offset = 0;\n  } else {\n    for (lineNode = node;; lineNode = lineNode.parentNode) {\n      if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n      if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n    }\n  }\n  for (var i = 0; i < cm.display.view.length; i++) {\n    var lineView = cm.display.view[i];\n    if (lineView.node == lineNode)\n      { return locateNodeInLineView(lineView, node, offset) }\n  }\n}\n\nfunction locateNodeInLineView(lineView, node, offset) {\n  var wrapper = lineView.text.firstChild, bad = false;\n  if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n  if (node == wrapper) {\n    bad = true;\n    node = wrapper.childNodes[offset];\n    offset = 0;\n    if (!node) {\n      var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n      return badPos(Pos(lineNo(line), line.text.length), bad)\n    }\n  }\n\n  var textNode = node.nodeType == 3 ? node : null, topNode = node;\n  if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n    textNode = node.firstChild;\n    if (offset) { offset = textNode.nodeValue.length; }\n  }\n  while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n  var measure = lineView.measure, maps = measure.maps;\n\n  function find(textNode, topNode, offset) {\n    for (var i = -1; i < (maps ? maps.length : 0); i++) {\n      var map$$1 = i < 0 ? measure.map : maps[i];\n      for (var j = 0; j < map$$1.length; j += 3) {\n        var curNode = map$$1[j + 2];\n        if (curNode == textNode || curNode == topNode) {\n          var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n          var ch = map$$1[j] + offset;\n          if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n          return Pos(line, ch)\n        }\n      }\n    }\n  }\n  var found = find(textNode, topNode, offset);\n  if (found) { return badPos(found, bad) }\n\n  // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n  for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n    found = find(after, after.firstChild, 0);\n    if (found)\n      { return badPos(Pos(found.line, found.ch - dist), bad) }\n    else\n      { dist += after.textContent.length; }\n  }\n  for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n    found = find(before, before.firstChild, -1);\n    if (found)\n      { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n    else\n      { dist$1 += before.textContent.length; }\n  }\n}\n\n// TEXTAREA INPUT STYLE\n\nvar TextareaInput = function(cm) {\n  this.cm = cm;\n  // See input.poll and input.reset\n  this.prevInput = \"\";\n\n  // Flag that indicates whether we expect input to appear real soon\n  // now (after some event like 'keypress' or 'input') and are\n  // polling intensively.\n  this.pollingFast = false;\n  // Self-resetting timeout for the poller\n  this.polling = new Delayed();\n  // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n  this.hasSelection = false;\n  this.composing = null;\n};\n\nTextareaInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = this.cm;\n  this.createField(display);\n  var te = this.textarea;\n\n  display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n  // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n  if (ios) { te.style.width = \"0px\"; }\n\n  on(te, \"input\", function () {\n    if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n    input.poll();\n  });\n\n  on(te, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n    cm.state.pasteIncoming = true;\n    input.fastPoll();\n  });\n\n  function prepareCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.setSelections(ranges.ranges, null, sel_dontScroll);\n      } else {\n        input.prevInput = \"\";\n        te.value = ranges.text.join(\"\\n\");\n        selectInput(te);\n      }\n    }\n    if (e.type == \"cut\") { cm.state.cutIncoming = true; }\n  }\n  on(te, \"cut\", prepareCopyCut);\n  on(te, \"copy\", prepareCopyCut);\n\n  on(display.scroller, \"paste\", function (e) {\n    if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n    cm.state.pasteIncoming = true;\n    input.focus();\n  });\n\n  // Prevent normal selection in the editor (we handle our own)\n  on(display.lineSpace, \"selectstart\", function (e) {\n    if (!eventInWidget(display, e)) { e_preventDefault(e); }\n  });\n\n  on(te, \"compositionstart\", function () {\n    var start = cm.getCursor(\"from\");\n    if (input.composing) { input.composing.range.clear(); }\n    input.composing = {\n      start: start,\n      range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n    };\n  });\n  on(te, \"compositionend\", function () {\n    if (input.composing) {\n      input.poll();\n      input.composing.range.clear();\n      input.composing = null;\n    }\n  });\n};\n\nTextareaInput.prototype.createField = function (_display) {\n  // Wraps and hides input textarea\n  this.wrapper = hiddenTextarea();\n  // The semihidden textarea that is focused when the editor is\n  // focused, and receives input.\n  this.textarea = this.wrapper.firstChild;\n};\n\nTextareaInput.prototype.prepareSelection = function () {\n  // Redraw the selection and/or cursor\n  var cm = this.cm, display = cm.display, doc = cm.doc;\n  var result = prepareSelection(cm);\n\n  // Move the hidden textarea near the cursor to prevent scrolling artifacts\n  if (cm.options.moveInputWithCursor) {\n    var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n    var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n    result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                        headPos.top + lineOff.top - wrapOff.top));\n    result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                         headPos.left + lineOff.left - wrapOff.left));\n  }\n\n  return result\n};\n\nTextareaInput.prototype.showSelection = function (drawn) {\n  var cm = this.cm, display = cm.display;\n  removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n  removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n  if (drawn.teTop != null) {\n    this.wrapper.style.top = drawn.teTop + \"px\";\n    this.wrapper.style.left = drawn.teLeft + \"px\";\n  }\n};\n\n// Reset the input to correspond to the selection (or to be empty,\n// when not typing and nothing is selected)\nTextareaInput.prototype.reset = function (typing) {\n  if (this.contextMenuPending || this.composing) { return }\n  var cm = this.cm;\n  if (cm.somethingSelected()) {\n    this.prevInput = \"\";\n    var content = cm.getSelection();\n    this.textarea.value = content;\n    if (cm.state.focused) { selectInput(this.textarea); }\n    if (ie && ie_version >= 9) { this.hasSelection = content; }\n  } else if (!typing) {\n    this.prevInput = this.textarea.value = \"\";\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n  }\n};\n\nTextareaInput.prototype.getField = function () { return this.textarea };\n\nTextareaInput.prototype.supportsTouch = function () { return false };\n\nTextareaInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n    try { this.textarea.focus(); }\n    catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n  }\n};\n\nTextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\nTextareaInput.prototype.resetPosition = function () {\n  this.wrapper.style.top = this.wrapper.style.left = 0;\n};\n\nTextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n// Poll for input changes, using the normal rate of polling. This\n// runs as long as the editor is focused.\nTextareaInput.prototype.slowPoll = function () {\n    var this$1 = this;\n\n  if (this.pollingFast) { return }\n  this.polling.set(this.cm.options.pollInterval, function () {\n    this$1.poll();\n    if (this$1.cm.state.focused) { this$1.slowPoll(); }\n  });\n};\n\n// When an event has just come in that is likely to add or change\n// something in the input textarea, we poll faster, to ensure that\n// the change appears on the screen quickly.\nTextareaInput.prototype.fastPoll = function () {\n  var missed = false, input = this;\n  input.pollingFast = true;\n  function p() {\n    var changed = input.poll();\n    if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n    else {input.pollingFast = false; input.slowPoll();}\n  }\n  input.polling.set(20, p);\n};\n\n// Read input from the textarea, and update the document to match.\n// When something is selected, it is present in the textarea, and\n// selected (unless it is huge, in which case a placeholder is\n// used). When nothing is selected, the cursor sits after previously\n// seen text (can be empty), which is stored in prevInput (we must\n// not reset the textarea when typing, because that breaks IME).\nTextareaInput.prototype.poll = function () {\n    var this$1 = this;\n\n  var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n  // Since this is called a *lot*, try to bail out as cheaply as\n  // possible when it is clear that nothing happened. hasSelection\n  // will be the case when there is a lot of text in the textarea,\n  // in which case reading its value would be expensive.\n  if (this.contextMenuPending || !cm.state.focused ||\n      (hasSelection(input) && !prevInput && !this.composing) ||\n      cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n    { return false }\n\n  var text = input.value;\n  // If nothing changed, bail.\n  if (text == prevInput && !cm.somethingSelected()) { return false }\n  // Work around nonsensical selection resetting in IE9/10, and\n  // inexplicable appearance of private area unicode characters on\n  // some key combos in Mac (#2689).\n  if (ie && ie_version >= 9 && this.hasSelection === text ||\n      mac && /[\\uf700-\\uf7ff]/.test(text)) {\n    cm.display.input.reset();\n    return false\n  }\n\n  if (cm.doc.sel == cm.display.selForContextMenu) {\n    var first = text.charCodeAt(0);\n    if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n    if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n  }\n  // Find the part of the input that is actually new\n  var same = 0, l = Math.min(prevInput.length, text.length);\n  while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n  runInOp(cm, function () {\n    applyTextInput(cm, text.slice(same), prevInput.length - same,\n                   null, this$1.composing ? \"*compose\" : null);\n\n    // Don't leave long text in the textarea, since it makes further polling slow\n    if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n    else { this$1.prevInput = text; }\n\n    if (this$1.composing) {\n      this$1.composing.range.clear();\n      this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                         {className: \"CodeMirror-composing\"});\n    }\n  });\n  return true\n};\n\nTextareaInput.prototype.ensurePolled = function () {\n  if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n};\n\nTextareaInput.prototype.onKeyPress = function () {\n  if (ie && ie_version >= 9) { this.hasSelection = null; }\n  this.fastPoll();\n};\n\nTextareaInput.prototype.onContextMenu = function (e) {\n  var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n  var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n  if (!pos || presto) { return } // Opera is difficult.\n\n  // Reset the current text selection only if the click is done outside of the selection\n  // and 'resetSelectionOnContextMenu' option is true.\n  var reset = cm.options.resetSelectionOnContextMenu;\n  if (reset && cm.doc.sel.contains(pos) == -1)\n    { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n  var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n  input.wrapper.style.cssText = \"position: absolute\";\n  var wrapperBox = input.wrapper.getBoundingClientRect();\n  te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n  var oldScrollY;\n  if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n  display.input.focus();\n  if (webkit) { window.scrollTo(null, oldScrollY); }\n  display.input.reset();\n  // Adds \"Select all\" to context menu in FF\n  if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n  input.contextMenuPending = true;\n  display.selForContextMenu = cm.doc.sel;\n  clearTimeout(display.detectingSelectAll);\n\n  // Select-all will be greyed out if there's nothing to select, so\n  // this adds a zero-width space so that we can later check whether\n  // it got selected.\n  function prepareSelectAllHack() {\n    if (te.selectionStart != null) {\n      var selected = cm.somethingSelected();\n      var extval = \"\\u200b\" + (selected ? te.value : \"\");\n      te.value = \"\\u21da\"; // Used to catch context-menu undo\n      te.value = extval;\n      input.prevInput = selected ? \"\" : \"\\u200b\";\n      te.selectionStart = 1; te.selectionEnd = extval.length;\n      // Re-set this, in case some other handler touched the\n      // selection in the meantime.\n      display.selForContextMenu = cm.doc.sel;\n    }\n  }\n  function rehide() {\n    input.contextMenuPending = false;\n    input.wrapper.style.cssText = oldWrapperCSS;\n    te.style.cssText = oldCSS;\n    if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n    // Try to detect the user choosing select-all\n    if (te.selectionStart != null) {\n      if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n      var i = 0, poll = function () {\n        if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n            te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n          operation(cm, selectAll)(cm);\n        } else if (i++ < 10) {\n          display.detectingSelectAll = setTimeout(poll, 500);\n        } else {\n          display.selForContextMenu = null;\n          display.input.reset();\n        }\n      };\n      display.detectingSelectAll = setTimeout(poll, 200);\n    }\n  }\n\n  if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n  if (captureRightClick) {\n    e_stop(e);\n    var mouseup = function () {\n      off(window, \"mouseup\", mouseup);\n      setTimeout(rehide, 20);\n    };\n    on(window, \"mouseup\", mouseup);\n  } else {\n    setTimeout(rehide, 50);\n  }\n};\n\nTextareaInput.prototype.readOnlyChanged = function (val) {\n  if (!val) { this.reset(); }\n  this.textarea.disabled = val == \"nocursor\";\n};\n\nTextareaInput.prototype.setUneditable = function () {};\n\nTextareaInput.prototype.needsContentAttribute = false;\n\nfunction fromTextArea(textarea, options) {\n  options = options ? copyObj(options) : {};\n  options.value = textarea.value;\n  if (!options.tabindex && textarea.tabIndex)\n    { options.tabindex = textarea.tabIndex; }\n  if (!options.placeholder && textarea.placeholder)\n    { options.placeholder = textarea.placeholder; }\n  // Set autofocus to true if this textarea is focused, or if it has\n  // autofocus and no other element is focused.\n  if (options.autofocus == null) {\n    var hasFocus = activeElt();\n    options.autofocus = hasFocus == textarea ||\n      textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n  }\n\n  function save() {textarea.value = cm.getValue();}\n\n  var realSubmit;\n  if (textarea.form) {\n    on(textarea.form, \"submit\", save);\n    // Deplorable hack to make the submit method do the right thing.\n    if (!options.leaveSubmitMethodAlone) {\n      var form = textarea.form;\n      realSubmit = form.submit;\n      try {\n        var wrappedSubmit = form.submit = function () {\n          save();\n          form.submit = realSubmit;\n          form.submit();\n          form.submit = wrappedSubmit;\n        };\n      } catch(e) {}\n    }\n  }\n\n  options.finishInit = function (cm) {\n    cm.save = save;\n    cm.getTextArea = function () { return textarea; };\n    cm.toTextArea = function () {\n      cm.toTextArea = isNaN; // Prevent this from being ran twice\n      save();\n      textarea.parentNode.removeChild(cm.getWrapperElement());\n      textarea.style.display = \"\";\n      if (textarea.form) {\n        off(textarea.form, \"submit\", save);\n        if (typeof textarea.form.submit == \"function\")\n          { textarea.form.submit = realSubmit; }\n      }\n    };\n  };\n\n  textarea.style.display = \"none\";\n  var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n    options);\n  return cm\n}\n\nfunction addLegacyProps(CodeMirror) {\n  CodeMirror.off = off;\n  CodeMirror.on = on;\n  CodeMirror.wheelEventPixels = wheelEventPixels;\n  CodeMirror.Doc = Doc;\n  CodeMirror.splitLines = splitLinesAuto;\n  CodeMirror.countColumn = countColumn;\n  CodeMirror.findColumn = findColumn;\n  CodeMirror.isWordChar = isWordCharBasic;\n  CodeMirror.Pass = Pass;\n  CodeMirror.signal = signal;\n  CodeMirror.Line = Line;\n  CodeMirror.changeEnd = changeEnd;\n  CodeMirror.scrollbarModel = scrollbarModel;\n  CodeMirror.Pos = Pos;\n  CodeMirror.cmpPos = cmp;\n  CodeMirror.modes = modes;\n  CodeMirror.mimeModes = mimeModes;\n  CodeMirror.resolveMode = resolveMode;\n  CodeMirror.getMode = getMode;\n  CodeMirror.modeExtensions = modeExtensions;\n  CodeMirror.extendMode = extendMode;\n  CodeMirror.copyState = copyState;\n  CodeMirror.startState = startState;\n  CodeMirror.innerMode = innerMode;\n  CodeMirror.commands = commands;\n  CodeMirror.keyMap = keyMap;\n  CodeMirror.keyName = keyName;\n  CodeMirror.isModifierKey = isModifierKey;\n  CodeMirror.lookupKey = lookupKey;\n  CodeMirror.normalizeKeyMap = normalizeKeyMap;\n  CodeMirror.StringStream = StringStream;\n  CodeMirror.SharedTextMarker = SharedTextMarker;\n  CodeMirror.TextMarker = TextMarker;\n  CodeMirror.LineWidget = LineWidget;\n  CodeMirror.e_preventDefault = e_preventDefault;\n  CodeMirror.e_stopPropagation = e_stopPropagation;\n  CodeMirror.e_stop = e_stop;\n  CodeMirror.addClass = addClass;\n  CodeMirror.contains = contains;\n  CodeMirror.rmClass = rmClass;\n  CodeMirror.keyNames = keyNames;\n}\n\n// EDITOR CONSTRUCTOR\n\ndefineOptions(CodeMirror$1);\n\naddEditorMethods(CodeMirror$1);\n\n// Set up methods on CodeMirror's prototype to redirect to the editor's document.\nvar dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\nfor (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n  { CodeMirror$1.prototype[prop] = (function(method) {\n    return function() {return method.apply(this.doc, arguments)}\n  })(Doc.prototype[prop]); } }\n\neventMixin(Doc);\n\n// INPUT HANDLING\n\nCodeMirror$1.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n// MODE DEFINITION AND QUERYING\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nCodeMirror$1.defineMode = function(name/*, mode, …*/) {\n  if (!CodeMirror$1.defaults.mode && name != \"null\") { CodeMirror$1.defaults.mode = name; }\n  defineMode.apply(this, arguments);\n};\n\nCodeMirror$1.defineMIME = defineMIME;\n\n// Minimal default mode.\nCodeMirror$1.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\nCodeMirror$1.defineMIME(\"text/plain\", \"null\");\n\n// EXTENSIONS\n\nCodeMirror$1.defineExtension = function (name, func) {\n  CodeMirror$1.prototype[name] = func;\n};\nCodeMirror$1.defineDocExtension = function (name, func) {\n  Doc.prototype[name] = func;\n};\n\nCodeMirror$1.fromTextArea = fromTextArea;\n\naddLegacyProps(CodeMirror$1);\n\nCodeMirror$1.version = \"5.37.0\";\n\nreturn CodeMirror$1;\n\n})));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the chat window.  The communication is handled by chat.js\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatroom',[ \"jquery\", \"form\", \"cm/lib/codemirror\", \"utils\", \"config\",\n\t \"modal\", \"links\",\n\t \"laconic\"\n       ],\n       function($, form, CodeMirror, utils, config, modal, links) {\n\n(function($) {\n  var pluginName = 'chatroom';\n  var lasthangoutwarning = 0;\n\n  /** @lends $.fn.chatroom */\n  var methods = {\n    /**\n     * {Object} [options]\n     * {String} [options.docid] Document identifier\n     */\n\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = { messages: [] };\t\t/* private data */\n\tvar btn, send;\n\tvar close;\n\tvar text;\n\tvar hangout = \"gitty:\"+config.swish.hangout;\n\n\tdata.docid = options.docid;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chatroom each-minute swish-event-receiver\");\n\n\t\t\t\t\t/* build DOM */\n\n\tbtn  = $.el.div({class:\"btn-group dropup\"},\n\t\t send = $.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-primary btn-xs\"\n\t\t\t\t    }, \"Send\"),\n\t\t\t$.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-info btn-xs \"+\n\t\t\t\t            \"dropdown-toggle\",\n\t\t\t\t      'data-toggle':\"dropdown\",\n\t\t\t\t      'aria-haspopup':true,\n\t\t\t\t      'aria-expanded':false\n\t\t\t\t    },\n\t\t\t\t    $.el.span({class:\"caret\"})),\n\t\t   ul = $.el.ul({class:\"dropdown-menu pull-right\"}));\n\ttext = $.el.textarea({ placeholder:\"Type chat message here ...\"\n\t\t\t     }),\n\n\telem.append($.el.div(\n\t\t      {class:\"chat-conversation\"},\n\t\t      $.el.div({class:\"chat-outer-wrapper\"},\n\t\t\t $.el.div({class:\"chat-inner-wrapper\"},\n\t\t\t   $.el.div({class:\"chat-content-wrapper\"},\n\t\t\t      $.el.div({class:\"chat-stretch\"}),\n\t\t\t      $.el.div({class:\"chat-content\"}))))),\n\t    close = $.el.span({class:\"glyphicon menu glyphicon-remove-circle\"}),\n\t\t    $.el.div({class:\"chat-input\"},\n\t\t\t     $.el.table({class:\"chat-input\"},\n\t\t\t\t\t$.el.tr($.el.td({class:\"chat-text\"}, text),\n\t\t\t\t\t\t$.el.td({class:\"chat-send\"}, btn)))));\n\n\t$(send).on(\"click\", function() {\n\t  elem.chatroom('send');\n\t});\n\n\t\t\t\t\t/* event handling */\n\tform.widgets.populateMenu($(btn), elem, {\n\t  \"Include my query\": function() {\n\t    var query = $(\".prolog-query-editor\").queryEditor('getQuery');\n\t    if ( query.trim() != \"\" ) {\n\t      this.chatroom('send',\n\t\t\t    {payload: [{type:\"query\", query:query}]});\n\t    } else {\n\t      modal.alert(\"Your query editor is empty\");\n\t    }\n\t  }\n\t});\n\tif ( options.docid != hangout ) {\n\t  form.widgets.populateMenu($(btn), elem, {\n\t    \"Broadcast to hangout\": function() {\n\t      this.chatroom('send',\n\t\t\t    { broadcast: \"gitty:\"+config.swish.hangout\n\t\t\t    });\n\t    }\n\t  });\n\t}\n\t$(close).on(\"click\", function() {\n\t  elem.tile('close');\n\t});\n\tif ( options.oneline ) {\n\t  $(text).keypress(function(ev) {\n\t    if ( ev.which == 13 ) {\n\t      elem.chatroom('send');\n\t      ev.preventDefault();\n\t      return false;\n\t    }\n\t  });\n\t} else {\n\t  $(text).on('keyup', function() {\n\t    var that = $(this);\n\t    var h;\n\n\t    if ( that.scrollTop() != 0 && (h=that.height()) < 500 ) {\n\t      h += parseFloat(that.css('line-height'));\n\n\t      that.animate({ height: h }, 200,\n\t\t\t   function() { elem.chatroom('scrollToBottom'); });\n\t    }\n\t  });\n\t}\n\tif ( options.docid == hangout ) {\n\t  $(text).focus(function() {\n\t    if ( $(text).val() == \"\" ) {\n\t      var now = new Date().getTime();\n\n\t      if ( now-lasthangoutwarning > 300000 ) {\n\t\tlasthangoutwarning = now;\n\n\t\tmodal.help({file:\"hangout.html\", notagain:\"hangout\"});\n\t      }\n\t    }\n\t  });\n\t}\n\telem.on(\"click\", \".chat-message button\", function(ev) {\n\t  var button = $(ev.target).closest(\"button\");\n\t  var val;\n\n\t  if ( (val = button.data(\"commit\")) ) {\n\t    elem.closest(\".swish\").swish('playFile', val);\n\t  } else if ( (val = button.data(\"diff\")) ) {\n\t    elem.chatroom('diff', val);\n\t  }\n\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\telem.on(\"click\", \".chat-content a\", links.followLink);\n\telem.on(\"pane.resize\", function() {\n\t  elem.chatroom('scrollToBottom', true);\n\t});\n\telem.on(\"minute\", function() {\n\t  elem.chatroom('update_time');\n\t});\n\telem.on(\"activate-tab\", function() {\n\t  elem.chatroom('read_until');\n\t});\n\n\t$(text).height(parseFloat($(text).css('line-height'))+5);\n\n\telem.chatroom('load_from_server');\n      });\n    },\n\n    close: function() {\n      return this.tile('close');\n    },\n\n    /**\n     * Send a chat message.\n     * @param {Object} [options]\n     * @param {Array}  [options.payload] Payloads (queries, etc)\n     * @param {String} [options.docid] Addressed document of not self\n     * @param {String} [options.broadcast] Also broadcast the message\n     * to the indicated document id.\n     * @param {Bool}   [options.clear] if `false`, do not clear the\n     * message window after sending.\n     */\n    send: function(options) {\n      options = options||{};\n      var data = this.data(pluginName);\n      var msg = {type:\"chat-message\"};\n      var ta = this.find(\"textarea\");\n      msg.text = ta.val().trim();\n      var payload = options.payload||[];\n      var has_payload = false;\n      var selection = this.chatroom('storage').storage('getSelection');\n      var hangout = \"gitty:\" + config.swish.hangout;\n\n      if ( selection )\n\tpayload.push({type:\"selection\", selection:selection});\n\n      for(var i=0; i<payload.length; i++) {\n\tif ( payload[i].type != 'about' ) {\n\t  has_payload = true;\n\t  break;\n\t}\n      }\n\t\t\t\t\t/* send first message to hangout */\n      if ( !options.broadcast &&\n\t   data.docid != hangout &&\n\t   data.messages.length == 0 )\n\toptions.broadcast = hangout;\n\n      if ( msg.text != \"\" || has_payload ) {\n\tmsg.uuid    = utils.generateUUID();\n\tmsg.payload = payload;\n\tmsg.docid   = options.docid||data.docid;\n\tif ( options.class )\n\t  msg.class = options.class;\n\n\tif ( options.clear == true ) {\n\t  this.chatroom('clear');\n\t} else {\n\t  data.clear = msg.uuid;\n\t}\n\n\t$(\"#chat\").chat('send', msg);\n\tif ( options.broadcast ) {\n\t  msg.payload.unshift({type:\"about\", docid:data.docid});\n\t  msg.docid = options.broadcast;\n\t  $(\"#chat\").chat('send', msg);\n\t}\n      } else if ( !options.payload ) {\n\tmodal.alert(\"No message to send\");\n      }\n    },\n\n    /**\n     * Get the related storage object\n     */\n    storage: function() {\n      return this.closest(\".tab-pane\").find(\".storage\");\n    },\n\n    /**\n     * @param {Object} msg is the chat message object\n     * @return {Bool} `true` if the msg is sent by the current user.\n     */\n    is_self: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      var self = $(\"#chat\").chat('self');\n\n      return ((muser.id && muser.id == self.id) ||\n\t      (muser.avatar && muser.avatar == self.avatar) ||\n\t      (muser.profile_id && muser.profile_id == suser.profile_id));\n    },\n\n    /**\n     * Indicate we have read all content\n     */\n    read_until: function(msg) {\n      var data;\n\n      if ( msg == undefined &&\n\t   (data = this.data(pluginName)) &&\n\t   data.messages.length > 0 )\n\tmsg = data.messages[data.messages.length-1];\n\n      if ( msg ) {\n\t$(\"#chat\").chat('read_until', msg.docid, msg.time);\n\t$(\".chat-bell\").chatbell('read_until', msg.docid, msg.time);\n      }\n    },\n\n    /**\n     * Render a chat message.\n     * @param {Object} msg\n     * @param {String} msg.html is the HTML content of the object\n     * @param {String} msg.text is the ext of the object\n     * @param {Object} msg.user Sender description\n     */\n    render: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      if ( msg.is_self === undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      elem = $($.el.div({class:\"chat-message\"+(msg.is_self ? \" self\" : \"\"),\n\t\t\t 'data-userid':muser.wsid}));\n      if ( !msg.is_self && muser.avatar ) {\n\telem.append($.el.img({ class:\"avatar\", src:muser.avatar }));\n      }\n      elem.append($.el.span({class:\"chat-sender\"},\n\t\t\t    msg.is_self ? \"Me\" : muser.name));\n\n      if ( msg.time ) {\n\tvar title = new Date(msg.time*1000).toLocaleString();\n\telem.append($.el.span({class:\"chat-time\", title:title},\n\t\t\t      \"(\", utils.ago(msg.time), \") \"));\n\telem.data('time', msg.time);\n      }\n\n      if ( msg.payload ) {\n\tfor(var i=0; i<msg.payload.length; i++) {\n\t  var pl = msg.payload[i];\n\t  if ( payload_handlers[pl.type] )\n\t    payload_handlers[pl.type].call(elem, pl);\n\t  else\n\t    console.log(pl);\n\t}\n      }\n\n      var html;\n      if ( msg.html ) {\n\thtml = msg.html;\n      } else if ( msg.text ) {\n\thtml = $($.el.span(msg.text)).html();\n\thtml = markdown(html);\n      }\n\n      if ( html ) {\n\tvar span = $.el.span({class:\"chat-message html\"});\n\t$(span).html(html);\n\telem.append(span);\n      }\n\n      return elem;\n    },\n\n    /**\n     * Add a message to the chatroom.\n     * @param {Object} msg is the message to display\n     * @param {Bool} [seen] if `true`, claim that the message is read.\n     * When omitted it is `true` if the chatroom is visible.\n     */\n    add: function(msg, seen) {\n      var data = this.data(pluginName);\n\n      if ( msg.docid == data.docid )\n      { var elem;\n\n\tif ( seen == undefined )\n\t  seen = this.is(\":visible\");\n\n\tif ( msg.is_self == undefined )\n\t  msg.is_self = this.chatroom('is_self', msg);\n\tdata.messages.push(msg);\n\n\telem = this.chatroom('render', msg);\n\tthis.find(\".chat-content\").append(elem);\n\tthis.chatroom('scrollToBottom');\n\n\tif ( seen )\n\t  this.chatroom('read_until', msg);\n      }\n\n      if ( msg.uuid && msg.uuid == data.clear ) {\n\tthis.chatroom('clear');\n      }\n\n      return this;\n    },\n\n    clear: function() {\n      var ta = this.find(\"textarea\");\n\n      ta.val(\"\");\n      ta.height(parseFloat(ta.css('line-height')+5));\n    },\n\n    load_from_server: function(ifempty) {\n      var data = this.data(pluginName);\n      var elem = $(this);\n\n      $.get(config.http.locations.chat_messages,\n\t    { docid: data.docid\n\t    },\n\t    function(messages) {\n\t      if ( messages.length == 0 ) {\n\t\tif ( ifempty )\n\t\t  elem.chatroom('close');\n\t\telse if ( data.docid != \"gitty:\"+config.swish.hangout )\n\t\t  modal.help({file:\"newchat.html\", notagain:\"newchat\"});\n\t      } else {\n\t\tfor(var i=0; i<messages.length; i++) {\n\t\t  elem.chatroom('add', messages[i], i == messages.length-1 );\n\t\t}\n\t      }\n\t    }).fail(function(jqXHR, textStatus, errorThrown) {\n\t      modal.ajaxError(jqXHR);\n\t    });\n\n      return this;\n    },\n\n    update_time: function() {\n      return this.find(\".chat-message\").each(function() {\n\tvar elem = $(this);\n\tvar time;\n\tif ( (time=elem.data('time')) )\n\t  elem.find(\".chat-time\").text(\"(\"+utils.ago(time)+\") \");\n      });\n    },\n\n    /**\n     * Show diff between versions\n     * @param {Object} options\n     * @param {String} options.from Base commit\n     * @param {String} options.to Target commit\n     * @param {String} options.name Name of the file\n     */\n\n    diff: function(options) {\n      function error(jqXHR) {\n\tmodal.ajaxError(jqXHR);\n      }\n\n      $.ajax({\n        url: config.http.locations.web_storage + options.from,\n\tdata: {format: \"raw\"},\n\tsuccess: function(from) {\n\t  $.ajax({\n\t    url: config.http.locations.web_storage + options.to,\n\t    data: {format: \"raw\"},\n\t    success: function(to) {\n\n\t      function diffBody() {\n\t\tvar diff = $.el.div();\n\n\t\tthis.append(diff);\n\t\t$(diff).diff({\n\t\t  base: from,\n\t\t  head: to,\n\t\t  baseName: options.name + \" (before)\",\n\t\t  headName: options.name + \" (after)\"\n\t\t});\n\t\tthis.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t      }\n\n\t      form.showDialog({\n\t        title: \"Update differences\",\n\t\tbody:  diffBody\n\t      });\n\t    },\n\t    error: error\n\t  })\n\t},\n\terror: error\n      });\n    },\n\n\n    /**\n     * Associate with a new document\n     */\n    docid: function(docid, ifempty) {\n      var data = this.data(pluginName);\n\n      if ( data.docid != docid ) {\n\tthis.find(\".chat-content\").html(\"\");\n\tdata.docid = docid;\n\tthis.chatroom('load_from_server', ifempty);\n      }\n    },\n\n    /**\n     * @param {String} docid docid of rooms we are looking for\n     * @returns {jQuery} set of chatrooms pointing at document id\n     */\n    rooms: function(docid) {\n      var rooms = [];\n\n      this.each(function() {\n\tvar room = $(this);\n\tvar data = room.data(pluginName);\n\tif ( data.docid == docid )\n\t  rooms.push(this);\n      });\n\n      return $(rooms);\n    },\n\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tscroll  =   elem.find(\"div.chat-inner-wrapper\");\n\twrap    = scroll.find(\"div.chat-content-wrapper\");\n\tcontent =   wrap.find(\"div.chat-content\");\n\tvar height = content[0].scrollHeight;\n\tvar room   = wrap.height() - height - 8;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  wrap.find(\"div.chat-stretch\").height(room > 0 ? room : 0);\n\t  scroll.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\t PAYLOAD HANDLERS\t*\n\t\t *******************************/\n\n  var payload_handlers = {\n    selection: function(selection) {\n      var label   = $().storage('getSelectionLabel', selection.selection);\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      label + \" \",\n\t\t\t      form.widgets.glyphIcon(\"eye-open\")));\n      btn.on(\"click\", function(ev) {\n\t$(ev.target).chatroom('storage')\n\t            .storage('restoreSelection', selection.selection);\n      });\n\n      this.append(\" \", btn, \" \");\n    },\n\n    query: function(query) {\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      \"Query \",\n\t\t\t      form.widgets.glyphIcon(\"download\")));\n      btn.on(\"click\", function() {\n\tvar qe = $(\".prolog-query-editor\");\n\n\tqe.queryEditor('setQuery', query.query);\n\tutils.flash(qe.find(\".CodeMirror\"));\n      });\n      sourceToolTip(btn, query.query);\n\n      this.append(\" \", btn, \" \");\n    },\n\n    update: function(update) {\n      var old, dif, nwe;\n\n      this.append(\" \", $.el.span(\n        {class:\"update\"},\n\told = btn(\"play\",    \"btn-primary\", \"Open old version\"),\n\tdif = btn(\"zoom-in\", \"btn-info\",    \"View changes\"),\n        nwe = btn(\"play\",    \"btn-primary\", \"Open new version\")), \" \");\n\n      $(old).data('commit', update.previous);\n      $(dif).data('diff',   {from:update.previous, to:update.commit,\n\t\t\t     name:update.name});\n      $(nwe).data('commit', update.commit);\n    },\n\n    about: function(about) {\n      var file = about.docid.replace(\"gitty:\", \"\");\n\n      this.append(\" \",\n\t$.el.a({\n\t  href:config.http.locations.web_storage+file,\n\t  class:\"store btn btn-primary btn-xs\"\n\t}, file), \" \");\n    }\n  };\n\n\n  // private functions\n\n  function sourceToolTip(elem, src) {\n    var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n    CodeMirror.runMode(src, \"prolog\", pre);\n\n    elem.attr(\"title\", $.el.div(pre).innerHTML);\n    elem.data(\"html\", true);\n    elem.data(\"placement\", \"bottom\");\n    elem.data(\"trigger\", \"hover\");\n    elem.tooltip();\n  }\n\n  function btn(glyph, type, title) {\n    return form.widgets.glyphIconButton(glyph,\n\t\t\t\t\t{class:\"btn-xs \"+type, title:title});\n  }\n\n  /**\n   * Perform very simple regex based markdown processing\n   */\n  function markdown(text) {\n    var replace = [\n      { regex: /[a-z][a-zA-Z0-9_]*\\/[0-9]/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"/pldoc/man?predicate='+match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /[a-zA-Z0-9_-]+\\.(pl|swinb)\\b/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"'+\n\t\t config.http.locations.web_storage+\n\t         match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /`(.)`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { regex: /`([\\w\\[\\{\\(][^`]*[\\w\\]\\}\\)])`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { delim: \"\\\\*\", a: \"\\\\*\\\\b\", z: \"\\\\b\\\\*\", tag: \"b\" },\n      { delim: \"__\",  a: \"\\\\b__\",  z: \"__\\\\b\",  tag: \"b\" },\n      { delim: \"_\",   a: \"\\\\b_\",   z: \"_\\\\b\",   tag: \"i\" }\n    ];\n\n    function wrap(tag) {\n      return function(match, content) {\n\treturn \"<\"+tag+\">\"+content+\"</\"+tag+\">\";\n      };\n    }\n\n    for(var i=0; i<replace.length; i++) {\n      var r = replace[i];\n\n      if ( r.regex ) {\n\ttext = text.replace(r.regex, r.func);\n      } else if ( r.delim ) {\n\ttext = text.replace(RegExp(r.a+\"([^\"+r.delim+\"]+)\"+r.z,\"g\"),\n\t\t\t    wrap(r.tag));\n      }\n    }\n\n    return text;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chatroom\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatroom = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * <Description of the File>\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatbell',[ \"jquery\", \"form\", \"modal\", \"config\", \"preferences\",\n\t \"laconic\", \"chatroom\"\n       ],\n       function($, form, modal, config, preferences) {\n\n(function($) {\n  var pluginName = 'chatbell';\n\n  /** @lends $.fn.chatbell */\n  var methods = {\n    /**\n     * @param {Object} [options]\n     * @param {String} [options.docid] Associate with a document id.\n     * If default, try the `data-document` attribute.\n     * @param {String} [options.empty_title] Title attribute if there\n     * are no new messages\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, options); /* private data */\n\n\tdata.docid = options.docid||elem.data('document');\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chat-bell\");\n\telem.attr('title', \"Messages available\");\n\telem.append(form.widgets.glyphIcon(\"bell\"),\n\t\t    $.el.span({class:\"chat-bell-count\"}, \"-\"));\n\telem.chatbell('update');\n      });\n    },\n\n    /**\n     * Set the chat counter and optionally associate the chat bell\n     * with a document (`docid`)\n     * @param {Object} chats\n     * @param {Number} chats.count number of chat messages to report\n     * @param {String} [chats.docid] associate bell with document\n     */\n    chats: function(chats) {\n      var data = this.data(pluginName);\n      var span = this.find(\".chat-bell-count\");\n      var elem = this;\n\n      function empty() {\n\tspan.text(\"-\");\n\telem.removeClass('chat-available chat-alert');\n\telem.attr('title', data.empty_title||\"No messages available\");\n      }\n\n      if ( chats == undefined ) {\n\tdelete data.docid;\n\tdelete data.count;\n\tdelete data.total;\n\n\tempty();\n      } else {\n\tvar count = chats.count == undefined ? chats.total : chats.count;\n\n\tif ( chats.docid ) data.docid = chats.docid;\n\tif ( chats.count ) data.count = chats.count;\n\tif ( chats.total ) data.total = chats.total;\n\n\tif ( chats.total > 0 ) {\n\t  this.addClass('chat-available');\n\t  if ( count > 0 ) {\n\t    span.text(count);\n\t    this.addClass('chat-alert');\n\t    this.attr('title', count + \" new messages\");\n\t  } else {\n\t    span.text(chats.total);\n\t    this.removeClass('chat-alert');\n\t    this.attr('title', chats.total + \" old messages\");\n\t  }\n\t} else {\n\t  empty();\n\t}\n      }\n\n      return this;\n    },\n\n    'chats++': function(docid) {\n      var data = this.data(pluginName);\n\n      if ( data.total != undefined ) data.total++; else data.total = 1;\n      if ( data.count != undefined ) data.count++;\n      if (      docid != undefined ) data.docid = docid;\n\n      if ( data.total ) {\n\tthis.chatbell('chats', {\n\t  total: data.total,\n\t  count: data.count\n\t});\n      }\n\n      return this;\n    },\n\n    /**\n     * Update the chat bell.\n     * @param {Object} [chats]\n     * @param {Number} [chats.total]\n     * @param {Number} [chats.count]\n     * @param {Number} [chats.docid]\n     */\n    update: function(chats) {\n      var data = this.data(pluginName);\n\n      chats = chats||{};\n\n      if ( chats.total != undefined &&\n\t   chats.count != undefined ) {\n\tthis.chatbell('chats', chats);\n      } else {\n\tvar docid = chats.docid||data.docid;\n\tvar after = preferences.getDocVal(docid, 'chatBar', 0);\n\n\t\t\t/* fetch if we want unread or we don't know total */\n\tif ( docid && (after || chats.total == undefined) ) {\n\t  var elem = $(this);\n\n\t  $.get(config.http.locations.chat_status,\n\t\t{ docid: docid,\n\t\t  after: after\n\t\t},\n\t\tfunction(chats) {\n\t\t  elem.chatbell('chats', chats);\n\t\t});\n\t} else if ( chats.total != undefined ) {\n\t  this.chatbell('chats', chats);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Sent by the chatroom if the user saw the last message.\n     */\n    read_until: function(docid, time) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.docid == docid && data.total ) {\n\t  elem.chatbell('chats', {total: data.total, count:0});\n\t}\n      });\n    },\n\n    /**\n     * Handle an incomming chat message.  If the message is not from\n     * myself, display as a short notification.\n     */\n    'chat-message': function(msg) {\n      if ( msg.is_self == undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      this.chatbell('chats++');\n\n      if ( !msg.is_self ) {\n\tvar elem = this.chatroom('render', msg);\n\tvar options = {\n\t  dom: elem\n\t};\n\n\tmodal.notify(this, options);\n      }\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class chatbell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatbell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2018, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * List available sources.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('sourcelist',[ \"jquery\", \"config\", \"form\", \"modal\", \"laconic\" ],\n       function($, config, form, modal) {\n\n(function($) {\n  var pluginName = 'sourcelist';\n\n  var current_query = {q:\"user:\\\"me\\\"\"};\n  var current_profile;\n  var query_cache = [];\n  var pending = [];\n  var qid = 0;\n\n  /** @lends $.fn.sourcelist */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\telem.data(pluginName, data);\t/* store with element */\n\t\t\t\t\t/* populate search page */\n\telem[pluginName]('fill', undefined, current_query);\n\telem[pluginName]('check_cache');\n\telem[pluginName]('update', current_query);\n\telem.on(\"login\", function() {\n\t  if ( elem[pluginName]('check_cache') )\n\t    elem[pluginName]('update', current_query);\n\t});\n      });\n    },\n\n    check_cache: function() {\n      var profile = $(\"#login\").login('get_profile',\n\t\t\t\t      [ \"display_name\", \"avatar\"\n\t\t\t\t      ]);\n      if ( !(current_profile &&\n\t     current_profile.display_name == profile.display_name &&\n\t     current_profile.avatar == profile.avatar) ) {\n\tquery_cache = [];\n\tcurrent_profile = profile;\n\treturn true;\n      } else {\n\tif ( !current_profile )\n\t  current_profile = profile;\n\treturn false;\n      }\n    },\n\n    /**\n     * Post an update query and process the result\n     */\n    update: function(query) {\n      var elem = this;\n      var reply;\n\n      this[pluginName]('check_cache');\n\n      if ( (reply = from_cache(query_cache, query)) ) {\n\t$.ajax({\n\t  url: config.http.locations.source_modified,\n\t  dataType: \"json\",\n\t  success: function(json) {\n\t    if ( json.modified < reply.modified+10 ) {\n\t      elem.sourcelist('fill', reply, query);\n\t    } else {\n\t      query_cache = [];\n\t      elem[pluginName]('update', query);\n\t    }\n\t  },\n\t  error: function(jqXHDR) {\n\t    modal.ajaxError(jqXHDR);\n\t  }\n\t});\n      } else {\n\tquery = query||{};\n\n\t$.extend(query, current_profile);\n\tquery.q = query.q||\"\";\n\tquery.offset = query.offset||0;\n\tquery.limit  = query.limit||10;\n\tquery.qid    = qid++;\n\n\tpending.push(query);\n\telem[pluginName]('busy', true);\n\n\t$.ajax({\n\t  url: config.http.locations.source_list,\n\t  data: query,\n\t  dataType: \"json\",\n\t  success: function(reply) {\n\t    reply.query = query;\n\t    pending.pop();\t\t/* should match qid */\n\t    if ( pending.length == 0 )\n\t      elem[pluginName]('busy', false);\n\t    add_to_cache(query_cache, reply);\n\t    elem.sourcelist('fill', reply, query);\n\t  },\n\t  error: function(jqXHDR) {\n\t    pending.pop();\n\t    modal.ajaxError(jqXHDR);\n\t  }\n\t});\n      }\n    },\n\n    /**\n     * Go to a page\n     */\n\n    page: function(move) {\n      var data = this.data(pluginName);\n\n      if ( data && data.page ) {\n\tvar q = $.extend({}, data.page.query);\n\n\tif ( q.offset == undefined )\n\t  q.offset = 0;\n\n\tfunction roundUp(v, n) {\n\t  return Math.floor((v+(n-1))/n) * n;\n\t}\n\n\tswitch(move) {\n\t  case \"first\": q.offset  = 0; break;\n\t  case \"prev\":  q.offset -= data.page.size; break;\n\t  case \"next\":  q.offset += data.page.size; break;\n\t  case \"last\":  q.offset  = roundUp(data.page.total, data.page.size) -\n\t\t\t\t    data.page.size; break;\n\t  default: return;\n\t}\n\n\tq.offset = Math.max(0, q.offset);\n\tthis[pluginName]('update', q);\n      }\n    },\n\n    /**\n     * Fill the result table\n     */\n    fill: function(results, query) {\n      var data = this.data(pluginName);\n      var body;\n\n      if ( !data )\t\t\t\t/* has gone */\n\treturn this;\n\n      if ( results ) {\n\tcurrent_query = query;\n\tdata.page = { query:  query,\n\t\t      offset: query.offset,\n\t\t      size:   query.limit,\n\t\t      total:  results.total\n\t\t    };\n      }\n\n      function h(title) {\n\treturn $.el.th(title);\n      }\n\n      function humanize(stamp) {\n\tvar d = new Date(stamp*1000);\n\tvar s = d.toISOString();\n\n\treturn s.slice(0, 10) + \" \" + s.slice(11,19);\n      }\n\n      body = this.find(\"tbody\");\n      if ( body.length == 0 ) {\n\tthis.append($.el.div({class:\"search-form input-group\"}),\n\t\t    $.el.div({class:\"search-results\"},\n\t\t      table =\n\t\t      $.el.table({class:\"table table-striped table-hover \"+\n\t\t\t\t\t\"table-condensed\"},\n\t\t\t\t $.el.thead($.el.tr(h(\"Type\"),\n\t\t\t\t\t\t    h(\"Name\"),\n\t\t\t\t\t\t    h(\"Tags\"),\n\t\t\t\t\t\t    h(\"User\"),\n\t\t\t\t\t\t    h(\"Modified\"))),\n\t\t\t\t body = $.el.tbody()),\n\t\t      $.el.div({class:\"search-no-results\"}),\n\t\t      $.el.div({class:\"loading search\"})),\n\t\t    $.el.div({class:\"search-footer\"}));\n\tthis[pluginName]('search_form');\n\tbody = $(body);\n\tbody.on(\"click\", \"tr\", function(ev) {\n\t  var tr = $(ev.target).closest(\"tr\");\n\t  $(\"body\").swish('playFile', { file:tr.attr(\"data-name\") });\n\t});\n      } else {\n\t$(body).html(\"\");\n      }\n\n      // set the query, unless we are typing one\n      var input = this.find(\"input.search\");\n      if ( !input.is(\":focus\") ) {\n\tinput.val(results ? results.query.q : query ? query.q : \"\");\n\tinput.trigger(\"propertychange\", false);\n      }\n\n      if ( results ) {\n\tvar i = query.offset - results.query.offset;\n\tvar e = Math.min(i+query.limit, results.matches.length);\n\n\tif ( i<e )\n\t  $(table).show();\n\telse\n\t  $(table).hide();\n\n\tfor(; i<e; i++)\n\t{ var match = results.matches[i];\n\t  var ext   = match.name.split(\".\").pop();\n\t  var base  = match.name.slice(0, -(ext.length+1));\n\n\t  body.append($.el.tr({\"data-name\":match.name},\n\t\t\t      $.el.td(form.widgets.typeIcon(ext)),\n\t\t\t      $.el.td(base),\n\t\t\t      $.el.td((match.tags||[]).join(\" \")),\n\t\t\t      $.el.td(match.author),\n\t\t\t      $.el.td(humanize(match.time))));\n\t}\n\tthis[pluginName]('search_footer', results, query);\n      }\n    },\n\n    search_footer: function(results, query) {\n      var footer = this.find(\"div.search-footer\");\n      var noresults = this.find(\"div.search-no-results\");\n      var bopts = {};\n\n      function btn(action, dir, icon) {\n\tbopts.action = action;\n\tbopts.class  = \"btn-primary \"+dir;\n\treturn form.widgets.glyphIconButton(icon, bopts);\n      }\n\n      if ( footer.find(\".f-total\").length == 0 ) {\n\tfooter.append(btn(\"first\", \"backward\", \"fast-backward\"),\n\t\t      btn(\"prev\",  \"backward\", \"step-backward\"),\n\t\t      $.el.button({class:\"btn btn-default\"},\n\t\t\t\t  $.el.span({class: \"f-from\"}),\n\t\t\t\t  $.el.label(\"to\"),\n\t\t\t\t  $.el.span({class: \"f-to\"}),\n\t\t\t\t  $.el.label(\"from\"),\n\t\t\t\t  $.el.span({class: \"f-total\"})),\n\t\t      btn(\"next\", \"forward\", \"step-forward\"),\n\t\t      btn(\"last\", \"forward\", \"fast-forward\"));\n\n\tfooter.on(\"click\", \"button\", function(ev) {\n\t  var b   = $(ev.target).closest(\"button\");\n\t  var act = b.data('action');\n\n\t  if ( act )\n\t    b.closest(\"div.sourcelist\")[pluginName](\"page\", act)\n\t});\n      }\n\n      var end = Math.min(query.offset+query.limit, results.total);\n\n      if ( results.total == 0 ) {\n\tif ( noresults.find(\"div\").length == 0 ) {\n\t  var a;\n\t  noresults.append(\n\t    $.el.div($.el.span({class:\"no-search-results-warning\"},\n\t\t\t       form.widgets.glyphIcon(\"alert\"),\n\t\t\t       \" No matching files\"), $.el.br(),\n\t\t     \"If you are a new user you may\",\n\t\t     $.el.ul($.el.li(\"Use the Examples menu from the navigation bar\"),\n\t\t\t     $.el.li(\"Use the Program or Notebook button above\")),\n\t\t     $.el.div(a=$.el.a({href:\"#\"}, \"help on search\"))));\n\t  $(a).on(\"click\", function() {\n\t    console.log(\"help\");\n\t    modal.help({file:\"sourcelist.html\"});\n\t  });\n\t}\n\tnoresults.show();\n\tfooter.hide();\n      } else\n      { noresults.hide();\n\n\tif ( query.offset > 0 || end < results.total ) {\n\t  footer.show();\n\t  if ( query.offset == 0 ) {\n\t    footer.find(\".backward\").attr(\"disabled\", \"disabled\");\n\t  } else {\n\t    footer.find(\".backward\").removeAttr(\"disabled\");\n\t  }\n\t  if ( end >= results.total ) {\n\t    footer.find(\".forward\").attr(\"disabled\", \"disabled\");\n\t  } else {\n\t    footer.find(\".forward\").removeAttr(\"disabled\");\n\t  }\n\t  footer.find(\".f-from\") .text(\"\"+query.offset);\n\t  footer.find(\".f-to\")   .text(\"\"+end);\n\t  footer.find(\".f-total\").text(\"\"+results.total);\n\t} else {\n\t  footer.hide();\n\t}\n      }\n    },\n\n    search_form: function() {\n      var data = this.data(pluginName);\n      var elem = this;\n      var div = this.find(\"div.search-form\");\n      var btnsubmit;\n\n      function btn(title, members) {\n\tvar ul;\n\tvar div = $.el.div({class:\"btn-group\"},\n\t\t    $.el.button({ type:\"button\",\n\t\t\t          class:\"btn btn-default dropdown-toggle\",\n\t\t\t          'data-toggle':\"dropdown\",\n\t\t\t          'aria-haspopup': true,\n\t\t\t          'aria-expanded': false\n\t\t\t        },\n\t\t\t\ttitle, \" \",\n\t\t\t\t$.el.span({class:\"caret\"})),\n\t\t    ul=$.el.ul({class:\"dropdown-menu\"}));\n\n\tfunction add(item) {\n\t  var a;\n\n\t  if ( typeof(item) == \"string\" ) {\n\t    return $.el.a({'data-tag':item}, item);\n\t  } else if ( item.i) {\n\t    a = $.el.a({'data-tag':item.t, 'data-value':item.v},\n\t\t       form.widgets.typeIcon(item.i), \" \"+item.l);\n\t  } else {\n\t    a = $.el.a({'data-tag':item.t, 'data-value':item.v},\n\t\t       item.l);\n\t  }\n\t  $(a).data('quote', item.q == undefined ? \"\\\"\" : item.q);\n\n\t  return a;\n\t}\n\n\tfor(var i=0; i<members.length; i++) {\n\t  $(ul).append($.el.li(add(members[i])));\n\t}\n\n\treturn div;\n      }\n\n      function resettimeout(set) {\n\tif ( data.tmo ) {\n\t  clearTimeout(data.tmo);\n\t  data.tmo = undefined;\n\t}\n\tif ( set == true )\n\t  set = 1000;\n\tif ( set )\n\t  data.tmo = setTimeout(submit, set);\n      }\n\n      function submit(ev) {\n\tif ( ev )\n\t  ev.preventDefault();\n\tresettimeout();\n\tvar q = elem.find(\"input\").val();\n\telem[pluginName]('update', {q:q});\n\treturn false;\n      }\n\n      div.append(\n\t$.el.div({class:\"form-group has-feedback has-clear\"},\n\t\t $.el.input({\n\t\t   type: \"text\",\n\t\t   class: \"form-control search\",\n\t\t   placeholder: \"Find files\"\n\t\t }),\n\t\t $.el.span({class:\"form-control-clear glyphicon \"+\n\t\t\t\t  \"glyphicon-remove form-control-feedback \"+\n\t\t\t\t  \"hidden\"})),\n\t$.el.div({ class: \"input-group-btn\" },\n\t\t btn(\"Filter\", [{t:\"user\", l:\"My files\",        v:\"me\", q:\"\\\"\"},\n\t\t\t\t{t:\"user\", l:\"By user\",         v:\"\",   q:\"\\\"\"},\n\t\t\t\t{t:\"user\", l:\"By user (regex)\", v:\"\",   q:\"/\"},\n\t\t\t\t{t:\"tag\",  l:\"By tag\",          v:\"\",   q:\"\\\"\"},\n\t\t\t\t{t:\"tag\",  l:\"By tag (regex)\",  v:\"\",   q:\"/\"},\n\t\t\t\t{t:\"name\", l:\"By name\",         v:\"\",   q:\"\\\"\"},\n\t\t\t\t{t:\"name\", l:\"By name (regex)\", v:\"\",   q:\"/\"}\n\t\t\t       ]),\n\t\t btn(\"Type\",   [{t:\"type\", l:\"Program\",   i:\"pl\",    v:\"pl\",    q:\"\"},\n\t\t\t\t{t:\"type\", l:\"Notebook\",  i:\"swinb\", v:\"swinb\", q:\"\"},\n\t\t\t\t{t:\"type\", l:\"Permalink\", i:\"lnk\",   v:\"lnk\",   q:\"\"}\n\t\t\t       ]),\n\t\t btnsubmit=\n\t\t $.el.button({class:\"btn btn-default\", type:\"submit\"},\n\t\t\t     $.el.i({class:\"glyphicon glyphicon-search\"}))));\n\n      form.dyn_clear(div, submit);\n\n      div.on(\"click\", \"a\", function(ev) {\n\tvar a = $(ev.target).closest(\"a\");\n\n\tfunction tag(tag, value, q) {\n\t  var input = div.find(\"input\");\n\t  var val = input.val();\n\t  var tagv = tag + \":\" + q + (value||\"\") + q;\n\n\t  if ( val.trim() == \"\" ) {\n\t    val = tagv;\n\t  } else {\n\t    if ( value && RegExp(\"\\\\b\"+tag+\":\").test(val) ) {\n\t      val = val.replace(RegExp(\"\\\\b\"+tag+\":(\\\\S*|\\\\s*\\\"[^\\\"]*\\\")\"), tagv);\n\t    } else {\n\t      val = val.trim() + \" \" + tagv;\n\t    }\n\t  }\n\n\t  input.val(val).trigger('propertychange');\n\t  if ( value || tag == \"tag\" )\n\t    submit();\n\t}\n\n\ttag(a.data('tag'), a.data('value'), a.data('quote'));\n      });\n\n      $(btnsubmit).on(\"click\", function(ev) {\n\treturn submit(ev);\n      });\n\n      var inputel = elem.find(\"input\");\n      inputel.keydown(function(ev) {\n\tif ( ev.which == 13 )\n\t  return submit(ev);\n      }).on(\"input propertychange\", function(ev, propagate) {\n\tif ( propagate != false ) {\n\t  if ( from_cache(query_cache, inputel.val()) ) {\n\t    resettimeout(200);\n\t  } else\n\t    resettimeout(true);\n\t}\n      });\n    },\n\n    busy: function(busy) {\n      var div = this.find(\"div.loading\");\n\n      if ( busy )\n\tdiv.show();\n      else\n\tdiv.hide();\n    }\n  }; // methods\n\n\n  /**\n   * Cache management.  These functions should eventually merge results\n   * and select sub-results without contacting the server.\n   */\n  function from_cache(cache, query) {\n    function qmatch(entry) {\n      var e = entry.query;\n      if ( query.q == e.q ) {\n\tif ( query.offset >= e.offset &&\n\t     (query.offset+query.limit <= e.offset + entry.matches.length ||\n\t      e.offset + entry.matches.length == entry.total) )\n\t  return e;\n\t}\n    }\n\n    if ( query != undefined ) {\n      query.offset = query.offset || 0;\n      query.limit  = query.limit  || 10;\n\n      for(var i=cache.length-1; i>=0; i--) {\n\tvar entry = cache[i];\n\tif ( qmatch(entry) )\n\t  return entry;\n      }\n    }\n  }\n\n  function add_to_cache(cache, result) {\n    var qr = result.query;\n\n    qr.offset = qr.offset || 0;\n    qr.limit  = qr.limit  || 10;\n\n    for(var i=cache.length-1; i>=0; i--) {\n      var entry = cache[i];\n      var qc = entry.query;\n\n      if ( qc.q == qr.q ) {\n\tif ( qc.offset + entry.matches.length == qr.offset ) {\n\t  for(var i=0; i<result.matches.length; i++)\n\t    entry.matches.push(result.matches[i]);\n\t  return;\n\t}\n      }\n    }\n\n    cache.push(result);\n  }\n\n  /**\n   * List available sources.\n   *\n   * @class sourcelist\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.sourcelist = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2018, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * This file deals with tabbed panes.  It implements dynamic tabs on top\n * if Bootstrap.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('tabbed',[ \"jquery\", \"form\", \"config\", \"preferences\", \"modal\",\n\t \"laconic\", \"search\", \"chatbell\", \"sourcelist\" ],\n       function($, form, config, preferences, modal) {\nvar tabbed = {\n  tabTypes: {},\n  type: function(from) {\n    var ext = from.split('.').pop();\n\n    for(var k in tabbed.tabTypes) {\n      if ( tabbed.tabTypes.hasOwnProperty(k) &&\n\t   tabbed.tabTypes[k].dataType == ext )\n\treturn tabbed.tabTypes[k];\n    }\n  }\n};\n\ntabbed.tabTypes.permalink = {\n  dataType: \"lnk\",\n  typeName: \"program\",\n  label: \"Program\",\n  create: function(dom, options) {\n    $(dom).addClass(\"prolog-editor\")\n\t  .prologEditor($.extend({save:true}, options))\n\t  .prologEditor('makeCurrent');\n  }\n};\n\n\n(function($) {\n  var pluginName = 'tabbed';\n  var tabid = 0;\n\n  /** @lends $.fn.tabbed */\n  var methods = {\n    /**\n     * Turn the current element into a Bootstrap tabbed pane. All\n     * children of the current element are changed into tabs.  The\n     * child can control the mapping using:\n     *\n     *   - `data-label = \"Label\"`\n     *   - `data-close = \"disabled\"`\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\tdata.newTab   = options.newTab;\n\tdata.tabTypes = options.tabTypes || tabbed.tabTypes;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"tabbed unloadable\");\n\telem.tabbed('makeTabbed');\n\telem.on(\"trace-location\", function(ev, prompt) {\n\t  elem.tabbed('showTracePort', prompt);\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  var tab = $(ev.target).closest(\".tab-pane\");\n\t  var a   = elem.tabbed('navTab', tab.attr('id'));\n\n\t  if ( a )\n\t  { if ( clean )\n\t      a.removeClass(\"data-dirty\");\n\t    else\n\t      a.addClass(\"data-dirty\");\n\t  }\n\t});\n\telem.on(\"unload\", function(ev) {\n\t  if ( ev.target == elem[0] &&\n\t       elem.closest(\".swish\").swish('preserve_state') ) {\n\t    var state = elem[pluginName]('getState');\n\t    localStorage.setItem(\"tabs\", JSON.stringify(state));\n\t  }\n\t});\n\telem.on(\"restore\", function(ev) {\n\t  var state;\n\n\t  if ( ev.target == elem[0] ) {\n\t    // TBD: How to act with already open documents?\n\t    try {\n\t      var str = localStorage.getItem(\"tabs\");\n\t      var state = JSON.parse(str);\n\t    } catch(err) {\n\t    }\n\n\t    if ( typeof(state) == \"object\" ) {\n\t      elem[pluginName]('setState', state);\n\t    }\n\t  }\n\t});\n\telem.on(\"preference\", function(ev, pref) {\n\t  if ( pref.name == \"preserve-state\" &&\n\t       pref.value == false ) {\n\t    localStorage.removeItem(\"tabs\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * Turn the pane into a tabbed pane\n     */\n    makeTabbed: function() {\n      var children = this.children();\n      var ul = $.el.ul({ class:\"nav nav-tabs\",\n\t\t\t role:\"tablist\"\n\t\t       });\n      var contents = $.el.div({class:\"tab-content\"});\n\n      this.prepend(contents);\n      this.prepend(ul);\n\n      $(ul).on(\"click\", \"span.xclose\", function(ev) {\n\tvar id = $(ev.target).parent().attr(\"data-id\");\n\t$(ev.target).parents(\".tabbed\").first().tabbed('removeTab', id);\n\tev.preventDefault();\n      });\n      $(ul).on(\"click\", \"a\", function(ev) {\n\t$(ev.target).closest(\"a\").tab('show');\n\tev.preventDefault();\n      });\n\n\t\t\t/* Turn children into tabs */\n      for(var i=0; i<children.length; i++) {\n\tvar child = $(children[i]);\n\tvar id = genId();\n\tvar label = child.attr(\"data-label\") || \"Unknown\";\n\tvar close = child.attr(\"data-close\") != \"disabled\";\n\tvar active = (i == children.length-1);\t/* activate last */\n\n\tvar li = this.tabbed('tabLabel', id, label, close);\n\tif ( active )\n\t  $(li).addClass(\"active\");\n\t$(ul).append(li);\n\t$(contents).append(wrapInTab($(children[i]), id, active));\n      }\n\n\t\t\t/* Create and handle \"+\" button */\n      var create = $.el.a({ class: \"tab-new compact\",\n\t\t\t    title: \"Open a new tab\"\n\t\t\t  },\n\t\t\t  glyphicon(\"plus\"));\n      $(ul).append($.el.li({ class: \"tab-new\", role:\"presentation\" }, create));\n      $(create).on(\"click\", function(ev) {\n\tvar tabbed = $(ev.target).parents(\".tabbed\").first();\n\n\ttabbed.tabbed('newTab');\n\tev.preventDefault();\n\treturn false;\n      });\n\n\t\t\t/* Handle tab-switching */\n      $(ul).on(\"shown.bs.tab\", \"a\", function(ev) {\n\tvar newContentID  = $(ev.target).data(\"id\");\n\t$(\"#\"+newContentID+\" .swish-event-receiver\").trigger(\"activate-tab\");\n\t$(\"#\"+newContentID+\" .storage\").storage(\"activate\");\n      });\n\n      if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n    },\n\n    /**\n     * Add an empty new tab from the \"+\" button.  This calls\n     * options.newTab() to return a DOM element for the new\n     * tab.\n     * @param {HTMLElement} [content] Content for the new tab\n     * If omitted, it calls `options.newTab` or uses the method\n     * `tabSelect`.\n     * @return {jQuery} object representing the created tab\n     */\n    newTab: function(dom, active) {\n      var data = this.data(pluginName);\n\n      if ( dom == undefined ) {\n\tif ( data.newTab ) {\n\t  dom = data.newTab();\n\t} else {\n\t  var sl;\n\t  dom = this.tabbed('tabSelect');\n\t  $(dom).append(this.tabbed('profileForm'),\n\t\t\t$.el.hr(),\n\t\t\t//this.tabbed('searchForm'),\n\t\t        sl = $.el.div({class:\"sourcelist\"}));\n\t  $(sl).sourcelist();\n\t}\n      }\n\n      if ( active == undefined )\n\tactive = true;\n\n      return this.tabbed('addTab', dom, {active:active,close:true});\n    },\n\n    getState: function() {\n      var state = this[pluginName]('get_ordered_storage').storage('getState');\n\n      state.pathname = window.location.pathname;\n      state.time     = new Date().getTime();\n\n      return state;\n    },\n\n    setState: function(state) {\n      var elem = this;\n\n      for(var i=0; i<state.tabs.length; i++) {\n\tvar data = state.tabs[i];\n\tthis[pluginName]('restoreTab', data);\n      }\n    },\n\n    restoreTab: function(data) {\n      var elem = this;\n      var tab;\n\n      data.query = null;\t\t/* null keeps query */\n      data.noHistory = true;\t\t/* do not update window path */\n\n      var existing = this.find(\".storage\").storage('match', data);\n      if ( existing ) {\n\ttab = existing.closest(\".tab-pane\");\n\telem.tabbed('move_right', tab);\n      } else\n      { tab = undefined;\n      }\n\n      function restoreData(into, from) {\n\tif ( from.data ) {\n\t  into.find(\".storage\").storage('setValue', {\n\t    data: from.data,\n\t    role: 'source'\n\t  });\n\t}\n\tif ( from.chatroom ) {\n\t  into.find(\".storage\").storage('chat', from.chatroom);\n\t}\n      }\n\n      if ( existing ) {\n\trestoreData(tab, data);\n      } else if ( existing ) {\n\t/* nothing to do? */\n      } else {\t\t\t\t/* TBD: Centralise */\n\tvar select = this.find(\"div.tabbed-select\");\n\tvar newtab;\n\tvar restoring = '<div class=\"restore-tab\">Restoring ' +\n\t                   (data.file||data.url) + \" ...\" +\n\t\t\t'</div>';\n\n\tif ( select.length > 0 )  {\n\t  newtab = select.first().closest(\".tab-pane\");\n\t  newtab.html(restoring);\n\t} else {\n\t  newtab = elem.tabbed('newTab', $(restoring), Boolean(data.active));\n\t}\n\n\tif ( data.st_type == \"gitty\" ) {\n\t  var url = config.http.locations.web_storage + data.file;\n\t  $.ajax({ url: url,\n\t\t   type: \"GET\",\n\t\t   data: {format: \"json\"},\n\t\t   success: function(reply) {\n\t\t     reply.url = url;\n\t\t     reply.st_type = \"gitty\";\n\t\t     reply.noHistory = true;\n\t\t     if ( !elem.tabbed('setSource', newtab, reply) ) {\n\t\t       console.log(\"Failed to restore\", data.file);\n\t\t       elem.tabbed('removeTab', tab.attr(\"id\"));\n\t\t     }\n\t\t     restoreData(newtab, data);\n\t\t     if ( newtab.hasClass(\"active\") )\n\t\t       newtab.find(\".storage\").storage(\"activate\");\n\t\t   },\n\t\t   error: function(jqXHR) {\n\t\t     modal.ajaxError(jqXHR);\n\t\t   }\n\t  });\n\t} else if ( data.url ) {\n\t  $.ajax({ url: data.url,\n\t\t   type: \"GET\",\n\t\t   data: {format: \"json\"},\n\t\t   success: function(source) {\n\t\t     var msg;\n\n\t\t     if ( typeof(source) == \"string\" ) {\n\t\t       msg = { data: source };\n\t\t       msg.st_type = \"external\";\n\t\t     } else if ( typeof(source) == \"object\" &&\n\t\t\t\t typeof(source.data) == \"string\" ) {\n\t\t       msg = source;\n\t\t       msg.st_type = \"filesys\";\n\t\t     } else {\n\t\t       alert(\"Invalid data\");\n\t\t       return;\n\t\t     }\n\t\t     msg.noHistory = true;\n\t\t     msg.url = data.url;\n\t\t     if ( !elem.tabbed('setSource', newtab, msg) ) {\n\t\t       console.log(\"Failed to restore\", data.url);\n\t\t       elem.tabbed('removeTab', newtab.attr(\"id\"));\n\t\t     }\n\t\t     restoreData(newtab, data);\n\t\t     if ( newtab.hasClass(\"active\") )\n\t\t       newtab.find(\".storage\").storage(\"activate\");\n\t\t   },\n\t\t   error: function(jqXHR) {\n\t\t     modal.ajaxError(jqXHR);\n\t\t   }\n\t  });\n\t} else {\n\t  console.log(\"Cannot restore \", data);\n\t}\n      }\n    },\n\n\n    /**\n     * Add a new tab from the provided source.  If there is a _select_\n     * (new) tab, open the data in this tab.\n     */\n    tabFromSource: function(src) {\n      var elem = this;\n      var select = this.find(\"div.tabbed-select\");\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      function inNewTab() {\n\tvar tab = elem.tabbed('newTab', $(\"<span></span>\"));\n\tif ( !elem.tabbed('setSource', tab, src) ) {\n\t  elem.tabbed('removeTab', tab.attr(\"id\"));\n\t}\n      }\n\n      if ( select.length > 0 ) {\n\tvar tab = select.first().closest(\".tab-pane\");\n\tthis.tabbed('show', tab.attr(\"id\"));\n\tthis.tabbed('setSource', tab, src);\n      } else if ( src.newTab || preferences.getVal(\"new-tab\") ) {\n\tinNewTab();\n      } else\n      { var tab;\n\n\tthis.find(\".storage\").each(function(i, st) {\n\t  if ( $(st).storage('setSource', src) ) {\n\t    tab = $(st).closest(\".tab-pane\");\n\t    return false;\n\t  }\n        });\n\n\tif ( tab )\n\t  this.tabbed('show', tab.attr(\"id\"));\n\telse\n\t  inNewTab();\n      }\n\n      return this;\n    },\n\n    /**\n     * Transform the new tab into a tab that can hold the requested\n     * source.\n     * @return {Boolean} `true` if a suitable type was found\n     */\n    setSource: function(tab, src) {\n      if ( typeof(src) == \"object\" &&\n\t   ((src.meta && src.meta.name) || src.url) )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar tabType = tabbed.type(name);\n\tvar content = $.el.div();\n\n\ttab.html(\"\");\n\ttab.tabbed('title', tabType.label, tabType.dataType);\n\ttab.append(content);\n\ttabType.create(content);\n\t$(content).storage('setSource', src);\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Show a tracer port. This implies finding the proper editor,\n     * making sure it is visible and ask it to show to port or, if\n     * no editor is displaying this source, create a new one.\n     * @param {Object} prompt\n     * @param {Object} [prompt.source]\n     * @param {Object} [prompt.source.file] is the file associated\n     * with the debug event.  Currently, we accept\n     *\n     *   - `pengine://<pengine>/src` refers to the editor that provided\n     *     the source for pengine <pengine>\n     *\t - `swish://<file>.pl` refers to an included file from the\n     *\t   store.\n     */\n    showTracePort: function(prompt) {\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file = prompt.source.file;\n\tvar pengineID, store;\n\tvar editors;\n\n\tfunction isPengineSrc() {\n\t  var id;\n\n\t  if ( file.startsWith(\"pengine://\") )\n\t    return file.split(\"/\")[2];\n\t}\n\n\tfunction isStoreSrc() {\n\t  var prefix = \"swish://\";\n\t  if ( file.startsWith(prefix) )\n\t    return file.slice(prefix.length);\n\t}\n\n\tif ( (pengineID=isPengineSrc()) ) {\n\t  editors = this.find(\".prolog-editor\")\n\t\t\t.filter(function(i, e) {\n\t\t\t  return $(e).prologEditor('pengine', {has:pengineID});\n\t\t\t});\n\t} else if ( (store=isStoreSrc()) ) {\n\t  editors = this.find(\".storage\")\n\t\t\t.storage('match', {file:store});\n\n\t  if ( !editors ) {\n\t    this.closest(\".swish\")\n\t        .swish('playFile',\n\t\t       { file: store,\n\t\t\t newTab: true,\n\t\t\t noHistory: true,\n\t\t\t prompt: prompt\n\t\t       });\n\t    return this;\n\t  }\n\t}\n\n\tif ( editors )\n\t  editors.prologEditor('showTracePort', prompt);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Add a new tab using content\n     * @param {Object} content is the DOM node to use as content for the\n     * tab.\n     * @param {Object} options\n     * @param {Boolean} [options.active] if `true`, make the new tab\n     * active\n     * @param {Boolean} [options.close] if `true`, allow closing the new\n     * tab.\n     * @return {jQuery} the created tab element\n     */\n    addTab: function(content, options) {\n      var ul  = this.tabbed('navTabs');\n      var id  = genId();\n      var tab =\twrapInTab(content, id, options.close);\n\n      this.tabbed('navContent').append(tab);\n\n      var li  = this.tabbed('tabLabel', id, \"New tab\", close, \"select\");\n\n      var create = ul.find(\"a.tab-new\");\n      if ( create.length == 1 )\n\t$(li).insertBefore(create.first().parent());\n      else\n\tul.append(li);\n\n      if ( options.active )\n\t$(li).find(\"a\").first().tab('show');\n\n      return tab;\n    },\n\n    /**\n     * Remove tab with given Id. If the tab is the active tab, make the\n     * previous tab active, or if there is no previous, the next. If the\n     * tabbed environment becomes empty, add a virgin tab.\n     *\n     * @param {String} id is the id of the tab to destroy\n     */\n    removeTab: function(id) {\n      var li  = this.tabbed('navTabs').find(\"a[data-id='\"+id+\"']\").parent();\n      var tab = $(\"#\"+id);\n      var new_active;\n\n      if ( tab.find(\".storage\").storage('unload', \"closetab\") == false )\n\treturn;\n\n      if ( tab.is(\":visible\") )\n\tnew_active = li.prev() || li.next();\n      li.remove();\n\t\t\t\t\t/* HACK: close embedded runners */\n      tab.find(\".prolog-runner\").prologRunner('close');\n      tab.find(\".storage\").storage('close');\n      tab.remove();\n      if ( new_active && new_active.length > 0 ) {\n\tnew_active.find(\"a\").first().tab('show');\n      } else if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Show indicated tab.\n     * @param {String} id is the id of the tab to show.\n     */\n    show: function(id) {\n      var a = this.tabbed('navTab', id);\n      if ( a ) {\n\ta.tab('show');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Move the argument tab or tab id to the right of all\n     * tabs.\n     */\n    move_right: function(tab) {\n      var id;\n      var ul = this.find(\">ul\");\n\n      if ( typeof(tab) == \"string\" )\n\tid = tab;\n      else\n\tid = tab.attr('id');\n\n      ul.find(\"a[data-id=\"+id+\"]\")\n        .closest(\"li\")\n        .insertBefore(ul.children().last());\n    },\n\n    /**\n     * Create a label (`li`) for a new tab.\n     * @param {String} id is the identifier of the new tab\n     * @param {String} label is the textual label of the new tab\n     * @param {Boolean} close determines whether or nor a close button\n     * is added to the tab.\n     * @param {String} [type=\"pl\"] indicates the type of the tab. This\n     * is used for associating an icon with the tab.\n     */\n    tabLabel: function(id, label, close, type) {\n      var close_button;\n      var chat;\n\n      if ( close )\n      { close_button = glyphicon(\"remove\", \"xclose\");\n\t$(close_button).attr(\"title\", \"Close tab\");\n      }\n      type = type||\"pl\";\n\n      var a1 = $.el.a({class:\"compact\", href:\"#\"+id, \"data-id\":id},\n\t\t      $.el.span({class:\"tab-icon type-icon \"+type}),\n\t\t      $.el.span({class:\"tab-dirty\",\n\t\t                 title:\"Tab is modified. \"+\n\t\t\t\t       \"See File/Save and Edit/View changes\"}),\n\t       chat = $.el.a({class:'tab-chat'}),\n\t\t      $.el.span({class:\"tab-title\"}, label),\n\t\t      close_button);\n      var li = $.el.li({role:\"presentation\"}, a1);\n\n      $(chat).chatbell()\n             .on(\"click\", function(ev) {\n\tvar id = $(ev.target).closest(\"a.compact\").data(\"id\");\n\t$(\"#\"+id).find(\".storage\").storage('chat');\n\treturn false;\n      });\n\n      return li;\n    },\n\n    /**\n     * Calling obj.tabbed('anchor') finds the <a> element\n     * representing the tab label from the node obj that appears\n     * somewhere on the tab\n     */\n    anchor: function() {\n      var tab    = this.closest(\".tab-pane\");\n\n      if ( tab.length == 0 ) {\n\treturn undefined;\t\t/* e.g., fullscreen mode */\n      }\n\n      var tabbed = tab.closest(\".tabbed\");\n      var id     = tab.attr(\"id\");\n      var ul\t = tabbed.tabbed('navTabs');\n      var a      = ul.find(\"a[data-id=\"+id+\"]\");\n\n      return a;\n    },\n\n    /**\n     * Find the storage objects in the tabbed environment in the\n     * order of the tabs.  Note that the content divs maye be ordered\n     * differently.\n     */\n    get_ordered_storage: function() {\n      var elem = this;\n      var result = [];\n\n      this.find(\">ul>li\").each(function() {\n\tvar id = $(this).find(\">a\").data('id');\n\telem.find(\">div.tab-content>div[id=\"+id+\"] .storage\").each(function() {\n\t  result.push(this);\n\t});\n      });\n\n      return $(result);\n    },\n\n    /**\n     * This method is typically _not_ called on the tab, but on some\n     * inner element of the tab.  It changes the title of the tab.\n     * @param {String} title is the new title for the tab.\n     * @param {String} [type=\"pl\"] is the new type for the tab.\n     */\n    title: function(title, type) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".tab-title\").text(title);\n\tif ( type ) {\n\t  var icon = a.find(\".tab-icon\");\n\t  icon.removeClass();\n\t  icon.addClass(\"tab-icon type-icon \"+type);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the chat message feedback for this tab\n     * @param {Object} [chats]\n     * @param {Number} [chats.count] number of available chat messages\n     * on the document.\n     */\n    chats: function(chats) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('update', chats);\n      }\n\n      return this;\n    },\n\n    /**\n     * Increment the chat count and possibly associate the bell\n     * with the document identifier.\n     * @param {String} [docid] is the document identifier to associate\n     * with.\n     */\n    'chats++': function(docid) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('chats++', docid);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Default empty tab content that allows the user to transform\n     * the tab into the desired object.\n     * @return {Object} containing content for the new tab\n     */\n    tabSelect: function() {\n      var data = this.data(pluginName);\n      var dom = $.el.div({class:\"tabbed-select\"},\n\t\t\t $.el.div({class: \"tabbed-create\"},\n\t\t\t\t  $.el.label({class: \"tabbed-left\"},\n\t\t\t\t\t     \"Create a \"),\n\t\t\t\t  g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t\t  $.el.label({class: \"tabbed-right\"}, \"here\")));\n      var types = [];\n\n      for(var k in data.tabTypes) {\n\tif ( data.tabTypes.hasOwnProperty(k) &&\n\t     data.tabTypes[k].order )\n\t  types.push(k);\n      }\n      types.sort(function(a,b) {\n\treturn data.tabTypes[a].order - data.tabTypes[b].order;\n      });\n\n      for(var i = 0; i<types.length; i++) {\n\tvar type = data.tabTypes[types[i]];\n\n\t$(g).append($.el.button({ type:\"button\",\n\t\t\t\t  class:\"btn btn-primary\",\n\t\t\t\t  \"data-type\":type.typeName,\n\t\t\t\t  \"data-ext\":type.dataType\n\t\t\t\t},\n\t\t\t\ttype.label));\n      }\n\n      $(g).on(\"click\", \".btn\", function(ev) {\n\tvar type    = $(ev.target).data('type');\n\tvar tab     = $(ev.target).closest(\".tab-pane\");\n\tvar content = $.el.div();\n\tvar options = $.extend({}, tabbed.tabTypes[type]);\n\tvar profile = tab.find(\"label.active > input[name=profile]\").val();\n\n\tif ( profile ) {\n\t  options.profile = profile;\n\t  options.value   = tab.tabbed('profileValue', profile,\n\t\t\t\t       tabbed.tabTypes[type].dataType);\n\t  if ( options.value != undefined )\n\t    preferences.setVal(\"default-profile\", profile);\n\t}\n\n\ttab.html(\"\");\n\ttab.tabbed('title', options.label, options.dataType);\n\ttab.append(content);\n\ttabbed.tabTypes[type].create(content, options);\n      });\n      $(g).addClass(\"swish-event-receiver\");\n      $(g).on(\"download save fileInfo print\", function(ev) {\n\tvar tab = $(ev.target).closest(\".tab-pane\");\n\tif ( tab.is(\":visible\") ) {\n\t  var typelabel = { \"download\" : \"you wish to download\",\n\t\t\t    \"save\"     : \"you wish to save\",\n\t\t\t    \"print\"    : \"you wish to print\",\n\t\t\t    \"fileInfo\" : \"for which you want details\"\n\t  };\n\n\t  modal.alert(\"Please activate the tab \"+typelabel[ev.type]);\n\t  ev.stopPropagation();\n\t}\n      });\n      $(g).on(\"profile-selected\", function(ev, profile) {\n\t$(ev.target).find(\"button\").each(function() {\n\t  $(this).prop('disabled',\n\t\t       profile.type.indexOf($(this).data('ext')) < 0);\n\t});\n      });\n\n      return dom;\n    },\n\n    /**\n     * Find sources\n     */\n    searchForm: function() {\n      var sform = $.el.form({class: \"search-sources\"},\n\t$.el.label({class:\"control-label\"}, 'Open source file containing'),\n        $.el.div(\n\t  {class: \"input-group\"},\n\t  $.el.input({ type: \"text\",\n\t\t       class: \"form-control search\",\n\t\t       placeholder: \"Search sources\",\n\t\t       'data-search-in': \"sources store_content\",\n\t\t     }),\n\t  $.el.div({ class: \"input-group-btn\" },\n\t\t   $.el.button({class:\"btn btn-default\", type:\"submit\"},\n\t\t\t       $.el.i({class:\"glyphicon glyphicon-search\"})))),\n\t$.el.div({class: \"input-group\"},\n\t  form.fields.radio(\"smatch\",\n\t    [ { label:\"Start of line\", value:\"sol\"},\n\t      { label:\"Start of word\", value:\"sow\", active:true},\n\t      { label:\"Anywhere\", value:\"anywhere\" }\n\t    ])));\n      $(sform).find(\"input.search\").search();\n\n      return sform;\n    },\n\n    sourceList: function() {\n\n\n    },\n\n    profileForm: function() {\n      if ( config.swish.profiles && config.swish.profiles.length > 0 ) {\n\tvar def;\n\n\tfor(var i=0; i<config.swish.profiles.length; i++) {\n\t  delete config.swish.profiles[i].active;\n\t}\n\n\tif ( (def=preferences.getVal(\"default-profile\")) ) {\n\t  for(var i=0; i<config.swish.profiles.length; i++) {\n\t    if ( config.swish.profiles[i].value == def )\n\t      config.swish.profiles[i].active = true\n\t  }\n\t} else {\n\t  config.swish.profiles[0].active = true;\n\t}\n\n\tvar pform =\n\t$.el.div(\n\t  {class:\"tabbed-profile\"},\n\t  $.el.label({class: \"tabbed-left\"}, \"based on\"),\n\t  $.el.div({class: \"input-group select-profile\"},\n\t\t   form.fields.radio(\"profile\", config.swish.profiles)),\n\t  $.el.label({class: \"tabbed-right\"}, \"profile\"));\n\n\t$(pform).on(\"click\", function(ev) {\n\t  var select = $(ev.target).find(\"input\").val();\n\t  var profile = profileObject(select);\n\t  $(ev.target).closest(\".tab-pane\")\n\t\t      .find(\".tabbed-create .btn-group\")\n\t\t      .trigger(\"profile-selected\", profile);\n\t});\n\n\treturn pform;\n      }\n    },\n\n    profileValue: function(name, ext) {\n      var url = config.http.locations.swish + \"profile/\" + name + \".\" + ext;\n      return $.ajax({ url: url,\n\t\t      type: \"GET\",\n\t\t      data: {format: \"raw\"},\n\t\t      async: false,\n\t\t      error: function(jqXHR) {\n\t\t\tmodal.ajaxError(jqXHR);\n\t\t      }\n      }).responseText;\n    },\n\n    /**\n     * Get the UL list that represents the nav tabs\n     */\n    navTabs: function() {\n      return this.find(\"ul.nav-tabs\").first();\n    },\n\n    navTab: function(id) {\n      var a = this.find(\"ul.nav-tabs\").first().find(\"a[data-id='\"+id+\"']\");\n      if ( a.length > 0 )\n\treturn a;\n    },\n\n    navContent: function() {\n      return this.find(\"div.tab-content\").first();\n    }\n  }; // methods\n\n  /**\n   * Wrap a content element in a Bootstrap tab content.\n   * @param {Object} dom is the object that must be wrapped\n   * @param {String} id is the identifier to give to the new content\n   * @param {Boolean} active sets the tab to active if `true`\n   * @return {jQuery} `div` object of class `tab-pane` and the\n   * passed `id`.\n   */\n  function wrapInTab(dom, id, active) {\n    $(dom).wrap('<div role=\"tabpanel\" class=\"tab-pane\" id=\"'+id+'\"></div>');\n    var wrapped = $(dom).parent();\n\n    if ( active )\n      wrapped.addClass(\"active\");\n\n    return wrapped;\n  }\n\n  function glyphicon(glyph, className) {\n    var span = $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n\n    if ( className )\n      $(span).addClass(className);\n\n    return span;\n  }\n\n  function genId()\n  { return \"tabbed-tab-\"+tabid++;\n  }\n\n  function profileObject(name) {\n    if ( config.swish.profiles ) {\n      for(var i=0; i<config.swish.profiles.length; i++) {\n\tif ( config.swish.profiles[i].value == name )\n\t  return config.swish.profiles[i];\n      }\n    }\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class tabbed\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tabbed = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  return tabbed;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for accessing\n * Prolog\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n/* Also depends on \"editor\", but requireJS cannot handle cyclic dependencies.\n   As downloadCSV() is only called after initialisation we dropped this\n   dependency.\n*/\n\ndefine('prolog',[ \"jquery\", \"config\", \"form\", \"preferences\",\n\t /* \"editor\" */\n       ],\n       function($, config, form, preferences) {\n  var prolog = {\n    /**\n     * Download query results as CSV.\n     * @param {Object} [options]\n     * @param {String} [options.projection] holds the Prolog projection\n     * variables, separated by commas, e.g., `\"X,Y\"`\n     * @param {String} [options.format=\"prolog\"] holds a string that\n     * defines the variation of the CSV format, e.g., `\"prolog\"` or\n     * `\"rdf\"`\n     * @param {String|Number} [options.limit] defines the max number of\n     * results.\n     * @param {Boolean} [options.distinct] requests only distinct\n     * results.\n     * @param {String} [options.disposition] provides the default for\n     * the download file.  If no extension is given, \".csv\" is added.\n     */\n    downloadCSV: function(query, source, options) {\n      options = options||{};\n      options.disposition = (options.disposition||\n\t\t\t     options.filename||\n\t\t\t     \"swish-results.csv\");\n\n      if ( options.projection ) {\n\tvar formel;\n\tvar format = options.format||\"prolog\";\n\n\tfunction attr(name,value) {\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n\t}\n\n\tif ( options.distinct )\n\t  query = \"distinct([\"+options.projection+\"],(\"+query+\"))\";\n\tif ( options.limit ) {\n\t  var limit = parseInt(options.limit.replace(/[ _]/g,\"\"));\n\n\t  if ( typeof(limit) == \"number\" ) {\n\t    query = \"limit(\"+limit+\",(\"+query+\"))\";\n\t  } else {\n\t    alert(\"Not an integer: \", options.limit);\n\t    return false;\n\t  }\n\t}\n\n\tformel = $.el.form({ method:\"POST\",\n                             action:config.http.locations.pengines+\"/create\",\n\t\t\t     target:\"_blank\"\n\t\t           },\n\t\t\t   attr(\"format\", \"csv\"),\n\t\t\t   attr(\"chunk\", \"10\"),\n\t\t\t   attr(\"solutions\", \"all\"),\n\t\t\t   attr(\"disposition\", options.disposition),\n\t\t\t   attr(\"application\", \"swish\"),\n\t\t\t   attr(\"ask\", query),\n\t\t\t   attr(\"src_text\", source),\n\t\t\t   attr(\"template\", format+\"(\"+options.projection+\")\"));\n\tconsole.log(formel);\n\t$(\"body\").append(formel);\n\tformel.submit();\n\t$(formel).remove();\n      } else {\n\tvar vars = $().prologEditor('variables', query);\n\tvar disposition = options.disposition;\n\tif ( disposition.indexOf(\".\") < 0 )\n\t  disposition += \".csv\";\n\n\tfunction infoBody() {\n\t  var formel = $.el.form(\n            {class:\"form-horizontal\"},\n\t    form.fields.projection(vars.join(\",\")),\n\t    form.fields.csvFormat(config.swish.csv_formats,\n\t\t\t\t  preferences.getVal(\"csvFormat\")),\n\t    form.fields.limit(\"10 000\", false),\n\t    form.fields.filename(disposition, 2),\n\t    form.fields.buttons(\n\t      { label: \"Download CSV\",\n\t\taction: function(ev, params) {\n\t\t  ev.preventDefault();\n\t\t  if ( config.swish.csv_formats.length > 1 )\n\t\t    preferences.setVal(\"csvFormat\", params.format);\n\t\t  prolog.downloadCSV(query, source, params);\n\n\t\t  return false;\n\t\t}\n\t      }));\n\t  this.append(formel);\n\t}\n\n\tform.showDialog({ title: \"Download query results as CSV\",\n\t\t\t  body:  infoBody\n\t\t        });\n      }\n\n      return this;\n      },\n\n    /**\n     * Remove the full-stop from a query string\n     */\n    trimFullStop: function(s) {\n      return s.replace(/\\.\\s*$/m, \"\");\n    },\n\n    /**\n     * Default options for $.swish()\n     */\n    options: {\n      application: \"swish\",\n      chunk: 5\n    }\n  }\n\n\t\t /*******************************\n\t\t *\t     PENGINES\t\t*\n\t\t *******************************/\n\n  /**\n   * $.swish(options) creates a new Pengine with given default\n   * options.  The default options are determined by `prolog.options`.\n   * This function expects pengines.js to be already loaded.  The\n   * bootstrapping of that is achieved in `swish.js`.\n   *\n   * @return {Pengine} the created pengine object\n   */\n  $.swish = function(options) {\n    for(var opt in prolog.options) {\n      if ( prolog.options.hasOwnProperty(opt) &&\n\t   !options.hasOwnProperty(opt) ) {\n\toptions[opt] = prolog.options[opt];\n      }\n    }\n\n    return new Pengine(options);\n  };\n\n  return prolog;\n});\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Render a single Prolog answer.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('answer',[ \"jquery\", \"laconic\" ],\n       function() {\n\n\t\t /*******************************\n\t\t *\tRENDER AN ANSWER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologAnswer';\n\n  /** @lends $.fn.prologAnswer */\n  var methods = {\n    /**\n     * Represent the binding of one or more variables to exactly the\n     * same (==) Prolog term.\n     *\n     * @typedef {Object} Binding\n     * @property {Array.String} variables represents the names of the\n     * variables.  This array is at least one long.\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent the binding of a single variable used to represent\n     * sharing, an in particular cyclic terms\n     *\n     * @typedef {Object} Subsitution\n     * @property {String} var name of the variable\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent an answer as represented by the pengines `json-html`\n     * format.\n     * @typedef {Object} Answer\n     * @property {Array.Binding} variables represents the variable\n     * bindings.\n     * @property {Array.Subsitution} [substitutions] represents substitutions\n     * needed to break cyclic terms.\n     * @property {Array.String} [residuals] represents residual goals as HTML\n     * strings.\n     */\n\n    /**\n     * Render a single answer as returned by pengines `json-html` format\n     * as an HTML string.\n     *\n     * to HTML escaping issues\n     * @param {Answer} answer represents an answer to a Prolog query\n     */\n  _init: function(answer) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( answerHasOutput(answer) ) {\n\t  if ( elem.is(\"table\") ) {\n\t    var row = $.el.tr();\n\t    elem.append(row);\n\t    row.innerHTML = renderTabledAnswer(answer, elem);\n\t    evalScripts($(row));\n\t    $(row).find(\".render-multi\").renderMulti();\n\t  } else {\n\t    elem[0].innerHTML = renderAnswer(answer);\n\t    evalScripts(elem);\n\t    elem.find(\".render-multi\").renderMulti();\n\t  }\n\t} else\n\t  elem.append($.el.span({class: \"prolog-true\"}, \"true\"));\n      });\n    }\n  };\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function renderSubstitutions(substs, html) {\n    html.push(', <span class=\"pl-comment\">% where</span><br/>');\n    for (var s = 0; s < substs.length; s++) {\n      html.push('<span class=\"where-binding\">',\n\t\t\"<span class='pl-var'>\", substs[s].var+\"</span> = \",\n\t\tsubsts[s].value, '</span>');\n      if (s < substs.length - 1)\n\thtml.push(\",<br/>\");\n    }\n  }\n\n  function renderAnswer(answer) {\n    var html = [];\n    var bindings = answer.variables;\n    for (var i = 0; i < bindings.length; i++) {\n      var vars = bindings[i].variables;\n      for (var v = 0; v < vars.length - 1; v++) {\n\thtml.push(\"<span class='pl-ovar'>\", vars[v], \"</span> = \",\n\t\t  \"<span class='pl-var'>\", vars[v + 1], \"</span>, \");\n      }\n      html.push(\"<span class='pl-ovar'>\", vars[vars.length - 1],\n\t\t\"</span> = \", bindings[i].value);\n      if (bindings[i].substitutions) {\n\trenderSubstitutions(bindings[i].substitutions, html);\n      }\n      if (i < bindings.length - 1 || answer.residuals)\n\thtml.push(\",<br/>\");\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n    }\n    return html.join(\"\");\n  }\n\n  /**\n   * Render answer as a new row to the answer table.\n   * @param {Answer} answer represents an answer to a Prolog query\n   * @param {Table} table is the jQuery table to which the answer must\n   * be added.\n   */\n  function renderTabledAnswer(answer, table) {\n    var html = [];\n\n    function findBinding(name) {\n      var bindings = answer.variables;\n      for (var i = 0; i < bindings.length; i++) {\n\tvar vars = bindings[i].variables;\n\tfor (var v = 0; v < vars.length; v++) {\n\t  if ( vars[v] == name )\n\t    return bindings[i];\n\t}\n      }\n      return null;\n    }\n\n    for(var i = 0; i<answer.projection.length; i++) {\n      var vname  = answer.projection[i];\n      var binding = findBinding(vname);\n\n      html.push(\"<td>\");\n      if ( binding ) {\n\thtml.push(binding.value);\n\tif ( binding.substitutions )\n\t  renderSubstitutions(binding.substitutions, html);\n      } else {\n\thtml.push(\"<span class='pl-var'>\", vname, \"</span>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    function ensureResidualColumn() {\n      if ( table.find(\"tr.projection th.residuals\").length == 0 ) {\n\t$(\"<th class='residuals'>Residual goals</th>\").insertBefore(\n\t   table.find(\"tr.projection th.answer-nth\"));\n\t$(\"<td></td>\").insertBefore(\n\t   table.find(\"tr td.answer-nth\"));\n      }\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      ensureResidualColumn();\n      html.push(\"<td>\");\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    if ( answer.nth )\n      html.push(\"<td class='answer-nth'>\", answer.nth, \"</td>\");\n\n    return html.join(\"\");\n  }\n\n  /**\n   * Execute scripts that are embedded in the jQuery object elem.\n   * While executing a script, the property `$.ajaxScript` points\n   * to the executing script to enable the script to find elements\n   * in the ajax DOM extension in which the script is embedded.\n   * @param {jQuery} elem is the set in which scripts are searched\n   * and executed.\n   */\n  function evalScripts(elem) {\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" ) {\n\t$.ajaxScript = $(this);\n\teval(this.textContent);\n      }\n    });\n    if ( $.ajaxScript )\n      delete $.ajaxScript;\n  }\n\n\n  /**\n   * Render a single Prolog answer. This class is the entry point for\n   * more flexible answer rendering.\n   *\n   * @class prologAnswer\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} answer Either a method name or the jQuery\n   * plugin initialization object, which is the answer to a Prolog query\n   * in pengines \"json-html\" format\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologAnswer = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t   RENDER TERMS\t\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'renderMulti';\n  var timeout = 0;\n  var hovering = false;\n\n  /** @lends $.fn.renderMulti */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {current: 0};\t\t/* private data */\n\tvar display = [];\n\tvar selector = $.el.div({class: \"render-multi-active\"});\n\n\tvar i = 0;\n\telem.children().each(function() {\n\t  var how = $(this).css(\"display\");\n\n\t  display.push(how);\n\t  if ( i++ == 0 ) {\n\t    elem.css(\"display\", how);\n\t    $(this).attr('draggable', false);\n\t  } else {\n\t    $(this).hide();\n\t  }\n\t});\n\tdata.display = display;\n\telem.append(selector);\n\n\t$(selector).hover(function(ev) { elem.renderMulti('showSelect', ev); },\n\t\t\t  function(ev) { elem.renderMulti('hideSelect', ev); });\n\telem.attr('draggable', true)\n            .bind('dragstart', dragStart);\n\n\telem.data(pluginName, data);\t/* store with element */\n      });\n    },\n\n    /**\n     * @returns {String} holding HTML with a radio button to select a\n     * rendering\n     */\n    selectMenu: function() {\n      var data = this.data(pluginName);\n      var select = [\"<label>View as</label><br>\"];\n      var children = this.children();\n\n      function downloadButton(i, name) {\n\tvar title, glyph;\n\n\tif ( name == \"Prolog term\" ) {\n\t  title = \"Copy\";\n\t  glyph = \"copy\";\n\t} else {\n\t  title = \"Download\";\n\t  glyph = \"download\";\n\t}\n\n\tbtn = '<a href=\"#\" class=\"btn btn-style btn-sm\" '+\n\t      'data-nr=\"'+i+'\" data-action=\"'+glyph+'\" title=\"'+title+'\">' +\n\t      '<span class=\"glyphicon glyphicon-'+glyph+'\"></span></a>';\n\n\treturn btn;\n      }\n\n      var i = 0;\n      for(var i=0; i<data.display.length; i++) {\n\tvar r = $(children[i]);\n\tvar name = r.attr(\"data-render\");\n\n\tif ( !name ) {\n\t  if ( i == 0 )\n\t    name = \"Default rendered\";\n\t  else\n\t    name = \"Alt rendered [\"+(i+1)+\"]\";\n\t}\n\n\tselect.push(\"<div class='render-item'>\",\n\t\t    downloadButton(i, name),\n\t\t    \"<input type='radio' name='render' value='\", i, \"'\");\n\tif ( i == data.current ) select.push(\" checked\");\n\tselect.push(\"> \", name, \"</div>\");\n      }\n\n      select.push(\"</form\");\n      return select.join(\"\");\n    },\n\n    showSelect: function(ev) {\n      var elem = this;\n      var menu = selectMenu();\n      var pos  = this.offset();\n      var target;\n\n      hovering = true;\n      if ( timeout ) {\n\tclearTimeout(timeout);\n\ttimeout = 0;\n      }\n\n      if ( (target=menu.data(\"target\")) )\n\ttarget.removeClass(\"render-selecting\");\n      menu.data(\"target\", elem);\n\n      menu.html(this.renderMulti('selectMenu'));\n      menu.css({ top:      pos.top + 5 + \"px\",\n                 left:     pos.left + 5 + \"px\"\n               }).show(400);\n\n      this.addClass(\"render-selecting\");\n    },\n\n    hideSelect: function(ev) {\n      resetHover();\n    },\n\n    /**\n     * Select the i-th (0-based) rendering alternative\n     * @param {Integer} i denotes the alternative\n     */\n    select: function(i) {\n      var data  = this.data(pluginName);\n\n      if ( data.current != i ) {\n\tvar child = this.children();\n\tvar how   = data.display[i];\n\n\t$(child[data.current]).hide(400);\n\t$(child[i]).show(400, function() { $(this).css(\"display\", how); });\n\tthis.css(\"display\", how);\n\tif ( $(child[i]).is(\"span.render-as-prolog\") ) {\n\t  this.attr(\"draggable\", false);\n\t} else {\n\t  this.attr(\"draggable\", true);\n\t}\n\n\tdata.current = i;\n      }\n\n      closeSelectMenu();\n    },\n\n    copy: function(i) {\n      var child = this.children();\n      var data  = this.data(pluginName);\n      var old   = data.current;\n\n      function selectElementText(el) {\n\tvar range = document.createRange();\n\trange.selectNodeContents(el);\n\tvar selection = window.getSelection();\n\tselection.removeAllRanges();\n\tselection.addRange(range);\n      }\n\n      this.renderMulti('select', i);\n      selectElementText(child[i]);\n      try {\n\tdocument.execCommand(\"copy\");\n      } catch(e) {\n\talert(\"Sorry, cannot copy text with this browser\");\n      }\n      this.renderMulti('select', old);\n\n      return this;\n    },\n\n    /**\n     * Download a rendered object.  The renderer can interact with this\n     * code by setting a class `export-dom` and an event-handler for the\n     * event `export-dom`. This handler is passed a plain object, for\n     * which is must set the properties `element`, `extensions` and\n     * `contentType`\n     */\n    download: function(i) {\n      var child = this.children();\n      var node  = $(child[i]);\n      var ext   = \"html\";\n      var data;\n\n      function aSupportsDownload() {\n\treturn $(\"<a>\")[0].download != undefined;\n      }\n\n      if ( node.hasClass(\"export-dom\") ) {\n\tvar r = {};\n\tnode = node.trigger(\"export-dom\", r);\n\tif ( r.element ) {\n\t  data = r.element.outerHTML;\n\t  ext  = r.extension||\"html\";\n\t  type = r.contentType||\"text/html\";\n\t} else {\n\t  alert(\"Failed to export rendered result\");\n\t}\n      } else if ( node.find(\"svg\").length == 1 ) {\n\tvar svg = node.find(\"svg\");\n\tif ( !svg.attr(\"xmlns\") )\n\t  svg.attr(\"xmlns\", \"http://www.w3.org/2000/svg\");\n\tdata = svg[0].outerHTML\n\text  = \"svg\";\n\ttype = \"image/svg+xml\";\n      } else {\n\tdata = node.html();\n\ttype = \"text/html\";\n      }\n\n      if ( !aSupportsDownload() )\n\ttype = \"application/octet-stream\";\n\n      var href\t= \"data:\"+type+\";charset=UTF-8,\"\n\t\t+ encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:\"swish-rendered.\"+ext\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @return {String} native Prolog text for a multi-rendered block\n     */\n    prologText: function() {\n      return this.find(\"span.render-as-prolog\").text();\n    }\n  }; // methods\n\n\n  function selectMenu() {\n    var menu = $(\"#render-select\");\n\n    if ( !menu[0] ) {\n      menu = $($.el.form({ id:\"render-select\",\n                           style:\"display:none\"\n\t\t         }));\n\n      menu.on(\"click\", \"a\", function(ev) {\n\tvar a = $(ev.target).closest(\"a\");\n\tvar i = a.data(\"nr\");\n\n\tmenu.data(\"target\").renderMulti(a.data(\"action\"), i);\n\treturn false;\n      });\n      menu.on(\"click\", function() {\n\tvar r = $(\"input[name=render]:checked\", $(this)).val();\n\tmenu.data(\"target\").renderMulti('select', parseInt(r));\n      });\n      menu.hover(function() { hovering = true; startMenuTimeout(); },\n\t\t function() { resetHover(); });\n\n      $(\"body\").append(menu);\n    }\n\n    return menu;\n  }\n\n  function closeSelectMenu() {\n    if ( !hovering ) {\n      var menu = selectMenu();\n      var target = menu.data(\"target\");\n\n      if ( target ) {\n\ttarget.removeClass(\"render-selecting\");\n\tmenu.data(\"target\", null);\n      }\n      menu.hide(400);\n    }\n  }\n\n  function startMenuTimeout() {\n    timeout = setTimeout(function() {\n      closeSelectMenu();\n    }, 400);\n  }\n\n  function resetHover() {\n    hovering = false;\n    startMenuTimeout();\n  }\n\n  function dragStart(ev) {\n    var dt = ev.originalEvent.dataTransfer;\n    dt.setData(\"Text\", $(ev.target).renderMulti('prologText'));\n    return true;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class renderMulti\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.renderMulti = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\n\n\n});\n\n","/**\n*\n* jquery.sparkline.js\n*\n* v2.1.2\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n    if(typeof define === 'function' && define.amd) {\n        define('sparkline',['jquery'], factory);\n    } else if (jQuery && !jQuery.fn.sparkline) {\n        factory(jQuery);\n    }\n}\n(function($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            'z-index: 10000;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n        } else {\n            if (values.length % 2 ) { // odd\n                vl = (values.length * q + q) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n            } else { //even\n                vl = (values.length * q + 2) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];\n\n            }\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (ignoreNull && arr[i] === null) continue;\n            if (arr[i] !== val) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n\n        if ($.fn.sparkline.canvas === false) {\n            // We've already determined that neither Canvas nor VML are available\n            return false;\n\n        } else if ($.fn.sparkline.canvas === undefined) {\n            // No function defined yet -- need to see if we support Canvas or VML\n            var el = document.createElement('canvas');\n            if (!!(el.getContext && el.getContext('2d'))) {\n                // Canvas is available\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_canvas(width, height, target, interact);\n                };\n            } else if (document.namespaces && !document.namespaces.v) {\n                // VML is available\n                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_vml(width, height, target);\n                };\n            } else {\n                // Neither Canvas nor VML are available\n                $.fn.sparkline.canvas = false;\n                return false;\n            }\n        }\n\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n\n        target = $.fn.sparkline.canvas(width, height, this, interact);\n\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');\n                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled ||\n                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                        }\n                        vertices.push(null);\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max, vals;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            this.values = values = normalizeValues(values);\n            // target or performance could be null\n            vals = values.slice();\n            vals[0] = vals[0] === null ? vals[2] : vals[0];\n            vals[1] = values[1] === null ? vals[2] : vals[1];\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            if (this.values[1] !== null) {\n                shape = this.renderPerformance().append();\n                this.shapes[shape.id] = 'p1';\n                this.valueShapes.p1 = shape.id;\n            }\n            if (this.values[0] !== null) {\n                shape = this.renderTarget().append();\n                this.shapes[shape.id] = 't0';\n                this.valueShapes.t0 = shape.id;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                if (values[i]) { // don't render zero values\n                    shape = this.renderSlice(i).append();\n                    this.valueShapes[i] = shape.id; // store just the shapeid\n                    this.shapes[shape.id] = i;\n                }\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] }\n            ];\n            if (this.loutlier !== undefined) {\n                result.push({ field: 'lo', value: this.loutlier});\n            }\n            if (this.routlier !== undefined) {\n                result.push({ field: 'ro', value: this.routlier});\n            }\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return '';  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            if (startx === endx && starty === endy) {\n                if ((endAngle - startAngle) < Math.PI) {\n                    // Prevent very small slices from being mistaken as a whole pie\n                    return '';\n                }\n                // essentially going to be the entire circle, so ignore startAngle\n                startx = endx = x + radius;\n                starty = endy = y;\n            }\n\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return '';\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n}))}(document, Math));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide download from the application\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('download',[ \"jquery\", \"laconic\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'downloader';\n\n  /** @lends $.fn.downloader */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {String} options.data Content to be sent.\n     * @param {String} [options.filename] (base) name of the downloaded\n     * file.\n     * @param {String} [options.type] MIME type (default\n     * `application/octet-stream`)\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({\n\t  name:\"swish-download\",\n\t  ext:\"dat\"\n\t}, options);\n\n\tvar type = data.content_type;\n\tvar name = data.filename || \"swish-download.dat\";\n\tvar chs  = data.charset  || \"charset=UTF-8\";\n\n\tfunction aSupportsDownload() {\n\t  return $(\"<a>\")[0].download != undefined;\n\t}\n\n\tif ( !aSupportsDownload() || !type )\n\t  type = \"application/octet-stream\";\n\n\tvar href      = \"data:\"+type+\";\"+chs+\",\";\n        href += (chs == \"base64\" ? data.data : encodeURIComponent(data.data));\n\n\telem.attr(\"download\", name);\n\telem.attr(\"href\", href);\n\telem.attr(\"title\", \"Download (use menu for save link as)\");\n\telem.text(name);\n\n\telem.addClass(\"btn btn-primary download\");\n\telem.append($.el.span({class:\"glyphicon glyphicon-download\"}));\n      });\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class downloader\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.downloader = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Run an manage Prolog queries and their output\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('runner',[ \"jquery\", \"config\", \"preferences\",\n\t \"cm/lib/codemirror\", \"form\", \"prolog\", \"links\", \"modal\",\n\t \"answer\", \"laconic\", \"sparkline\", \"download\", \"search\"\n       ],\n       function($, config, preferences,\n\t\tCodeMirror, form, prolog, links, modal) {\n\n\t\t /*******************************\n\t\t *\t  THE COLLECTION\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunners';\n\n  /** @lends $.fn.prologRunners */\n  var methods = {\n    /**\n     * Initialize the container for Prolog queries.\n     * @example $(\".prolog-runners\").prologRunners();\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction runnerMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"runners-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Collapse all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', true);\n\t        },\n\t\t\"Expand all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', false);\n\t\t},\n\t\t\"Stop all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('stop');\n\t\t},\n\t\t\"Clear\": function() { this.prologRunners('clear'); }\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\tdata.stretch = $($.el.div({class:\"stretch\"}));\n\tdata.inner   = $($.el.div({class:\"inner\"}));\n\n\telem.append(runnerMenu());\n\telem.append(data.stretch);\n\telem.append(data.inner);\n\n\telem.on(\"pane.resize\", function() {\n\t  elem.prologRunners('scrollToBottom', true);\n\t});\n\telem.on(\"scroll-to-bottom\", function(ev, arg) {\n\t  elem.prologRunners('scrollToBottom', arg);\n\t});\n\n\telem.data(pluginName, data);\n      });\n    },\n\n    /**\n     * Run a Prolog query.  The methods appends a `<div>` and runs the\n     * plugin `prologRunner` on the new div.\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {prologEditor} [query.editor] the source editor\n     * @param {Boolean} [query.iconifyLast=true] define whether or not\n     * to iconify the previous runner.\n     * @param {Boolean} [query.tabled=false] if `true`, make a table with\n     * the results.\n     */\n    run: function(query) {\n      var data = this.data('prologRunners');\n\n      if ( query.iconifyLast )\n\tthis.prologRunners('iconifyLast');\n\n      var runner = $.el.div({class: \"prolog-runner\"});\n\n      data.inner.append(runner);\n      $(runner).prologRunner(query);\n      this.trigger('scroll-to-bottom');\n\n      return this;\n    },\n\n    /**\n     * Destroy all runners and, if applicable, their associated\n     * pengines.\n     */\n    clear: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n    },\n\n    /**\n     * Iconify the last runner if it is not associated to an open\n     * query.\n     */\n    iconifyLast: function() {\n      var jrunner = $(this.inner).children().last();\n\n      if ( jrunner.length == 1 )\n      { var runner = jrunner.prologRunner();\n\n\tif ( !runner.alive() )\n\t  runner.toggleIconic(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Keep the content at the bottom of the window, such that the\n     * buttons remain in the same position.  The only way to achieve\n     * this is by putting something on top of the content as long as\n     * the content is lower than the window.\n     *\n     * @param {Boolean} [onlydown=false] only scroll down if we are\n     * not at the bottom.\n     */\n    // the \"- 4\" compensates for the prolog-runner top&bottom margin.\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tvar data   = elem.data('prologRunners');\n\tvar height = data.inner.height();\n\tvar room   = elem.height() - height - 4 - 2;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  data.stretch.height(room > 0 ? room : 0);\n\t  elem.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n  /**\n   * Manage a subwindow (`<div>`) that acts as a collection of runner\n   * items.  Each runner represents a Prolog query, either active or\n   * terminated.  The collection keeps the runners properly stacked and\n   * provides a menu to control the collection, such as _clear_,\n   * _iconify all_, etc.\n   *\n   * @class prologRunners\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n  $.fn.prologRunners = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t /*******************************\n\t\t *\tINDIVIDUAL RUNNER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunner';\n\n  // keyBindings rely on the jQuery normalized `which` field\n  var keyBindings = { 59:      'next',\t\t/* ; (FF) */\n\t\t      186:     'next',\t\t/* ; (Chromium) */\n\t\t      32:      'next',\t\t/* space */\n\t\t      190:     'stop',\t\t/* . */\n\t\t      13:      'stop',\t\t/* Enter */\n\t\t      65:      'stopOrAbort',\t/* a */\n\t\t      27:      'stopOrAbort',\t/* Esc */\n\t\t      46:      'close',\t\t/* Del */\n\t\t      112:     'help'\t\t/* F1 */\n                    };\n\n  /** @lends $.fn.prologRunner */\n  var methods = {\n    /**\n     * Initialize a runner for a Prolog query\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {Boolean} [query.tabled=false]  If `true`, represent the\n     * results as a table.\n     * @param {Boolean} [query.title=true] If `false`, suppress the\n     * title.\n     * @param {Function} [query.success] Called when the query completed\n     * with success (`true`).  `this` is the runner, the first argument\n     * is the Pengine.\n     * @param {Function} [query.complete] Called when the query\n     * completed, regardless of the result. Passes the same arguments as\n     * `query.success`. The `state` property of the Pengine contains the\n     * result state.  See `this.setState()`.\n     */\n    _init: function(query) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction titleBarButton(glyph, title, action, display) {\n\t  var btn = $.el.button({title:title, class:\"rtb-\"+action},\n\t\t\t\t$.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\t  $(btn).on(\"click\", function() { elem.prologRunner(action); });\n\t  if ( display == false )\n\t    $(btn).hide();\n\t  return btn;\n\t}\n\n\tfunction stateButton() {\n\t  var icon = $.el.span({class:\"runner-state show-state idle\"});\n\n\t  return form.widgets.dropdownButton(icon);\n\t}\n\n\tfunction controllerDiv() {\n\t  function next()     { elem.prologRunner('next',    1); }\n\t  function next10()   { elem.prologRunner('next',   10); }\n\t  function next100()  { elem.prologRunner('next',  100); }\n\t  function next1000() { elem.prologRunner('next', 1000); }\n\t  function stop()     { data.prolog.stop(); }\n\t  function abort()    { data.prolog.abort(); }\n\n\t  function button(action, label) {\n\t    var btn = $.el.button(label);\n\t    $(btn).on(\"click\", action);\n\t    return btn;\n\t  }\n\n\t  function input() {\n\t    var inp = $.el.input({class:\"prolog-input\"});\n\t    var btn = $.el.button(\"Send\");\n\n\t    $(inp).keypress(function(ev) {\n\t\t\t      if ( ev.which == 13 &&\n\t\t\t\t   elem.prologRunner('respond', $(inp).val()) ) {\n\t\t\t\t$(inp).val(\"\");\n\t\t\t\tev.preventDefault();\n\t\t\t\treturn false;\t\t/* prevent bubbling */\n\t\t\t      } else if ( ev.key != \"Esc\" ) {\n\t\t\t\tev.stopPropagation();   /* prevent bubbling */\n\t\t\t      }\n\t\t\t    });\n\t    $(btn).on(\"click\", function() {\n\t\t\t\t elem.prologRunner('respond', $(inp).val());\n\t\t\t       });\n\n\t    return {input:inp, button:btn};\n\t  }\n\n\t  function statusChart() {\n\t    var spark = $.el.span({class:\"sparklines\"}, \"\");\n\n\t    return spark;\n\t  }\n\n\t  var inp = input();\n\t  var div = $.el.div({class:\"controller show-state\"},\n\t\t\t     $.el.span({class:\"running\"},\n\t\t\t\t       button(abort, \"Abort\")),\n\t\t\t     $.el.span({class:\"wait-next\"},\n\t\t\t\t       button(next, \"Next\"),\n\t\t\t\t       button(next10, \"10\"),\n\t\t\t\t       button(next100, \"100\"),\n\t\t\t\t       button(next1000, \"1,000\"), \" \",\n\t\t\t\t       button(stop, \"Stop\")),\n\t\t\t     $.el.span({class:\"wait-input\"},\n\t\t\t\t       button(abort, \"Abort\"), inp.button,\n\t\t\t\t       $.el.span(inp.input)),\n\t\t\t     statusChart());\n\n\t  return div;\n\t}\n\n\telem.addClass(\"prolog-runner panel panel-default\");\n\tif ( query.tabled )\n\t  elem.addClass(\"tabled\");\n\tif ( query.title != false ) {\n\t  var qspan = $.el.span({class:\"query cm-s-prolog\"});\n\t  CodeMirror.runMode(query.query, \"prolog\", qspan);\n\t  elem.append($.el.div(\n\t    {class:\"runner-title panel-heading\"},\n\t    titleBarButton(\"remove-circle\", \"Close\",        'close'),\n\t    titleBarButton(\"minus\",         \"Iconify\",      'toggleIconic'),\n\t    titleBarButton(\"download\",      \"Download CSV\", 'downloadCSV'),\n\t    titleBarButton(\"link\",          \"Permalink\",    'permalink', false),\n\t    stateButton(),\n\t    qspan,\n            $.el.br({clear:\"all\"})));\n\t} else {\n\t  elem.append($.el.div(\n\t    {class:\"runner-title runner-button-group\"},\n\t    titleBarButton(\"remove-circle\", \"Close\",        'close'),\n\t    titleBarButton(\"minus\",         \"Iconify\",      'toggleIconic'),\n\t    titleBarButton(\"download\",      \"Download CSV\", 'downloadCSV'),\n\t    titleBarButton(\"link\",          \"Permalink\",    'permalink', false)));\n\t}\n\tif ( query.chunk )\n\t  data.chunk = query.chunk;\n\telem.append($.el.div({class:\"runner-results panel-body\"}));\n\telem.append(controllerDiv());\n\n\telem.data('prologRunner', data);\n\n\telem.prologRunner('populateActionMenu');\n\telem.keydown(function(ev) {\n\t  if ( elem.prologRunner('getState') != \"wait-input\" &&\n\t       !ev.ctrlKey && !ev.altKey ) {\n\t    if ( keyBindings[ev.which] ) {\n\t      ev.preventDefault();\n\t      elem.prologRunner(keyBindings[ev.which]);\n\t    }\n\t  }\n\t});\n\telem.on(\"click\", \"a\", links.followLink);\n\n\tdata.savedFocus = document.activeElement;\n\telem.attr('tabindex', -1);\n\telem.focus();\n\n\tdata.query   = query;\n\tdata.answers = 0;\n\n\telem.prologRunner('setScreenDimensions');\n\n\t/* Load pengines.js incrementally because we wish to ask the\n\t   one from the pengine server rather than a packaged one.\n\t*/\n\n\trequire([config.http.locations.pengines+\"/pengines.js\"],\n\t\tfunction() {\n\n\t  data.prolog = new Pengine({\n\t    server: config.http.locations.pengines,\n\t    runner: elem,\n\t    application: \"swish\",\n\t    src: query.source,\n\t    destroy: false,\n\t    format: 'json-html',\n\t    oncreate: handleCreate,\n\t    onsuccess: handleSuccess,\n\t    onfailure: handleFailure,\n\t    onstop: handleStop,\n\t    onprompt: handlePrompt,\n\t    onoutput: handleOutput,\n\t    onping: handlePing,\n\t    onerror: handleError,\n\t    onabort: handleAbort});\n\t  data.prolog.state = \"idle\";\n\t  if ( config.swish.ping && data.prolog.ping != undefined ) {\n\t    data.prolog.ping(config.swish.ping*1000);\n\t  }\n\t});\n\n\treturn this;\n      });\n    }, //_init()\n\n    setScreenDimensions: function() {\n      var data = this.data(pluginName);\n      var pre  = $.el.pre({class: \"measure\"}, \"xxxxxxxxxx\");\n      var sw   = this.width();\n      var sh;\n      var container;\n\n      container = this.closest(\".prolog-runners\");\n      if ( container.length == 0 )\n\tcontainer = this.closest(\".nb-view\");\n      if ( container.length )\n\tsh = container.height();\n\n      this.append(pre);\n      var cw = $(pre).width()/10;\n      var ch = $(pre).height();\n      $(pre).remove();\n\n      data.screen = {\n        width: sw,\n\tcols: Math.floor(sw/cw)\n      };\n      if ( sh !== undefined ) {\n\tdata.screen.height = sh;\n\tdata.screen.rows   = Math.floor(sh/ch);\n      }\n    },\n\n    /**\n     * Add a _positive_ answer to the runner.  The answer is embedded in\n     * a `<div class=\"answer\">` with an additional class `\"even\"` or\n     * `\"odd\"` to simplify styling. Note that using CSS odd/even\n     * selectors is not possible because there are other elements such\n     * as errors.\n     * @param {Answer} answer pengine response in `json-html`\n     */\n    renderAnswer: function(answer) {\n      var data = this.data('prologRunner');\n      var even = (++data.answers % 2 == 0);\n      var obj = removeSpecialBindings(answer);\n\n      function removeSpecialBindings(answer) {\n\tvar obj = {};\n\tvar bindings = answer.variables;\n\tvar projection = answer.projection;\n\tvar prefix = \"_swish__\";\n\n\tfor (var i = 0; i < bindings.length; i++) {\n\t  var vars = bindings[i].variables;\n\n\t  for (var v = 0; v < vars.length; v++) {\n\t    if ( vars[v].startsWith(prefix) ) {\n\t      var name = vars[v].replace(prefix, \"\");\n\t      obj[name] = bindings[i].value;\n\t      bindings.splice(i, 1);\n\t      i--;\n\t    }\n\t  }\n\t}\n\n\tif ( projection ) {\n\t  for(var i = 0; i < projection.length; i++) {\n\t    if ( projection[i].startsWith(prefix) ) {\n\t      projection.splice(i, 1);\n\t      i--;\n\t    }\n\t  }\n\t}\n\n\treturn obj;\n      }\n\n      // Would be better to avoid wrapping in HTML, but that\n      // requires extending pengines_io.pl\n      if ( obj.permahash ) {\n\tdata.permahash = $(obj.permahash).text().replace(/'/g,\"\");\n\tthis.find(\".rtb-permalink\").show({duration:400});\n      }\n\n      if ( data.query.tabled ) {\n\tif ( data.answers == 1 ) {\n\t  if ( answer.projection && answer.projection.length > 0 ) {\n\t    var table = answerTable(answer.projection);\n\t    addAnswer(this, table);\n\t    data.table = table;\n\t    data.projection = answer.projection;\n\t    answer.nth = data.answers;\n\t    $(data.table).prologAnswer(answer);\n\t    return this;\n\t  }\n        } else\n\t{ answer.projection = data.projection;\n\t  answer.nth = data.answers;\n\t  $(data.table).prologAnswer(answer);\n\t  return this;\n\t}\n      }\n\n      var div = $.el.div({class:\"answer \"+(even ? \"even\" : \"odd\")},\n\t\t\t $.el.span({class:\"answer-no\"}, data.answers));\n\n      addAnswer(this, div);\n      $(div).prologAnswer(answer);\n    },\n\n    /**\n     * Add pengine output as `<span class=\"output\">`\n     * @param {String} data HTML that is inserted into the span.\n     * @return {DOM} the added node (a span)\n     */\n    outputHTML: function(data) {\n      var span = $.el.span({class:\"output\"});\n      addAnswer(this, span);\n      span.innerHTML = data;\n      runScripts(span);\n      return span;\n    },\n\n    /**\n     * Handle object output\n     */\n     downloadButton: function(obj) {\n       var button = $.el.a({class:\"download\"});\n       addAnswer(this, button);\n       $(button).downloader(obj);\n     },\n\n    /**\n     * Display a syntax error in the query.\n     * {Object} options\n     * {String} options.message is the message\n     * {Object} options.location contains the `line` and `ch` position\n     */\n     syntaxError: function(options) {\n       var data = this.data(pluginName);\n\n       options.data = \"<pre class=\\\"output msg-error\\\">\" +\n\t\t      options.message +\n\t\t      \"</pre>\";\n       options.location.file = true;\n       $(data.query.query_editor).prologEditor('highlightError', options);\n       return this;\n     },\n\n    /**\n     * Add an error message to the output.  The error is\n     * wrapped in a `<pre class=\"error\">` element.\n     * @param {String|Object} options If `options` is a string, it is a\n     * plain-text error message.  Otherwise it is the Pengine error\n     * object.\n     * @param {String} options.message is the plain error message\n     * @param {String} options.code is the error code\n     */\n    error: function(options) {\n      var msg;\n\n      if ( typeof(options) == 'object' ) {\n\tif ( options.code == \"died\" ) {\n\t  addAnswer(this, $.el.div({\n\t    class:\"RIP\",\n\t    title:\"Remote pengine timed out\"\n\t  }));\n\t  return this;\n\t} else if ( options.code == \"syntax_error\" )\n\t{ var m = options.message.match(/^HTTP:DATA:(\\d+):(\\d+):\\s*(.*)/);\n\n\t  if ( m && m.length == 4 ) {\n\t    this.prologRunner('syntaxError',\n\t\t\t      { location:\n\t\t\t\t{ line: parseInt(m[1])-1,\n\t\t\t\t  ch:\tparseInt(m[2])\n\t\t\t\t},\n\t\t\t\tmessage: m[3]\n\t\t\t      });\n\t    msg = \"Cannot run query due to a syntax error (check query window)\";\n\t  }\n\t}\n\tif ( !msg )\n\t  msg = options.message;\n      } else\n\tmsg = options;\n\n      addAnswer(this, $.el.pre({class:\"prolog-message msg-error\"}, msg));\n      return this;\n    },\n\n    /**\n     * Handle trace events\n     */\n    trace: function(data) {\n      var elem = this;\n      var goal = $.el.span({class:\"goal\"});\n      var prompt = data.data;\n      $(goal).html(prompt.goal);\n\n      function capitalizeFirstLetter(string) {\n\treturn string.charAt(0).toUpperCase() + string.slice(1);\n      }\n\n      function button(label, action, context) {\n\tvar btn = $.el.button({class:action,\n\t\t\t       title:label\n\t\t\t      },\n\t\t\t      $.el.span(label));\n\t$(btn).on(\"click\", function(ev) {\n\t  if ( context !== undefined ) {\n\t    action += \"(\"+Pengine.stringify(context(ev))+\")\";\n\t  }\n\t  data.pengine.respond(action);\n\t  $(ev.target).parent().remove();\n\t});\n\treturn btn;\n      }\n\n      addAnswer(this,\n\t\t$.el.div({class:\"prolog-trace\"},\n\t\t\t $.el.span({ class:\"depth\",\n\t\t\t             style:\"width:\"+(prompt.depth*5-1)+\"px\"\n\t\t\t\t   }, \"\\u00A0\"), /* &nbsp; */\n\t\t\t $.el.span({ class:\"port \"+prompt.port\n\t\t\t           },\n\t\t\t\t   capitalizeFirstLetter(prompt.port),\n\t\t\t\t   \":\"),\n\t\t\t goal));\n      if ( prompt.port == \"exception\" )\n\taddAnswer(this,\n\t\t  $.el.div({class:\"prolog-exception\"},\n\t\t\t   prompt.exception.message));\n      addAnswer(this,\n\t\t$.el.div({class:\"trace-buttons\"},\n\t\t\t button(\"Continue\",  \"nodebug\", function(ev) {\n\t\t\t   return breakpoints($(ev.target)\n\t\t\t\t    .closest(\".prolog-runner\"));\n\t\t\t }),\n\t\t\t button(\"Step into\", \"continue\"),\n\t\t\t button(\"Step over\", \"skip\"),\n\t\t\t button(\"Step out\",  \"up\"),\n\t\t\t button(\"Retry\",     \"retry\"),\n\t\t\t button(\"Abort\",     \"abort\")));\n\n      this.closest(\".swish\")\n          .find(\".tabbed\")\n          .trigger(\"trace-location\", prompt);\n\n      this.prologRunner('setState', \"wait-debug\");\n    },\n\n    /**\n     * set the placeholder of the input field.  This is normally\n     * done from the pengine's onprompt handler\n     * @param {String} p the new placeholder\n     */\n    setPrompt: function(p) {\n      this.find(\".controller input\").attr(\"placeholder\", p);\n    },\n\n    /**\n     * Support arbitrary jQuery requests from Prolog\n     */\n    jQuery: function(prompt) {\n      var request = prompt.data;\n      var receiver;\n\n      if ( typeof(request.selector) == \"string\" ) {\n\treceiver = $(request.selector);\n      } else if ( typeof(request.selector) == \"object\" ) {\n\tswitch(request.selector.root) {\n\t  case \"this\":\troot = this; break;\n\t  case \"swish\":\troot = this.closest(\".swish\"); break;\n\t}\n\tif ( request.selector.sub == \"\" ) {\n\t  receiver = root;\n\t} else {\n\t  receiver = root.find(request.selector.sub);\n\t}\n      }\n\n      console.log(receiver);\n      var result = receiver[request.method].apply(receiver, request.arguments);\n      console.log(result);\n\n      prompt.pengine.respond(Pengine.stringify(result));\n    },\n\n    /**\n     * Handle a (dashboard) form.  This opens dialog from the supplied\n     * `html`.\n     * @param {Object} prompt\n     * @param {String} prompt.html contains the HTML content of the form\n     */\n    form: function(prompt) {\n      var data = this.data('prologRunner');\n\n      modal.show({\n\ttitle: \"Please enter parameters\",\n\tbody: function() {\n\t  this.html(prompt.data.html);\n\t  this.find(\"[data-search-in]\").search({search:false});\n\n\t  this.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var button = $(ev.target).closest(\"button\");\n\t    var action = button.data('action');\n\n\t    if ( action == 'run' ) {\n\t      var formel = $(ev.target).closest(\"form\");\n\t      var fdata  = form.serializeAsObject(formel, true);\n\t      var s      = Pengine.stringify(fdata);\n\t      data.prolog.respond(s);\n\t    } else if ( action == 'cancel' ) {\n\t      data.prolog.respond(\"cancel\");\n\t    }\n\t    button.closest(\".modal\").modal('hide');\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n\n    /**\n     * send a response (to pengine onprompt handler) to the\n     * pengine and add the response to the dialogue as\n     * `div class=\"response\">`\n     * @param {String} s plain-text response\n     */\n    respond: function(text) {\n      var data = this.data('prologRunner');\n\n      if ( data.wait_for == \"term\" ) {\n\ts = termNoFullStop(text);\n\tif ( s == \"\" )\n\t  return null;\n      } else {\n\ts = Pengine.stringify(text+\"\\n\");\n      }\n\n      addAnswer(this, $.el.div({class:\"response\"}, text));\n      data.prolog.respond(s);\n      return this;\n    },\n\n    /**\n     * Stop the associated Prolog engines.\n     */\n    stop: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.stop();\n      });\n    },\n\n    /**\n     * Stop the pengine if it is waiting for a next solution,\n     * abort it if it is running or waitin for input and ignore\n     * otherwise.\n     */\n    stopOrAbort: function() {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar data  = elem.data('prologRunner');\n\tvar state = elem.prologRunner('getState');\n\n\tswitch(state)\n\t{ case \"running\":\n\t  case \"wait-input\":\n\t    data.prolog.abort();\n\t    break;\n\t  case \"wait-next\":\n\t    data.prolog.stop();\n\t}\n      });\n    },\n\n    /**\n     * Ask the associated Prolog engines for the next answer.\n     * @param {Integer} chunk maximum number of answers to return in the\n     * next chunk.\n     */\n    next: function(chunk) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.next(chunk);\n\telem.prologRunner('setState', \"running\");\n      });\n    },\n\n    /**\n     * Abort the associated Prolog engine.\n     */\n    abort: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.abort();\n      });\n    },\n\n    /**\n     * If the associated pengine is alive, send it a `destroy`.  Next,\n     * remove the runner from its container.\n     */\n    close: function() {\n      if ( this.length ) {\n\tvar parents = this.parent();\n\n\tthis.each(function() {\n\t  var elem = $(this);\n\t  var data = elem.data('prologRunner');\n\n\t  if ( elem.prologRunner('alive') ) {\n\t    $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n\t    data.prolog.abort();\n\t    elem.prologRunner('setState', 'aborted');\n\t  }\n\t});\n\tthis.remove();\n\n\tparents.trigger('scroll-to-bottom', true);\n      }\n      return this;\n    },\n\n    /**\n     * Provide help on running a query\n     */\n     help: function() {\n       $(\".swish-event-receiver\").trigger(\"help\", {file:\"runner.html\"});\n     },\n\n    /**\n     * Toggle or set the iconic state of the runner.\n     * @param {Boolean} [on] if `true`, make iconify, `false` expanded\n     * and toggle if unspecified\n     */\n    toggleIconic: function(on) {\n      if ( on == undefined ) {\n\tthis.toggleClass(\"iconic\");\n      } else if ( on ) {\n\tthis.addClass(\"iconic\");\n      } else {\n\tthis.removeClass(\"iconic\");\n      }\n\n      this.trigger('scroll-to-bottom', true);\n\n      return this;\n    },\n\n    /**\n     * Populate the menu associated with the pengine icon.\n     * @param {Object} [actions] associates labels with functions.\n     */\n    populateActionMenu: function(actions) {\n      var menu = this.find(\".runner-title .btn-group.dropdown\");\n\n      actions = $.extend({ \"Re-run\": function() { console.log(\"Re-Run \", this); }\n\t\t\t }, actions);\n\n      form.widgets.populateMenu(menu, this, actions);\n\n      return this;\n    },\n\n    /**\n     * Download query results as CSV.\n     */\n    downloadCSV: function(options) {\n      var data = this.data('prologRunner');\n      var query = termNoFullStop(data.query.query);\n\n      prolog.downloadCSV(query, data.query.source, options);\n\n      return this;\n    },\n\n    /**\n     * Save a permalink\n     */\n    permalink: function() {\n      var runner = this;\n      var data = this.data('prologRunner');\n\n      if ( data.permahash ) {\n\tvar href = config.http.locations.permalink + data.permahash;\n\thref = location.protocol + \"//\" + location.host + href;\n\tvar profile = $(\"#login\").login('get_profile',\n\t\t\t\t\t[ \"display_name\", \"avatar\", \"email\",\n\t\t\t\t\t  \"identity\"\n\t\t\t\t\t]);\n\tvar author  = profile.display_name;\n\n\tfunction savePermalink() {\n\t  this.append($.el.form(\n            { class:\"form-horizontal\"},\n\t      form.fields.hidden(\"identity\", profile.identity),\n\t      profile.identity ? undefined :\n\t\t\t       form.fields.hidden(\"avatar\", profile.avatar),\n\t      form.fields.link(href),\n\t      form.fields.fileName(null, false),\n\t      form.fields.title(),\n\t      form.fields.description(),\n\t      form.fields.tags([]),\n\t      form.fields.author(author, profile.identity),\n\t      form.fields.buttons(\n\t      { label: \"Save permalink\",\n\t\taction: function(ev, as) {\n\t\t\t  runner.prologRunner('save_permalink', as);\n\t\t\t  return false;\n\t\t\t}\n\t      })));\n\t}\n\n\tform.showDialog({\n\t  title: \"Save permalink\",\n\t  body:\t savePermalink\n\t});\n      } else {\n\tmodal.alert(\"No permahash\");\n      }\n\n      return this;\n    },\n\n    save_permalink: function(as) {\n      var runner = this;\n      var data = this.data('prologRunner');\n      var post = {\n        data: data.permahash,\n\ttype: \"lnk\",\n\tmeta: as\n      };\n\n      delete post.meta.link;\n\n      $.ajax({ url: config.http.locations.web_storage,\n               dataType: \"json\",\n\t       contentType: \"application/json\",\n\t       type: \"POST\",\n\t       data: JSON.stringify(post),\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: runner\n\t\t                  });\n\t\t }\n\t       },\n\t       error: function(jqXHR, textStatus, errorThrown) {\n\t\t if ( jqXHR.status == 403 ) {\n\t\t   modal.alert(\"Permission denied.  Please try a different name\");\n\t\t } else {\n\t\t   alert('Save failed: '+textStatus);\n\t\t }\n\t       }\n             });\n\n      return this;\n    },\n\n  /**\n   * @param {String} state defines the new state of the pengine.\n   * Known states are:\n   *\n   *   - \"idle\"\t      - Pengine is not yet created\n   *   - \"running\"    - Pengine is running\n   *   - \"wait-next\"  - Pengine produced a non-deterministic answer\n   *   - \"wait-input\" - Pengine waits for input\n   *   - \"wait-debug\" - Pengine waits for for debugger reply\n   *   - \"true\"       - Pengine produced the last answer\n   *   - \"false\"      - Pengine failed\n   *   - \"error\"      - Pengine raised an error\n   *   - \"stopped\"    - User selected *stop* after non-det answer\n   *   - \"aborted\"    - User aborted execution\n   *\n   * The widget is brought to the new  state   by  adding the state as a\n   * class to all members of  the   class  `show-state`, which currently\n   * implies the pengines icon at the   top-left  and a _controller_ div\n   * created by controllerDiv().\n   */\n   setState: function(state) {\n     var data = this.data('prologRunner');\n\n     if ( !data )\n       return;\n\n     if ( data.prolog.state != state ) {\n       var stateful = this.find(\".show-state\");\n       var query = data.query;\n\n       stateful.removeClass(data.prolog.state).addClass(state);\n       data.prolog.state = state;\n       if ( !aliveState(state) && data.savedFocus ) {\n\t $(data.savedFocus).focus();\n\t data.savedFocus = null;\n       } else if ( state == \"wait-input\" ) {\n\t this.find(\"input\").focus();\n       }\n\n       if ( state == \"true\" && query.success )\n\t query.success.call(this, data.prolog);\n       if ( !aliveState(state) && query.complete )\n\t query.complete.call(this, data.prolog);\n     }\n\n     var runners = RS(this);\n     if ( !aliveState(state) ) {\n       var elem = this;\n       $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n       data.prolog.destroy();\n       setTimeout(function() { elem.trigger('scroll-to-bottom') }, 100);\n     } else if ( state == \"wait-next\" || state == \"true\" ) {\n       var elem = this;\n       setTimeout(function() { elem.trigger('scroll-to-bottom') }, 100);\n     } else {\n       this.trigger('scroll-to-bottom');\n     }\n\n     return this;\n   },\n\n   /** @returns {String} representing the current state of the\n    * query execution.\n    * @see {@link setState}\n    */\n   getState: function() {\n     var data = this.data('prologRunner');\n\n     return data.prolog ? data.prolog.state : \"idle\";\n   },\n\n   /**\n    * @returns {Boolean} true if the related pengine is alive.  That\n    * means it has state `\"running\"`, `\"wait-next\"`, `\"wait-input\"` or\n    * `\"wait-debug\"`\n    */\n   alive: function() {\n     return aliveState(this.prologRunner('getState'));\n   },\n\n   /**\n    * Handle ping data, updating the sparkline status\n    */\n   ping: function(stats) {\n     var data = this.data('prologRunner');\n\n     if ( data && data.prolog && data.prolog.state == \"running\" ) {\n       var spark = this.find(\".sparklines\");\n       var stacks = [\"global\", \"local\", \"trail\"];\n       var colors = [\"red\", \"blue\", \"green\"];\n       var names  = [\"Global \", \"Local \", \"Trail \"];\n       var maxlength = 10;\n\n       if ( !data.stacks )\n\t data.stacks = { global:{usage:[]}, local:{usage:[]}, trail:{usage:[]} };\n\n       for(i=0; i<stacks.length; i++) {\n\t var s = stacks[i];\n\t var limit = stats.stacks[s].limit;\n\t var usage = stats.stacks[s].usage;\n\n\t var u = Math.log10((usage/limit)*10000);\n\t function toBytes(limit, n) {\n\t   var bytes = Math.round((Math.pow(10, n)/10000)*limit);\n\n\t   function numberWithCommas(x) {\n\t     x = x.toString();\n\t     var pattern = /(-?\\d+)(\\d{3})/;\n\t     while (pattern.test(x))\n\t       x = x.replace(pattern, \"$1,$2\");\n\t     return x;\n\t   }\n\n\t   return numberWithCommas(bytes);\n\t }\n\n\t data.stacks[s].limit = limit;\n\t if ( data.stacks[s].usage.length >= maxlength )\n\t   data.stacks[s].usage = data.stacks[s].usage.slice(1);\n\t data.stacks[s].usage.push(u);\n\t spark.sparkline(data.stacks[s].usage,\n\t\t\t { height: \"2em\",\n\t\t\t   composite: i>0,\n\t\t\t   chartRangeMin: 0,\n\t\t\t   chartRangeMax: 4,\n\t\t\t   lineColor: colors[i],\n\t\t\t   tooltipPrefix: names[i],\n\t\t\t   tooltipSuffix: \" bytes\",\n\t\t\t   tooltipChartTitle: i == 0 ? \"Stack usage\" : undefined,\n\t\t\t   numberFormatter: function(n) {\n\t\t\t     return toBytes(limit, n);\n\t\t\t   }\n\t\t\t });\n       }\n     }\n   }\n\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *     PRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  function RS(from) {\t\t\t/* find runners from parts */\n    return $(from).closest(\".prolog-runners\");\n  }\n\n  function addAnswer(runner, html) {\n    var results = runner.find(\".runner-results\");\n    results.append(html);\n    return this;\n  }\n\n  function aliveState(state) {\n    switch( state )\n    { case \"running\":\n      case \"wait-next\":\n      case \"wait-input\":\n      case \"wait-debug\":\n\treturn true;\n      default:\n\treturn false;\n    }\n  }\n\n  function answerTable(projection) {\n    var tds = [{class:\"projection\"}];\n\n    for(i=0; i<projection.length; i++)\n      tds.push($.el.th({class:\"pl-pvar\"}, projection[i]));\n    tds.push($.el.th({class:\"answer-nth\"}, \"\"));\n\n    var table = $.el.table({class:\"prolog-answers\"},\n\t\t\t   $.el.tbody($.el.tr.apply(this, tds)));\n\n    return table;\n  }\n\n\t\t /*******************************\n\t\t *\t SCRIPTS IN NODES\t*\n\t\t *******************************/\n\n  var node_id = 1;\n  function runScripts(elem) {\n    var scripts = [];\n    elem = $(elem);\n\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" )\n\tscripts.push(this.textContent);\n    });\n\n    if ( scripts.length > 0 ) {\n      var script = \"(function(node){\" + scripts.join(\"\\n\") + \"})\";\n      var node = new Node({\n        node: elem[0]\n      });\n\n      try {\n\teval(script)(node);\n      } catch(e) {\n\talert(e);\n      }\n    }\n  }\n\n  function Node(options) {\n    this.my_node = options.node;\n  }\n\n  Node.prototype.node = function() {\n    return $(this.my_node);\n  }\n\n  /**\n   * Provide a unique id for the node.  This can be used as prefix to\n   * avoid conflicts for `id` attributes.\n   */\n  Node.prototype.unique_id = function() {\n    if ( !this.uid )\n      this.uid = node_id++;\n    return this.uid;\n  }\n\n\n\t\t /*******************************\n\t\t *   HANDLE PROLOG CALLBACKS\t*\n\t\t *******************************/\n\n  function breakpoints(runner) {\n    var data = runner.data(pluginName);\n\n    return $(runner).parents(\".swish\").swish('breakpoints', data.prolog.id);\n  }\n\n  function registerSources(pengine) {\n    var runner = pengine.options.runner;\n    var data   = runner.data(pluginName);\n\n    if ( data.query.editor )\n      $(data.query.editor).prologEditor('pengine', {add: pengine.id});\n  }\n\n  function handleCreate() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data(pluginName);\n    if ( data == undefined ) {\n      this.pengine.destroy();\t\t\t/* element already gone */\n    } else\n    { var options = $.extend({}, data.screen);\n      var bps;\n      var resvar = config.swish.residuals_var || \"Residuals\";\n      var hashvar = config.swish.permahash_var;\n\n      if ( hashvar )\n\thashvar = \", \"+hashvar;\n      else\n\thashvar = \"\";\n\n      registerSources(this.pengine);\n\n      if ( (bps = breakpoints(elem)) )\n\toptions.breakpoints = Pengine.stringify(bps);\n      if ( data.chunk )\n\toptions.chunk = data.chunk;\n\n      this.pengine.ask(\"'$swish wrapper'((\\n\" +\n\t\t       termNoFullStop(data.query.query) +\n\t\t       \"\\n), [\"+resvar+hashvar+\"])\", options);\n      elem.prologRunner('setState', \"running\");\n    }\n  }\n\n  function handleSuccess() {\n    var elem = this.pengine.options.runner;\n\n    if ( elem.data(pluginName) == undefined )\n    { this.pengine.destroy();\t\t\t/* element already gone */\n    } else {\n      for(var i=0; i<this.data.length; i++) {\n\tvar answer = this.data[i];\n\tif ( this.projection )\n\t  answer.projection = this.projection;\n\n\telem.prologRunner('renderAnswer', answer);\n      }\n      if ( this.time > 0.1 )\t/* more than 0.1 sec. CPU (TBD: preference) */\n\taddAnswer(elem, $.el.div(\n\t  {class:\"cputime\"},\n\t  $.el.span(this.time.toFixed(3),\n\t\t    \" seconds cpu time\")));\n\n      elem.prologRunner('setState', this.more ? \"wait-next\" : \"true\");\n    }\n  }\n\n  function handleFailure() {\n    var elem = this.pengine.options.runner;\n\n    addAnswer(elem, $.el.span({class: \"prolog-false\"}, \"false\"));\n    elem.prologRunner('setState', \"false\");\n  }\n\n  function handleStop() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('setState', \"stopped\");\n  }\n\n  function handlePrompt() {\n    var elem   = this.pengine.options.runner;\n    var data   = elem.data('prologRunner');\n    var prompt = this.data || \"Please enter a Prolog term\";\n\n    data.wait_for = \"term\";\n\n    if ( typeof(prompt) == \"object\" ) {\n      if ( prompt.type == \"trace\" ) {\n\treturn elem.prologRunner('trace', this);\n      } else if ( prompt.type == \"form\" ) {\n\treturn elem.prologRunner('form', this);\n      } else if ( prompt.type == \"jQuery\" ) {\n\treturn elem.prologRunner('jQuery', this);\n      } else if ( prompt.type == \"console\" ) {\n\tprompt = prompt.prompt || \"console> \";\n\tdata.wait_for = \"line\";\n      } else {\n\tprompt = JSON.stringify(prompt);\n      }\n    }\n\n    elem.prologRunner('setPrompt', prompt);\n    elem.prologRunner('setState', \"wait-input\");\n  }\n\n  /**\n   * Make indicated source locations clickable.\n   * @param {String} msg is the HTML error message string\n   * @param {DOM} editor is the source editor; the editor for pengine://\n   * source locations\n   */\n  function clickableLocations(msg, editor) {\n    var pattern = /pengine:\\/\\/[-0-9a-f]{36}\\/src:(\\d+)/;\n\n    return msg.replace(pattern, function(matched) {\n      var line = matched.match(pattern)[1];\n      return \"<a class='goto-error' title='Goto location'>\" +\n               \"<span class='glyphicon glyphicon-hand-right'></span> \"+\n\t       \"<b>line <span class='line'>\"+line+\"</span></b></a>\";\n    });\n  }\n\n  function gotoError(ev) {\n    var a        = $(ev.target).closest(\"a.goto-error\");\n    var ctx      = $(ev.target).closest(\".error-context\");\n    var econtext = ctx.data(\"error_context\");\n\n    if ( a[0] ) {\n      var line = parseInt(a.find(\"span.line\").text());\n      var file = a.find(\"span.file\").text();\n\n      ev.preventDefault();\n\n      if ( file ) {\n\tctx.closest(\"body.swish\")\n\t   .swish('playFile', {file:file, line:line});\n      } else {\n\t$(econtext.editor).prologEditor('gotoLine', line);\n      }\n\n      return false;\n    } else if ( econtext.location.file ) {\n      ctx.closest(\"body.swish\")\n\t .swish('playFile', econtext.location);\n    } else {\n      $(econtext.editor).prologEditor('gotoLine', econtext.location.line);\n    }\n  }\n\n  /**\n   * handle `pengine_output/1`.  Note that compiler warnings and errors\n   * also end up here. If they have a location, this is provided through\n   * this.location, which contains `file`, `line` and `ch`.  We must use\n   * this to indicate the location of the error in CodeMirror.\n   */\n\n  function handleOutput(msg) {\n    var elem = msg.pengine.options.runner;\n    var data = elem.data(pluginName);\n\n    if ( !data )\t\t\t\t/* runner is gone */\n      return;\n\n    if ( typeof(msg.data) == 'string' ) {\n      var econtext = {editor: data.query.editor};\n\n      msg.data = msg.data.replace(/'[-0-9a-f]{36}':/g, \"\")  /* remove module */\n\n      if ( msg.location ) {\n\tvar loc = msg.location;\n\tvar prefix = \"swish://\";\n\tvar span;\n\n\tfunction clickableError() {\n\t  var str = loc.file+\":\"+loc.line+\":\";\n\t  if ( loc.ch ) str += loc.ch+\":\";\n\t  str += \"\\\\s*\";\n\n\t  msg.data = clickableLocations(\n\t\t\t msg.data.replace(new RegExp(str, \"g\"), \"\"),\n\t\t\t econtext.editor);\n\n\t  span = elem.prologRunner('outputHTML', msg.data);\n\n\t  $(span).addClass(\"error-context\");\n\t  $(span).append($.el.span({class:\"glyphicon glyphicon-hand-right\"}));\n\t  $(span).attr(\"title\", \"Error in program.  Click to show in context\");\n\t  $(span).on(\"click\", gotoError);\n\t  $(span).data(\"error_context\", econtext);\n\t}\n\n\tif ( loc.file.startsWith(prefix) ) {\n\t  var file = loc.file.slice(prefix.length);\n\t  econtext.location = {file:file, line:loc.line};\n\t  clickableError();\n\t} else if ( loc.file.startsWith(\"pengine://\") ) {\n\t  econtext.location = {line:loc.line};\n\t  clickableError(data.query.editor);\n\t}\n\tregisterSources(msg.pengine);\n\tmsg.error_context = econtext;\n\tmsg.error_handler = gotoError;\n\t$(\".swish-event-receiver\").trigger(\"source-error\", msg);\n      } else {\n\tvar span = elem.prologRunner('outputHTML',\n\t\t\t\t     clickableLocations(msg.data,\n\t\t\t\t\t\t\tecontext.editor));\n\t$(span).on(\"click\", gotoError);\n\t$(span).data(\"error_context\", econtext);\n      }\n    } else if ( typeof(msg.data) == 'object' ) {\n      elem.prologRunner(msg.data.action, msg.data);\n    } else {\n      console.log(msg.data);\n    }\n    elem.trigger('scroll-to-bottom');\n  }\n\n  function handleError() {\n    var elem = this.pengine.options.runner;\n    var msg;\n\n    if ( this.code == \"too_many_pengines\" ) {\n      this.message = \"Too many open queries.  Please complete some\\n\"+\n\t\t     \"queries by using |Next|, |Stop| or by\\n\"+\n\t\t     \"closing some queries.\";\n    } else if ( typeof(this.data) == 'string' ) {\n      this.message = this.data\n\t\t\t .replace(new RegExp(\"'\"+this.pengine.id+\"':\", 'g'), \"\");\n    } else {\n      this.message = \"Unknown error\";\n    }\n\n    elem.prologRunner('error', this);\n    elem.prologRunner('setState', \"error\");\n  }\n\n  function handleAbort() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data('prologRunner');\n\n    if ( data ) {\n      elem.prologRunner('error', \"** Execution aborted **\");\n      elem.prologRunner('setState', \"aborted\");\n    } else {\n      this.pengine.destroy();\n    }\n  }\n\n  function handlePing() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('ping', this.data);\n  }\n\n  /**\n   * @param {Object} answer a positive answer from the Pengine\n   * @returns {Boolean} true if the answer has printable part, i.e., no\n   * variable bindings nor residual goals.\n   */\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function termNoFullStop(s) {\n    return String($.trim(s)).replace(/\\.$/, \"\");\n  }\n\n  /**\n   * Run a Prolog query by starting a remote pengine.\n   *\n   * @class prologRunner\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologRunner = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t   /*******************************\n\t\t   *\t       UTIL\t\t*\n\t\t   *******************************/\n\n  function glyphButton(glyph, title) {\n    var btn = $.el.a({href:\"#\", class:\"close btn btn-link btn-sm\",\n\t\t      title:title},\n\t\t     $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n    return btn;\n  }\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Dialog components to interact with the gitty store.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('gitty',[ \"jquery\", \"config\", \"form\", \"modal\", \"laconic\" ],\n       function($, config, form, modal) {\n\n(function($) {\n  var pluginName = 'gitty';\n\n  /** @lends $.fn.gitty */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Object.meta} provides the gitty meta-data\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName)||{};\n\tvar meta = options.meta;\n\tvar tabs;\n\n\tdata.commits = [];\n\tdata.commits[meta.commit] = meta;\n\tdata.commit  = meta.commit;\n\tdata.editor  = options.editor;\n\n\tfunction tab(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\thenabled = !Boolean(meta.previous);\n\ttabs     = $($.el.div({class:\"tab-content\"}));\n\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tab(\"Meta data\", true,  \"gitty-meta-data\"),\n\t  tab(\"History\",   false, \"gitty-history\",  henabled),\n\t  tab(\"Changes\",   false, \"gitty-diff\",     henabled)));\n\telem.append(tabs);\n\n\t/* meta-data tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade in active gitty-meta-data\",\n\t                       id:\"gitty-meta-data\"}));\n\telem.find('[href=\"#gitty-meta-data\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showMetaData');\n\t});\n\n\t/* history tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-history\",\n\t                       id:\"gitty-history\"}));\n\telem.find('[href=\"#gitty-history\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showHistory');\n\t});\n\n\t/* diff/changes tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-diff\",\n\t                       id:\"gitty-diff\"}));\n\telem.find('[href=\"#gitty-diff\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showDiff');\n\t});\n\n\telem.data(pluginName, data);\n\n\telem.gitty('showMetaData');\n      });\n    },\n\n    /**\n     * @param is the gitty meta-object\n     * @return {DOM} node holding the title\n     */\n    title: function(meta) {\n      var title = $.el.span(\"File \", $.el.span({class:\"filename\"}, meta.name));\n      if ( meta.symbolic != \"HEAD\" && meta.commit )\n\t$(title).append(\"@\", $.el.span({class:\"sha1 abbrev\"},\n\t\t\t\t       meta.commit.substring(0,7)));\n\n      return title;\n    },\n\n\n\t\t /*******************************\n\t\t *\t     META DATA\t\t*\n\t\t *******************************/\n\n    /**\n     * Show meta data for the current version.  If this is the HEAD,\n     * allow updating the meta-data\n     */\n    showMetaData: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-meta-data\");\n\tvar formel;\n\tvar meta = data.commits[data.commit];\n\n\tif ( data.metaData == data.commit )\n\t  return;\n\tdata.metaData = data.commit;\n\n\ttab.html(\"\");\n\tformel = $.el.form({class:\"form-horizontal\"},\n\t\t      form.fields.fileName(meta.name, meta.public, meta.example,\n\t\t\t\t\t   true), // disabled\n\t\t      form.fields.title(meta.title),\n\t\t      form.fields.author(meta.author),\n\t\t      form.fields.date(meta.time, \"Date\", \"date\"),\n\t\t      form.fields.tags(meta.tags));\n\n\tif ( meta.symbolic == \"HEAD\" ) {\n\t  $(formel).append(\n\t      form.fields.buttons(\n\t\t{ label: \"Update meta data\",\n\t\t  action: function(ev, newMetaData) {\n\t\t    data.editor.storage('save', newMetaData, \"only-meta-data\");\n\t\t    return false;\n\t\t  }\n\t\t}));\n\t}\n\n\ttab.append(formel);\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t     COMMIT LOG\t\t*\n\t\t *******************************/\n\n    /**\n     * Fill the commit log tab\n     */\n    showHistory: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-history\");\n\tvar meta = data.commits[data.commit];\n\tvar playButton;\n\n\tif ( data.history )\n\t  return;\n\n\ttab.html(\"\");\n\ttab.append($.el.table(\n\t  { class:\"table table-striped table-condensed gitty-history\",\n\t    'data-click-to-select':true,\n\t    'data-single-select':true\n\t  },\n\t  $.el.tr($.el.th(\"Comment\"),\n\t\t  $.el.th(\"Date\"),\n\t\t  $.el.th(\"User\"),\n\t\t  $.el.th(\"Changed\")),\n\t  $.el.tbody()));\n\n\tplayButton = form.widgets.glyphIconButton(\n           \"play\",\n\t   { title:\"Open the highlighted version in SWISH\",\n\t     class:\"btn-primary\"\n\t   });\n\ttab.append(playButton);\n\t$(playButton).on(\"click\", function(ev) {\n\t  var row = elem.find(\"tr.success\");\n\t  if ( row.length == 1 ) {\n\t    var commit = row.data('commit');\n\n\t    if ( data.commits[commit].symbolic == \"HEAD\" )\n\t      file = data.commits[commit].name;\n\t    else\n\t      file = commit;\n\n\t    elem.parents(\".swish\").swish('playFile', file);\n\t    $(\"#ajaxModal\").modal('hide');\n\t  }\n\t  return false;\n\t});\n\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(meta.name);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"history\",\n\t\t         depth: 6,\t\t/* might skip last */\n\t\t         to: data.commit\n\t\t       },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillHistoryTable', reply);\n\t\t   data.history = data.commit;\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    /**\n     * Fill the history table\n     */\n    fillHistoryTable: function(history) {\n      var gitty = this;\n      var data  = this.data(pluginName);\n      var table = this.find(\".table.gitty-history tbody\");\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\n\tif ( !data.commits[h.commit] )\n\t  data.commits[h.commit] = h;\n      }\n\n      function changedAttributes(m1) {\n\tvar m2, diff;\n\tvar elem = $.el.span();\n\n\tif ( m1.previous ) {\n\t  if ( (m2 = data.commits[m1.previous]) &&\n\t       (diff = diffMeta(m1, m2)) ) {\n\t    var change = 0;\n\n\t    for( var d in diff ) {\n\t      if ( diff.hasOwnProperty(d) ) {\n\t\tvar ch = (d == \"name\" ? \"forked \"+m2.name : d);\n\t\t$(elem).append((change++ == 0 ? undefined : \", \"),\n\t\t\t       $.el.span({class:\"change-type\"}, ch));\n\t      }\n\t    }\n\t  }\n\t} else {\n\t  $(elem).append(\"initial\");\n\t}\n\n\treturn elem;\n      }\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\tvar tr;\n\n\tif ( i == history.length-1 &&\n\t     h.previous && !data.commit[h.previous] )\n\t  break;\n\n\tvar attrs = {'data-commit':h.commit};\n\tif ( data.commit == h.commit )\n\t  attrs.class = \"success\";\n\n\ttr = $.el.tr(attrs,\n\t\t     $.el.td({class:\"commit-message\"},\n\t\t\t     h.commit_message||\"No comment\"),\n\t\t     $.el.td({class:\"date\"},\n\t\t\t     new Date(h.time*1000).toLocaleString()),\n\t\t     $.el.td({class:\"author\"},\n\t\t\t     h.author||\"No author\"),\n\t\t     $.el.td({class:\"changes\"},\n\t\t\t     changedAttributes(h)));\n\ttable.append(tr);\n      }\n\n      table.on(\"click\", \"tr\", function(ev) {\n\tvar tr = $(ev.target).parents(\"tr\");\n\tvar commit = tr.data('commit');\n\n\tgitty.gitty('setCommit', commit);\n      });\n    },\n\n    /**\n     * Select a row in the table and set the title.\n     * @param {String} version is the SHA1 of the new version\n     */\n\n    setCommit: function(commit) {\n      var data = this.data(pluginName);\t/* private data */\n      var h2   = this.parent(\".modal-content\").find(\"h2\");\n\n      h2.html(\"\");\n      h2.append(this.gitty('title', data.commits[commit]));\n      this.find(\"tr.success\").removeClass(\"success\");\n      this.find(\"tr[data-commit=\"+commit+\"]\").addClass(\"success\");\n      data.commit = commit;\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t       DIFFS\t\t*\n\t\t *******************************/\n\n    /**\n     * Show diff of a given file\n     * @param {Object} options\n     * @param {String} options.file is the file for which to show diffs\n     * @param {String} [options.base] is the base SHA1 (defaults to\n     * HEAD^)\n     */\n\n    showDiff: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.diff == data.commit )\n\t  return;\n\n\telem.find(\".gitty-diff\").html(\"\");\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(data.commit);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"diff\"\n\t\t },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillDiff', reply);\n\t\t   data.diff = data.commit;\n\t\t },\n\t\t error: function(jqXHR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    fillDiff: function(diff) {\n      if ( diff.tags ) this.gitty('diffTags', diff.tags);\n      if ( diff.data ) this.gitty('udiffData', diff.data);\n    },\n\n    diffTags: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var div = $($.el.div({class:\"diff-tags\"},\n\t\t\t    $.el.label(\"Tags\")));\n      var span = $($.el.span({class:\"diff-tags\"}));\n\n      div.append(span);\n\n      function addTag(tag, className) {\n\tspan.append($.el.span({class: \"diff-tag \"+className}, tag));\n      }\n\n      if ( diff.deleted.length ) {\n\tspan.append(\"Removed: \");\n\tfor(var i=0; i<diff.deleted.length; i++)\n\t  addTag(diff.deleted[i], \"deleted\");\n      }\n      if ( diff.added.length ) {\n\tspan.append(diff.deleted.length ? \", \" : \"\", \"Added: \");\n\tfor(var i=0; i<diff.added.length; i++)\n\t  addTag(diff.added[i], \"added\");\n      }\n\n      tab.append(div);\n\n      return this;\n    },\n\n    udiffData: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n\n      tab.append(pre);\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class gitty\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.gitty = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  /**\n   * Diff meta data\n   * @returns {Object|null}, where object holds `author`, `title` and/or\n   * `tags`\n   */\n\n  function diffMeta(m1, m2) {\n    var diff = {};\n\n    function diffAttr(a) {\n      if ( (m1[a] || m2[a]) && m1[a] != m2[a] )\n\tdiff[a] = {from: m1[a], to: m2[a]};\n    }\n\n    diffAttr(\"author\");\n    diffAttr(\"title\");\n    diffAttr(\"data\");\n    diffAttr(\"public\");\n    diffAttr(\"example\");\n    diffAttr(\"name\");\n\n    if ( (d=diffTags(m1.tags, m2.tags)) )\n      diff.tags = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  function reduceMeta(meta, old) {\n    var r = {};\n\n    for( var k in meta ) {\n      if ( meta.hasOwnProperty(k) ) {\n\tswitch(typeof(meta[k])) {\n\t  case \"object\":\n\t    if ( $.isArray(meta[k]) ) {\n\t      if ( !diffTags(meta[k], old[k]) )\n\t\tcontinue;\n\t    }\n\t    break;\n\t  case \"string\":\n\t  case \"boolean\":\n\t    if ( old[k] == meta[k] )\n\t      continue;\n\t}\n\n\tr[k] = meta[k];\n      }\n    }\n\n    return r;\n  }\n\n  /**\n   * Diff two tag arrays (arrays of strings)\n   * @returns {Object|null}, where object.added is an array with new\n   * tags and object.deleted contains deleted tags.\n   */\n  function diffTags(t1, t2) {\n    var d, diff = {};\n\n    t1 = t1||[];\n    t2 = t2||[];\n\n    function added(t1, t2) {\n      var a = [];\n\n      for(var i=0; i<t2.length; i++) {\n\tif ( t1.indexOf(t2[i]) < 0 )\n\t  a.push(t2[i]);\n      }\n\n      return a;\n    }\n\n    if ( (d=added(t1,t2)).length > 0 ) diff.added = d;\n    if ( (d=added(t2,t1)).length > 0 ) diff.deleted = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  return {\n    diffMeta:   diffMeta,\n    reduceMeta: reduceMeta,\n    diffTags:   diffTags\n  };\n});\n\n","/***\nThis is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>\n\nCopyright (c) 2007, Snowtide Informatics Systems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright notice, this\n\t\tlist of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright notice,\n\t\tthis list of conditions and the following disclaimer in the documentation\n\t\tand/or other materials provided with the distribution.\n\t* Neither the name of the Snowtide Informatics Systems nor the names of its\n\t\tcontributors may be used to endorse or promote products derived from this\n\t\tsoftware without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n/* Author: Chas Emerick <cemerick@snowtide.com> */\nvar __whitespace = {\" \":true, \"\\t\":true, \"\\n\":true, \"\\f\":true, \"\\r\":true};\n\nvar difflib = {\n\tdefaultJunkFunction: function (c) {\n\t\treturn __whitespace.hasOwnProperty(c);\n\t},\n\t\n\tstripLinebreaks: function (str) { return str.replace(/^[\\n\\r]*|[\\n\\r]*$/g, \"\"); },\n\t\n\tstringAsLines: function (str) {\n\t\tvar lfpos = str.indexOf(\"\\n\");\n\t\tvar crpos = str.indexOf(\"\\r\");\n\t\tvar linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? \"\\n\" : \"\\r\";\n\t\t\n\t\tvar lines = str.split(linebreak);\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = difflib.stripLinebreaks(lines[i]);\n\t\t}\n\t\t\n\t\treturn lines;\n\t},\n\t\n\t// iteration-based reduce implementation\n\t__reduce: function (func, list, initial) {\n\t\tif (initial != null) {\n\t\t\tvar value = initial;\n\t\t\tvar idx = 0;\n\t\t} else if (list) {\n\t\t\tvar value = list[0];\n\t\t\tvar idx = 1;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tfor (; idx < list.length; idx++) {\n\t\t\tvalue = func(value, list[idx]);\n\t\t}\n\t\t\n\t\treturn value;\n\t},\n\t\n\t// comparison function for sorting lists of numeric tuples\n\t__ntuplecomp: function (a, b) {\n\t\tvar mlen = Math.max(a.length, b.length);\n\t\tfor (var i = 0; i < mlen; i++) {\n\t\t\tif (a[i] < b[i]) return -1;\n\t\t\tif (a[i] > b[i]) return 1;\n\t\t}\n\t\t\n\t\treturn a.length == b.length ? 0 : (a.length < b.length ? -1 : 1);\n\t},\n\t\n\t__calculate_ratio: function (matches, length) {\n\t\treturn length ? 2.0 * matches / length : 1.0;\n\t},\n\t\n\t// returns a function that returns true if a key passed to the returned function\n\t// is in the dict (js object) provided to this function; replaces being able to\n\t// carry around dict.has_key in python...\n\t__isindict: function (dict) {\n\t\treturn function (key) { return dict.hasOwnProperty(key); };\n\t},\n\t\n\t// replacement for python's dict.get function -- need easy default values\n\t__dictget: function (dict, key, defaultValue) {\n\t\treturn dict.hasOwnProperty(key) ? dict[key] : defaultValue;\n\t},\t\n\t\n\tSequenceMatcher: function (a, b, isjunk) {\n\t\tthis.set_seqs = function (a, b) {\n\t\t\tthis.set_seq1(a);\n\t\t\tthis.set_seq2(b);\n\t\t}\n\t\t\n\t\tthis.set_seq1 = function (a) {\n\t\t\tif (a == this.a) return;\n\t\t\tthis.a = a;\n\t\t\tthis.matching_blocks = this.opcodes = null;\n\t\t}\n\t\t\n\t\tthis.set_seq2 = function (b) {\n\t\t\tif (b == this.b) return;\n\t\t\tthis.b = b;\n\t\t\tthis.matching_blocks = this.opcodes = this.fullbcount = null;\n\t\t\tthis.__chain_b();\n\t\t}\n\t\t\n\t\tthis.__chain_b = function () {\n\t\t\tvar b = this.b;\n\t\t\tvar n = b.length;\n\t\t\tvar b2j = this.b2j = {};\n\t\t\tvar populardict = {};\n\t\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\t\tvar elt = b[i];\n\t\t\t\tif (b2j.hasOwnProperty(elt)) {\n\t\t\t\t\tvar indices = b2j[elt];\n\t\t\t\t\tif (n >= 200 && indices.length * 100 > n) {\n\t\t\t\t\t\tpopulardict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindices.push(i);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb2j[elt] = [i];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (var elt in populardict) {\n\t\t\t\tif (populardict.hasOwnProperty(elt)) {\n\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar isjunk = this.isjunk;\n\t\t\tvar junkdict = {};\n\t\t\tif (isjunk) {\n\t\t\t\tfor (var elt in populardict) {\n\t\t\t\t\tif (populardict.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete populardict[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var elt in b2j) {\n\t\t\t\t\tif (b2j.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.isbjunk = difflib.__isindict(junkdict);\n\t\t\tthis.isbpopular = difflib.__isindict(populardict);\n\t\t}\n\t\t\n\t\tthis.find_longest_match = function (alo, ahi, blo, bhi) {\n\t\t\tvar a = this.a;\n\t\t\tvar b = this.b;\n\t\t\tvar b2j = this.b2j;\n\t\t\tvar isbjunk = this.isbjunk;\n\t\t\tvar besti = alo;\n\t\t\tvar bestj = blo;\n\t\t\tvar bestsize = 0;\n\t\t\tvar j = null;\n\t\t\tvar k;\n\t\n\t\t\tvar j2len = {};\n\t\t\tvar nothing = [];\n\t\t\tfor (var i = alo; i < ahi; i++) {\n\t\t\t\tvar newj2len = {};\n\t\t\t\tvar jdict = difflib.__dictget(b2j, a[i], nothing);\n\t\t\t\tfor (var jkey in jdict) {\n\t\t\t\t\tif (jdict.hasOwnProperty(jkey)) {\n\t\t\t\t\t\tj = jdict[jkey];\n\t\t\t\t\t\tif (j < blo) continue;\n\t\t\t\t\t\tif (j >= bhi) break;\n\t\t\t\t\t\tnewj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1;\n\t\t\t\t\t\tif (k > bestsize) {\n\t\t\t\t\t\t\tbesti = i - k + 1;\n\t\t\t\t\t\t\tbestj = j - k + 1;\n\t\t\t\t\t\t\tbestsize = k;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tj2len = newj2len;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi &&\n\t\t\t\t\t!isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\treturn [besti, bestj, bestsize];\n\t\t}\n\t\t\n\t\tthis.get_matching_blocks = function () {\n\t\t\tif (this.matching_blocks != null) return this.matching_blocks;\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\n\t\t\tvar queue = [[0, la, 0, lb]];\n\t\t\tvar matching_blocks = [];\n\t\t\tvar alo, ahi, blo, bhi, qi, i, j, k, x;\n\t\t\twhile (queue.length) {\n\t\t\t\tqi = queue.pop();\n\t\t\t\talo = qi[0];\n\t\t\t\tahi = qi[1];\n\t\t\t\tblo = qi[2];\n\t\t\t\tbhi = qi[3];\n\t\t\t\tx = this.find_longest_match(alo, ahi, blo, bhi);\n\t\t\t\ti = x[0];\n\t\t\t\tj = x[1];\n\t\t\t\tk = x[2];\n\t\n\t\t\t\tif (k) {\n\t\t\t\t\tmatching_blocks.push(x);\n\t\t\t\t\tif (alo < i && blo < j)\n\t\t\t\t\t\tqueue.push([alo, i, blo, j]);\n\t\t\t\t\tif (i+k < ahi && j+k < bhi)\n\t\t\t\t\t\tqueue.push([i + k, ahi, j + k, bhi]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmatching_blocks.sort(difflib.__ntuplecomp);\n\t\n\t\t\tvar i1 = 0, j1 = 0, k1 = 0, block = 0;\n\t\t\tvar i2, j2, k2;\n\t\t\tvar non_adjacent = [];\n\t\t\tfor (var idx in matching_blocks) {\n\t\t\t\tif (matching_blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = matching_blocks[idx];\n\t\t\t\t\ti2 = block[0];\n\t\t\t\t\tj2 = block[1];\n\t\t\t\t\tk2 = block[2];\n\t\t\t\t\tif (i1 + k1 == i2 && j1 + k1 == j2) {\n\t\t\t\t\t\tk1 += k2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\t\t\t\t\ti1 = i2;\n\t\t\t\t\t\tj1 = j2;\n\t\t\t\t\t\tk1 = k2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\n\t\t\tnon_adjacent.push([la, lb, 0]);\n\t\t\tthis.matching_blocks = non_adjacent;\n\t\t\treturn this.matching_blocks;\n\t\t}\n\t\t\n\t\tthis.get_opcodes = function () {\n\t\t\tif (this.opcodes != null) return this.opcodes;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\tvar answer = [];\n\t\t\tthis.opcodes = answer;\n\t\t\tvar block, ai, bj, size, tag;\n\t\t\tvar blocks = this.get_matching_blocks();\n\t\t\tfor (var idx in blocks) {\n\t\t\t\tif (blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = blocks[idx];\n\t\t\t\t\tai = block[0];\n\t\t\t\t\tbj = block[1];\n\t\t\t\t\tsize = block[2];\n\t\t\t\t\ttag = '';\n\t\t\t\t\tif (i < ai && j < bj) {\n\t\t\t\t\t\ttag = 'replace';\n\t\t\t\t\t} else if (i < ai) {\n\t\t\t\t\t\ttag = 'delete';\n\t\t\t\t\t} else if (j < bj) {\n\t\t\t\t\t\ttag = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (tag) answer.push([tag, i, ai, j, bj]);\n\t\t\t\t\ti = ai + size;\n\t\t\t\t\tj = bj + size;\n\t\t\t\t\t\n\t\t\t\t\tif (size) answer.push(['equal', ai, i, bj, j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn answer;\n\t\t}\n\t\t\n\t\t// this is a generator function in the python lib, which of course is not supported in javascript\n\t\t// the reimplementation builds up the grouped opcodes into a list in their entirety and returns that.\n\t\tthis.get_grouped_opcodes = function (n) {\n\t\t\tif (!n) n = 3;\n\t\t\tvar codes = this.get_opcodes();\n\t\t\tif (!codes) codes = [[\"equal\", 0, 1, 0, 1]];\n\t\t\tvar code, tag, i1, i2, j1, j2;\n\t\t\tif (codes[0][0] == 'equal') {\n\t\t\t\tcode = codes[0];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2];\n\t\t\t}\n\t\t\tif (codes[codes.length - 1][0] == 'equal') {\n\t\t\t\tcode = codes[codes.length - 1];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)];\n\t\t\t}\n\t\n\t\t\tvar nn = n + n;\n\t\t\tvar group = [];\n\t\t\tvar groups = [];\n\t\t\tfor (var idx in codes) {\n\t\t\t\tif (codes.hasOwnProperty(idx)) {\n\t\t\t\t\tcode = codes[idx];\n\t\t\t\t\ttag = code[0];\n\t\t\t\t\ti1 = code[1];\n\t\t\t\t\ti2 = code[2];\n\t\t\t\t\tj1 = code[3];\n\t\t\t\t\tj2 = code[4];\n\t\t\t\t\tif (tag == 'equal' && i2 - i1 > nn) {\n\t\t\t\t\t\tgroup.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]);\n\t\t\t\t\t\tgroups.push(group);\n\t\t\t\t\t\tgroup = [];\n\t\t\t\t\t\ti1 = Math.max(i1, i2-n);\n\t\t\t\t\t\tj1 = Math.max(j1, j2-n);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tgroup.push([tag, i1, i2, j1, j2]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group)\n\t\t\t\n\t\t\treturn groups;\n\t\t}\n\t\t\n\t\tthis.ratio = function () {\n\t\t\tmatches = difflib.__reduce(\n\t\t\t\t\t\t\tfunction (sum, triple) { return sum + triple[triple.length - 1]; },\n\t\t\t\t\t\t\tthis.get_matching_blocks(), 0);\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.quick_ratio = function () {\n\t\t\tvar fullbcount, elt;\n\t\t\tif (this.fullbcount == null) {\n\t\t\t\tthis.fullbcount = fullbcount = {};\n\t\t\t\tfor (var i = 0; i < this.b.length; i++) {\n\t\t\t\t\telt = this.b[i];\n\t\t\t\t\tfullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfullbcount = this.fullbcount;\n\t\n\t\t\tvar avail = {};\n\t\t\tvar availhas = difflib.__isindict(avail);\n\t\t\tvar matches = numb = 0;\n\t\t\tfor (var i = 0; i < this.a.length; i++) {\n\t\t\t\telt = this.a[i];\n\t\t\t\tif (availhas(elt)) {\n\t\t\t\t\tnumb = avail[elt];\n\t\t\t\t} else {\n\t\t\t\t\tnumb = difflib.__dictget(fullbcount, elt, 0);\n\t\t\t\t}\n\t\t\t\tavail[elt] = numb - 1;\n\t\t\t\tif (numb > 0) matches++;\n\t\t\t}\n\t\t\t\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.real_quick_ratio = function () {\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\t\treturn _calculate_ratio(Math.min(la, lb), la + lb);\n\t\t}\n\t\t\n\t\tthis.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction;\n\t\tthis.a = this.b = null;\n\t\tthis.set_seqs(a, b);\n\t}\n};\n\n\ndefine(\"difflib\", function(){});\n\n","/*\nThis is part of jsdifflib v1.0. <http://github.com/cemerick/jsdifflib>\n\nCopyright 2007 - 2011 Chas Emerick <cemerick@snowtide.com>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are\npermitted provided that the following conditions are met:\n\n   1. Redistributions of source code must retain the above copyright notice, this list of\n      conditions and the following disclaimer.\n\n   2. Redistributions in binary form must reproduce the above copyright notice, this list\n      of conditions and the following disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED\nWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThe views and conclusions contained in the software and documentation are those of the\nauthors and should not be interpreted as representing official policies, either expressed\nor implied, of Chas Emerick.\n*/\ndiffview = {\n\t/**\n\t * Builds and returns a visual diff view.  The single parameter, `params', should contain\n\t * the following values:\n\t *\n\t * - baseTextLines: the array of strings that was used as the base text input to SequenceMatcher\n\t * - newTextLines: the array of strings that was used as the new text input to SequenceMatcher\n\t * - opcodes: the array of arrays returned by SequenceMatcher.get_opcodes()\n\t * - baseTextName: the title to be displayed above the base text listing in the diff view; defaults\n\t *\t   to \"Base Text\"\n\t * - newTextName: the title to be displayed above the new text listing in the diff view; defaults\n\t *\t   to \"New Text\"\n\t * - contextSize: the number of lines of context to show around differences; by default, all lines\n\t *\t   are shown\n\t * - viewType: if 0, a side-by-side diff view is generated (default); if 1, an inline diff view is\n\t *\t   generated\n\t */\n\tbuildView: function (params) {\n\t\tvar baseTextLines = params.baseTextLines;\n\t\tvar newTextLines = params.newTextLines;\n\t\tvar opcodes = params.opcodes;\n\t\tvar baseTextName = params.baseTextName ? params.baseTextName : \"Base Text\";\n\t\tvar newTextName = params.newTextName ? params.newTextName : \"New Text\";\n\t\tvar contextSize = params.contextSize;\n\t\tvar inline = (params.viewType == 0 || params.viewType == 1) ? params.viewType : 0;\n\n\t\tif (baseTextLines == null)\n\t\t\tthrow \"Cannot build diff view; baseTextLines is not defined.\";\n\t\tif (newTextLines == null)\n\t\t\tthrow \"Cannot build diff view; newTextLines is not defined.\";\n\t\tif (!opcodes)\n\t\t\tthrow \"Canno build diff view; opcodes is not defined.\";\n\t\t\n\t\tfunction celt (name, clazz) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction telt (name, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction ctelt (name, clazz, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\n\t\tvar tdata = document.createElement(\"thead\");\n\t\tvar node = document.createElement(\"tr\");\n\t\ttdata.appendChild(node);\n\t\tif (inline) {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName + \" vs. \" + newTextName));\n\t\t} else {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", newTextName));\n\t\t}\n\t\ttdata = [tdata];\n\t\t\n\t\tvar rows = [];\n\t\tvar node2;\n\t\t\n\t\t/**\n\t\t * Adds two cells to the given row; if the given row corresponds to a real\n\t\t * line number (based on the line index tidx and the endpoint of the \n\t\t * range in question tend), then the cells will contain the line number\n\t\t * and the line of text from textLines at position tidx (with the class of\n\t\t * the second cell set to the name of the change represented), and tidx + 1 will\n\t\t * be returned.\t Otherwise, tidx is returned, and two empty cells are added\n\t\t * to the given row.\n\t\t */\n\t\tfunction addCells (row, tidx, tend, textLines, change) {\n\t\t\tif (tidx < tend) {\n\t\t\t\trow.appendChild(telt(\"th\", (tidx + 1).toString()));\n\t\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t\t\treturn tidx + 1;\n\t\t\t} else {\n\t\t\t\trow.appendChild(document.createElement(\"th\"));\n\t\t\t\trow.appendChild(celt(\"td\", \"empty\"));\n\t\t\t\treturn tidx;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction addCellsInline (row, tidx, tidx2, textLines, change) {\n\t\t\trow.appendChild(telt(\"th\", tidx == null ? \"\" : (tidx + 1).toString()));\n\t\t\trow.appendChild(telt(\"th\", tidx2 == null ? \"\" : (tidx2 + 1).toString()));\n\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx != null ? tidx : tidx2].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t}\n\t\t\n\t\tfor (var idx = 0; idx < opcodes.length; idx++) {\n\t\t\tcode = opcodes[idx];\n\t\t\tchange = code[0];\n\t\t\tvar b = code[1];\n\t\t\tvar be = code[2];\n\t\t\tvar n = code[3];\n\t\t\tvar ne = code[4];\n\t\t\tvar rowcnt = Math.max(be - b, ne - n);\n\t\t\tvar toprows = [];\n\t\t\tvar botrows = [];\n\t\t\tfor (var i = 0; i < rowcnt; i++) {\n\t\t\t\t// jump ahead if we've alredy provided leading context or if this is the first range\n\t\t\t\tif (contextSize && opcodes.length > 1 && ((idx > 0 && i == contextSize) || (idx == 0 && i == 0)) && change==\"equal\") {\n\t\t\t\t\tvar jump = rowcnt - ((idx == 0 ? 1 : 2) * contextSize);\n\t\t\t\t\tif (jump > 1) {\n\t\t\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\tb += jump;\n\t\t\t\t\t\tn += jump;\n\t\t\t\t\t\ti += jump - 1;\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tif (!inline) node.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tnode.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skip last lines if they're all equal\n\t\t\t\t\t\tif (idx + 1 == opcodes.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\tif (inline) {\n\t\t\t\t\tif (change == \"insert\") {\n\t\t\t\t\t\taddCellsInline(node, null, n++, newTextLines, change);\n\t\t\t\t\t} else if (change == \"replace\") {\n\t\t\t\t\t\tbotrows.push(node2 = document.createElement(\"tr\"));\n\t\t\t\t\t\tif (b < be) addCellsInline(node, b++, null, baseTextLines, \"delete\");\n\t\t\t\t\t\tif (n < ne) addCellsInline(node2, null, n++, newTextLines, \"insert\");\n\t\t\t\t\t} else if (change == \"delete\") {\n\t\t\t\t\t\taddCellsInline(node, b++, null, baseTextLines, change);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// equal\n\t\t\t\t\t\taddCellsInline(node, b++, n++, baseTextLines, change);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb = addCells(node, b, be, baseTextLines, change);\n\t\t\t\t\tn = addCells(node, n, ne, newTextLines, change);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < toprows.length; i++) rows.push(toprows[i]);\n\t\t\tfor (var i = 0; i < botrows.length; i++) rows.push(botrows[i]);\n\t\t}\n\t\t\n\t\trows.push(node = ctelt(\"th\", \"author\", \"diff view generated by \"));\n\t\tnode.setAttribute(\"colspan\", inline ? 3 : 4);\n\t\tnode.appendChild(node2 = telt(\"a\", \"jsdifflib\"));\n\t\tnode2.setAttribute(\"href\", \"http://github.com/cemerick/jsdifflib\");\n\t\t\n\t\ttdata.push(node = document.createElement(\"tbody\"));\n\t\tfor (var idx in rows) rows.hasOwnProperty(idx) && node.appendChild(rows[idx]);\n\t\t\n\t\tnode = celt(\"table\", \"diff\" + (inline ? \" inlinediff\" : \"\"));\n\t\tfor (var idx in tdata) tdata.hasOwnProperty(idx) && node.appendChild(tdata[idx]);\n\t\treturn node;\n\t}\n};\n\n\ndefine(\"diffview\", function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * View diffs between versions\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('diff',[ \"jquery\", \"difflib\", \"diffview\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'diff';\n\n  /** @lends $.fn.diff */\n  var methods = {\n    /**\n     * Render diff between two strings in the target element (must\n     * be a `<div>`).\n     *\n     * @param {Object} [options]\n     * @param {String} [base] Old version\n     * @param {String} [head] New version\n     * @param {String} [baseName=\"Base text\"] Name for old version\n     * @param {String} [headName=\"Current text\"] Name for current version\n     * @param {Number} [context=3] Number of context lines\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar base        = difflib.stringAsLines(options.base);\n\tvar newtxt      = difflib.stringAsLines(options.head);\n\tvar sm          = new difflib.SequenceMatcher(base, newtxt);\n\tvar opcodes     = sm.get_opcodes();\n\tvar contextSize = options.contextSize == undefined\n\t\t\t\t? 3 : options.contextSize;\n\n\tthis.appendChild(diffview.buildView(\n\t  { baseTextLines: base,\n\t    newTextLines: newtxt,\n\t    opcodes: opcodes,\n\t    baseTextName: options.baseName || \"Base text\",\n\t    newTextName:  options.headName || \"Current text\",\n\t    contextSize: contextSize,\n\t    viewType: $(\"inline\").checked ? 1 : 0\n\t  }));\n      });\n    }\n  }; // methods\n\n  /**\n   * This class is a jQuery wrapper around\n   *\n   * @class diff\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.diff = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2018, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Defines the interaction with the `File` menu and gitty storage\n * module of the server.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('storage',[ \"jquery\", \"config\", \"modal\", \"form\", \"gitty\",\n\t \"history\", \"tabbed\", \"utils\",\n\t \"laconic\", \"diff\"\n       ],\n       function($, config, modal, form, gitty, history, tabbed, utils) {\n\n(function($) {\n  var pluginName = 'storage';\n\n  var defaults = {\n    typeName: \"program\",\n    is_clean: true,\n    markClean: function(clean) {}\n  }\n\n  /** @lends $.fn.storage */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Function} options.setValue sets the new document value\n     * @param {Function} options.getValue gets the current document value\n     * @param {Function} options.changeGen identifies the current state\n     * @param {String}   options.cleanData identifies the clean state\n     * @param {String}\t options.cleanCheckpoint is the action that\n     * caused the clean state\n     * @param {Any}\t options.cleanGeneration identifies the clean\n     * state.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, defaults, options);\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.addClass(\"storage unloadable\");\n\telem.storage('update_tab_title');\n\n\t/**\n\t * Execute a method on the storage plugin. This particularly\n\t * avoids handling events that have bubbled up from children\n\t * that have a storage plugin attached, which may happen in\n\t * notebooks.\n\t */\n\tfunction onStorage(ev, method) {\n\t  var target = $(ev.target);\n\n\t  if ( target.hasClass(\"storage\") && target.is(\":visible\") ) {\n\t    var rc = target.storage.apply(\n\t\t       target,\n\t\t       Array.prototype.slice.call(arguments, 1));\n\t    if ( rc == \"propagate\" )\n\t      return;\n\t  }\n\t  ev.stopPropagation();\n\t}\n\n\telem.on(\"save\", function(ev, data) {\n\t  onStorage(ev, 'save', data);\n\t});\n\telem.on(\"download\", function(ev) {\n\t  onStorage(ev, 'download');\n\t});\n\telem.on(\"fileInfo\", function(ev) {\n\t  onStorage(ev, 'info');\n\t});\n\telem.on(\"diff\", function(ev) {\n\t  onStorage(ev, 'diff');\n\t});\n\telem.on(\"revert\", function(ev) {\n\t  onStorage(ev, 'revert');\n\t});\n\telem.on(\"reload\", function(ev) {\n\t  onStorage(ev, 'reload');\n\t});\n\telem.on(\"chat-about-file\", function(ev) {\n\t  onStorage(ev, 'chat');\n\t});\n\telem.on(\"follow-file\", function(ev) {\n\t  onStorage(ev, 'follow');\n\t});\n\telem.on(\"activate-tab\", function(ev) {\n\t\t\t\t\t\t/* TBD: What exactly? */\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  elem.storage('markClean', clean);\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  if ( !val )\n\t    elem.storage('update_tab_title');\n\t});\n\telem.on(\"unload\", function(ev, rc) {\n\t  rc.rc = elem.storage('unload', \"beforeunload\", ev);\n\t});\n\n\telem.storage('chat', (data.meta||{}).chat||'update');\n      });\n    },\n\n    /**\n     * @returns {Boolean} `true` if the storage can represent the\n     * requested type\n     */\n    supportsType: function(src) {\n      var data = this.data(pluginName);\n      var type = tabbed.tabTypes[data.typeName];\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( (src.meta && src.meta.name) || src.url )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\n\tif ( tabbed.type(name)[\"typeName\"] != type.typeName )\n\t  return false;\n      }\n\n      return true;\n    },\n\n    /**\n     * @param {String|Object} src becomes the new contents of the editor\n     * @param {String} src.data contains the data in the case that\n     * `src` is an object.\n     * @return {Object|String} The string `\"propagate\"` is\n     * returned if the provided src does not match the supported type.\n     */\n    setSource: function(src) {\n      var data = this.data(pluginName);\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( !this.storage('supportsType', src) )\n\treturn undefined;\n\n      if ( this.storage('unload', \"setSource\") == false )\n\treturn false;\n\n      if ( src.meta ) {\n\tdata.file = src.meta.name;\n\tdata.meta = src.meta;\n\tdata.url  = null;\n\tif ( src.meta.symbolic == \"HEAD\" )\n\t  src.url = config.http.locations.web_storage + src.meta.name;\n      } else {\n\tdata.file = null;\n\tdata.meta = null;\n      }\n      data.url     = src.url;\n      data.st_type = src.st_type;\n      data.chats   = src.chats;\n\n      data.setValue(src);\n      data.cleanGeneration = data.changeGen();\n      data.cleanData       = data.getValue();\n      data.cleanCheckpoint = src.cleanCheckpoint || \"load\";\n      data.markClean(true);\n\n      this.storage('update_tab_title');\n\n      if ( !src.url       ) src.url = config.http.locations.swish;\n      if ( !src.noHistory ) history.push({ url: src.url,\n\t\t\t\t\t   reason: 'load'\n\t\t\t\t\t });\n\n      this.storage('chat', src.chat||(src.meta||{}).chat||'update');\n      $(\".storage\").storage('chat_status', true);\n\n      return this;\n    },\n\n    is_clean: function() {\n      var data = this.data(pluginName);\n      return data.isClean(data.cleanGeneration);\n    },\n\n    /**\n     * Set the value, but do not update the clean generation, meta-\n     * data, etc.  This is used for restoring a modified state.\n     * See tabbed.setState().\n     */\n    setValue: function(value) {\n      var data = this.data(pluginName);\n\n      data.setValue(value);\n      this.trigger(\"data-is-clean\", data.isClean(data.cleanGeneration));\n\n      return this;\n    },\n\n    /**\n     * Update the label and icon shown in the tab\n     */\n    update_tab_title: function(action) {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar docid = elem.storage('docid');\n\n\tif ( action == 'chats++' ) {\n\t  elem.tabbed('chats++', docid);\n\t} else {\n\t  var data = elem.data(pluginName);\n\t  var file = data.file||data.url;\n\t  var type;\n\n\t  if ( !file || !(type = tabbed.type(file)) )\n\t    type = tabbed.tabTypes[data.typeName];\n\n\t  var title = (filebase(utils.basename(file)) ||\n\t\t       type.label);\n\n\t  if ( docid && data.chats )\n\t    data.chats.docid = docid;\n\n\t  elem.tabbed('title', title, type.dataType);\n\t  elem.tabbed('chats', data.chats);\n\t}\n      });\n    },\n\n    /**\n     * Load document from the server.\n     */\n    load: function(file) {\n      if ( file ) {\n\tvar that = this;\n\tvar options = this.data(pluginName);\n\n\t$.ajax({ url: config.http.locations.web_storage + file,\n\t\t dataType: \"text\",\n\t\t success: function(data) {\n\t\t   that.storage('setSource',\n\t\t\t\t{ data: data,\n\t\t\t\t  meta: { name:file\n\t\t\t\t        }\n\t\t\t\t});\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      }\n      return this;\n    },\n\n    /**\n     * Revert to upstream version\n     */\n    revert: function() {\n      var data = this.data(pluginName);\n\n      data.setValue(data.cleanData);\n      data.cleanGeneration = data.changeGen();\n      data.markClean(true);\n      return this;\n    },\n\n    /**\n     * Reload from server.\n     * @param {String} file Name of the file to reload.  Default is to\n     * reload the current `data.file`.\n     */\n    reload: function(file) {\n      var elem = this;\n      var data = elem.data(pluginName);\n          file = file||data.file;\n      var url  = config.http.locations.web_storage +\n\t\t encodeURI(file);\n\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: { format: \"json\" },\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\t\t reply.noHistory = true;\n\t\t elem.storage('setSource', reply);\n\t\t $(\"#chat\").trigger('send',\n\t\t\t\t    { type:'reloaded',\n\t\t\t\t      file:file,\n\t\t\t\t      commit:reply.meta.commit\n\t\t\t\t    });\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Save the current document to the server.  Depending on the\n     * arguments, this function implements several forms of saving:\n     *\n     *   - Without arguments arguments, it implements \"Save\".\n     *   - With (\"as\"), it implements \"Save as\", which opens a\n     *     dialog which calls this method again, but now with\n     *     meta-data in the first argument.\n     *   - With ({...}) it performs the save operation of \"Save as\"\n     *   - With ({...}, \"only-meta-data\") it only updates the meta\n     *     data on the server.\n     *\n     * @param {Object} [meta] provides additional meta-information.\n     * Currently defined fields are `author`, `email`,\n     * `title`, `keywords` and `description`. Illegal fields are ignored\n     * by the server.\n     * @param {String} [what] If `\"only-meta-data\"`, only the meta-data\n     * is updated.\n     */\n    save: function(meta, what) {\n      var data   = this.data(pluginName);\n      var type   = tabbed.tabTypes[data.typeName];\n      var url    = config.http.locations.web_storage;\n      var method = \"POST\";\n      var elem   = this;\n      var post;\n\n      if ( (data.st_type == \"filesys\" || data.st_type == \"external\") && data.url )\n\treturn this.storage('saveURL');\n\n      if ( meta == \"as\" ) {\n\tthis.storage('saveAs');\n\treturn this;\n      }\n\n      if ( data.file &&\n\t   ( what == \"only-meta-data\" ||\n\t     ( !(meta && meta.default) &&\n\t       (!meta || meta.name == data.file)\n\t     )\n\t   ) ) {\n\turl += encodeURI(data.file);\n\tmethod = \"PUT\";\n      }\n\n      if ( what == \"only-meta-data\" ) {\n\tif ( $.isEmptyObject(gitty.reduceMeta(meta, data.meta)) ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n\tpost = { update: \"meta-data\" };\n      } else if ( method == \"POST\" ) {\n\tpost = { data: data.getValue(),\n\t\t type: type.dataType\n\t       };\n      } else {\n\tif ( !data.isClean(data.cleanGeneration) ) {\n\t  post = { data: data.getValue(),\n\t\t   type: type.dataType\n\t\t };\n\t} else if ( gitty.diffTags(data.meta.tags, meta.tags) == null ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n      }\n\n      if ( meta )\n\tpost.meta = meta;\n      if ( data.meta )\n\tpost.previous = data.meta.commit;\n\n      $.ajax({ url: url,\n               dataType: \"json\",\n\t       contentType: \"application/json\",\n\t       type: method,\n\t       data: JSON.stringify(post),\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   if ( data.meta &&\n\t\t\tdata.meta.example != reply.meta.example ) {\n\t\t     elem.closest(\".swish\").trigger('examples-changed');\n\t\t   }\n\t\t   data.file = reply.file;\n\t\t   data.meta = reply.meta;\n\t\t   data.st_type = \"gitty\";\n\t\t   data.cleanGeneration = data.changeGen();\n\t\t   data.cleanData       = data.getValue();\n\t\t   data.cleanCheckpoint = \"save\";\n\t\t   data.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\n\t\t   if ( method == \"POST\" )\n\t\t     data.chats = {\t\t/* forked file has no chats */\n\t\t       docid: elem.storage('docid'),\n\t\t       total: 0\n\t\t     };\n\t\t   elem.storage('update_tab_title');\n\t\t   elem.storage('chat', (data.meta||{}).chat||'update');\n\t\t   $(\".storage\").storage('chat_status', true);\n\t\t   history.push({url: reply.url, reason: \"save\"});\n\t\t }\n\t       },\n\t       error: function(jqXHR, textStatus, errorThrown) {\n\t\t if ( jqXHR.status == 409 ) {\n\t\t   elem.storage('resolveEditConflict',\n\t\t\t\tJSON.parse(jqXHR.responseText));\n\t\t } else if ( jqXHR.status == 403 ) {\n\t\t   modal.alert(\"Permission denied.  Please try a different name\");\n\t\t } else {\n\t\t   alert('Save failed; click \"ok\" to try again');\n\t\t   elem.storage('saveAs');\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Provide a Save As dialog\n     */\n    saveAs: function(options) {\n      var data = this.data(pluginName);\n      var meta    = data.meta||{};\n      var editor  = this;\n      var update  = Boolean(data.file);\n      var fork    = data.meta && meta.symbolic != \"HEAD\" && !meta.default;\n      var type    = tabbed.tabTypes[data.typeName];\n      var profile = $(\"#login\").login('get_profile',\n\t\t\t\t      [ \"display_name\", \"avatar\", \"email\",\n\t\t\t\t\t\"identity\"\n\t\t\t\t      ]);\n      var author  = profile.display_name;\n      var modify  = meta.modify;\n      var canmodify;\n\n      if ( meta.public === undefined )\n\tmeta.public = true;\n\n      if ( profile.identity ) {\n\tif ( !modify )\n\t  modify = [\"login\", \"owner\"];\n      } else\n      { modify = [\"any\", \"login\", \"owner\"];\n      }\n\n      canmodify = ( profile.identity == meta.identity ||\n\t\t    (profile.identity && !(meta.identity||meta.user)) );\n\n      options = options||{};\n\n      function saveAsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"},\n\t    form.fields.hidden(\"identity\", profile.identity),\n\t    form.fields.hidden(\"default\", meta.default),\n\t    form.fields.hidden(\"chat\", meta.chat),\n\t    profile.identity ? undefined :\n\t\t\t       form.fields.hidden(\"avatar\", profile.avatar),\n\t    form.fields.fileName(fork ? null: data.file,\n\t\t\t\t meta.public, meta.example),\n\t    form.fields.title(meta.title),\n\t    form.fields.author(author, profile.identity),\n\t    update ? form.fields.commit_message() : undefined,\n\t    form.fields.tags(meta.tags),\n\t    form.fields.modify(modify, canmodify),\n\t    form.fields.follow(profile.email),\n\t    form.fields.buttons(\n\t      { label: fork   ? \"Fork \"+type.label :\n\t\t       update ? \"Update \"+type.label :\n\t\t\t\t\"Save \"+type.label,\n\t\taction: function(ev, as) {\n\t\t\t  editor.storage('save', as);\n\t\t\t  return false;\n\t\t\t}\n\t      })));\n      }\n\n      form.showDialog({ title: options.title ? options.title :\n\t\t\t       fork   ? \"Fork from \"+meta.commit.substring(0,7) :\n\t\t\t       update ? \"Save new version\" :\n\t\t\t                \"Save \"+type.label+\" as\",\n\t\t\tbody:  saveAsBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Save data to the URL it was loaded from.\n     * FIXME: feedback, allow recompilation (if Prolog source)\n     */\n    saveURL: function() {\n      var options = this.data(pluginName);\n      var data = options.getValue();\n      var type = tabbed.type(options.url)||{};\n      var elem = this;\n\n      if ( options.isClean(options.cleanGeneration) ) {\n\talert(\"No change\");\n\treturn this;\n      }\n\n      $.ajax({ url: options.url,\n               dataType: \"json\",\n\t       contentType: type.contentType||\"text/plain\",\n\t       type: \"PUT\",\n\t       data: data,\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   options.cleanGeneration = options.changeGen();\n\t\t   options.cleanData       = options.getValue();\n\t\t   options.cleanCheckpoint = \"save\";\n\t\t   options.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t if ( jqXHR.status == 403 ) {\n\t\t   var url = options.url;\n\t\t   delete(options.meta);\n\t\t   delete(options.st_type);\n\t\t   delete(options.url);\n\t\t   elem.storage('saveAs', {\n\t\t     title: \"<div class='warning'>Could not save to \"+url+\n\t\t\t    \"</div> Save a copy as\"\n\t\t   });\n\t\t } else\n\t\t { modal.ajaxError(jqXHR);\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Storage was activated (e.g., a tab switch)\n     */\n    activate: function() {\n      var data = this.data(pluginName);\n\n      if ( data && data.url ) {\n\thistory.push({url: data.url, reason: 'activate'});\n      }\n\n      return this\n    },\n\n    /**\n     * @return {Object} state of a set of storage objects, typically\n     * called from a tabbed environment to save the state of all tabs.\n     */\n    getState: function(always) {\n      var state = {\n        tabs: []\n      };\n\n      this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar meta = elem.meta || {};\n\tvar h;\n\n\t\t\t\t\t/* avoid incomplete elements */\n\tif ( (data.file || data.url) && data.isClean && data.cleanGeneration ) {\n\t  if ( !meta.name && data.file )\n\t    meta.name = data.file;\n\n\t  var tab = {\n\t    file:    meta.name,\n\t    st_type: data.st_type,\n\t    url:     data.url\n\t  };\n\t  if ( elem[pluginName]('getActive') )\n\t    tab.active = true;\n\t  if ( (h=elem[pluginName]('chatroom_size')) )\n\t    tab.chatroom = h;\n\n\t  state.tabs.push(tab);\n\n\t  if ( always ||\n\t       !data.isClean(data.cleanGeneration) ) {\n\t    tab.meta = meta;\n\t    tab.data = data.getValue();\n\t  }\n\t}\n      });\n\n      return state;\n    },\n\n    /**\n     * Restore a storage object from local (when modified) or remote\n     * version.\n     *\n     * @param {String} name is the name of the document to retrieve.\n     */\n    restoreLocal: function(name) {\n      var str = localStorage.getItem(\"$file$\"+name);\n      var data;\n\n      try {\n\tdata = JSON.parse(str);\n\tif ( typeof(data) != \"object\" )\n\t  data = undefined;\n      } catch(err) {\n\tdata = undefined;\n      }\n\n      if ( data ) {\n\tthis[pluginName]('setSource', data);\n      } else {\n\tthis[pluginName]('reload', name);\n      }\n    },\n\n\t\t /*******************************\n\t\t *\t    EDIT CONFLICTS\t*\n\t\t *******************************/\n\n    resolveEditConflict: function(options) {\n      var bdiv;\n\n      options.storage = this;\n\n      function body() {\n\tvar elem = $(this);\n\n\telem.addClass(\"edit-conflict\");\n\n\tfunction tabLabel(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\ttabs = $($.el.div({class:\"tab-content\"}));\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tabLabel(\"My edits\",    true,  \"merge-my-edits\"),\n\t  tabLabel(\"Their edits\", false, \"merge-server-edits\"),\n\t  tabLabel(\"Conflicts\",   false, \"merge-conflicts\")));\n\telem.append(tabs);\n\n\tfunction tabContent(id, cls) {\n\t  tabs.append($.el.div({class:\"tab-pane fade \"+id+\" \"+cls, id:id}));\n\t  elem.find('[href=\"#'+id+'\"]').on(\"show.bs.tab\", function(ev) {\n\t    elem.storage(id);\n\t  });\n\t}\n\n\ttabContent(\"merge-my-edits\",    \"in active\");\n\ttabContent(\"merge-server-edits\", \"\");\n\ttabContent(\"merge-conflicts\",   \"\");\n\n\telem.data(\"edit-conflict\", options);\n\n\telem.storage('merge-my-edits');\n\n\telem.append(bdiv =\n\t  $.el.div({class:\"form-group\"},\n\t\t   $.el.button({name:\"merge\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Merge\"),\n\t\t   $.el.button({name:\"discard-my-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard my changes\"),\n\t\t   $.el.button({name:\"discard-server-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard changes on server\"),\n\t\t   $.el.button({name:\"cancel\",\n\t\t\t\tclass:\"btn btn-danger\",\n\t\t\t\t'data-dismiss':\"modal\"},\n\t\t\t       \"Cancel\")));\n\n\n\t$(bdiv).on(\"click\", \"button\", function(ev) {\n\t  elem.storage('editConflictAction', $(ev.target).attr(\"name\"));\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n      }\n\n      form.showDialog({ title: \"Edit conflict\",\n\t\t\tbody: body\n\t\t      });\n\n      return this;\n    },\n\n    'merge-my-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-my-edits\")\n        .empty()\n        .append(udiff(data.edit.me.data));\n    },\n\n    'merge-server-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-server-edits\")\n        .empty()\n        .append(udiff(data.edit.server.data));\n    },\n\n    'merge-conflicts': function() {\n      var data = $(this).data(\"edit-conflict\");\n      var tab  = $(this).find(\".merge-conflicts\");\n\n      tab.empty();\n      if ( data.patch_status != 0 ) {\n\ttab.append(editConflicts(data.merged));\n      } else {\n\ttab.html(\"No merge conflicts\");\n      }\n    },\n\n    editConflictAction: function(action) {\n      var options = $(this).data(\"edit-conflict\");\n      var data = $(options.storage).data(pluginName);\n\n      if ( action == \"merge\" ) {\n\tdata.setValue(options.merged);\n\tdata.meta.commit = options.edit.server.to.commit;\n      } else if ( action == \"discard-my-edits\" ) {\n\t$(options.storage).storage('reload');\n      } else if ( action == \"discard-server-edits\" ) {\n\tvar data = $(options.storage).data(pluginName);\n\tdata.meta.commit = options.edit.server.to.commit;\n      }\n    },\n\n\n\t\t /*******************************\n\t\t *\t   DOWNLOADING\t\t*\n\t\t *******************************/\n\n    download: function() {\n      var options = this.data(pluginName);\n      var type    = tabbed.tabTypes[options.typeName];\n      var data    = options.getValue();\n      var href    = \"data:text/plain;charset=UTF-8,\"\n\t          + encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:options.file||(\"swish.\"+type.dataType)\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {String|Boolean} [options.data=false] if `true`, always\n     * include the content of the storage.  If `\"if_modified\"`, only\n     * include the content if it is modified.\n     * @param {String} [options.type] if provided, only return objects\n     * associated with files with the given extension.\n     * @return {Array.Object}\n     */\n    getData: function(options) {\n      var result = [];\n\n      options = options||{};\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar obj = {};\n\n\tobj.type = data.st_type;\n\tif ( data.url ) obj.url = data.url;\n\tif ( data.meta ) {\n\t  function copyMeta(name) {\n\t    if ( data.meta[name] )\n\t      obj[name] = data.meta[name];\n\t  }\n\n\t  copyMeta(\"name\");\n\t  copyMeta(\"path\");\n\t  copyMeta(\"modified\");\n\t  copyMeta(\"loaded\");\n\t  copyMeta(\"modified_since_loaded\");\n\t  copyMeta(\"module\");\n\t}\n\n\tif ( $(this)[pluginName]('getActive') )\n\t  obj.active = true;\n\n\tif ( !options.type ||\n\t     ( options.name &&\n\t       options.name.split(\".\").pop() == options.type ) ) {\n\t  if ( options.data ) {\n\t    var value = data.getValue();\n\n\t    obj.modified = (value != data.cleanData);\n\t    if ( options.data == true ||\n\t\t (obj.modified && options.data == \"if_modified\") )\n\t      obj.data = value;\n\t  }\n\n\t  result.push(obj);\n        }\n      });\n\n      return result;\n    },\n\n    /**\n     * @return {jQuery|undefined} the jQuery storage element that\n     * matches `to`\n     */\n    match: function(to) {\n      for(var k=0; k<this.length; k++) {\n\tme = $(this[k]);\n\tvar data = me.data(pluginName);\n\n\tif ( to.file && to.file == data.file )\n\t  return me;\n\tif ( to.url && to.url == data.url )\n\t  return me;\n      }\n    },\n\n    /**\n     * Expose associateted tab\n     * @return {jQuery|undefined} storage plugin if tab could be\n     * exposed.\n     */\n    expose: function(reason) {\n      var tab = this.closest(\".tab-pane\");\n      if ( tab.length == 1 ) {\n\tvar tabbed = tab.closest(\".tabbed\");\n\ttabbed.tabbed('show', tab.attr('id'));\n\tif ( reason )\n\t  modal.feedback({ html: reason,\n\t                   owner: this\n\t                 });\n\n\treturn this;\n      }\n    },\n\n    /**\n     * Provide information about the current source in a modal\n     * dialog.\n     */\n    info: function() {\n      var data = this.data(pluginName);\n      var meta = data.meta||{};\n      var editor = this;\n      var title;\n\n      if ( data.st_type == \"gitty\" ) {\n\ttitle = $().gitty('title', meta);\n      } else if ( data.st_type == \"filesys\" ) {\n\ttitle = \"File system -- \" + utils.basename(meta.path);\n      } else if ( data.st_type == \"external\" ) {\n\ttitle = \"External -- \" + data.url;\n      } else {\n\ttitle = \"Scratch source\";\n      }\n\n      function infoBody() {\n\tif ( data.st_type == \"gitty\" ) {\n\t  data.editor = editor;\t\t/* circular reference */\n\t  this.gitty(data);\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  filesysInfo(this, meta);\n\t} else if ( !data.st_type ) {\n\t  this.append($.el.p(\"The source is not associated with a file. \",\n\t\t\t     \"Use \",\n\t\t\t     $.el.b(\"Save ...\"),\n\t\t\t     \" to save the source with meta information.\"\n\t\t\t    ));\n\t}\n      }\n\n      form.showDialog({ title: title,\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Generate diff relative to last checkpoint.\n     */\n    diff: function() {\n      var data = this.data(pluginName);\n      var baseName = { load: \"Loaded text\",\n\t\t       new: \"New text\",\n\t\t       save: \"Saved text\"\n\t\t     };\n\n      function infoBody() {\n\tvar diff = $.el.div();\n\tvar current = data.getValue();\n\n\tthis.append(diff);\n\n\tif ( current == data.cleanData ) {\n\t  $(diff).append($.el.p(\"No changes\"));\n\t} else {\n\t  var rb;\n\t  var buttons = $.el.div({ class:\"btn-group diff\",\n\t\t\t           role:\"group\"\n\t\t\t\t },\n\t\t\t\t $.el.button({ name:\"close\",\n\t\t\t\t\t       'data-dismiss':\"modal\",\n\t\t\t\t               class:\"btn btn-primary\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Close\"),\n\t\t\t\t rb=\n\t\t\t\t $.el.button({ name:\"revert\",\n\t\t\t\t               class:\"btn btn-danger\",\n\t\t\t\t\t       'data-dismiss':\"modal\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Revert changes\"));\n\t  $(diff).diff({ base: data.cleanData,\n\t\t\t head: current,\n\t\t\t baseName: baseName[data.cleanCheckpoint]\n\t\t       });\n\t  this.append($.el.div({class: \"wrapper text-center\"}, buttons));\n\t  $(rb).on(\"click\", function(ev) {\n\t    $(\".swish-event-receiver\").trigger(\"revert\");\n\t  });\n\t  this.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t}\n      }\n\n      form.showDialog({ title: \"Changes since \" + baseName[data.cleanCheckpoint],\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Get a description of the selection to be transferred with a\n     * chat message.\n     */\n    getSelection: function() {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\tvar sel = this.prologEditor('getSelection');\n\treturn sel ? sel[0].selections : null;\n      } else if ( this.hasClass(\"notebook\") ) {\n\treturn this.notebook('getSelection');\n      } else {\n\tconsole.log(\"Don't know how to get selection from\", this);\n      }\n    },\n\n    /**\n     * @returns {String} description of the selection to use inside\n     * a link or button\n     */\n    getSelectionLabel: function(sel) {\n      function editorLabel(sels) {\n\tvar label = \"\";\n\tfor(var i=0; i<sels.length; i++) {\n\t  var s = sels[i];\n\t  if ( label != \"\" )\n\t    label += \";\";\n\t  label += \"@L\"+(s.from.line+1);\n\t  if ( s.to.line != s.from.line )\n\t    label += \"-\"+(s.to.line+1);\n\t}\n\treturn label;\n      }\n\n      if ( sel[0].selections ) {\n\tvar label = \"\";\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var ed = sel[i];\n\t  if ( label != \"\" )\n\t    label += \",\";\n\t  label += (ed.cell||\"\") + editorLabel(ed.selections);\n\t}\n\treturn label;\n      } else {\n\treturn editorLabel(sel);\n      }\n    },\n\n    /**\n     * Restore a selection retrieved using `getSelection`.\n     */\n    restoreSelection: function(sel) {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\treturn this.prologEditor('restoreSelection', sel);\n      } else if ( this.hasClass(\"notebook\") ) { /* notebook */\n\treturn this.notebook('restoreSelection', sel);\n      } else {\n\tconsole.log(sel);\n      }\n    },\n\n    /**\n     * @return {Boolean} `true` if storage is in an active tab\n     */\n    getActive: function() {\n      return $(this).closest(\".tab-pane.active\").length == 1;\n    },\n\n    /**\n     * Get a document identification string for chats, status, etc.\n     * @param {String} [type] defines the type of storage supported\n     * @param {Object} [data] is the data object from which to derive\n     * the id.\n     * @return {String} identifier for the document\n     */\n    docid: function(type, data) {\n      data = data||this.data(pluginName);\n\n      if ( !type || type == data.st_type ) {\n\tvar meta = data.meta||{};\n\n\tif ( data.st_type == \"gitty\" ) {\n\t  return \"gitty:\"+meta.name;\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  return \"filesys:\"+meta.path;\n\t} else if ( data.st_type == \"external\" ) {\n\t  return \"url:\"+data.url;\n\t}\n      }\n    },\n\n    /**\n     * Open the chat window for the current file\n     */\n    chat: function(action) {\n      var data = this.data(pluginName);\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tvar chat = this.closest(\".tab-pane\").find(\".chatroom\");\n\n\tif ( chat.length > 0 ) {\n\t  if ( action == 'update' )\n\t    chat.chatroom('docid', docid, 'close');\n\t  else\n\t    utils.flash(chat);\n\t} else if ( action != 'update' ) {\n\t  chat = $($.el.div({class:\"chatroom\"}));\n\t  var percentage;\n\n\t  if ( typeof(action) == \"number\" )\n\t    percentage = action;\n\t  else if ( action == 'large' )\n\t    percentage = 80;\n\t  else\n\t    percentage = 20;\n\n\t  chat.chatroom({docid:docid});\n\t  this.tile('split', chat, \"below\", percentage, 150)\n\t      .addClass(\"chat-container\");\n\t}\n      } else if ( action == 'update' ) {\n\tthis.storage('close_chat');\n      } else if ( !data.st_type ) {\n\tmodal.alert(\"You can only chat about a saved document.<br>\"+\n\t\t    \"Please save your document and try again.\");\n      } else {\n\tmodal.alert(\"The chat facility is only available for \"+\n\t\t    \"user-saved files.<br>\"+\n\t\t    \"You can use the <b>Open hangout</b> menu from \"+\n\t\t    \"the top-right bell to access the hangout room.\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Close associated chat\n     */\n    close_chat: function() {\n      this.closest(\".chat-container\").find(\".chatroom\").chatroom('close');\n    },\n\n    /**\n     * @return percentage of the chatroom, `true` when undefined or\n     * `false` if there is no chatroom.\n     */\n    chatroom_size: function() {\n      var tab = this.closest(\".tab-pane\");\n      var cr = tab.find(\".chatroom\");\n      if ( cr.length > 0 ) {\n\tvar h = tab.height();\n\tif ( h == 0 )\n\t  return 20;\t\t\t/* default */\n\treturn Math.round(cr.height()*100/h);\n      }\n      return false;\n    },\n\n    /**\n     * Act upon the arrival of a chat message.  Update the tab title.\n     * If the message is not displayed and it is not permanent\n     * (`create == false`) we should not update the counter.\n     */\n    chat_message: function(msg) {\n      if ( !msg.displayed && msg.create == false )\n\treturn this;\n\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( msg.docid == elem.storage('docid') ) {\n\t  var data = elem.data(pluginName);\n\n\t  if ( data.chats ) {\n\t    if ( data.chats.total != undefined ) data.chats.total++;\n\t    if ( data.chats.count != undefined ) data.chats.count++;\n\t  } else {\n\t    data.chats = {total:1};\n\t  }\n\n\t  elem.storage('update_tab_title', 'chats++');\n\t}\n      });\n    },\n\n    /**\n     * Edit the _follow_ options for this file.\n     */\n\n    follow: function() {\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tmodal.server_form({\n\t  title: \"Follow file options\",\n\t  url:   config.http.locations.follow_file_options,\n\t  data:  {docid: docid}\n\t});\n      } else {\n\tmodal.alert(\"Sorry, can only follow files\");\n      }\n    },\n\n    /**\n     * Called if the editor is destroyed to see whether it has pending\n     * modifications.\n     *\n     * @param {String} why is one of `\"beforeunload\" if the window is\n     * left or \"setSource\" if the source will be replaced.\n     */\n    unload: function(why, ev) {\n      var data = this.data(pluginName);\n\n      if ( !data )\t\t\t\t/* how can this happen? */\n\treturn undefined;\n\n      if ( data.meta ) {\n\thistory.addRecent({ st_type: \"gitty\",\n\t\t\t    id:\t  data.meta.name\t/* FIXME: add hash? */\n\t\t\t  });\n      }\n\n      if ( data.cleanData && data.getValue &&\n\t   data.cleanData != data.getValue() ) {\n\tif ( why == \"beforeunload\" ) {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost if you leave the page\";\n\n\t  ev = ev||window.event;\n\t  if ( ev )\n\t    ev.returnValue = message;\n\n\t  return message;\n\t} else {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost\"+\n\t\t\t( why == \"setSource\" ? \" if you load a new program\" :\n\t\t\t  why == \"closetab\"  ? \" close this tab\" : \"\"\n\t\t\t);\n\n\t  return confirm(message);\n\t}\n      }\n\n      return undefined;\n    },\n\n    /**\n     * Called if this element is inside a tab this is being closed\n     */\n    close: function() {\n    },\n\n    /**\n     * maintain `data.is_clean`\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      data.is_clean = clean;\n    },\n\n    /**\n     * Broadcast all open (gitty) files. This is used to synchronise\n     * state.  Each state object has the property `file`.  If the file\n     * is locally modified, `state.modified` is `true` and if the file\n     * is the visible one, `state.visible` is true\n     * @param {Bool} [always] if `true`, also report if no files are\n     * open.\n     */\n    chat_status: function(always) {\n      var opened = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\n\tif ( data.st_type == \"gitty\" && data.meta && data.meta.name ) {\n\t  var state = { file:  data.meta.name };\n\n\t  if ( !data.is_clean ) state.modified = true;\n\t  if ( $(this).is(\":visible\") ) state.visible = true;\n\t  opened.push(state);\n\t}\n      });\n\n      if ( always || opened.length > 0 )\n\t$(\"#chat\").trigger('send',\n\t\t\t   { type:'has-open-files',\n\t\t\t     files:opened\n\t\t\t   });\n    }\n  }; // methods\n\n  function capitalizeFirstLetter(string) {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  function filesysInfo(form, meta) {\n    var table = $.el.table({class:\"table table-striped\"});\n\n    $(table).append($.el.tr($.el.th(\"Path\"),\n\t\t\t    $.el.td(meta.path)));\n    $(table).append($.el.tr($.el.th(\"Modified\"),\n\t\t\t    $.el.td(new Date(meta.last_modified*1000)\n\t\t\t\t    .toLocaleString())));\n    $(table).append($.el.tr($.el.th(\"Loaded\"),\n\t\t\t    $.el.td(meta.modified_since_loaded ? \"yes (modified)\":\n\t\t\t\t    meta.loaded ? \"yes\" : \"no\")));\n\n    form.append(table);\n  }\n\n  function errorString(action, error) {\n    if ( error.error == \"file_exists\" ) {\n      return action + \": file exists: \" + error.file;\n    }\n\n    return JSON.stringify(error);\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class storage\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.storage = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  function filebase(file) {\n    return file ? file.split('.').slice(0,-1).join(\".\") : null;\n  }\n\n  function udiff(diff) {\n    if ( diff ) {\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n      return pre;\n    } else {\n      return $($.el.div({class:\"udiff\"}, \"No changes\"));\n    }\n  }\n\n  function editConflicts(merged) {\n    var lines = merged.split(\"\\n\");\n    var pre = $($.el.pre({class:\"udiff\"}));\n    var cls = null;\n\n    function addLine(line, cls) {\n      pre.append($.el.span({class:cls}, line),\n\t\t $.el.br());\n    }\n\n    for(var i=0; i<lines.length; i++) {\n      var line = lines[i];\n\n      if ( line == \"<<<<<<<\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-me\";\n      } else if ( cls == \"edit-conflict-me\" && line == \"=======\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-them\";\n      } else if ( cls == \"edit-conflict-them\" && line == \">>>>>>>\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = null;\n      } else if ( cls ) {\n\taddLine(line, cls);\n     }\n   }\n\n   return pre;\n  }\n});\n\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.6.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n  'use strict';\n\n  var root = typeof window === 'object' ? window : {};\n  var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n  if (NODE_JS) {\n    root = global;\n  }\n  var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n  var AMD = typeof define === 'function' && define.amd;\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var EXTRA = [-2147483648, 8388608, 32768, 128];\n  var SHIFT = [24, 16, 8, 0];\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n  var blocks = [];\n\n  var createOutputMethod = function (outputType) {\n    return function (message) {\n      return new Sha1(true).update(message)[outputType]();\n    };\n  };\n\n  var createMethod = function () {\n    var method = createOutputMethod('hex');\n    if (NODE_JS) {\n      method = nodeWrap(method);\n    }\n    method.create = function () {\n      return new Sha1();\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createOutputMethod(type);\n    }\n    return method;\n  };\n\n  var nodeWrap = function (method) {\n    var crypto = eval(\"require('crypto')\");\n    var Buffer = eval(\"require('buffer').Buffer\");\n    var nodeMethod = function (message) {\n      if (typeof message === 'string') {\n        return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n      } else if (message.constructor === ArrayBuffer) {\n        message = new Uint8Array(message);\n      } else if (message.length === undefined) {\n        return method(message);\n      }\n      return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n    };\n    return nodeMethod;\n  };\n\n  function Sha1(sharedMemory) {\n    if (sharedMemory) {\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      this.blocks = blocks;\n    } else {\n      this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    }\n\n    this.h0 = 0x67452301;\n    this.h1 = 0xEFCDAB89;\n    this.h2 = 0x98BADCFE;\n    this.h3 = 0x10325476;\n    this.h4 = 0xC3D2E1F0;\n\n    this.block = this.start = this.bytes = this.hBytes = 0;\n    this.finalized = this.hashed = false;\n    this.first = true;\n  }\n\n  Sha1.prototype.update = function (message) {\n    if (this.finalized) {\n      return;\n    }\n    var notString = typeof(message) !== 'string';\n    if (notString && message.constructor === root.ArrayBuffer) {\n      message = new Uint8Array(message);\n    }\n    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n    while (index < length) {\n      if (this.hashed) {\n        this.hashed = false;\n        blocks[0] = this.block;\n        blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      }\n\n      if(notString) {\n        for (i = this.start; index < length && i < 64; ++index) {\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < 64; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n\n      this.lastByteIndex = i;\n      this.bytes += i - this.start;\n      if (i >= 64) {\n        this.block = blocks[16];\n        this.start = i - 64;\n        this.hash();\n        this.hashed = true;\n      } else {\n        this.start = i;\n      }\n    }\n    if (this.bytes > 4294967295) {\n      this.hBytes += this.bytes / 4294967296 << 0;\n      this.bytes = this.bytes % 4294967296;\n    }\n    return this;\n  };\n\n  Sha1.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex;\n    blocks[16] = this.block;\n    blocks[i >> 2] |= EXTRA[i & 3];\n    this.block = blocks[16];\n    if (i >= 56) {\n      if (!this.hashed) {\n        this.hash();\n      }\n      blocks[0] = this.block;\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n    }\n    blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n    blocks[15] = this.bytes << 3;\n    this.hash();\n  };\n\n  Sha1.prototype.hash = function () {\n    var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n    var f, j, t, blocks = this.blocks;\n\n    for(j = 16; j < 80; ++j) {\n      t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n      blocks[j] =  (t << 1) | (t >>> 31);\n    }\n\n    for(j = 0; j < 20; j += 5) {\n      f = (b & c) | ((~b) & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1518500249 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | ((~a) & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | ((~e) & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | ((~d) & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | ((~c) & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 40; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1859775393 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 60; j += 5) {\n      f = (b & c) | (b & d) | (c & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 1894007588 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | (a & c) | (b & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | (e & b) | (a & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | (d & a) | (e & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | (c & e) | (d & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 80; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 899497514 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 899497514 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 899497514 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 899497514 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 899497514 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    this.h0 = this.h0 + a << 0;\n    this.h1 = this.h1 + b << 0;\n    this.h2 = this.h2 + c << 0;\n    this.h3 = this.h3 + d << 0;\n    this.h4 = this.h4 + e << 0;\n  };\n\n  Sha1.prototype.hex = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n           HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n           HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n           HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n           HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n           HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n           HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n           HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n           HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n           HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n           HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n           HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n           HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n           HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n           HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n           HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n           HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n           HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n           HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n           HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n  };\n\n  Sha1.prototype.toString = Sha1.prototype.hex;\n\n  Sha1.prototype.digest = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return [\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n    ];\n  };\n\n  Sha1.prototype.array = Sha1.prototype.digest;\n\n  Sha1.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var buffer = new ArrayBuffer(20);\n    var dataView = new DataView(buffer);\n    dataView.setUint32(0, this.h0);\n    dataView.setUint32(4, this.h1);\n    dataView.setUint32(8, this.h2);\n    dataView.setUint32(12, this.h3);\n    dataView.setUint32(16, this.h4);\n    return buffer;\n  };\n\n  var exports = createMethod();\n\n  if (COMMON_JS) {\n    module.exports = exports;\n  } else {\n    root.sha1 = exports;\n    if (AMD) {\n      define('sha1',[],function () {\n        return exports;\n      });\n    }\n  }\n})();\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Manage the cell structure of a notebook modelled after IPython\n * NoteBook.  The nodebook consists of a toolbar with a series of\n * buttons and manages a list of cells.  The file defines two plugins\n * `notebook`, implementing the overall notebook and `nbCell`,\n * implementing a single cell.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('notebook',[ \"jquery\", \"config\", \"tabbed\", \"form\",\n\t \"preferences\", \"modal\", \"prolog\", \"links\",\n\t \"laconic\", \"runner\", \"storage\", \"sha1\"\n       ],\n       function($, config, tabbed, form, preferences, modal, prolog, links) {\n\nvar cellTypes = {\n  \"program\":  { label:\"Program\",  prefix:\"p\"   },\n  \"query\":    { label:\"Query\",    prefix:\"q\"   },\n  \"markdown\": { label:\"Markdown\", prefix:\"md\"  },\n  \"html\":     { label:\"HTML\",     prefix:\"htm\" }\n};\n\n(function($) {\n  var pluginName = 'notebook';\n  var clipboard = null;\n\n  /** @lends $.fn.notebook */\n  var methods = {\n    /**\n     * Initialize a Prolog Notebook.\n     * @param {Object} options\n     * @param {String} [options.value] provides the initial content\n     * @param {Boolean} [options.fullscreen] open notebook in fullscreen\n     * mode.\n     */\n    _init: function(options) {\n      options = options||{};\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage info */\n\tvar data = {};\t\t\t/* private data */\n\tvar toolbar, content;\n\n\telem.addClass(\"notebook\");\n\telem.addClass(\"swish-event-receiver\");\n\n\tfunction notebookMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"notebook-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Delete cell\":     function() { this.notebook('delete'); },\n\t\t\"Copy cell\":       function() { this.notebook('copy'); },\n\t\t\"Paste cell\":      function() { this.notebook('paste'); },\n\t\t\"Move cell up\":    function() { this.notebook('up'); },\n\t\t\"Move cell down\":  function() { this.notebook('down'); },\n\t\t\"Insert cell\":     function() { this.notebook('insertBelow'); },\n\t\t\"--\":\t\t   \"Notebook actions\",\n\t\t\"Exit fullscreen\": function() { this.notebook('fullscreen',false)}\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\telem.append(toolbar = $.el.div(\n            {class:\"nb-toolbar\"},\n\t    glyphButton(\"trash\", \"delete\", \"Delete cell\", \"warning\"),\n\t    sep(),\n\t    glyphButton(\"copy\", \"copy\", \"Copy cell\", \"default\"),\n\t    glyphButton(\"paste\", \"paste\", \"Paste cell below\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"chevron-up\", \"up\", \"Move cell up\", \"default\"),\n\t    glyphButton(\"chevron-down\", \"down\", \"Move cell down\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"plus\", \"insertBelow\", \"Insert cell below\", \"primary\"),\n\t    sep(),\n\t    glyphButton(\"erase\", \"clear_all\", \"Clear all query output\", \"warning\"),\n\t    glyphButton(\"play\", \"run_all\", \"Run all queries\", \"primary\"),\n\t    glyphButton(\"fullscreen\", \"fullscreen\", \"Full screen\", \"default\")\n\t    ));\n\telem.append(notebookMenu());\n\telem.append($.el.div({class:\"nb-view\", tabIndex:\"-1\"},\n\t\t\t     content=$.el.div({class:\"nb-content\"}),\n\t\t\t     $.el.div({class:\"nb-bottom\"})));\n\n\t$(toolbar).on(\"click\", \"a.btn\", function(ev) {\n\t  var action = $(ev.target).closest(\"a\").data(\"action\");\n\t  elem.notebook(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\t$(content).on(\"click\", \".nb-cell-buttons a.btn\", function(ev) {\n\t  var a    = $(ev.target).closest(\"a\");\n\t  var cell = a.closest(\".nb-cell\");\n\n\t  var action = a.data(\"action\");\n\t  cell.nbCell(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\telem.focusin(function(ev) {\n\t  var cell = $(ev.target).closest(\".nb-cell\");\n\t  if ( cell.length > 0 ) {\n\t    elem.notebook('active', cell);\n\t  } else if ( $(ev.target).closest(\".nb-view\").length > 0 )\n\t  { elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\telem.focusout(function(ev) {\n\t  if ( $(ev.target).closest(\".notebook\")[0] != elem[0] ) {\n\t    elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\n\t/* Activate the active source or first source.  If the active\n\t * cell is a query, we could activate the source of the query?\n\t */\n\telem.on(\"activate-tab\", function(ev) {\n\t  if ( ev.target == elem[0] ) {\n\t    var eds = elem.find(\".nb-content\")\n                          .children(\".nb-cell.program\");\n\t    var aeds = eds.filter(\".active\");\n\t    var nc = aeds[0]||eds[0];\n\n\t    if ( nc ) {\n\t      $(nc).find(\".prolog-editor\").prologEditor('makeCurrent');\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t});\n\n\t/* monitor output on runners */\n\telem.on(\"scroll-to-bottom\", function(ev, arg) {\n\t  if ( arg != true ) {\n\t    $(ev.target).closest(\".nb-cell\").nbCell('ensure_in_view', 'bottom');\n\t  }\n\t});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t\t\t\t\t/* restore content */\n\tvar content = elem.find(\".notebook-data\");\n\tif ( options.value ) {\n\t  elem.notebook('value', options.value);\n\t} else if ( content.length > 0 ) {\n\t  function copyData(name) {\n\t    var value = content.data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  var docid      = elem.storage('docid', undefined, storage);\n\t  var fullscreen = preferences.getDocVal(\n\t\t\t\t\t   docid, 'fullscreen',\n\t\t\t\t\t   config.swish.notebook.fullscreen);\n\n\t  elem.notebook('value', content.text(),\n\t\t\t{ fullscreen: fullscreen\n\t\t\t});\n\t  content.remove();\n\t} else {\n\t  elem.notebook('placeHolder');\n\t}\n\n\telem.notebook('setupStorage', storage);\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  if ( $(ev.target).hasClass(\"prolog-editor\") )\n\t  { elem.notebook('checkModified');\n\t    ev.stopPropagation();\n\t    return false;\n\t  }\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  preferences.setDocVal(docid, 'fullscreen', val);\n\t});\n      }); /* end .each() */\n    },\n\n\t\t /*******************************\n\t\t *\t  BUTTON ACTIONS\t*\n\t\t *******************************/\n\n    delete: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tthis.notebook('active', cell.next()||cell.prev());\n\tcell.nbCell('close');\n\tthis.notebook('updatePlaceHolder');\n      }\n      this.notebook('checkModified');\n      return this;\n    },\n\n    copy: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\t$(dom).append($(cell).nbCell('saveDOM'));\n\t$(dom).find(\".nb-cell\").removeAttr(\"name\");\n\tclipboard = stringifyNotebookDOM(dom);\n      }\n    },\n\n    paste: function(text) {\n      var nb = this;\n\n      text = text||clipboard;\n      if ( text ) {\n\tvar dom = $.el.div();\n\n\t$(dom).html(text);\n\tvar cells = $(dom).find(\".nb-cell\");\n\tif ( cells.length > 0 ) {\n\t  $(dom).find(\".nb-cell\").each(function() {\n\t    nb.notebook('insert', {\n\t      where: \"below\",\n\t      restore: $(this)\n\t    });\n\t  });\n\t  return this;\n\t} else {\n\t  modal.alert(\"Not a SWISH notebook\");\n\t}\n      } else {\n\tmodal.alert(\"Clipboard is empty\");\n      }\n    },\n\n    up: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertBefore(cell.prev());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    down: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertAfter(cell.next());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    insertAbove: function() {\n      return this.notebook('insert', { where:\"above\" });\n    },\n\n    insertBelow: function() {\n      if ( this.notebook('insert', {where:\"below\", if_visible:true}) == false ) {\n\tmodal.alert(\"<p>New cell would appear outside the visible area of the \" +\n\t\t    \"notebook.\" +\n\t\t    \"<p>Please select the cell below which you want the \"+\n\t\t    \"new cell to appear or scroll to the bottom of the \" +\n\t\t    \"notebook.\");\n      }\n\n      return this;\n    },\n\n    run: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell(\"run\");\n    },\n\n    fullscreen: function(val) {\n      if ( val == undefined )\t\t/* default: toggle */\n\tval = !this.hasClass(\"fullscreen\");\n\n      if ( val ) {\n\tvar chat_container = this.closest(\".chat-container\");\n\tvar node = chat_container.length == 1 ? chat_container : this;\n\t$(\"body.swish\").swish('fullscreen', node, this);\n      } else {\n\t$(\"body.swish\").swish('exitFullscreen');\n      }\n\n      return this;\n    },\n\n    cellType: function(cell, type) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell('type', type);\n    },\n\n\t\t /*******************************\n\t\t *\t      SELECTION\t\t*\n\t\t *******************************/\n\n    getSelection: function() {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('getSelection');\n    },\n\n    restoreSelection: function(sel) {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('restoreSelection', sel);\n    },\n\n\n\t\t /*******************************\n\t\t *\t    CLEAN/DIRTY\t\t*\n\t\t *******************************/\n\n    checkModified: function() {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar store = nb.data(\"storage\");\n\tvar clean = store.cleanGeneration == nb.notebook('changeGen');\n\n\tnb.notebook('markClean', clean);\n      });\n    },\n\n    /**\n     * Called if the notebook changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar data = nb.data(pluginName);\n\n\tif ( data.clean_signalled != clean )\n\t{ data.clean_signalled = clean;\n\t  nb.trigger(\"data-is-clean\", clean);\n\t}\n\n\tif ( clean ) {\n\t  nb.find(\".prolog-editor\").prologEditor('setIsClean');\n\t}\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t CELL MANAGEMENT\t*\n\t\t *******************************/\n\n    /**\n     * @param {jQuery} cell is the cell that must be activated\n     * @param {Boolean} [focus] if `true`, give the cell the focus\n     */\n    active: function(cell, focus) {\n      if ( cell ) {\n\tvar current = this.find(\".nb-content .nb-cell.active\");\n\n\tfunction removeNotForQuery(elem) {\n\t  elem.find(\".nb-content .nb-cell.not-for-query\")\n\t      .removeClass(\"not-for-query\");\n\t}\n\n\tif ( cell.length == 1 )\n\t{ if ( !(current.length == 1 && cell[0] == current[0]) ) {\n\t    removeNotForQuery(this);\n\t    current.nbCell('active', false);\n\t    cell.nbCell('active', true);\n\t    if ( focus )\n\t      cell.focus();\n\t  }\n\t} else\n\t{ removeNotForQuery(this);\n\t  current.nbCell('active', false);\n\t}\n      }\n    },\n\n    /**\n     * Insert a new cell\n     * @param {Object} [options]\n     * @param {String} [options.where] defines where the cell is\n     * inserted relative to the cell with the current focus.\n     * @param {jQuery} [options.restore] If provided, it must contains\n     * a save/restore node that will be used to fill the new cell.\n     * @param {Bool}   [options.if_visible]  If `true`, only insert is\n     * the insertion point is visible.\n     */\n    insert: function(options) {\n      options   = options||{};\n      var relto = currentCell(this);\n      var cell  = options.cell || $.el.div({class:\"nb-cell\"});\n      var view  = this.find(\".nb-view\")\n      var viewrect;\n\n      if ( options.if_visible ) {\n\tif ( view.find(\".nb-content > div.nb-cell\").length > 0 )\n\t  viewrect = view[0].getBoundingClientRect();\n      }\n\n      if ( relto ) {\n\tif ( options.where == 'above' ) {\n\t  if ( viewrect ) {\n\t    var seltop = relto[0].getBoundingClientRect().top;\n\t    if ( seltop < viewrect.top )\n\t      return false;\n\t  }\n\t  $(cell).insertBefore(relto);\n\t} else {\n\t  if ( viewrect ) {\n\t    var selbottom = relto[0].getBoundingClientRect().bottom;\n\n\t    if ( selbottom > viewrect.bottom - 20 )\n\t      return false;\n\t  }\n\t  $(cell).insertAfter(relto);\n\t}\n      } else {\n\tvar content = this.find(\".nb-content\");\n\n\tif ( viewrect ) {\n\t  var cbottom = content[0].getBoundingClientRect().bottom;\n\n\t  if ( cbottom > viewrect.bottom - 20 )\n\t    return false;\n\t}\n\tcontent.append(cell);\n      }\n\n      if ( !options.cell ) {\n\t$(cell).nbCell(options.restore);\n      }\n      $(cell).nbCell('assignName');\n      this.notebook('updatePlaceHolder');\n      this.notebook('active', $(cell));\n      this.notebook('checkModified');\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t   SAVE/RESTORE\t\t*\n\t\t *******************************/\n\n    /**\n     * Setup connection to the storage manager.\n     */\n    setupStorage: function(storage) {\n      var notebook = this;\n\n      storage = $.extend(storage, {\n        getValue: function() {\n\t  return notebook.notebook('value');\n\t},\n\tsetValue: function(source) {\n\t  return notebook.notebook('setSource', source);\n\t},\n\tchangeGen: function() {\n\t  return notebook.notebook('changeGen');\n\t},\n\tisClean: function(gen) {\n\t  var cgen = notebook.notebook('changeGen');\n\t  return gen == cgen;\n\t},\n\tmarkClean: function(clean) {\n\t  notebook.notebook('markClean', clean);\n\t},\n\tcleanGeneration: this.notebook('changeGen'),\n\tcleanData:       this.notebook('value'),\n\tcleanCheckpoint: \"load\",\n\ttypeName:\t \"notebook\"\n      });\n\n      return this.storage(storage);\n    },\n\n    /**\n     * Set the source\n     */\n    setSource: function(source) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      this.notebook('value', source.data);\n    },\n\n    /**\n     * Set or get the state of this notebook as a string.\n     * @param {Object} options\n     * @param {Boolean} [options.skipEmpty=false] if `true`, do not save\n     *\t\t        empty cells.\n     * @param {Boolean} [options.fullscreen] if `true', go fullscreen.\n     * Default is `true` if the toplevel `div.notebook` has a class\n     * `fullscreen`.\n     * @param [String] val is an HTML string that represents\n     * the notebook state.\n     */\n    value: function(val, options) {\n      options = options||{};\n\n      if ( val == undefined ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\n\tthis.notebook('assignCellNames', false);\n\tthis.find(\".nb-cell\").each(function() {\n\t  cell = $(this);\n\t  if ( !(options.skipEmpty && cell.nbCell('isEmpty')) )\n\t    $(dom).append(cell.nbCell('saveDOM'));\n\t});\n\n\treturn stringifyNotebookDOM(dom);\n      } else {\n\tvar notebook = this;\n\tvar content  = this.find(\".nb-content\");\n\tvar dom = $.el.div();\n\n\tcontent.html(\"\");\n\tdom.innerHTML = val;\t\t/* do not execute scripts */\n\n\tif ( options.fullscreen == undefined )\n\t  options.fullscreen = $(dom).find(\"div.notebook\").hasClass(\"fullscreen\");\n\tif ( options.fullscreen ) {\n\t  this.removeClass(\"fullscreen\");\n\t  this.notebook('fullscreen', true);\n\t}\n\n\t$(dom).find(\".nb-cell\").each(function() {\n\t  var cell = $.el.div({class:\"nb-cell\"});\n\t  content.append(cell);\n\t  $(cell).nbCell($(this));\n\t});\n\n\tthis.find(\".nb-cell\").nbCell('onload');\n\tthis.notebook('run_all', 'onload');\n\tthis.notebook('updatePlaceHolder');\n\tthis.notebook('assignCellNames', false);\n      }\n    },\n\n    /**\n     * Compute a state fingerprint for the entire notebook\n     * @return {String} SHA1 fingerprint\n     */\n    changeGen: function() {\n      var list = [];\n      this.find(\".nb-cell\").each(function() {\n\tvar cg = $(this).nbCell('changeGen');\n\tlist.push(cg);\n      });\n      return sha1(list.join());\n    },\n\n    /**\n     * Assign names to all cells.  This is normally done as the\n     * notebook is created, but needs to be done for old notebooks\n     * if functions are used that require named cells.  Calling this\n     * method has no effect if all cells already have a name.\n     */\n    assignCellNames: function(check) {\n      this.find(\".nb-cell\").nbCell('assignName');\n      if ( check != false )\n\tthis.notebook('checkModified');\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t       HELP\t\t*\n\t\t *******************************/\n\n    updatePlaceHolder: function() {\n      if ( this.find(\".nb-content\").children().length == 0 )\n\tthis.notebook('placeHolder');\n      else\n\tthis.find(\".nb-placeholder\").remove();\n    },\n\n    placeHolder: function() {\n      var placeholder = $.el.div({class:\"nb-placeholder\"});\n\n      $.ajax({ url: config.http.locations.help + \"/notebook.html\",\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t $(placeholder).html(data);\n\t       }\n             });\n      this.find(\".nb-content\").append(placeholder);\n    },\n\n    /**\n     * Run the notebook\n     */\n    run_all: function(why) {\n      var queries = [];\n\n      why = why||'all';\n\n      this.notebook('clear_all');\n\n      this.find(\".nb-cell.query\").each(function() {\n\tif ( why == 'all' || $(this).data('run') == why )\n\t  queries.push(this);\n      });\n\n      function cont(pengine) {\n\tswitch(pengine.state) {\n\t  case 'error':\n\t  case 'aborted':\n\t    return false;\n\t}\n\n\treturn true;\n      }\n\n      if ( queries.length > 0 ) {\n\tqueries.current = 0;\n\tvar complete = function(pengine) {\n\t  if ( cont(pengine) &&\n\t       ++queries.current < queries.length ) {\n\t    $(queries[queries.current]).nbCell('run', {\n\t      complete: complete\n\t    })\n\t  }\n\t};\n\n\t$(queries[0]).nbCell('run', {\n\t  complete: complete\n\t});\n      }\n    },\n\n    /**\n     * Erase all query output, killing possibly running queries\n     */\n    clear_all: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n    }\n  }; // methods\n\n  // <private functions>\n\n  /**\n   * @returns {Object|null} cell that is focussed and inside our\n   * notebook.\n   * @param {Object} nb is the notebook\n   */\n  function currentCell(nb) {\n    var active = $(nb).find(\".nb-cell.active\");\n\n    if ( active.length == 1 )\n      return active.first();\n\n    return null;\n  }\n\n  function stringifyNotebookDOM(dom) {\n    /*\n     * Attributes from .html() are not ordered.  We need a canonical\n     * representation and therefore we need to reorder the HTML\n     * attributes and map the attribute names to lower case.\n     */\n    function orderAttrs(s) {\n      attrs = s.match(/[-a-z]+=\"[^\"]*\"/g);\n      if ( attrs ) {\n\tvar start = s.match(/^<[a-z]* /);\n\tfor(var i=0; i<attrs.length; i++) {\n\t  var l = attrs[i].split(/=(.*)/);\n\t  attrs[i] = l[0].toLowerCase()+\"=\"+l[1];\n\t}\n\treturn start[0]+attrs.sort().join(\" \")+\">\";\n      } else\n\treturn s;\n    }\n\n    var html = $($.el.div(dom)).html();\n    var nest = [];\n    return html.replace(/(<div [^>]*>|<\\/div>)/g, function(t) {\n      var is_cell;\n      if ( t == \"</div>\" ) {\n\tis_cell = nest.pop();\n\treturn is_cell ? \"\\n\"+t+\"\\n\" : t;\n      } else {\n\tis_cell = (t.match(/(nb-cell|notebook)/) != null);\n\tnest.push(is_cell);\n\treturn is_cell ? \"\\n\"+orderAttrs(t)+\"\\n\" : t;\n      }\n    }).slice(1);\n  }\n\n  tabbed.tabTypes.notebook = {\n    dataType: \"swinb\",\n    typeName: \"notebook\",\n    label: \"Notebook\",\n    contentType: \"text/x-prolog-notebook\",\n    order: 200,\n    create: function(dom, options) {\n      $(dom).notebook(options);\n    }\n  };\n\n  /**\n   * <Class description>\n   *\n   * @class notebook\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.notebook = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t    PLUGIN nbCell\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'nbCell';\n  var id = 0;\t\t\t\t/* generate unique cell ids */\n\n  /** @lends $.fn.nbCell */\n  var methods = {\n    /**\n     * Create a new notebook cell\n     * @param {jQuery} [dom] initialise the new cell from the saved\n     * DOM\n     */\n    _init: function(dom) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\tvar g;\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.attr(\"tabIndex\", -1);\n\telem.attr(\"id\", \"nbc\"+id++);\n\n\tif ( dom instanceof jQuery ) {\n\t  elem.nbCell('restoreDOM', dom);\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"close\", \"Close\",\n\t\t\t\t  \"default\", \"xs\");\n\t  elem.append(close);\n\t  $(close).addClass(\"close-select\");\n\t  $(close).on(\"click\", function() {\n\t    elem.nbCell('close');\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-select\"},\n\t\t\t       $.el.label(\"Create a \"),\n\t\t\t       g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t       $.el.label(\"cell here.\")));\n\n\t  for(var k in cellTypes) {\n\t    if ( cellTypes.hasOwnProperty(k) )\n\t      $(g).append($.el.button({ type:\"button\",\n\t\t\t\t\tclass:\"btn btn-default\",\n\t\t\t\t\t\"data-type\":k\n\t\t\t\t      },\n\t\t\t\t      cellTypes[k].label));\n\t  }\n\n\t  $(g).on(\"click\", \".btn\", function(ev) {\n\t    elem.nbCell('type', $(ev.target).data('type'));\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-more\"},\n\t\t\t       typeMore(),\n\t\t\t       typeLess($.el.label(\"Insert notebook from \" +\n\t\t\t\t\t\t   \"local file \"),\n\t\t\t\t\tfileInsertInput()[0])));\n\t}\n      });\n    },\n\n    /**\n     * (de)activate the current cell.\n     */\n    active: function(val) {\n      var data = this.data(pluginName);\n\n      if ( val ) {\n\tthis.addClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"program\":\n\t    this.find(\".editor\").prologEditor('makeCurrent');\n\t    break;\n\t  case \"query\":\n\t    var ed = this.prevAll(\".program\").first().find(\".editor\");\n\t    if ( ed.length == 1 )\n\t      ed.prologEditor('makeCurrent');\n\t    this.closest(\".notebook\")\n                .find(\".nb-cell.program\")\n                .not(this.nbCell(\"program_cells\"))\n                .addClass(\"not-for-query\");\n\t    break;\n\t}\n      } else if ( this.length > 0 ) {\n\tthis.removeClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"markdown\":\n\t  case \"html\":\n\t    if ( this.hasClass(\"runnable\") ) {\n\t      this.nbCell('run');\n\t    }\n\t    break;\n\t}\n      }\n    },\n\n    ensure_in_view: function(where) {\n      var top  = this.position().top;\n      var view = this.closest(\".nb-view\");\n      var stop = view.scrollTop();\n      var vh   = view.height();\n\n      if ( top > stop &&\n\t   top + this.height() < stop + vh )\n\treturn;\n\n      if ( where != 'top' ) {\n\ttop = top + this.height() - vh + 40;\n      }\n\n      this.nbCell('active', true);\n      view.scrollTop(top);\n    },\n\n    type: function(type) {\n      var data = this.data(pluginName);\n      if ( data.type != type ) {\n\tmethods.type[type].apply(this);\n\tdata.type = type;\n\tthis.addClass(type);\n\tthis.removeAttr(\"name\");\n\tthis.nbCell('assignName');\n      }\n      return this;\n    },\n\n    /**\n     * Give the cells in a jQuery set a unique name inside their\n     * notebook.\n     */\n    assignName: function() {\n      return this.each(function() {\n\tvar cell = $(this);\n\n\tif ( !cell.attr(\"name\") ) {\n\t  var data   = cell.data(pluginName);\n\t  if ( data.type ) {\n\t    var prefix = cellTypes[data.type].prefix;\n\t    var nb     = cell.closest(\".notebook\");\n\n\t    for(i=1; ; i++) {\n\t      var name = prefix+i;\n\t      if ( nb.find(\"*[name=\"+name+\"]\").length == 0 ) {\n\t\tcell.attr(\"name\", name);\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Run the current cell\n     */\n    run: function() {\n      var args = arguments;\n\n      return this.each(function() {\n\tvar cell = $(this);\n\tif ( cell.hasClass(\"runnable\") ) {\n\t  var data = cell.data(pluginName);\n\n\t  return methods.run[data.type].apply(cell, args);\n\t} else {\n\t  console.log(\"Cell is not runnable: \", cell);\n\t}\n      });\n    },\n\n    runTabled: function() {\n      return this.nbCell('run', {tabled:true});\n    },\n\n    onload: function() {\n      var args = arguments;\n\n      this.each(function() {\n\tvar cell = $(this);\n\tvar data = cell.data(pluginName);\n\n\tif ( methods.onload[data.type] )\n\t  methods.onload[data.type].apply(cell, args);\n      });\n\n      return this.nbCell('refresh');\n    },\n\n    close: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n      return this.remove();\n    },\n\n    refresh: function() {\n      if ( this.hasClass(\"program\") ) {\n\tthis.find(\"a[data-action='background']\")\n            .attr('title', this.hasClass(\"background\") ?\n\t\t\t     \"Used for all queries in this notebook\" :\n\t\t             \"Used for queries below this cell\");\n\n      }\n      return this;\n    },\n\n    getSettings: function() {\n      return {\n        tabled: this.data(\"tabled\") == \"true\",\n\trun:    this.data(\"run\")    == \"onload\",\n\tchunk:  parseInt(this.data(\"chunk\")||\"1\"),\n\tname:   this.attr(\"name\")\n      };\n    },\n\n    /**\n     * Present a modal that shows the current query properties and\n     * allows for changing them.\n     */\n    settings: function() {\n      var elem    = this;\n      var current = this.nbCell('getSettings');\n\n      function querySettingsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"\n\t  },\n\t  form.fields.checkboxes(\n\t\t[ { name: \"tabled\",\n\t\t    label: \"table results\",\n\t\t    value: current.tabled,\n\t\t    title: \"Table results\"\n\t\t  },\n\t\t  { name: \"run\",\n\t\t    label: \"run on page load\",\n\t\t    value: current.run,\n\t\t    title: \"Run when document is loaded\"\n\t\t  }\n\t\t], {col:3}),\n\t  form.fields.chunk(current.chunk),\n\t  form.fields.name(current.name||\"\"),\n\t  form.fields.buttons(\n\t  { label: \"Apply\",\n\t    offset: 3,\n\t    action: function(ev, values) {\n\t      if ( values.tabled != current.tabled ) {\n\t\tif ( values.tabled )\n\t\t  elem.data(\"tabled\", \"true\");\n\t\telse\n\t\t  elem.removeData(\"tabled\");\n\t      }\n\t      if ( values.run != current.run ) {\n\t\tif ( values.run )\n\t\t  elem.data(\"run\", \"onload\");\n\t\telse\n\t\t  elem.removeData(\"run\");\n\t      }\n\t      if ( values.chunk != current.chunk ) {\n\t\tif ( values.chunk != 1 )\n\t\t  elem.data(\"chunk\",  \"\"+values.chunk);\n\t\telse\n\t\t  elem.removeData(\"chunk\");\n\t      }\n\t      var name = values.name ? values.name.trim() : \"\";\n\t      if (  name != current.name ) {\n\t\tif ( name )\n\t\t  elem.attr(\"name\", name);\n\t\telse\n\t\t  elem.attr(\"name\", null);\n\t      }\n\t      elem.closest(\".notebook\").notebook('checkModified');\n\t    }\n\t  })));\n      }\n\n      form.showDialog({ title: \"Set options for query\",\n                        body: querySettingsBody\n                      });\n    },\n\n    /**\n     * Change the editor of a program cell to fixed (one line) height\n     */\n    singleline: function() {\n      this.toggleClass(\"singleline\");\n      this.find(\".editor\").prologEditor('refresh');\n      glyphButtonGlyph(this, \"singleline\",\n\t\t       this.hasClass(\"singleline\")\n\t\t\t\t? \"triangle-left\"\n\t\t\t\t: \"triangle-bottom\");\n      this.find(\"a[data-action=singleline]\").blur();\n      return this;\n    },\n\n    /**\n     * Toggle a program fragment to be background/non-background\n     */\n    background: function() {\n      this.toggleClass(\"background\");\n      this.find(\"a[data-action=background]\").blur();\n      this.closest(\".notebook\").notebook('checkModified');\n      this.nbCell('refresh');\n      return this;\n    },\n\n    /**\n     * Returns all program cells in current notebook that are loaded\n     * for executing the current cell.  This always starts with the\n     * background programs.  If `this` is a program cell, it is added.\n     * Otherwise the program cell before `this` is added.\n     * @return {jQuery} set of nbCell elements that form the\n     * sources for the receiving query cell.\n     */\n    program_cells: function() {\n      var data = this.data(pluginName);\n      var programs = this.closest(\".notebook\")\n\t                 .find(\".nb-cell.program.background\");\n      if ( this.hasClass(\"program\") ) {\n\tif ( !this.hasClass(\"background\") )\n\t  programs = programs.add(this);\n      } else {\n\tprograms = programs.add(this.prevAll(\".program\").first());\n      }\n      return programs;\n    },\n\n    programs: function() {\n      var cells = this.nbCell('program_cells');\n      return cells.find(\".editor\");\n    },\n\n    isEmpty: function() {\n      return methods.isEmpty[this.data(pluginName).type].call(this);\n    },\n\n    saveDOM: function() {\n      return methods.saveDOM[this.data(pluginName).type].call(this);\n    },\n\n    restoreDOM: function(dom) {\n      var data = this.data(pluginName);\n\n      function domCellType(dom) {\n\tfor(var k in cellTypes) {\n\t  if ( cellTypes.hasOwnProperty(k) && dom.hasClass(k) )\n\t    return k;\n\t}\n      }\n\n      data.type = domCellType(dom);\n      methods.restoreDOM[data.type].apply(this, arguments);\n      this.addClass(data.type);\n    },\n\n    /**\n     * Compute a state fingerprint for the current cell.\n     */\n    changeGen: function() {\n      var type = this.data(pluginName).type;\n\n      if ( type )\n\treturn methods.changeGen[type].call(this);\n      else\n\treturn 0;\n    },\n\n    text: function() {\n      return cellText(this);\n    }\n  }; // methods\n\n\t\t /*******************************\n\t\t *\t     SET TYPE\t\t*\n\t\t *******************************/\n\n  methods.type.markdown = function(options) {\t/* markdown */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"markdown\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.html = function(options) {\t/* HTML */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"htmlmixed\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.program = function(options) {\t/* program */\n    var cell = this;\n    var editor;\n\n    options = options||{};\n    options.autoCurrent = false;\n    options.getSource = function() {\n      var programs = cell.nbCell('programs');\n      return programs.prologEditor('getSource', \"source\", true);\n    };\n\n    this.html(\"\");\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"triangle-bottom\", \"singleline\", \"Show only first line\",\n\t\t  \"default\", \"xs\"),\n      imageButton(\"background\", \"Use as background program\", \"xs\"));\n    this.append(buttons,\n\t\teditor=$.el.div({class:\"editor with-buttons\"}));\n    if ( options.background )\n    { this.addClass(\"background\");\n    }\n    if ( options.singleline )\n    { this.nbCell('singleline');\n    }\n    $(editor).prologEditor(options);\n  }\n\n  methods.type.query = function(options) {\t/* query */\n    var editor;\n    var cell = this;\n\n    this.html(\"\");\n\n    options = options||{};\n    if ( options.tabled == undefined )\n      options.tabled = preferences.getVal(\"tabled_results\");\n\n    function setData(name) {\n      if ( options[name] != undefined ) {\n\tcell.data(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setData(\"tabled\");\n    setData(\"chunk\");\n    setData(\"run\");\n    setAttr(\"name\");\n\n    options = $.extend({}, options,\n      { role: \"query\",\n\tsourceID: function() {\n\t  return cell.nbCell('programs').prologEditor('getSourceID');\n\t},\n\tprologQuery: function(q) {\n\t  cell.nbCell('run');\n\t}\n      });\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"wrench\", \"settings\", \"Settings\",\n\t\t  \"default\", \"xs\"),\n      glyphButton(\"play\", \"run\",       \"Run query\",\n\t\t  \"primary\", \"xs\"));\n\n    function wrapSolution(a)\n    { this.find(\".editor.query\").prologEditor('wrapSolution', $(a).text());\n    }\n\n    var menu = form.widgets.dropdownButton(\n      $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"}),\n      { client: cell,\n\tdivClass: \"nb-query-menu\",\n        actions: {\n\t  \"Aggregate (count all)\": wrapSolution,\n\t  \"--\":\t\t\t   null,\n\t  \"Projection\":\t\t   wrapSolution,\n\t  \"Order by\":              wrapSolution,\n\t  \"Distinct\":              wrapSolution,\n\t  \"Limit\":\t\t   wrapSolution\n        }\n      });\n\n    this.append(buttons,\n\t\t$.el.div({class:\"query with-buttons\"},\n\t\t\t menu,\n\t\t\t $.el.span({class:\"prolog-prompt\"}, \"?-\"),\n\t\t\t editor=$.el.div({class:\"editor query\"})));\n\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t    RUN BY TYPE\t\t*\n\t\t *******************************/\n\n  methods.run.markdown = function(markdownText) {\t/* markdown */\n    var cell = this;\n\n    markdownText = markdownText||cellText(this);\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('markdownText');\n      cell.removeData('markdownText');\n      methods.type.markdown.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n\n    function setHTML(data) {\n      cell.html(data);\n      cell.removeClass(\"runnable\");\n      cell.data('markdownText', markdownText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( markdownText.trim() != \"\" )\n    { $.ajax({ type: \"POST\",\n\t       url: config.http.locations.markdown,\n\t       data: markdownText,\n\t       contentType: \"text/plain; charset=UTF-8\",\n\t       success: setHTML\n\t     });\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty markdown cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.html = function(htmlText, options) {\n    var cell = this;\n\n    options = options||{};\n    if ( options.html == false )\n    { runScripts();\n      return;\n    }\n\n    htmlText = (htmlText||cellText(this)).trim();\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('htmlText');\n      cell.removeData('htmlText');\n      methods.type.html.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n    function runScripts() {\n      if ( config.swish.notebook.eval_script == true &&\n\t   options.eval_script != false ) {\n\tvar scripts = [];\n\n\tcell.find(\"script\").each(function() {\n\t  var type = this.getAttribute('type')||\"text/javascript\";\n\t  if ( type == \"text/javascript\" )\n\t    scripts.push(this.textContent);\n\t});\n\n\tif ( scripts.length > 0 ) {\n\t  var script = \"(function(notebook){\" + scripts.join(\"\\n\") + \"})\";\n\t  var nb = new Notebook({\n\t    cell: cell[0]\n\t  });\n\n\t  try {\n\t    eval(script)(nb);\n\t  } catch(e) {\n\t    alert(e);\n\t  }\n\t}\n      }\n    }\n\n    function runHTML(data) {\n      cell[0].innerHTML = data;\n      runScripts();\n    }\n\n    function setHTML(data) {\n      runHTML(data);\n      cell.removeClass(\"runnable\");\n      cell.data('htmlText', htmlText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( htmlText != \"\" )\n    { setHTML(htmlText);\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty HTML cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.program = function() {\t\t/* program */\n    modal.alert(\"Please define a query to run this program\");\n  };\n\n  /**\n   * Run a query cell.\n   * @param {Object} [options]\n   * @param {Any}    [options.bindings] Initial bindings.  If this is a\n   *\t\t     string, it is simply prepended to the query.  If\n   *\t\t     it is an object, it is translated into a sequence\n   *\t\t     of Prolog unifications to bind the variables.\n   * @param {Function} [options.success] Function run on success.  See\n   *\t\t     `prologRunner._init()`.\n   * @param {Function} [options.complete] Function run on complete.  See\n   *\t\t     `prologRunner._init()`.\n   */\n  methods.run.query = function(options) {\t/* query */\n    var programs = this.nbCell('programs');\n    var settings = this.nbCell('getSettings');\n    var text     = cellText(this);\n\n    options = options||{};\n    if ( options.bindings ) {\n      var pretext = \"\";\n      if ( typeof(options.bindings) === 'string' ) {\n\tpretext = options.bindings;\n      } else {\n\tfor(var k in options.bindings) {\n\t  if ( options.bindings.hasOwnProperty(k) ) {\n\t    if ( pretext )\n\t      pretext += \", \";\n\t    pretext += k + \" = \" + Pengine.stringify(options.bindings[k]);\n\t  }\n\t}\n      }\n      if ( pretext )\n\ttext = pretext + \", (\" + prolog.trimFullStop(text) + \")\";\n    }\n    var query = { source:       programs.prologEditor('getSource',\n\t\t\t\t\t\t      \"source\", true),\n                  query:        text,\n\t\t  tabled:       settings.tabled||false,\n\t\t  chunk:        settings.chunk,\n\t\t  title:        false,\n\t\t  query_editor: this.find(\".prolog-editor.query\")\n                };\n    if ( programs[0]  )     query.editor   = programs[0];\n    if ( options.success  ) query.success  = options.success;\n    if ( options.complete ) query.complete = options.complete;\n\n    var runner = $.el.div({class: \"prolog-runner\"});\n    this.find(\".prolog-runner\").prologRunner('close');\n    this.append(runner);\n    $(runner).prologRunner(query);\n  };\n\n\t\t /*******************************\n\t\t *\t       ONLOAD\t\t*\n\t\t *******************************/\n\n/* These methods are executed after all cells have been initialised */\n\n  methods.onload.html = function() {\n    return methods.run.html.call(this,\n\t\t\t\t undefined,\t/* text */\n\t\t\t\t {html:false, eval_script:true});\n  };\n\n\n\t\t /*******************************\n\t\t *\tSAVE/RESTORE DOM\t*\n\t\t *******************************/\n\n/* ---------------- saveDOM ---------------- */\n\n  methods.saveDOM.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell markdown\"}, text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.html = function() {\t\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell html\"});\n\n    // assume scripts are executed when put into the DOM\n    $(dom).html(text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.program = function() {\t/* program */\n    var cell = this;\n    var dom = $.el.div({class:\"nb-cell program\"}, cellText(this));\n\n    function copyClassAttr(name) {\n      if ( cell.hasClass(name) ) {\n\t$(dom).attr(\"data-\"+name, true);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyClassAttr(\"background\");\n    copyClassAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.query = function() {\t\t/* query */\n    var cell = this;\n    var dom  = $.el.div({class:\"nb-cell query\"}, cellText(this));\n\n    function isDefault(name, value) {\n      if ( name == 'tabled' && (!value || value == \"false\") ) return true;\n      return false;\n    }\n\n    function copyData(name) {\n      var value;\n      if ( (value=cell.data(name)) && !isDefault(name,value) ) {\n\t$(dom).attr(\"data-\"+name, value);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyData(\"tabled\");\n    copyData(\"chunk\");\n    copyData(\"run\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n/* ---------------- restoreDOM ---------------- */\n\n  methods.restoreDOM.markdown = function(dom) {\t/* markdown */\n    var cell = this;\n    var text = dom.text().trim();\n\n    cell.data('markdownText', text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.markdown.call(this, text);\n  };\n\n  methods.restoreDOM.html = function(dom) {\t/* HTML */\n    var cell = this;\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.html.call(this, dom.html(), {eval_script:false});\n  };\n\n  methods.restoreDOM.program = function(dom) {\t/* program */\n    var cell = this;\n    var opts = { value:dom.text().trim() };\n\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\topts[name] = value;\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n\n    getAttr(\"background\");\n    getAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    methods.type.program.call(this, opts);\n  };\n\n  methods.restoreDOM.query = function(dom) {\t/* query */\n    var opts = { value:dom.text().trim() };\n\n    function getData(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\tif ( name == \"chunk\" )\n\t  opts.chunk = parseInt(value);\n\telse\n\t  opts[name] = value;\n      }\n    }\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) ) {\n\topts[name] = value;\n      }\n    }\n\n    getData(\"tabled\");\n    getData(\"chunk\");\n    getData(\"run\");\n    getAttr(\"name\");\n    if ( opts.tabled == undefined )\n      opts.tabled = false;\n\n    methods.type.query.call(this, opts);\n  };\n\n/* ---------------- changeGen ---------------- */\n\n  methods.changeGen.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return sha1(\"M\"+text.trim());\n  };\n\n  methods.changeGen.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return sha1(\"H\"+text.trim());\n  };\n\n  methods.changeGen.program = function() {\t/* program */\n    var text = \"P\";\n    var cell = this;\n\n    function addClassAttr(name, key) {\n      if ( cell.hasClass(name) )\n\ttext += key;\n    }\n\n    addClassAttr(\"background\", \"B\");\n    addClassAttr(\"singleline\", \"S\");\n\n    text += \"V\"+cellText(this).trim();\n    return sha1(text);\n  };\n\n  methods.changeGen.query = function() {\t/* query */\n    var text = \"Q\";\n    var cell = this;\n\n    function addData(name, key) {\n      var value;\n\n      if ( (value=cell.data(name)) )\n\ttext += key+value;\n    }\n    function addAttr(name, key) {\n      var value;\n\n      if ( (value=cell.attr(name)) )\n\ttext += key+value;\n    }\n\n    addData(\"tabled\", \"T\");\n    addData(\"chunk\", \"C\");\n    addData(\"run\", \"R\");\n    addAttr(\"name\", \"N\");\n    text += \"V\"+cellText(this).trim();\n\n    return sha1(text);\n  };\n\n/* ---------------- isEmpty ---------------- */\n\n  methods.isEmpty.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.program = function() {\t/* program */\n    return cellText(this).trim() == \"\";\n  };\n\n  methods.isEmpty.query = function() {\t\t/* query */\n    return cellText(this).trim() == \"\";\n  };\n\n\t\t /*******************************\n\t\t *\t     UTILITIES\t\t*\n\t\t *******************************/\n\n  function cellText(cell) {\n    return cell.find(\".editor\").prologEditor('getSource', undefined, true);\n  }\n\n  /**\n   * Creates a file input that, after a file is selected, replaces\n   * the cell with the content of the local file.\n   */\n  function fileInsertInput() {\n    var form = $('<input type=\"file\" name=\"file\">');\n\n    form.on(\"change\", function(ev) {\n      var reader = new FileReader();\n      reader.onload = function(theFile) {\n\tvar cell = $(ev.target).closest(\".nb-cell\");\n\tvar nb   = cell.closest(\".notebook\");\n\n\tif ( nb.notebook('paste', reader.result) )\n\t  cell.remove();\n      };\n      reader.readAsText(ev.target.files[0]);\n\n      ev.preventDefault();\n      return false;\n    });\n\n    return form;\n  }\n\n  function typeMore() {\n    var div = $('<div class=\"form-more\">' +\n\t\t' <a href=\"#\">more<a>' +\n\t\t'</div>');\n    div.find(\"a\").on(\"click\", function(ev) {\n      var more = $(ev.target).closest(\".form-more\");\n      more.hide(400);\n      more.next().show(400);\n    });\n    return div[0];\n  }\n\n  function typeLess() {\n    var div = $('<div class=\"form-less\" style=\"display:none\">' +\n\t\t' <div><a href=\"#\" class=\"less\">less<a></div>' +\n\t\t'</div>');\n    for(var i=0; i<arguments.length; i++) {\n      div.append(arguments[i]);\n    }\n    div.find(\"a.less\").on(\"click\", function(ev) {\n      var less = $(ev.target).closest(\".form-less\");\n      less.hide(400);\n      less.prev().show(400);\n    });\n\n    return div[0];\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class nbCell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.nbCell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nfunction glyphButton(glyph, action, title, style, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-\"+style+\" btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n  return btn;\n}\n\nfunction imageButton(action, title, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-default btn-image btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"image-icon\"}));\n\n  return btn;\n}\n\nfunction glyphButtonGlyph(elem, action, glyph) {\n  var span = elem.find(\"a[data-action=\"+action+\"] > span.glyphicon\");\n\n  span.removeClass(function(i,s) {\n    return s.match(/glyphicon-[-a-z]*/g).join(\" \");\n  }).addClass(\"glyphicon-\"+glyph);\n}\n\nfunction sep() {\n  return $.el.span({class:\"menu-space\"}, \" \");\n}\n\n\t\t /*******************************\n\t\t *\t NOTEBOOK ClASS\t\t*\n\t\t *******************************/\n\nfunction Notebook(options) {\n  this.my_cell = options.cell;\n}\n\n/**\n * Create a Pengine from default arguments\n */\nNotebook.prototype.swish = function(options) {\n  var pcells = this.cell().nbCell(\"programs\");\n  var source = pcells.prologEditor('getSource', \"source\", true);\n\n  if ( source )\n    options.src = source;\n\n  return $.swish(options);\n}\n\n/**\n * @param {String} [name] Return (query) cell with given name.  If\n * name is omitted, return the current cell.\n * @return {jQuery} Notebook cells\n */\nNotebook.prototype.cell = function(name) {\n  if ( name )\n    return this.notebook().find('.nb-cell[name=\"'+name+'\"]');\n  else\n    return $(this.my_cell);\n};\n\n/**\n * @returns {jQuery} the notebook as a whole.\n */\nNotebook.prototype.notebook = function() {\n  return $(this.my_cell).closest(\".notebook\");\n};\n\n/**\n * Run named query cell with bindings\n * @param {String} cell Name of the cell to run\n * @param {Object|String} [bindings] Bindings to pass to the query.\n */\nNotebook.prototype.run = function(cell, bindings) {\n  var options = {};\n  if ( bindings )\n    options.bindings = bindings;\n\n  this.cell(cell).nbCell('run', options);\n};\n\n/**\n * Submit a form, calling a predicate\n * @param {String} formsel is the selector to find the form in the\n * notebook cell.\n * @param {Object} options\n * @param {String} options.predicate predicate to call.  The predicate\n * receives one argument, containing the form data as a dict.\n * @param {Function} options.onsuccess is the function run on successful\n * completion\n */\nNotebook.prototype.submit = function(formsel, options) {\n  var formel = this.$(formsel);\n  var data   = form.serializeAsObject(formel);\n\n  form.formError(formel, null);\n  this.swish({\n    ask: options.predicate+\"((\"+Pengine.stringify(data)+\"))\",\n    onerror: function(data) { form.formError(formel, data); },\n    onsuccess: options.onsuccess\n  });\n};\n\nNotebook.prototype.$ = function(selector) {\n  return this.cell().find(selector);\n}\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Embed the navigation bar\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n\ndefine('navbar',[ \"jquery\", \"preferences\", \"form\", \"laconic\" ],\n       function($, preferences, form) {\n\n(function($) {\n  var pluginName = 'navbar';\n\n  /** @lends $.fn.navbar */\n  var methods = {\n    /**\n     * Initialize a navigation bar.  For example:\n     *\n     *     $(\"#navbar\").navbar(\n     *       { \"File\":\n     *         { \"New\": function() { ... },\n     *           \"Save\": function() { ... }\n     *         },\n     *         \"Edit\":\n     *         { \"Undo\": function() { ... }\n     *         }\n     *       });\n     *\n     * @param {Object} actions Nested object mapping menu labels to\n     * submenus or functions.\n     */\n    _init: function(actions) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    elem.navbar('appendDropdown', p);\n\t    elem.navbar('populateDropdown', p, actions[p]);\n\t  }\n\t}\n\n\telem.on(\"click\", \"a\", function(ev) { runMenu(this, ev); } );\n      });\n    },\n\n    /**\n     * @param {String} label Name of new dropdown to add\n     */\n    appendDropdown: function(label) {\n      var ul1 = this.children(\".nav.navbar-nav.menubar\");\n      var ul2 = $.el.ul({name:label, class:\"dropdown-menu\"});\n      var li  = $.el.li({class:\"dropdown\"},\n\t\t\t$.el.a({class:\"dropdown-toggle\",\n\t\t\t\t\"data-toggle\":\"dropdown\"\n\t\t\t       },\n\t\t\t       label,\n\t\t\t       $.el.b({class:\"caret\"})),\n\t\t\tul2);\n\n      ul1.append(li);\n\n      return this;\n    },\n\n    /**\n     * @param {String} name Name of the dropdown to populate\n     * @param {Object|function} actions Object relating dropdown menu\n     * labels to functions.  If a function is passed, it is called with\n     * two arguments: the navbar and the name of the dropdown to\n     * populate.\n     */\n    populateDropdown: function(name, actions) {\n      if ( typeof(actions) == \"function\" ) {\n\tactions(this, name);\n      } else {\n\tvar ul = dropDownUL(this, name);\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    appendDropdown(ul, p, actions[p]);\n\t  }\n\t}\n      }\n    },\n\n    /**\n     * @param {String} name is the name of the dropdown to clear\n     */\n    clearDropdown: function(name) {\n      var ul = dropDownUL(this, name);\n\n      ul.html(\"\");\n      return this;\n    },\n\n    /**\n     * @example\n     * $(\"#navbar\").navbar('extendDropdown', 'File',\n     *                     'Save as', function () { ... });\n     * @param {String} name is the dropdown to extend\n     * @param {String} label is the label to add\n     * @param {function} onclick is the action to perform\n     */\n    extendDropdown: function(name, label, onclick) {\n      var ul = dropDownUL(this, name);\n\n      appendDropdown(ul, label, onclick);\n    }\n  }; // methods\n\n  /**\n   * Append something to a navbar dropdown.\n   *\n   * @param {Object} dropdown is the jQuery object representing the\n   * dropdown.\n   * @param {String} label is the label for the menu entry\n   * @param {any} options defines the action.  There are many variations:\n   *   - The string `\"--\"` creates a _divider_\n   *   - A function creates a normal menu entry that calls the function\n   *     when selected\n   *   - An object with `.type == \"checkbox\"` creates a checkbox.  In\n   *     addition\n   *\t - if `.preference` exists, the checkbox is associated with the\n   *\t   named preference, otherwise\n   *\t - if `.action' exists, it is called on change with the new\n   *\t   value as argument.\n   *   - An object with `.type == \"submenu\" creates a submenu.\n   *   - An object with `.typeIcon` gets an icon indicating the type\n   */\n  function appendDropdown(dropdown, label, options) {\n    function glyph(name) {\n      if ( name ) {\n\treturn $.el.span({\n\t  class:\"dropdown-icon glyphicon glyphicon-\" + name});\n      }\n    }\n\n    if ( options == undefined ) {\n      // ignored\n    } else if ( options == \"--\" ) {\n      dropdown.append($.el.li({class:\"divider\"}));\n    } else if ( typeof(options) == \"function\" ) {\t/* Simple action */\n      var a;\n      var i;\n\n      if ( options.typeIcon ) {\n\ta = $.el.a(form.widgets.typeIcon(options.typeIcon),\n\t\t   label);\n      } else if ( options.glyph ) {\n\ta = $.el.a(glyph(options.glyph), label);\n      } else if ( (i=label.indexOf(\"(\")) > 0 ) {\n\tvar accell = label.substr(i);\n\ta = $.el.a({class:\"accelerated\"},\n\t\t   label.substr(0,i).trim(),\n\t\t   $.el.span({class:\"accell-spacer\"},accell),\n\t\t   $.el.span({class:\"accell-text\"},accell));\n      } else {\n\ta = $.el.a(label);\n      }\n\n      $(a).data('navbar-action', options);\n      if ( options.name )\n\t$(a).attr(\"id\", options.name);\n\n      dropdown.append($.el.li(a));\n    } else {\t\t\t\t\t\t/* Checkbox item */\n      if ( options.type == \"checkbox\" ) {\n\tvar cb = $($.el.input({type:\"checkbox\"}));\n\n\tif ( options.preference !== undefined ) {\n\t  cb.addClass(\"swish-event-receiver\");\n\t  if ( preferences.getVal(options.preference) )\n\t    cb.prop(\"checked\", true);\n\t  cb.on(\"click\", function() {\n\t    preferences.setVal(options.preference, $(this).prop(\"checked\"));\n\t  });\n\t  cb.on(\"preference\", function(pref) {\n\t    if ( pref.name == options.preference )\n\t      cb.prop(\"checked\", pref.value);\n\t  });\n\t} else {\n\t  if ( options.checked )\n\t    cb.prop(\"checked\", options.checked);\n\n\t  cb.on(\"click\", function() {\n\t    options.action($(this).prop(\"checked\"));\n\t  });\n\t}\n        dropdown.append($.el.li({class:\"checkbox\"},\n\t\t\t\tcb[0],\n\t\t\t\t$.el.span(label)));\n      } else if ( options.type == \"submenu\" ) {\t\t/* Submenu */\n\tvar submenu = $.el.ul({class:\"dropdown-menu sub-menu\"});\n\n\tdropdown.append($.el.li($.el.a({class:\"trigger right-caret\"},\n\t\t\t\t       glyph(options.glyph),\n\t\t\t\t       label),\n\t\t\t\tsubmenu));\n\tif ( options.action )\n\t  $(submenu).data('navbar-action', options.action);\n\tif ( options.items ) {\n\t  for(var i=0; i<options.items.length; i++) {\n\t    $(submenu).append($.el.li($.el.a(options.items[i])));\n\t  }\n\t}\n\tif ( options.update ) {\n\t  $(submenu).on(\"update\", function(ev) {\n\t    options.update.call(ev.target);\n\t  });\n\t}\n      } else {\n\talert(\"Unknown navbar item\");\n      }\n    }\n  }\n\n  function dropDownUL(nb, name) {\n    return nb.find(\".dropdown-menu\").filter(function() {\n      return $(this).attr(\"name\") == name;\n    });\n  }\n\n  function runMenu(a, ev) {\n    if ( $(a).hasClass(\"trigger\") ) {\n      clickSubMenu.call(a, ev);\n    } else {\n      var action = ($(a).data('navbar-action') ||\n\t\t    $(a).parents(\"ul\").data('navbar-action'));\n\n      clickNotSubMenu.call(a, ev);\n\n      if ( action ) {\n\tev.preventDefault();\n\taction.call(a, ev);\n      } else if ( $(a).hasClass(\"trigger\") ) {\n\tclickSubMenu.call(a, ev);\n      }\n\n      return false;\n    }\n  }\n\n  /**\n   * Bootstrap 3 extension to provide submenus.  Inspired by\n   * http://jsfiddle.net/chirayu45/YXkUT/16/\n   * Triggers an `update` event to the submenu's <ul> just\n   * before opening it.\n   */\n  function clickSubMenu(ev) {\n    var current = $(this).next();\t\t /* the submenu <ul> */\n    var grandparent = $(this).parent().parent(); /* the main menu <ul> */\n\n    if ( $(this).hasClass('left-caret') ||\n\t $(this).hasClass('right-caret') )\n      $(this).toggleClass('right-caret left-caret');\n\n    grandparent.find('.left-caret')\n\t       .not(this)\n\t       .toggleClass('right-caret left-caret');\n    grandparent.find(\".sub-menu:visible\")\n\t       .not(current).hide();\n\n    current.trigger(\"update\");\n    current.toggle();\n    ev.stopPropagation();\n  }\n\n  function clickNotSubMenu(ev) {\n    var root = $(this).closest('.dropdown');\n\n    root.find('.left-caret').toggleClass('right-caret left-caret');\n    root.find('.sub-menu:visible').hide();\n  }\n\n/* invoke is merged in general menu callback above\n  $(function() {\n    $(\".dropdown-menu > li > a.trigger\").on(\"click\", clickSubMenu);\n    $(\".dropdown-menu > li > a:not(.trigger)\").on(\"click\", clickNotSubMenu);\n  });\n*/\n\n  /**\n   * navbar jQuery plugin populates the application navigation bar using\n   * bootstrap styling.  Menu entries are added from JavaScript objects,\n   * which directly assocuate a label with a function.  It also allows\n   * populating a dropdown from a callback.\n   *\n   * @class navbar\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} method Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.navbar = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/templates-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var templatesMap = [];\n  var Pos = CodeMirror.Pos;\n\n  function startsWith(str, token) {\n    return str.slice(0, token.length).toUpperCase() == token.toUpperCase();\n  }\n\n  function DEBUG(topic) {\n    //console.log.apply(null, Array.slice(arguments, 1));\n  }\n\n  CodeMirror.templatesHint = {};\n\n  function getLabel(proposal) {\n    var template = proposal.template;\n    return document.createTextNode(template.name);\n  }\n\n  var ourMap = {\n    Tab : selectNextVariable,\n    Enter : function(cm) { selectNextVariable(cm, true) },\n    Esc : uninstall,\n    \"Ctrl-Space\": hintValue\n  }\n\n  function TemplateState() {\n    this.marked = [];\n    this.selectableMarkers = [];\n    this.varIndex = -1;\n  }\n\n  function isNested(cm) {\n    return cm._templateStack ? cm._templateStack.length : 0;\n  }\n\n\n  // A Template instance represents an autocompletion template.\n  // It can be parsed from an eclipse-type template string,\n  // or supplied with a pre-parsed token array.\n  //\n  // The token array may consist of the following tokens:\n  //   \"\\n\" (newline character)\n  //       Single newline character per token.\n  //   text (string)\n  //       Normal text, no newline characters allowed.\n  //   { variable: \"name\" }\n  //       Variable token, to be populated by the user.\n  //   { cursor: true }\n  //       The cursor will be placed here after completing the template\n  //   { line_separator: true }\n  //       If the template surrounds existing text, the existing text will be\n  //       placed here. Not implemented currently.\n  function Template(data) {\n    this.name = data.name; // Optional\n    this.description = data.description; // Optional\n    this.text = data.text; // Optional\n    if ( data.varTemplates ) {\n      this.varTemplates = data.varTemplates;\n    }\n    if(data.template != null) {\n      this.source = data.template;\n    } else if(data.tokens != null) {\n      this._tokens = data.tokens;\n    }\n  }\n\n  Template.prototype.tokens = function() {\n    if(this._tokens == null) {\n      this._tokens = parseTemplate(this.source);\n    }\n    return this._tokens;\n  };\n\n  Template.prototype.content = function() {\n    if(this._content == null) {\n      var tokens = this.tokens();\n      var content = '';\n      for ( var i = 0; i < tokens.length; i++) {\n        var token = tokens[i];\n        if (typeof token == 'string') {\n          content += token;\n        } else if (token.variable) {\n          content += token.variable;\n        } else {\n          // Ignore special tokens\n        }\n      }\n      this._content = content;\n    }\n    return this._content;\n  };\n\n  function parseTemplate(content) {\n    var tokens = [];\n    var varParsing = false;\n    var last = null;\n    var token = '';\n    for ( var i = 0; i < content.length; i++) {\n      var current = content.charAt(i);\n      if (current == \"\\n\") {\n        if (token != '') {\n          tokens.push(token);\n        }\n        token = '';\n        tokens.push(current);\n        last = null;\n      } else {\n        var addChar = true;\n        if (varParsing) {\n          if (current == \"}\") {\n            varParsing = false;\n            addChar = false;\n            if(token == 'cursor') {\n              tokens.push({\n                \"cursor\" : true\n              });\n            } else if(token == 'line_selection') {\n              tokens.push({\n                \"line_selection\" : true\n              });\n            } else {\n              tokens.push({\n                \"variable\" : token\n              });\n            }\n            token = '';\n          }\n        } else {\n          if (current == \"$\" && (i + 1) <= content.length) {\n            i++;\n            var next = content.charAt(i);\n            if (next == \"{\") {\n              varParsing = true;\n              addChar = false;\n              if (token != '') {\n                tokens.push(token);\n              }\n              token = '';\n            }\n          }\n\n        }\n        if (addChar && last != \"$\") {\n          token += current;\n          last = current;\n        } else {\n          last = null;\n        }\n      }\n    }\n    if (token != '') {\n      tokens.push(token);\n    }\n    return tokens;\n  }\n\n\n  function getMarkerChanged(cm, textChanged) {\n    var markers = cm.findMarksAt(textChanged.from);\n    if (markers) {\n      for ( var i = 0; i < markers.length; i++) {\n        var marker = markers[i];\n        if (marker._templateVar) {\n          return marker;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Track changes.  If the change is outside any template variable,\n   * uninstall() the template editing.  If it is inside, see whether\n   * there are any other template variables with the same name and\n   * update them accordingly.\n   */\n  function onChange(cm, textChanged) {\n    var state = cm._templateState;\n    if (!textChanged.origin || !state || state.updating) {\n      return;\n    }\n    try {\n      state.updating = true;\n      var markerChanged = getMarkerChanged(cm, textChanged);\n      if (markerChanged == null) {\n        uninstall(cm);\n      } else {\n        var posChanged = markerChanged.find();\n        var newContent = cm.getRange(posChanged.from, posChanged.to);\n        for ( var i = 0; i < state.marked.length; i++) {\n          var marker = state.marked[i];\n          if (marker != markerChanged\n              && marker._templateVar == markerChanged._templateVar) {\n            var pos = marker.find();\n            cm.replaceRange(newContent, pos.from, pos.to);\n          }\n        }\n      }\n    } finally {\n      state.updating = false;\n    }\n  }\n\n  function onEndCompletion(cm) {\n    DEBUG(\"template\", \"endCompletion()\", isNested(cm));\n    if ( isNested(cm) )\n      uninstall(cm, true);\n  }\n\n  function selectNextVariable(cm, exitOnEnd) {\n    var state = cm._templateState;\n    if (state.selectableMarkers.length > 0) {\n      state.varIndex++;\n      if (state.varIndex >= state.selectableMarkers.length) {\n        // If we reach the last token and exitOnEnd is true, we exit instead of\n        // looping back to the first token.\n        if (exitOnEnd) {\n          exit(cm);\n          return;\n        }\n        state.varIndex = 0;\n      }\n      var marker = state.selectableMarkers[state.varIndex];\n      var pos = marker.find();\n      cm.setSelection(pos.from, pos.to);\n      var templateVar = marker._templateVar;\n      for ( var i = 0; i < state.marked.length; i++) {\n        var m = state.marked[i];\n        if (m == marker) {\n          m.className = \"\";\n          m.startStyle = \"\";\n          m.endStyle = \"\";\n        } else {\n          if (m._templateVar == marker._templateVar) {\n            m.className = \"CodeMirror-templates-variable-selected\";\n            m.startStyle = \"\";\n            m.endStyle = \"\";\n          } else {\n            m.className = \"CodeMirror-templates-variable\";\n            m.startStyle = \"CodeMirror-templates-variable-start\";\n            m.endStyle = \"CodeMirror-templates-variable-end\";\n          }\n        }\n      }\n      cm.refresh();\n    } else {\n      // No tokens - exit.\n      exit(cm);\n    }\n  }\n\n  /**\n   * Recursively use hinting for the values\n   */\n  function hintValue(cm) {\n    var state  = cm._templateState;\n    var marker = state.selectableMarkers[state.varIndex];\n    var prev   = {state:state};\n\n    if ( cm._hintTemplateMarker )\n      prev.marker = cm._hintTemplateMarker;\n\n    if ( !cm._templateStack )\n      cm._templateStack = [];\n    cm._templateStack.push(prev);\n    delete cm._templateState;\n\n    function samePos(p1, p2) {\n      return p1.ch == p2.ch && p1.line == p2.line;\n    }\n\n    cm._hintTemplateMarker = marker;\n    var pos = marker.find();\n    var sels = cm.listSelections();\n    if ( sels.length == 1 &&\n\t samePos(sels[0].anchor, pos.from) &&\n\t samePos(sels[0].head,   pos.to) ) {\n      cm.replaceRange(\"\\u2630\", pos.from, pos.to);\n    }\n\n    CodeMirror.commands.autocomplete(cm);\n  }\n\n  Template.prototype.insert = function(cm, data) {\n    var template = this;\n    var nested = isNested(cm);\n\n    DEBUG(\"template\", \"Insert, nested\", nested, \"template\", template);\n    if ( cm._templateState || nested ) {\n      DEBUG(\"template\", \"Uninstall from insert()\", nested);\n      uninstall(cm);\n    }\n\n    if ( template.text ) {\n      cm.replaceRange(template.text, data.from, data.to);\n      return;\n    }\n\n    var state = new TemplateState();\n    cm._templateState = state;\n\n    var tokens = this.tokens();\n    var content = '';\n    var line = data.from.line;\n    var col = data.from.ch;\n    var markers = [];\n    var variables = [];\n    var cursor = null;\n    for ( var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n      if(typeof token == 'string') {\n        content += token;\n        if (token == \"\\n\") {\n          line++;\n          col = 0;\n        } else {\n          col += token.length;\n        }\n      } else if (token.variable) {\n        content += token.variable;\n        var from = Pos(line, col);\n        var to = Pos(line, col\n            + token.variable.length);\n        var selectable = variables[token.variable] != false;\n        col += token.variable.length;\n        markers.push({\n          from : from,\n          to : to,\n          variable : token.variable,\n          selectable : selectable\n        });\n        variables[token.variable] = false;\n      } else if(token.cursor) {\n        cursor = Pos(line, col);\n      } else {\n        // Unhandled tokens, e.g. line_selection. Ignore.\n      }\n    }\n\n    var from = data.from;\n    var to = data.to;\n    var startLine = from.line;\n    cm.replaceRange(content, from, to);\n\n    for ( var i = 0; i < markers.length; i++) {\n      function subTemplate(tvar) {\n\tif ( template.varTemplates && template.varTemplates[tvar] )\n\t  return template.varTemplates[tvar];\n\treturn undefined;\n      }\n\n      var marker = markers[i], from = marker.from, to = marker.to;\n      var markText = cm.markText(from, to, {\n        className : \"CodeMirror-templates-variable\",\n        startStyle : \"CodeMirror-templates-variable-start\",\n        endStyle : \"CodeMirror-templates-variable-end\",\n        inclusiveLeft : true,\n        inclusiveRight : true,\n        clearWhenEmpty: false,  // Works in CodeMirror 4.6\n        _templateVar : marker.variable,\n\t_templates : subTemplate(marker.variable)\n      });\n      state.marked.push(markText);\n      if (marker.selectable == true) {\n        state.selectableMarkers.push(markText);\n      }\n    }\n\n    if (cursor != null) {\n      state.cursor = cm.setBookmark(cursor);\n    }\n\n    // Auto-indent everything except the first line.\n    // This will typically indent the rest of the code according\n    // to the indentation of the first line.\n    // We do the indentation after creating the markers, so that the\n    // markers are moved accordingly.\n    var lines = content.split(\"\\n\");\n    for ( var x = 1; x < lines.length; x++) {\n      var targetLine = startLine + x;\n      cm.indentLine(targetLine);\n    }\n\n    // Have to be before selectNextVariable, since selectNextVariable\n    // may exit and remove the keymap again.\n    if ( !nested ) {\n      cm.on(\"change\", onChange);\n      DEBUG(\"template\", \"Installing endCompletion\");\n      cm.on(\"endCompletion\", onEndCompletion);\n      cm.addKeyMap(ourMap);\n    }\n\n    selectNextVariable(cm, true);\n  }\n\n  function exit(cm) {\n    // Move to ${cursor} in the template, then uninstall.\n    var cursor = cm._templateState.cursor;\n    if (cursor != null) {\n      var cursorPos = cursor.find();\n      if (cursorPos != null) {\n        cm.setSelection(cursorPos, cursorPos);\n      }\n    }\n    uninstall(cm);\n  }\n\n  function uninstall(cm, canceled) {\n    var state = cm._templateState;\n\n    function canceledMarker() {\n      DEBUG(\"template\", \"Canceled?\");\n\n      for ( var i = 0; i < state.marked.length; i++) {\n\tvar mark = state.marked[i];\n\tif ( mark == cm._hintTemplateMarker ) {\n\t  var pos = mark.find();\n\t  if ( pos && cm.getRange(pos.from, pos.to) == \"\\u2630\" )\n\t    cm.replaceRange(mark._templateVar, pos.from, pos.to);\n\t}\n      }\n    }\n\n    if ( state ) {\n      DEBUG(\"template\", \"Uninstall, clearing: \", state.marked.length);\n      for ( var i = 0; i < state.marked.length; i++) {\n\tstate.marked[i].clear();\n      }\n      if (state.cursor != null) {\n\tstate.cursor.clear();\n      }\n      state.marked.length = 0;\n      state.selectableMarkers.length = 0;\n    } else {\n      DEBUG(\"template\", \"Uninstall, no state\");\n    }\n\n    if ( cm._templateStack && cm._templateStack.length > 0 ) {\n      DEBUG(\"template\", \"Popping from level\", cm._templateStack.length);\n      var prev = cm._templateStack.pop();\n      state = cm._templateState = prev.state;\n      if ( canceled && cm._hintTemplateMarker )\n\tcanceledMarker();\n      if ( prev.marker ) {\n\tcm._hintTemplateMarker = prev.marker;\n      } else {\n\tdelete cm._hintTemplateMarker;\n      }\n    } else {\n      DEBUG(\"template\", \"Leaving template mode\");\n      cm.off(\"change\", onChange);\n      cm.off(\"endCompletion\", onEndCompletion);\n      cm.removeKeyMap(ourMap);\n      delete cm._templateState;\n      delete cm._hintTemplateMarker;\n    }\n  }\n\n  CodeMirror.templatesHint.getCompletions = function(cm, completions, text) {\n    var mode = cm.doc.mode.name;\n    var list = templatesMap[mode];\n    if (list) {\n      for ( var i = 0; i < list.length; i++) {\n        var template = list[i];\n        if (startsWith(template.name, text)) {\n          var label = template.name;\n          if (template.description) {\n            label += '- ' + template.description;\n          }\n          var className = \"CodeMirror-hint-template\";\n          if (template.className)\n            className = template.className;\n          var completion = {\n            \"className\" : className,\n            \"text\" : label,\n            \"template\" : template,\n          };\n          completion.data = completion;\n          completion.hint = function(cm, data, completion) {\n            completion.template.insert(cm, data);\n          };\n          completion.info = function(completion) {\n            var content = completion.template.content();\n\n            if (CodeMirror.runMode) {\n              var result = document.createElement('div');\n              result.className = 'cm-s-default';\n              if (cm.options && cm.options.theme)\n                result.className = 'cm-s-' + cm.options.theme;\n              CodeMirror.runMode(content, cm.getMode().name, result);\n              return result;\n            }\n            return content;\n          };\n          completions.push(completion);\n        }\n      }\n    }\n  }\n\n  CodeMirror.templatesHint.Template = Template;\n\n  CodeMirror.templatesHint.addTemplates = function(templates) {\n    var context = templates.context;\n    if (context) {\n      var list = templatesMap[context];\n      if (!list) {\n        list = [];\n        templatesMap[context] = list;\n      }\n      templates.templates.forEach(function(template) {\n        list.push(new Template(template));\n      });\n    }\n  }\n\n});\n\n\n","// Loosely based on codemirror/addon/hint/xml-hint.js\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog-template-hint',[ \"../../lib/codemirror\",\n\t     \"../../addon/hint/templates-hint\",\n\t     \"jquery\", \"config\", \"laconic\"\n\t   ], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, TemplatesHint, $, config) {\n  \"use strict\";\n\n  var templates = config.swish.templates || [];\n\n  function PrologHint(options) {\n    var hint = this;\n\n    function modeToTemplate(mode) {\n      var varp = /[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g;\n      var detp = /\\bis\\s+(det|nondet|semidet|fail|multi)$/;\n\n      if ( !hint.template ) {\n\thint.template    = mode.replace(varp, \"$${$1}\")\n\t\t\t       .replace(detp, \"\");\n\tif ( !hint.template.match(/\\${cursor}/) )\n\t  hint.template += \"${cursor}\";\n      }\n\n      if ( !hint.displayText )\n\thint.displayText = mode;\n\n      if ( !hint.varTemplates ) {\n\tvar metav = mode.match(/:[A-Z][A-Za-z_0-9]*/g);\n\n\tif ( metav && metav.length > 0 ) {\n\t  var vt = {};\n\n\t  for(var i=0; i<metav.length; i++) {\n\t    vt[metav[i].substring(1)] = templates;\n\t  }\n\t  hint.varTemplates = vt;\n\t}\n      }\n    }\n\n    var copy = [ \"template\",\n\t\t \"displayText\",\n\t\t \"text\",\n\t\t {from:\"summary\", to:\"description\"},\n\t\t \"className\",\n\t\t \"varTemplates\"\n\t       ];\n\n    if ( typeof(options) == \"string\" ) {\n      this.displayText = options;\n      this.text = options;\n    } else {\n      for(var i=0; i<copy.length; i++) {\n\tvar spec = copy[i];\n\tif ( typeof(spec) == \"string\" ) {\n\t  if ( options[spec] )\n\t    this[spec] = options[spec];\n\t} else {\n\t  if ( options[spec.from] )\n\t    this[spec.to] = options[spec.from];\n\t}\n      }\n\n      if ( options.mode )\n\tmodeToTemplate(options.mode);\n\n      if ( options.classes )\n\toptions.className = options.classes.join(\" \");\n    }\n\n    /**\n     * Render a completion label inside a <li>.  This hook is called\n     * from standard CM addons/hint/show-hint.js to render the hinting\n     * alternatives.\n     * @param li is the list element\n     * @param data seems to be the result from getHints()\n     * @param me is this PrologHint instance\n     */\n    this.render = function(li, data, me) {\n      $(li).append(me.displayText);\n    }\n    /**\n     * Provide an HTML string or element that describes the completion.\n     * used by addon/hint/show-context-info.js\n     * @param me is this PrologHint instance\n     */\n    this.info = function(me) {\n      return me.description;\n    }\n  }\n\n  PrologHint.prototype.hint = function(cm, data, completion) {\n    var template = new CodeMirror.templatesHint.Template(this);\n    template.insert(cm, data);\n  };\n\n  function hintsFor(cm, state, options) {\n    var text = state.token.string;\n    var results = [];\n    var myTemplates = templates;\n\n    function startsWith(str, start) {\n      return str.slice(0, start.length) == start;\n    }\n\n    if ( cm._hintTemplateMarker ) {\n      if ( text == \"\\u2630\" )\n\ttext = \"\";\n      myTemplates = cm._hintTemplateMarker._templates;\n    }\n\n    var symbol = text.length > 0 && !text.match(/\\w/);\n\n    if ( myTemplates ) {\n      for(var i=0; i<myTemplates.length; i++) {\n\tvar templ = myTemplates[i];\n\tif ( typeof(templ) == \"string\" ) {\n\t  if ( startsWith(templ, text) )\n\t    results.push(new PrologHint(templ));\n\t} else {\n\t  var fields = [\"name\", \"mode\", \"template\", \"text\"];\n\n\t  if ( symbol ) {\n\t    if ( templ.name && templ.name.indexOf(text) >= 0 )\n\t      results.push(new PrologHint(templ));\n\t  } else {\n\t    for(var j=0; j<fields.length; j++) {\n\t      if ( templ[fields[j]] )\n\t      { if ( startsWith(templ[fields[j]], text) ) {\n\t\t  results.push(new PrologHint(templ));\n\t        }\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      }\n    }\n\n    if ( results.length == 0 ) {\t/* Include AnyWord hinting completions */\n      var anyword = CodeMirror.hint.anyword;\n      var opts = (text==\"\"&&cm._hintTemplateMarker) ?\n\t\t  { word: /[A-Z][A-Za-z0-9_]*/ } : options;\n      var anyhint = anyword(cm, opts);\n      for(var i=0; i<anyhint.list.length; i++)\n\tresults.push(new PrologHint(anyhint.list[i]));\n    }\n\n    return { list: results,\n             from: state.position.from,\n\t     to:   state.position.to\n           };\n  }\n\n  function getHints(cm, callback, options) {\n    var state = getState(cm);\n  //console.log(state);\n    var data  = hintsFor(cm, state, options);\n    CodeMirror.attachContextInfo(data);\n    callback(data);\n  }\n  getHints.async = true;\n\n  function getState(cm) {\n    var cur = cm.getCursor();\n    var token = cm.getTokenAt(cur);\n//  var enriched = cm.getEnrichedToken(token);\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"prolog\") {\n      return null;\n    }\n\n    var tokenPosition = {\n      from: new CodeMirror.Pos(cur.line, token.start),\n      to:   new CodeMirror.Pos(cur.line, token.end)\n    };\n\n    return { token:    token,\n\t     position: tokenPosition\n           };\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"prologTemplate\", getHints);\n\n  return {\n    getHints: getHints,\n    getState: getState\n  };\n});\n\n","/*  Generated file.  Do not edit!\n    Generated by Unicode/prolog_syntax_map.pl\n*/\n\ndefine('cm/mode/prolog/prolog-ctype',[], function() {\nvar UNICODE_MAP_SIZE     = 4353;\nvar U_ID_START            = 0x1;\nvar U_ID_CONTINUE         = 0x2;\nvar U_UPPERCASE           = 0x4;\nvar U_SEPARATOR           = 0x8;\nvar U_SYMBOL             = 0x10;\nvar U_OTHER              = 0x20;\nvar U_CONTROL            = 0x40;\n\n\nvar ucp0x00 = \"\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x10\\x00\\x10\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x20\\x20\\x10\\x03\\x10\\x10\\x10\\x20\\x03\\x10\\x20\\x20\\x20\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x01 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x02 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x03 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x07\\x03\\x07\\x03\\x03\\x10\\x07\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x07\\x12\\x07\\x07\\x07\\x00\\x07\\x00\\x07\\x07\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x10\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x07\\x07\";\nvar ucp0x04 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x10\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x05 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x10\\x02\\x02\\x10\\x02\\x02\\x10\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x06 = \"\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x40\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x10\\x10\\x03\";\nvar ucp0x07 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x40\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x08 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\";\nvar ucp0x09 = \"\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x0a = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0b = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0c = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0d = \"\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0e = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0f = \"\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x02\\x10\\x02\\x10\\x02\\x10\\x10\\x10\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x00\\x00\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x12 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x13 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x14 = \"\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x16 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x08\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x17 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x18 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x40\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x19 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x22\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b = \"\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\";\nvar ucp0x1c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\";\nvar ucp0x1e = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x1f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x00\\x07\\x00\\x07\\x00\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x00\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x00\";\nvar ucp0x20 = \"\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x08\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x40\\x40\\x40\\x40\\x40\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x20\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x02\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x21 = \"\\x10\\x10\\x07\\x10\\x10\\x10\\x10\\x07\\x10\\x10\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x10\\x07\\x10\\x10\\x13\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x10\\x07\\x10\\x07\\x10\\x07\\x07\\x07\\x07\\x13\\x03\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x23 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x24 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\";\nvar ucp0x27 = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x2b = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2c = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x07\\x03\\x02\\x02\\x02\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x20\\x10\\x10\";\nvar ucp0x2d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x2e = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2f = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x30 = \"\\x08\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x13\\x13\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x31 = \"\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x32 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\";\nvar ucp0x4d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x9f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa4 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\";\nvar ucp0xa6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x02\\x20\\x20\\x20\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x00\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xa8 = \"\\x03\\x03\\x02\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xa9 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xaa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xab = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xd7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xd8 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdb = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xdc = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdf = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xe0 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf8 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xfa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfb = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xfd = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\";\nvar ucp0xfe = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x12\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x40\";\nvar ucp0xff = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x12\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x10\\x10\\x00\\x00\";\nvar ucp0x100 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x101 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x00\\x00\";\nvar ucp0x102 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x103 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x104 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x108 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x109 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10a = \"\\x03\\x02\\x02\\x02\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10b = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10e = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x110 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x111 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x116 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x123 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x124 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x134 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b0 = \"\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d1 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d2 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d4 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x00\\x07\\x07\\x00\\x00\\x07\\x00\\x00\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d5 = \"\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x1d7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x1ee = \"\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f1 = \"\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f2 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f4 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\";\nvar ucp0x1f5 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f6 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2a6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2b7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x2b8 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2fa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe00 = \"\\x00\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe01 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf00 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar ucp0x1000 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10ff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar uflags_map = [ucp0x00, ucp0x01, ucp0x02, ucp0x03, ucp0x04, ucp0x05, ucp0x06, ucp0x07,\n  ucp0x08, ucp0x09, ucp0x0a, ucp0x0b, ucp0x0c, ucp0x0d, ucp0x0e, ucp0x0f,\n  ucp0x10, 0x3, ucp0x12, ucp0x13, ucp0x14, 0x3, ucp0x16, ucp0x17,\n  ucp0x18, ucp0x19, ucp0x1a, ucp0x1b, ucp0x1c, ucp0x1d, ucp0x1e, ucp0x1f,\n  ucp0x20, ucp0x21, 0x10, ucp0x23, ucp0x24, 0x10, 0x10, ucp0x27,\n  0x10, 0x10, 0x10, ucp0x2b, ucp0x2c, ucp0x2d, ucp0x2e, ucp0x2f,\n  ucp0x30, ucp0x31, ucp0x32, 0x10, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, ucp0x4d, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x9f,\n  0x3, 0x3, 0x3, 0x3, ucp0xa4, 0x3, ucp0xa6, ucp0xa7,\n  ucp0xa8, ucp0xa9, ucp0xaa, ucp0xab, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0xd7,\n  ucp0xd8, 0x0, 0x0, ucp0xdb, ucp0xdc, 0x0, 0x0, ucp0xdf,\n  ucp0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf8, 0x3, ucp0xfa, ucp0xfb, 0x3, ucp0xfd, ucp0xfe, ucp0xff,\n  ucp0x100, ucp0x101, ucp0x102, ucp0x103, ucp0x104, 0x0, 0x0, 0x0,\n  ucp0x108, ucp0x109, ucp0x10a, ucp0x10b, ucp0x10c, 0x0, ucp0x10e, 0x0,\n  ucp0x110, ucp0x111, 0x0, 0x0, 0x0, 0x0, ucp0x116, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, ucp0x123, ucp0x124, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, ucp0x134, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x16a, 0x0, 0x0, 0x0, 0x0, ucp0x16f,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1b0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1d0, ucp0x1d1, ucp0x1d2, ucp0x1d3, ucp0x1d4, ucp0x1d5, ucp0x1d6, ucp0x1d7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x1ee, 0x0,\n  ucp0x1f0, ucp0x1f1, ucp0x1f2, ucp0x1f3, ucp0x1f4, ucp0x1f5, ucp0x1f6, ucp0x1f7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2a6, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2b7,\n  ucp0x2b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x2fa, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xe00, ucp0xe01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0xfff,\n  ucp0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x10ff,\n  0x0];\n\nfunction uflagsW(chr) {\n  var code = chr.charCodeAt(0);\n  var cp = Math.floor(code/0x100);\n  if ( cp < UNICODE_MAP_SIZE ) {\n    var map = uflags_map[cp];\n\n    if ( typeof(map) == \"number\" ) {\n      return map;\n    } else {\n      return map.charCodeAt(code&0xff);\n    }\n  }\n  return 0;\n}\n\nreturn {\n  flags:       uflagsW,\n  id_start:    function(chr) { return (uflagsW(chr) & U_ID_START)    != 0 },\n  id_continue: function(chr) { return (uflagsW(chr) & U_ID_CONTINUE) != 0 },\n  uppercase:   function(chr) { return (uflagsW(chr) & U_UPPERCASE)   != 0 },\n  separator:   function(chr) { return (uflagsW(chr) & U_SEPARATOR)   != 0 },\n  symbol:      function(chr) { return (uflagsW(chr) & U_SYMBOL)      != 0 },\n  other:       function(chr) { return (uflagsW(chr) & U_OTHER)       != 0 },\n  control:     function(chr) { return (uflagsW(chr) & U_CONTROL)     != 0 }\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog',[\"../../lib/codemirror\", \"./prolog-ctype\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, ctype) {\n\"use strict\";\n\n  CodeMirror.defineMode(\"prolog\", function(cmConfig, parserConfig) {\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n\t\t /*******************************\n\t\t *\t   CONFIG DATA\t\t*\n\t\t *******************************/\n\n  var config = { quasiQuotations: true,\t\t/* {|Syntax||Quotation|} */\n\t         dicts: true,\t\t\t/* tag{k:v, ...} */\n\t\t unicodeEscape: true,\t\t/* \\uXXXX and \\UXXXXXXXX */\n\t\t multiLineQuoted: true,\t\t/* \"...\\n...\" */\n\t\t groupedIntegers: true\t\t/* 10 000 or 10_000 */\n\t       };\n\n  var quoteType = { '\"': \"string\",\n\t\t    \"'\": \"qatom\",\n\t\t    \"`\": \"bqstring\"\n\t\t  };\n\n  var isSingleEscChar = /[abref\\\\'\"nrtsv]/;\n  var isOctalDigit    = /[0-7]/;\n  var isHexDigit      = /[0-9a-fA-F]/;\n\n  var isSymbolChar = /[-#$&*+./:<=>?@\\\\^~]/;\t/* Prolog glueing symbols chars */\n  var isSoloChar   = /[[\\]{}(),;|!]/;\t\t/* Prolog solo chars */\n  var isNeck       = /^(:-|-->)$/;\n  var isControlOp  = /^(,|;|->|\\*->|\\\\+|\\|)$/;\n\n\n\t\t /*******************************\n\t\t *\t CHARACTER ESCAPES\t*\n\t\t *******************************/\n\n  function readDigits(stream, re, count) {\n    if ( count > 0 ) {\n      while( count-- > 0 ) {\n\tif ( !re.test(stream.next()) )\n\t  return false;\n      }\n    } else {\n      while ( re.test(stream.peek()) )\n\tstream.next();\n    }\n    return true;\n  }\n\n  function readEsc(stream) {\n    var next = stream.next();\n    if ( isSingleEscChar.test(next) )\n      return true;\n    switch( next )\n    { case \"u\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 4); /* SWI */\n        return false;\n      case \"U\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 8); /* SWI */\n        return false;\n      case null: return true;\t\t\t/* end of line */\n      case \"c\": stream.eatSpace(); return true;\n      case \"x\": return readDigits(stream, isHexDigit, 2);\n    }\n    if ( isOctalDigit.test(next) ) {\n      if ( !readDigits(stream, isOctalDigit, -1) )\n\treturn false;\n      if ( stream.peek() == \"\\\\\" )\t\t/* SWI: optional closing \\ */\n\tstream.next();\n      return true;\n    }\n    return false;\n  }\n\n  function nextUntilUnescaped(stream, state, end) {\n    var next;\n    while ((next = stream.next()) != null) {\n      if ( next == end && end != stream.peek() )\n      { state.nesting.pop();\n        return false;\n      }\n      if ( next == \"\\\\\" )\n      { if ( !readEsc(stream) )\n\t  return false;\n      }\n    }\n    return config.multiLineQuoted;\n  }\n\n\t\t /*******************************\n\t\t *\tCONTEXT NESTING\t\t*\n\t\t *******************************/\n\n  function nesting(state) {\n    return state.nesting.slice(-1)[0];\n  }\n\n  /* Called on every non-comment token */\n  function setArg1(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg == 0 )\t\t/* nested in a compound */\n\tnest.arg = 1;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = false;\n    } else\n      state.goalStart = false;\n  }\n\n  function setArgAlignment(state) {\n    var nest = nesting(state);\n    if ( nest && !nest.alignment && nest.arg != undefined ) {\n      if ( nest.arg == 0 )\n\tnest.alignment = nest.leftCol ? nest.leftCol+4 : nest.column+4;\n      else\n\tnest.alignment = nest.column+1;\n    }\n  }\n\n  function nextArg(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg )\t\t\t/* nested in a compound */\n\tnest.arg++;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = true;\t\t/* FIXME: also needed for ; and -> */\n    } else\n      state.goalStart = true;\n  }\n\n  function isControl(state) {\t\t/* our terms are goals */\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.type == \"control\" ) {\n\treturn true;\n      }\n      return false;\n    } else\n      return state.inBody;\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function peekSpace(stream) {\t\t/* TBD: handle block comment as space */\n    if ( stream.eol() ||\n\t /[\\s%]/.test(stream.peek()) )\n      return true;\n    return false;\n  }\n\n\n\t\t /*******************************\n\t\t *\t   SUB TOKENISERS\t*\n\t\t *******************************/\n\n  function plTokenBase(stream, state) {\n    var ch = stream.next();\n\n    if ( ch == \"(\" ) {\n      if ( state.lastType == \"functor\" ) {\n\tstate.nesting.push({ functor: state.functorName,\n\t\t\t     column: stream.column(),\n\t\t\t     leftCol: state.functorColumn,\n\t\t\t     arg: 0\n\t\t\t   });\n\tdelete state.functorName;\n\tdelete state.functorColumn;\n      } else {\n\tstate.nesting.push({ type: \"control\",\n\t\t\t     closeColumn: stream.column(),\n\t\t\t     alignment: stream.column()+4\n\t\t\t   });\n      }\n      return ret(\"solo\", null, \"(\");\n    }\n\n    if ( ch == \"{\" && state.lastType == \"tag\" ) {\n      state.nesting.push({ tag: state.tagName,\n\t\t\t   column: stream.column(),\n\t\t\t   leftCol: state.tagColumn,\n\t\t\t   arg: 0\n\t\t\t });\n      delete state.tagName;\n      delete state.tagColumn;\n      return ret(\"dict_open\", null);\n    }\n\n    if ( ch == \"/\" && stream.eat(\"*\") )\n      return chain(stream, state, plTokenComment);\n\n    if ( ch == \"%\" ) {\n      stream.skipToEnd();\n      return ret(\"comment\", \"comment\");\n    }\n\n    setArg1(state);\n\n    if ( isSoloChar.test(ch) ) {\n      switch ( ch )\n      { case \")\":\n\t  state.nesting.pop();\n\t  break;\n\tcase \"]\":\n\t  state.nesting.pop();\n\t  return ret(\"list_close\", null, \"]\");\n\tcase \"}\":\n\t{ var nest = nesting(state);\n\t  var type = (nest && nest.tag) ? \"dict_close\" : \"brace_term_close\";\n\n\t  state.nesting.pop();\n\t  return ret(type, null);\n\t}\n\tcase \",\":\n\t  if ( stream.eol() )\n\t    state.commaAtEOL = true;\n\t  nextArg(state);\n          /*FALLTHROUGH*/\n\tcase \";\":\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n\tcase \"[\":\n\t  state.nesting.push({ type: \"list\",\n\t\t\t       closeColumn: stream.column(),\n\t\t\t       alignment: stream.column()+2\n\t\t\t     });\n\t  return ret(\"list_open\", null, \"[\");\n\t  break;\n\tcase \"{\":\n\t  if ( config.quasiQuotations && stream.eat(\"|\") ) {\n\t    state.nesting.push({ type: \"quasi-quotation\",\n\t\t\t         alignment: stream.column()+1\n\t\t\t       });\n\t    return ret(\"qq_open\", \"qq_open\");\n\t  } else {\n\t    state.nesting.push({ type: \"curly\",\n\t\t\t         closeColumn: stream.column(),\n\t\t\t\t alignment: stream.column()+2\n\t\t\t       });\n\t    return ret(\"brace_term_open\", null);\n\t  }\n\t  break;\n\tcase \"|\":\n\t  if ( config.quasiQuotations ) {\n\t    if ( stream.eat(\"|\") ) {\n\t      state.tokenize = plTokenQuasiQuotation;\n\t      return ret(\"qq_sep\", \"qq_sep\");\n\t    } else if ( stream.eat(\"}\") ) {\n\t      state.nesting.pop();\n\t      return ret(\"qq_close\", \"qq_close\");\n\t    }\n\t  }\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n      }\n      return ret(\"solo\", null, ch);\n    }\n\n    if (ch == '\"' || ch == \"'\" || ch == \"`\")\n    { state.nesting.push({ type: \"quoted\",\n\t\t\t   alignment: stream.column()+1\n\t\t\t });\n      return chain(stream, state, plTokenString(ch));\n    }\n\n    if ( ch == \"0\" ) {\n      if ( stream.eat(/x/i)) {\n\tstream.eatWhile(/[\\da-f]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/o/i)) {\n\tstream.eatWhile(/[0-7]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/'/) ) {\t\t\t/* 0' */\n\tvar next = stream.next();\n\tif ( next == \"\\\\\" ) {\n\t  if ( !readEsc(stream) )\n\t    return ret(\"error\", \"error\");\n\t}\n\treturn ret(\"code\", \"code\");\n      }\n    }\n\n    if ( /\\d/.test(ch) || /[+-]/.test(ch) && stream.eat(/\\d/)) {\n      if ( config.groupedIntegers )\n\tstream.match(/^\\d*((_|\\s+)\\d+)*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      else\n\tstream.match(/^\\d*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(ch == \"-\" ? \"neg-number\" :\n\t\t ch == \"+\" ? \"pos-number\" :\n\t\t \"number\");\n    }\n\n    if ( ctype.symbol(ch) ) {\n      stream.eatWhile(ctype.symbol);\n      var atom = stream.current();\n      if ( atom == \".\" && peekSpace(stream) ) {\n\tif ( nesting(state) ) {\n\t  return ret(\"fullstop\", \"error\", atom);\n\t} else {\n\t} return ret(\"fullstop\", \"fullstop\", atom);\n      } else if ( isNeck.test(atom) ) {\n\treturn ret(\"neck\", \"neck\", atom);\n      } else if ( isControl(state) && isControlOp.test(atom) ) {\n\tstate.goalStart = true;\n\treturn ret(\"symbol\", \"operator\", atom);\n      } else\n\treturn ret(\"symbol\", \"operator\", atom);\n    }\n\n    stream.eatWhile(ctype.id_continue);\n    var word = stream.current();\n    if ( stream.peek() == \"{\" && config.dicts ) {\n      state.tagName = word;\t\t\t/* tmp state extension */\n      state.tagColumn = stream.column();\n      return ret(\"tag\", \"tag\", word);\n    } else if ( ch == \"_\" ) {\n      if ( word.length == 1 ) {\n\treturn ret(\"var\", \"anon\", word);\n      } else {\n\tvar sec = word.charAt(1);\n\tif ( ctype.uppercase(sec) )\n\t  return ret(\"var\", \"var-2\", word);\n      }\n      return ret(\"var\", \"var\", word);\n    } else if ( ctype.uppercase(ch) ) {\n      return ret(\"var\", \"var\", word);\n    } else if ( stream.peek() == \"(\" ) {\n      state.functorName = word;\t\t\t/* tmp state extension */\n      state.functorColumn = stream.column();\n      return ret(\"functor\", \"functor\", word);\n    } else\n      return ret(\"atom\", \"atom\", word);\n  }\n\n  function plTokenString(quote) {\n    return function(stream, state) {\n      if (!nextUntilUnescaped(stream, state, quote)) {\n        state.tokenize = plTokenBase;\n\tif ( stream.peek() == \"(\" ) {\t\t/* 'quoted functor'() */\n\t  var word = stream.current();\n\t  state.functorName = word;\t\t/* tmp state extension */\n\t  return ret(\"functor\", \"functor\", word);\n\t}\n\tif ( stream.peek() == \"{\" && config.dicts ) { /* 'quoted tag'{} */\n\t  var word = stream.current();\n\t  state.tagName = word;\t\t\t/* tmp state extension */\n\t  return ret(\"tag\", \"tag\", word);\n\t}\n      }\n      return ret(quoteType[quote], quoteType[quote]);\n    };\n  }\n\n  function plTokenQuasiQuotation(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"}\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n\tstream.backUp(2);\n\tbreak;\n      }\n      maybeEnd = (ch == \"|\");\n    }\n    return ret(\"qq_content\", \"qq_content\");\n  }\n\n  function plTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t   RETURN OBJECT\t*\n\t\t *******************************/\n\n  return {\n    startState: function() {\n      return {\n        tokenize: plTokenBase,\n\tinBody: false,\n\tgoalStart: false,\n\tlastType: null,\n\tnesting: new Array(),\t\t/* ([{}]) nesting FIXME: copy this */\n\tcurTerm: null,\t\t\t/* term index in metainfo */\n\tcurToken: null\t\t\t/* token in term */\n      };\n    },\n\n    token: function(stream, state) {\n      var nest;\n\n      if ( state.curTerm == null && parserConfig.metainfo ) {\n\tstate.curTerm = 0;\n\tstate.curToken = 0;\n      }\n\n      if ( stream.sol() )\n\tdelete state.commaAtEOL;\n\n      if ( state.tokenize == plTokenBase && stream.eatSpace() ) {\n\tif ( stream.eol() )\n\t  setArgAlignment(state);\n\treturn null;\n      }\n\n      var style = state.tokenize(stream, state);\n\n      if ( stream.eol() )\n\tsetArgAlignment(state);\n\n      if ( type == \"neck\" ) {\n\tstate.inBody = true;\n\tstate.goalStart = true;\n      } else if ( type == \"fullstop\" ) {\n\tstate.inBody = false;\n\tstate.goalStart = false;\n      }\n\n      state.lastType = type;\n\n      if ( typeof(parserConfig.enrich) == \"function\" )\n\tstyle = parserConfig.enrich(stream, state, type, content, style);\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == plTokenComment) return CodeMirror.Pass;\n\n      var nest;\n      if ( (nest=nesting(state)) ) {\n\tif ( nest.closeColumn && !state.commaAtEOL )\n\t  return nest.closeColumn;\n\treturn nest.alignment;\n      }\n      if ( !state.inBody )\n\treturn 0;\n\n      return 4;\n    },\n\n    theme: \"prolog\",\n\n    blockCommentStart: \"/*\",\t\t/* continuecomment.js support */\n    blockCommentEnd: \"*/\",\n    blockCommentContinue: \" * \",\n    lineComment: \"%\",\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-prolog\", \"prolog\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_keys',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n\n\t\t /*******************************\n\t\t *\t    ACTIVE KEYS\t\t*\n\t\t *******************************/\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSupport if-then-else layout like this:\n\ngoal :-\n    (\tCondition\n    ->  IfTrue\n    ;   IfFalse\n    ).\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n\n  CodeMirror.commands.prologStartIfThenElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.state.goalStart == true )\n    { cm.replaceSelection(\"(   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartThen = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    /* FIXME: These functions are copied from prolog.js.  How\n       can we reuse these?\n    */\n    function nesting(state) {\n      var len = state.nesting.length;\n      if ( len > 0 )\n\treturn state.nesting[len-1];\n      return null;\n    }\n\n    function isControl(state) {\t\t/* our terms are goals */\n      var nest = nesting(state);\n      if ( nest ) {\n\tif ( nest.type == \"control\" ) {\n\t  return true;\n\t}\n\treturn false;\n      } else\n\treturn state.inBody;\n    }\n\n    if ( start.ch == token.end &&\n\t token.type == \"operator\" &&\n\t token.string == \"-\" &&\n\t isControl(token.state) )\n    { cm.replaceSelection(\">  \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.start == 0 && start.ch == token.end &&\n\t !/\\S/.test(token.string) )\n    { cm.replaceSelection(\";   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologKeys\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prolog\");\n    if ( val ) {\n      var map = { name:     \"prolog\",\n\t\t  \"'('\":    \"prologStartIfThenElse\",\n\t\t  \"'>'\":    \"prologStartThen\",\n\t\t  \"';'\":    \"prologStartElse\",\n\t\t  \"Ctrl-L\": \"refreshHighlight\"\n\t\t};\n      cm.addKeyMap(map);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_query',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  CodeMirror.commands.prologMaybeFireQuery = function(cm) {\n    var lastl  = cm.lineCount()-1;\n\n    while(lastl >= 0 && cm.getLine(lastl).trim() == \"\")\n      lastl--;\n\n    if ( lastl >= 0 ) {\n      var endc  = cm.getLine(lastl).length;\n      var token = cm.getTokenAt({line:lastl, ch:endc}, true);\n\n      if ( token.type == \"fullstop\" ) {\n\tvar c = cm.getCursor();\n\n\tif ( c.line > lastl || (c.line == lastl && c.ch >= token.end) ) {\n\t  $(\".swish-event-receiver\")\n\t     .trigger(\"feedback\",\n\t\t      { html: \"Use <b>Ctrl+Enter</b> to execute the query\",\n\t\t\towner: $(cm.display.wrapper).closest(\".pane-wrapper\")\n\t\t      });\n\t}\n      }\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologFireQuery = function(cm) {\n\n    return cm.prologFireQuery(cm.getValue());\n  }\n\n  CodeMirror.defineOption(\"prologQuery\", null, function(cm, func, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prologQuery\");\n    if ( typeof(func) == \"function\" ) {\n      var map = { name:         \"prologQuery\",\n\t\t  \"Ctrl-Enter\": \"prologFireQuery\",\n\t\t  \"Enter\":\t\"prologMaybeFireQuery\"\n\t\t};\n      cm.addKeyMap(map);\n      cm.prologFireQuery = func;\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/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nThis  addon  extends  the  \"prolog\"   mode  to  perform  server-assisted\nhighlighting.   Server-assisted   highlighting   provides   a   semantic\nclassification of tokens.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_server',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var DEFAULT_DELAY = 1000;\n  var USE_CHANGES_IF_LONGER_THEN = 1000;\n\n  function State(options) {\n    if (typeof options == \"object\") {\n      this.enabled = options.enabled || false;\n      this.role    = options.role    || \"source\";\n      if ( options.sourceID )\n\tthis.sourceID = options.sourceID;\n      this.url  = { change: options.url + \"change\",\n\t\t    tokens: options.url + \"tokens\",\n\t\t    leave:  options.url + \"leave\",\n\t\t    info:   options.url + \"info\"\n\t\t  },\n      this.delay = options.delay ? options.delay : DEFAULT_DELAY;\n      this.generationFromServer = -1;\n      this.tmo = null;\t\t\t/* timeout handle */\n    }\n  }\n\n  /**\n   * Trap CodeMirror change events. This asks for\n   * serverAssistedHighlight() after a configured delay.  If there\n   * is a mirror on the server, we collect the changes in an array\n   * and post them when we ask for server tokens.  Earlier versions\n   * posted immediately, but this is a waste of resources.  We might\n   * want to restore that behaviour if we want to forward changes to\n   * other users.\n   */\n  function changeEditor(cm, change) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || !state.enabled )\n      return;\n\n    if ( state.tmo ) {\t\t\t/* changing: delay refresh */\n      cm.askRefresh();\n    }\n\n    if ( state.changes !== undefined )\n      state.changes.push(change);\n\n    if ( change.origin == \"setValue\" ||\n\t state.generationFromServer == -1 ) {\n      state.changes = undefined;\t/* force a clean start */\n      cm.serverAssistedHighlight();\n    }\n  }\n\n  function leaveEditor(cm) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || state.uuid == null )\n      return;\n    var uuid = state.uuid;\n    delete state.uuid;\n\n    $.ajax({ url: state.url.leave,\n\t     async: false,  // otherwise it is killed before completion\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     dataType: \"json\",\n\t     data: JSON.stringify({ uuid: uuid\n\t\t\t\t  })\n\t   });\n  }\n\n  /**\n   * control server side highlight support. This can be in three states:\n   * (1) absent, in which case `cm.state.prologHighlightServer` is not\n   * present, (2) disabled and (3) enabled.\n   */\n  CodeMirror.defineOption(\"prologHighlightServer\", false, function(cm, val, old) {\n    function leaveCM() { leaveEditor(cm); }\n\n    if ( cm.state.prologHighlightServer ) {\n      if ( val == null ) {\t\t/* remove the highlight server */\n\tleaveEditor(cm);\n\tcm.off(\"change\", changeEditor);\n\twindow.removeEventListener(\"unload\", leaveCM);\n\tdelete cm.state.prologHighlightServer;\n\tcm.setOption(\"mode\", {name:\"prolog\"});\n      } else {\n\tif ( val.enabled != old.enabled ) {\n\t  cm.state.prologHighlightServer.enabled = val.enabled;\n\t  if ( val.enabled ) {\t\t/* enable the highlight server */\n\t    cm.on(\"change\", changeEditor);\n\t    window.addEventListener(\"unload\", leaveCM);\n\t    if ( cm.lineCount() > 0 ) {\n\t      cm.serverAssistedHighlight(true);\n\t    }\n\t  } else {\t\t\t/* disable */\n\t    leaveEditor(cm);\n\t    cm.off(\"change\", changeEditor);\n\t    window.removeEventListener(\"unload\", leaveCM);\n\t    cm.setOption(\"mode\", {name:\"prolog\"});\n\t  }\n\t}\n      }\n    } else if ( val ) {\t\t\t/* create for the first time */\n      cm.state.prologHighlightServer = new State(val);\n      if ( cm.state.prologHighlightServer.enabled ) {\n\tcm.on(\"change\", changeEditor);\n\twindow.addEventListener(\"unload\", leaveCM);\n\tif ( cm.lineCount() > 0 ) {\n\t  cm.serverAssistedHighlight(true);\n\t}\n      }\n    }\n  });\n\n\n  CodeMirror.prototype.askRefresh = function(time) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null )\n      return;\n\n    if ( time === undefined )\n      time = state.delay;\n\n    if ( state.tmo )\n      clearTimeout(state.tmo);\n\n    state.tmo = setTimeout(function() { cm.serverAssistedHighlight(); },\n\t\t\t   time);\n  };\n\n\n  CodeMirror.prototype.serverAssistedHighlight = function(always) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n    var msg = {};\n\n    state.tmo = null;\n\n    if ( state == null || state.url == null || !state.enabled ||\n\t (cm.isClean(state.generationFromServer) && !always) )\n      return;\n\n    function modeOptions() {\n      var opts = cm.getOption(\"mode\");\n\n      if ( typeof(opts) != \"object\" ) {\n\topts = { name:\"prolog\",\n\t\t enrich:enrichStyle,\n\t\t editor:cm\n\t       };\n      } else if ( !opts.enrich ) {\n\topts.enrich = enrichStyle;\n\topts.editor = cm;\n      }\n      return opts;\n    }\n\n    if ( state.uuid ) {\t\t\t/* server has a mirror */\n      msg.uuid = state.uuid;\n      if ( state.changes == undefined ) {\n\tmsg.text = cm.getValue();\n\tif ( msg.text.length > USE_CHANGES_IF_LONGER_THEN )\n\t  state.changes = [];\n      } else {\n\tmsg.changes = state.changes;\n\tstate.changes = [];\n      }\n    } else {\n      msg.text   = cm.getValue();\n      if ( msg.text.trim() == \"\" )\n\treturn;\n      state.uuid = generateUUID();\n      msg.uuid   = state.uuid;\n    }\n    msg.role = state.role;\n    if ( typeof(state.sourceID) == \"function\" )\n      msg.sourceID = state.sourceID();\n\n    state.generationFromServer = cm.changeGeneration();\n    $.ajax({ url: state.url.tokens,\n\t     dataType: \"json\",\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     data: JSON.stringify(msg),\n\t     success: function(data, status) {\n\t       var opts = modeOptions();\n\t       opts.metainfo = data.tokens;\n\t       cm.setOption(\"mode\", opts);\n\t     },\n\t     error: function(jqXHR) {\n\t       if ( jqXHR.status == 409 ) {\n\t\t delete state.uuid;\n\t\t /* And refresh?  problem is this might get us into\n\t\t  * a loop.  We'd need some info from the server that\n\t\t  * this won't happen again\n\t\t  */\n\t       }\n\t     }\n\t   });\n  }\n\n  CodeMirror.commands.refreshHighlight = function(cm) {\n    cm.serverAssistedHighlight(true);\n  }\n\n  function generateUUID() {\n    var d = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n      .replace(/[xy]/g, function(c) {\n        var r = (d + Math.random()*16)%16 | 0;\n        d = Math.floor(d/16);\n        return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n    });\n    return uuid;\n  }\n\n  var syncOnType = { \"var\": \"var\",\t/* JavaScript Types */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"bqstring\": \"string\",\n\t\t     \"symbol\": \"atom\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"number\": \"number\",\n\t\t     \"string\": \"string\",\n\t\t     \"code\": \"number\",\n\t\t     \"neg-number\": \"number\",\n\t\t     \"pos-number\": \"number\",\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\"\n\t\t   };\n  var serverSync = { \"var\": \"var\",\t/* Server Types */\n\t\t     \"singleton\": \"var\",\n\t\t     \"uatom\": \"var\",\t/* var_prefix in effect */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"string\": \"string\",\n\t\t     \"codes\": \"string\",\n\t\t     \"chars\": \"string\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"control\": \"atom\",\n\t\t     \"meta\": \"atom\",\t/* or number 0-9 */\n\t\t     \"op_type\": \"atom\",\n\t\t     \"int\": \"number\",\n\t\t     \"float\": \"number\",\n\t\t     \"key\": \"atom\",\t/* TBD: or integer */\n\t\t     \"sep\": \"atom\",\t/* : in dict */\n\t\t     \"ext_quant\": \"atom\", /* setof ^-symbol */\n\n\t\t     \"expanded\": \"expanded\",\n\t\t     \"comment_string\":\"string\",\n\t\t     \"identifier\": \"atom\",\n\t\t     \"delimiter\": \"atom\",\n\t\t     \"module\": \"atom\",\n\n\t\t     \"constraint\": \"atom\",\n\n\t\t     \"head_exported\": \"atom\",\n\t\t     \"head_public\": \"atom\",\n\t\t     \"head_extern\": \"atom\",\n\t\t     \"head_dynamic\": \"atom\",\n\t\t     \"head_multifile\": \"atom\",\n\t\t     \"head_unreferenced\": \"atom\",\n\t\t     \"head_hook\": \"atom\",\n\t\t     \"head_meta\": \"atom\",\n\t\t     \"head_constraint\": \"atom\",\n\t\t     \"head_imported\": \"atom\",\n\t\t     \"head_built_in\": \"atom\",\n\t\t     \"head_iso\": \"atom\",\n\t\t     \"head_def_iso\": \"atom\",\n\t\t     \"head_def_swi\": \"atom\",\n\t\t     \"head\": \"atom\",\n\n\t\t     \"goal_built_in\": \"atom\",\n\t\t     \"goal_imported\": \"atom\",\n\t\t     \"goal_autoload\": \"atom\",\n\t\t     \"goal_global\": \"atom\",\n\t\t     \"goal_undefined\": \"atom\",\n\t\t     \"goal_thread_local\": \"atom\",\n\t\t     \"goal_dynamic\": \"atom\",\n\t\t     \"goal_multifile\": \"atom\",\n\t\t     \"goal_expanded\": \"atom\",\n\t\t     \"goal_extern\": \"atom\",\n\t\t     \"goal_recursion\": \"atom\",\n\t\t     \"goal_meta\": \"atom\",\n\t\t     \"goal_foreign\": \"atom\",\n\t\t     \"goal_local\": \"atom\",\n\t\t     \"goal_constraint\": \"atom\",\n\t\t     \"goal_not_callable\": \"atom\",\n\n\t\t     \"xpce_method\": \"functor\",\n\t\t     \"xpce_class_builtin\":\"atom\",\n\t\t     \"xpce_class_lib\":\"atom\",\n\t\t     \"xpce_class_user\":\"atom\",\n\t\t     \"xpce_class_undef\":\"atom\",\n\n\t\t     \"option_name\": \"atom\",\n\t\t     \"no_option_name\": \"atom\",\n\t\t     \"flag_name\": \"atom\",\n\t\t     \"no_flag_name\": \"atom\",\n\n\t\t     \"file_no_depends\": \"atom\",\n\t\t     \"file\": \"atom\",\n\t\t     \"nofile\": \"atom\",\n\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"qq_type\": \"atom\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\",\n\n\t\t     \"string_terminal\": \"string\",\n\n\t\t     \"html\": \"functor\",\n\t\t     \"entity\": \"atom\",\n\t\t     \"html_attribute\": \"functor\",\n\t\t     \"sgml_attr_function\": \"atom\",\n\t\t     \"http_location_for_id\": \"atom\",\n\t\t     \"http_no_location_for_id\": \"atom\"\n\t\t   };\n\n  /* Enrich the style using the token list from the server.\n\n  @param stream  is the CM input stream\n  @param state   is the mode state object\n  @param type    is the syntactic category detected by the mode\n  @param content is the textual content of the token (if any)\n  @param style   is the style determined by the mode.\n  */\n\n  function enrichStyle(stream, state, type, content, style) {\n    var parserConfig = this;\n\n    /* serverToken(state) returns the server token at\n       state.curTerm.curToken or null\n    */\n\n    function serverToken(state) {\n      var term = parserConfig.metainfo[state.curTerm];\n      if ( !term ) return null;\n      var token = term[state.curToken];\n      if ( !token ) return null;\n\n      return token;\n    }\n\n    /* outOfSync() is called whenever we lost synchronization.  It\n       records the position where we lost sync and asks the server\n       for a fresh analysis.\n    */\n\n    function outOfSync() {\n      if ( !state.outOfSync ) {\n\tconsole.log(\"Mismatch: (\"+content+\") \"+type+\"/\"+token.type);\n\tstate.outOfSync = { okToken:       state.curToken,\n\t\t\t    okTerm:        state.curTerm,\n\t\t\t    skippedTerms:  0,\n\t\t\t    skippedTokens: [],\n\t\t\t  };\n      }\n      parserConfig.editor.askRefresh();\n    }\n\n    /* reSync() tries to re-synchronize after we lost synchronization\n       with the server due to local edits.  If successful, it clears\n       state.outOfSync and returns the enriched token.  Else it returns\n       null.\n\n       Data to work from:\n\n\t state.outOfSync.skipped: skipped tokens since out-of-sync or\n\t\tlast term\n\t state.outOfSync.skippedTerms: number of fullstop seen since\n\t\twe lost synchronisation\n    */\n\n    function reSync() {\n      var oos = state.outOfSync;\n      var resyncState = { curToken: oos.okToken,\n\t\t\t  curTerm:  oos.okTerm\n\t\t\t};\n\n      /* TBD */\n      if ( oos.skippedTerms ) {\n\n      } else {\n      }\n\n      return null;\n    }\n\n\n    /* match the next token.  It is possible that the server has combined\n       several tokens into one logical unit.  In that case the token is\n       merely a prefix of what the server returned and we try to eat the\n       remainder.  Examples are files specifications such as\n       library(lists).\n    */\n\n    function matchTokenText(tokenText) {\n      var start;\n\n      if ( content == tokenText )\n\treturn true;\n\n      if ( (start=tokenText.lastIndexOf(content,1)) >= 0 ) {\n\tvar left = tokenText.substring(content.length+start);\n\tfor(var i=0; i<left.length; i++) {\n\t  if ( !stream.eat(left.charAt(i)) ) {\n\t    stream.backUp(i);\n\t    return false;\n\t  }\n\t}\n\treturn true;\n      }\n\n      return false;\n    }\n\n    /**\n     * Test whether we are nested in quoted material.  That happens if\n     * a newline appears in the quoted value, where our CodeMirror\n     * tokeniser gives multiple \"string\", etc. tokens, while the server\n     * only gives one, so we should not increment the server curToken.\n     */\n    function isQuoted(nesting) {\n      var last = nesting.slice(-1)[0];\n      return last && last.type == \"quoted\";\n    }\n\n    /**\n     * Matches the server token `token` to the current token and updates\n     * state.curToken and/or state.curTerm if the two matches.\n     *\n     * @param {Object} token is the next token from the server array\n     * @param {Object} state is the mode state object\n     * @returns {String|undefined} enriched style, the original style\n     * or `undefined` if the mode token does not match the server token.\n    */\n\n    function matchToken(token, state) {\n      if ( token ) {\n\tif ( syncOnType[type] ) {\n\t  if ( token.text && content ) {\n\t    if ( matchTokenText(token.text) ) {\n\t      state.curToken++;\n\t      return token.type;\n\t    }\n\n\t    return undefined;\n\t  } else if ( syncOnType[type] == serverSync[token.type] ) {\n\t    if ( type == \"fullstop\" ) {\n\t      state.curTerm++;\n\t      state.curToken = 0;\n\t    } else if ( !isQuoted(state.nesting) ) {\n\t      state.curToken++;\n\t    }\n\t    return token.type;\n\t  } else if ( syncOnType[type] == token.base ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"qatom\" && serverSync[token.type] == \"atom\" ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"number\" && token.type == \"meta\" ) {\n\t    state.curToken++;\t/* 0-9 as meta_predicate arguments */\n\t    return token.type;\n\t  } else if ( type == \"neg-number\" &&\n\t\t      token.text && token.text == \"-\" ) {\n\t\t/* HACK: A-1 is tokenised as \"var\" \"neg-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  } else if ( type == \"pos-number\" &&\n\t\t      token.text && token.text == \"+\" ) {\n\t\t/* HACK: A+1 is tokenised as \"var\" \"pos-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  }\n\t} else if ( content && token.text == content ) {\n\t  state.curToken++;\t\t/* ,; are not synced */\n\t  return token.type;\n\t} else {\n\t  return style;\t\t\t/* not-synced client token */\n\t}\n      }\n\n      return undefined;\n    }\n\n    /* enrichStyle() body */\n\n    if ( state.curTerm != null ) {\n      var token;\n      var serverStyle;\n\n      //console.log(type,style,content,state);\n\n      if ( state.syntax_error ) {\t\t/* error state; recap after . */\n\tif ( type == \"fullstop\" ) {\n\t  parserConfig.editor.askRefresh();\n\t  delete state.syntax_error;\n\t}\n\treturn style;\n      }\n\n      if ( state.outOfSync ) {\t\t\t/* lost synchronization */\n\tvar oos = state.outOfSync;\n\n\tif ( oos.skippedTerms <= 3 ) {\n\t  oos.skippedTokens.push({ type:    type,\n\t\t\t           style:   style,\n\t\t\t\t   content: content\n\t\t\t         });\n\n\t  if ( (serverStyle=reSync()) ) {\n\t    return serverStyle;\t\t\t/* re-synchronized! */\n\t  } else if ( type == \"fullstop\" ) {\n\t    oos.skippedTokens = [];\n\t    oos.skippedTerms++;\n\t  }\n\t}\n\n\treturn style;\n      }\n\n      if ( !(token=serverToken(state)) ) {\n\tparserConfig.editor.askRefresh();\t/* more text added at the end */\n\treturn style;\n      }\n\n      //console.log(\"Enrich: (\"+content+\") \"+type+\"/\"+token.type);\n\n      if ( (serverStyle=matchToken(token, state)) !== undefined ) {\n\treturn serverStyle;\n      } else if ( token.type == \"syntax_error\" ) {\n\tstate.syntax_error = true;\n\tstate.curToken = 0;\n\tstate.curTerm++;\n\treturn style;\n      } else {\n\toutOfSync();\n\treturn style + \" outofsync\";\n      }\n    }\n\n    return style;\n  }\n\n\t\t /*******************************\n\t\t *\t  FETCH ENRICHED\t*\n\t\t *******************************/\n\n  CodeMirror.prototype.getEnrichedToken = function(token) {\n    if ( token.state.curTerm != null && token.state.curToken != null )\n    { var state = this.getOption(\"mode\");\n      var terminfo;\n\n      if ( state.metainfo && (terminfo=state.metainfo[token.state.curTerm]) )\n\treturn terminfo[token.state.curToken-1];\n    }\n\n    return undefined;\n  }\n\n  /**\n   * @param {Object} [elem] is the element that will be filled with\n   * the token information.  If not provided, a `<span>` of class\n   * `token-info` is returned.\n   * @returns {Object} DOM object providing info that will be filled\n   * later from the ajax call.\n   */\n  CodeMirror.prototype.tokenInfo = function(token, elem) {\n    var state = this.state.prologHighlightServer;\n\n    if ( !elem )\n      elem = $($.el.span({class:\"token-info\"}, \"...\"));\n\n    $.ajax({ url: state.url.info,\n\t     data: token,\n\t     success: function(data) {\n\t       elem.html(data);\n\t     }\n           });\n\n    return elem[0];\n  }\n\n  /**\n   * @param {Object} token is an enriched token\n   * @returns {Array(Object)} is an array of source references.\n   */\n\n  CodeMirror.prototype.getTokenReferences = function(token) {\n    var result = [];\n\n    function setFile(obj, from) {\n      if ( from && from.indexOf(\"swish://\") == 0 ) {\n\tobj.file = from.substring(8);\n\treturn true;\n      }\n    }\n\n    switch(token.type) {\n      case \"goal_local\":\n\tvar obj = {\n\t  title: \"Source for \"+token.text+\"/\"+token.arity,\n\t  line:  token.line,\n\t  regex: new RegExp(\"\\\\b\"+RegExp.escape(token.text), \"g\"),\n\t  showAllMatches: true\n\t};\n\tsetFile(obj, token.file);\n\tresult.push(obj);\n\tbreak;\n      case \"file\":\n\tvar obj = {};\n\n\tif ( setFile(obj, token.path) ) {\n\t  obj.title = \"Included file \" + obj.file;\n\t  result.push(obj);\n\t}\n        break;\n    }\n\n    return result;\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/xml/xml',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                    'track': true, 'wbr': true, 'menuitem': true},\n  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                     'th': true, 'tr': true},\n  contextGrabbers: {\n    'dd': {'dd': true, 'dt': true},\n    'dt': {'dd': true, 'dt': true},\n    'li': {'li': true},\n    'option': {'option': true, 'optgroup': true},\n    'optgroup': {'optgroup': true},\n    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n    'rp': {'rp': true, 'rt': true},\n    'rt': {'rp': true, 'rt': true},\n    'tbody': {'tbody': true, 'tfoot': true},\n    'td': {'td': true, 'th': true},\n    'tfoot': {'tbody': true},\n    'th': {'td': true, 'th': true},\n    'thead': {'tbody': true, 'tfoot': true},\n    'tr': {'tr': true}\n  },\n  doNotIndent: {\"pre\": true},\n  allowUnquoted: true,\n  allowMissing: true,\n  caseFold: true\n}\n\nvar xmlConfig = {\n  autoSelfClosers: {},\n  implicitlyClosed: {},\n  contextGrabbers: {},\n  doNotIndent: {},\n  allowUnquoted: false,\n  allowMissing: false,\n  allowMissingTagName: false,\n  caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n  var indentUnit = editorConf.indentUnit\n  var config = {}\n  var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n  for (var prop in defaults) config[prop] = defaults[prop]\n  for (var prop in config_) config[prop] = config_[prop]\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n  inText.isInText = true;\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName;\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n          !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else if (config.allowMissingTagName && type == \"endTag\") {\n      setStyle = \"tag bracket\";\n      return attrState(type, stream, state);\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n        popContext(state);\n      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else if (config.allowMissingTagName && type == \"endTag\") {\n      setStyle = \"tag bracket\";\n      return closeState(type, stream, state);\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          config.autoSelfClosers.hasOwnProperty(tagName)) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!config.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function(baseIndent) {\n      var state = {tokenize: inText,\n                   state: baseState,\n                   indented: baseIndent || 0,\n                   tagName: null, tagStart: null,\n                   context: null}\n      if (baseIndent != null) state.baseIndent = baseIndent\n      return state\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (config.multilineTagIndentPastTag !== false)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n      }\n      if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = config.contextGrabbers[context.tagName];\n          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && context.prev && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return state.baseIndent || 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: config.htmlMode ? \"html\" : \"xml\",\n    helperType: config.htmlMode ? \"html\" : \"xml\",\n\n    skipAttribute: function(state) {\n      if (state.state == attrValueState)\n        state.state = attrState\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\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(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/meta',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.modeInfo = [\n    {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n    {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"asc\", \"pgp\", \"sig\"]},\n    {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n    {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n    {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n    {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\", \"ino\"]},\n    {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n    {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n    {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\"]},\n    {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n    {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n    {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n    {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists.txt$/},\n    {name: \"CoffeeScript\", mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"], mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n    {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n    {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n    {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n    {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n    {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n    {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n    {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n    {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n    {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n    {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n    {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n    {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n    {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n    {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n    {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n    {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n    {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n    {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n    {name: \"Embedded Javascript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n    {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n    {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n    {name: \"Esper\", mime: \"text/x-esper\", mode: \"sql\"},\n    {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n    {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n    {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n    {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\"]},\n    {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n    {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n    {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n    {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history).md$/i},\n    {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n    {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n    {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n    {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n    {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n    {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n    {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n    {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n    {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"], alias: [\"xhtml\"]},\n    {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n    {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n    {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n    {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n    {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n    {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n     mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n    {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n    {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n    {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n    {name: \"Jinja2\", mime: \"null\", mode: \"jinja2\"},\n    {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"]},\n    {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n    {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n    {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n    {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n    {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n    {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n    {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\"]},\n    {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n    {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n    {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n    {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n    {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n    {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n    {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n    {name: \"NTriples\", mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n     mode: \"ntriples\", ext: [\"nt\", \"nq\"]},\n    {name: \"Objective-C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\", \"mm\"], alias: [\"objective-c\", \"objc\"]},\n    {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n    {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n    {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n    {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n    {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n    {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n    {name: \"PHP\", mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"], mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]},\n    {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n    {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n    {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n    {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n    {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n    {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n    {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n    {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n    {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n    {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n    {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n    {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n    {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n    {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n    {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n    {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n    {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n    {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n    {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n    {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n    {name: \"Shell\", mimes: [\"text/x-sh\", \"application/x-sh\"], mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n    {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n    {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n    {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n    {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n    {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n    {name: \"SML\", mime: \"text/x-sml\", mode: \"mllike\", ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]},\n    {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n    {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n    {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n    {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n    {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n    {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n    {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n    {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n    {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n    {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\", \"tex\"], alias: [\"tex\"]},\n    {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\", \"sv\", \"svh\"]},\n    {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n    {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n    {name: \"TiddlyWiki \", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n    {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n    {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n    {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n    {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n    {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n    {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n    {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n    {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n    {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n    {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n    {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n    {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n    {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n    {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n    {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n    {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n    {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n    {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n    {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n    {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n    {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n    {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n    {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n    {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]}\n  ];\n  // Ensure all modes have a mime property for backwards compatibility\n  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n    var info = CodeMirror.modeInfo[i];\n    if (info.mimes) info.mime = info.mimes[0];\n  }\n\n  CodeMirror.findModeByMIME = function(mime) {\n    mime = mime.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.mime == mime) return info;\n      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n        if (info.mimes[j] == mime) return info;\n    }\n    if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n    if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n  };\n\n  CodeMirror.findModeByExtension = function(ext) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.ext) for (var j = 0; j < info.ext.length; j++)\n        if (info.ext[j] == ext) return info;\n    }\n  };\n\n  CodeMirror.findModeByFileName = function(filename) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.file && info.file.test(filename)) return info;\n    }\n    var dot = filename.lastIndexOf(\".\");\n    var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n    if (ext) return CodeMirror.findModeByExtension(ext);\n  };\n\n  CodeMirror.findModeByName = function(name) {\n    name = name.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.name.toLowerCase() == name) return info;\n      if (info.alias) for (var j = 0; j < info.alias.length; j++)\n        if (info.alias[j].toLowerCase() == name) return info;\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(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/markdown/markdown',[\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n  var htmlModeMissing = htmlMode.name == \"null\"\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  if (modeCfg.emoji === undefined)\n    modeCfg.emoji = false;\n\n  if (modeCfg.fencedCodeBlockHighlighting === undefined)\n    modeCfg.fencedCodeBlockHighlighting = true;\n\n  if (modeCfg.xml === undefined)\n    modeCfg.xml = true;\n\n  // Allow token types to be overridden by user-provided token types.\n  if (modeCfg.tokenTypeOverrides === undefined)\n    modeCfg.tokenTypeOverrides = {};\n\n  var tokenTypes = {\n    header: \"header\",\n    code: \"comment\",\n    quote: \"quote\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    hr: \"hr\",\n    image: \"image\",\n    imageAltText: \"image-alt-text\",\n    imageMarker: \"image-marker\",\n    formatting: \"formatting\",\n    linkInline: \"link\",\n    linkEmail: \"link\",\n    linkText: \"link\",\n    linkHref: \"string\",\n    em: \"em\",\n    strong: \"strong\",\n    strikethrough: \"strikethrough\",\n    emoji: \"builtin\"\n  };\n\n  for (var tokenType in tokenTypes) {\n    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n    }\n  }\n\n  var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n  ,   listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n  ,   setextHeaderRE = /^ *(?:\\={1,}|-{1,})\\s*$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n  ,   fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w+#-]*)[^\\n`]*$/\n  ,   linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n  ,   punctuation = /[!\\\"#$%&\\'()*+,\\-\\.\\/:;<=>?@\\[\\\\\\]^_`{|}~—]/\n  ,   expandedTab = \"    \" // CommonMark specifies tab as 4 spaces\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n  function lineIsEmpty(line) {\n    return !line || !/\\S/.test(line.string)\n  }\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    state.linkHref = false;\n    state.linkText = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    // Reset state.indentedCode\n    state.indentedCode = false;\n    if (state.f == htmlBlock) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.prevLine = state.thisLine\n    state.thisLine = {stream: null}\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n    var firstTokenOnLine = stream.column() === state.indentation;\n    var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n    var prevLineIsIndentedCode = state.indentedCode;\n    var prevLineIsHr = state.prevLine.hr;\n    var prevLineIsList = state.list !== false;\n    var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n    state.indentedCode = false;\n\n    var lineIndentation = state.indentation;\n    // compute once per line (on first token)\n    if (state.indentationDiff === null) {\n      state.indentationDiff = state.indentation;\n      if (prevLineIsList) {\n        // Reset inline styles which shouldn't propagate aross list items\n        state.em = false;\n        state.strong = false;\n        state.code = false;\n        state.strikethrough = false;\n\n        state.list = null;\n        // While this list item's marker's indentation is less than the deepest\n        //  list item's content's indentation,pop the deepest list item\n        //  indentation off the stack, and update block indentation state\n        while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n          state.listStack.pop();\n          if (state.listStack.length) {\n            state.indentation = state.listStack[state.listStack.length - 1];\n          // less than the first list's indent -> the line is no longer a list\n          } else {\n            state.list = false;\n          }\n        }\n        if (state.list !== false) {\n          state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n        }\n      }\n    }\n\n    // not comprehensive (currently only for setext detection purposes)\n    var allowsInlineContinuation = (\n        !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n        (!prevLineIsList || !prevLineIsIndentedCode) &&\n        !state.prevLine.fencedCodeEnd\n    );\n\n    var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n      state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n    var match = null;\n    if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n         state.prevLine.header || prevLineLineIsEmpty)) {\n      stream.skipToEnd();\n      state.indentedCode = true;\n      return tokenTypes.code;\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n      state.quote = 0;\n      state.header = match[1].length;\n      state.thisLine.header = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n      state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n      var listType = match[1] ? \"ol\" : \"ul\";\n\n      state.indentation = lineIndentation + stream.current().length;\n      state.list = true;\n      state.quote = 0;\n\n      // Add this list item's content's indentation to the stack\n      state.listStack.push(state.indentation);\n\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n      state.quote = 0;\n      state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n      // try switching mode\n      state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2]);\n      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = -1\n      return getType(state);\n    // SETEXT has lowest block-scope precedence after HR, so check it after\n    //  the others (code, blockquote, list...)\n    } else if (\n      // if setext set, indicates line after ---/===\n      state.setext || (\n        // line before ---/===\n        (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n        !state.code && !isHr && !linkDefRE.test(stream.string) &&\n        (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n      )\n    ) {\n      if ( !state.setext ) {\n        state.header = match[0].charAt(0) == '=' ? 1 : 2;\n        state.setext = state.header;\n      } else {\n        state.header = state.setext;\n        // has no effect on type so we can reset it now\n        state.setext = 0;\n        stream.skipToEnd();\n        if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      }\n      state.thisLine.header = true;\n      state.f = state.inline;\n      return getType(state);\n    } else if (isHr) {\n      stream.skipToEnd();\n      state.hr = true;\n      state.thisLine.hr = true;\n      return tokenTypes.hr;\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if (!htmlModeMissing) {\n      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n      if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n           (!inner.state.context && inner.state.tokenize.isInText)) ||\n          (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    var currListInd = state.listStack[state.listStack.length - 1] || 0;\n    var hasExitedList = state.indentation < currListInd;\n    var maxFencedEndInd = currListInd + 3;\n    if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      var returnType;\n      if (!hasExitedList) returnType = getType(state)\n      state.localMode = state.localState = null;\n      state.block = blockNormal;\n      state.f = inlineNormal;\n      state.fencedEndRE = null;\n      state.code = 0\n      state.thisLine.fencedCodeEnd = true;\n      if (hasExitedList) return switchBlock(stream, state, state.block);\n      return returnType;\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return tokenTypes.code;\n    }\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(tokenTypes.formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(tokenTypes.linkHref, \"url\");\n    } else { // Only apply inline styles to non-url text\n      if (state.strong) { styles.push(tokenTypes.strong); }\n      if (state.em) { styles.push(tokenTypes.em); }\n      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n      if (state.emoji) { styles.push(tokenTypes.emoji); }\n      if (state.linkText) { styles.push(tokenTypes.linkText); }\n      if (state.code) { styles.push(tokenTypes.code); }\n      if (state.image) { styles.push(tokenTypes.image); }\n      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n    }\n\n    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(tokenTypes.quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(tokenTypes.quote + \"-\" + state.quote);\n      } else {\n        styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listStack.length - 1) % 3;\n      if (!listMod) {\n        styles.push(tokenTypes.list1);\n      } else if (listMod === 1) {\n        styles.push(tokenTypes.list2);\n      } else {\n        styles.push(tokenTypes.list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    var ch = stream.next();\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return tokenTypes.linkHref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      stream.eatWhile('`');\n      var count = stream.current().length\n      if (state.code == 0 && (!state.quote || count == 1)) {\n        state.code = count\n        return getType(state)\n      } else if (count == state.code) { // Must be exact\n        var t = getType(state)\n        state.code = 0\n        return t\n      } else {\n        state.formatting = previousFormatting\n        return getType(state)\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        var formattingEscape = tokenTypes.formatting + \"-escape\";\n        return type ? type + \" \" + formattingEscape : formattingEscape;\n      }\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      state.imageMarker = true;\n      state.image = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n      state.imageMarker = false;\n      state.imageAltText = true\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.imageAltText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      var type = getType(state);\n      state.imageAltText = false;\n      state.image = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '[' && !state.image) {\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkEmail;\n    }\n\n    if (modeCfg.xml && ch === '<' && stream.match(/^(!--|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*>)/i, false)) {\n      var end = stream.string.indexOf(\">\", stream.pos);\n      if (end != -1) {\n        var atts = stream.string.substring(stream.start, end);\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    } else if (ch === \"*\" || ch === \"_\") {\n      var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n      while (len < 3 && stream.eat(ch)) len++\n      var after = stream.peek() || \" \"\n      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n      var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n      var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n      var setEm = null, setStrong = null\n      if (len % 2) { // Em\n        if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setEm = true\n        else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setEm = false\n      }\n      if (len > 1) { // Strong\n        if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setStrong = true\n        else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setStrong = false\n      }\n      if (setStrong != null || setEm != null) {\n        if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n        if (setEm === true) state.em = ch\n        if (setStrong === true) state.strong = ch\n        var t = getType(state)\n        if (setEm === false) state.em = false\n        if (setStrong === false) state.strong = false\n        return t\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match(/^~~/, true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (modeCfg.emoji && ch === \":\" && stream.match(/^[a-z_\\d+-]+:/)) {\n      state.emoji = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n      var retType = getType(state);\n      state.emoji = false;\n      return retType;\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return tokenTypes.linkInline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  var linkRE = {\n    \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n    \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      stream.match(linkRE[endChar])\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(/^\\]:/, true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n    return tokenTypes.linkText;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return tokenTypes.linkHref + \" url\";\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLine: {stream: null},\n        thisLine: {stream: null},\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        code: 0,\n        em: false,\n        strong: false,\n        header: 0,\n        setext: 0,\n        hr: false,\n        taskList: false,\n        list: false,\n        listStack: [],\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false,\n        emoji: false,\n        fencedEndRE: null\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLine: s.prevLine,\n        thisLine: s.thisLine,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkText: s.linkText,\n        linkTitle: s.linkTitle,\n        linkHref: s.linkHref,\n        code: s.code,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        emoji: s.emoji,\n        header: s.header,\n        setext: s.setext,\n        hr: s.hr,\n        taskList: s.taskList,\n        list: s.list,\n        listStack: s.listStack.slice(0),\n        quote: s.quote,\n        indentedCode: s.indentedCode,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside,\n        fencedEndRE: s.fencedEndRE\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream != state.thisLine.stream) {\n        state.header = 0;\n        state.hr = false;\n\n        if (stream.match(/^\\s*$/, true)) {\n          blankLine(state);\n          return null;\n        }\n\n        state.prevLine = state.thisLine\n        state.thisLine = {stream: stream}\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        if (!state.localState) {\n          state.f = state.block;\n          if (state.f != htmlBlock) {\n            var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n            state.indentation = indentation;\n            state.indentationDiff = null;\n            if (indentation > 0) return null;\n          }\n        }\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    indent: function(state, textAfter, line) {\n      if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n      if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n      return CodeMirror.Pass\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/edit/matchbrackets',[\"../../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, config) {\n    var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n    var afterCursor = config && config.afterCursor\n    if (afterCursor == null)\n      afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n\n    // A cursor is defined as between two characters, but in in vim command mode\n    // (i.e. not insert mode), the cursor is visually represented as a\n    // highlighted box on top of the 2nd character. Otherwise, we allow matches\n    // from before or after the cursor.\n    var match = (!afterCursor && pos >= 0 && matching[line.text.charAt(pos)]) ||\n        matching[line.text.charAt(++pos)];\n    if (!match) return null;\n    var dir = match.charAt(1) == \">\" ? 1 : -1;\n    if (config && config.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, 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.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  function doMatchBrackets(cm) {\n    cm.operation(function() {\n      if (cm.state.matchBrackets.currentlyHighlighted) {\n        cm.state.matchBrackets.currentlyHighlighted();\n        cm.state.matchBrackets.currentlyHighlighted = null;\n      }\n      cm.state.matchBrackets.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 (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n        cm.state.matchBrackets.currentlyHighlighted();\n        cm.state.matchBrackets.currentlyHighlighted = null;\n      }\n    }\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, config, oldConfig){\n    // Backwards-compatibility kludge\n    if (oldConfig || typeof config == \"boolean\") {\n      if (!oldConfig) {\n        config = config ? {strict: true} : null\n      } else {\n        oldConfig.strict = config\n        config = oldConfig\n      }\n    }\n    return findMatchingBracket(this, pos, config)\n  });\n  CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n    return scanForBracket(this, pos, dir, style, config);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/continuecomment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function continueComment(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), mode, inserts = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head\n      if (!/\\bcomment\\b/.test(cm.getTokenTypeAt(pos))) return CodeMirror.Pass;\n      var modeHere = cm.getModeAt(pos)\n      if (!mode) mode = modeHere;\n      else if (mode != modeHere) return CodeMirror.Pass;\n\n      var insert = null;\n      if (mode.blockCommentStart && mode.blockCommentContinue) {\n        var line = cm.getLine(pos.line).slice(0, pos.ch)\n        var end = line.lastIndexOf(mode.blockCommentEnd), found\n        if (end != -1 && end == pos.ch - mode.blockCommentEnd.length) {\n          // Comment ended, don't continue it\n        } else if ((found = line.lastIndexOf(mode.blockCommentStart)) > -1 && found > end) {\n          insert = line.slice(0, found)\n          if (/\\S/.test(insert)) {\n            insert = \"\"\n            for (var j = 0; j < found; ++j) insert += \" \"\n          }\n        } else if ((found = line.indexOf(mode.blockCommentContinue)) > -1 && !/\\S/.test(line.slice(0, found))) {\n          insert = line.slice(0, found)\n        }\n        if (insert != null) insert += mode.blockCommentContinue\n      }\n      if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {\n        var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);\n        if (found > -1) {\n          insert = line.slice(0, found);\n          if (/\\S/.test(insert)) insert = null;\n          else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\\s*/)[0];\n        }\n      }\n      if (insert == null) return CodeMirror.Pass;\n      inserts[i] = \"\\n\" + insert;\n    }\n\n    cm.operation(function() {\n      for (var i = ranges.length - 1; i >= 0; i--)\n        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n    });\n  }\n\n  function continueLineCommentEnabled(cm) {\n    var opt = cm.getOption(\"continueComments\");\n    if (opt && typeof opt == \"object\")\n      return opt.continueLineComment !== false;\n    return true;\n  }\n\n  CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"continueComment\");\n    if (val) {\n      var key = \"Enter\";\n      if (typeof val == \"string\")\n        key = val;\n      else if (typeof val == \"object\" && val.key)\n        key = val.key;\n      var map = {name: \"continueComment\"};\n      map[key] = continueComment;\n      cm.addKeyMap(map);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/comment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var noOptions = {};\n  var nonWS = /[^\\s\\u00a0]/;\n  var Pos = CodeMirror.Pos;\n\n  function firstNonWS(str) {\n    var found = str.search(nonWS);\n    return found == -1 ? 0 : found;\n  }\n\n  CodeMirror.commands.toggleComment = function(cm) {\n    cm.toggleComment();\n  };\n\n  CodeMirror.defineExtension(\"toggleComment\", function(options) {\n    if (!options) options = noOptions;\n    var cm = this;\n    var minLine = Infinity, ranges = this.listSelections(), mode = null;\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var from = ranges[i].from(), to = ranges[i].to();\n      if (from.line >= minLine) continue;\n      if (to.line >= minLine) to = Pos(minLine, 0);\n      minLine = from.line;\n      if (mode == null) {\n        if (cm.uncomment(from, to, options)) mode = \"un\";\n        else { cm.lineComment(from, to, options); mode = \"line\"; }\n      } else if (mode == \"un\") {\n        cm.uncomment(from, to, options);\n      } else {\n        cm.lineComment(from, to, options);\n      }\n    }\n  });\n\n  // Rough heuristic to try and detect lines that are part of multi-line string\n  function probablyInsideString(cm, pos, line) {\n    return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n  }\n\n  function getMode(cm, pos) {\n    var mode = cm.getMode()\n    return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n  }\n\n  CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var firstLine = self.getLine(from.line);\n    if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n    var commentString = options.lineComment || mode.lineComment;\n    if (!commentString) {\n      if (options.blockCommentStart || mode.blockCommentStart) {\n        options.fullLines = true;\n        self.blockComment(from, to, options);\n      }\n      return;\n    }\n\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n    var pad = options.padding == null ? \" \" : options.padding;\n    var blankLines = options.commentBlankLines || from.line == to.line;\n\n    self.operation(function() {\n      if (options.indent) {\n        var baseString = null;\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i);\n          var whitespace = line.slice(0, firstNonWS(line));\n          if (baseString == null || baseString.length > whitespace.length) {\n            baseString = whitespace;\n          }\n        }\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i), cut = baseString.length;\n          if (!blankLines && !nonWS.test(line)) continue;\n          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n          self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n        }\n      } else {\n        for (var i = from.line; i < end; ++i) {\n          if (blankLines || nonWS.test(self.getLine(i)))\n            self.replaceRange(commentString + pad, Pos(i, 0));\n        }\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) {\n      if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n        self.lineComment(from, to, options);\n      return;\n    }\n    if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n    var end = Math.min(to.line, self.lastLine());\n    if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n    var pad = options.padding == null ? \" \" : options.padding;\n    if (from.line > end) return;\n\n    self.operation(function() {\n      if (options.fullLines != false) {\n        var lastLineHasText = nonWS.test(self.getLine(end));\n        self.replaceRange(pad + endString, Pos(end));\n        self.replaceRange(startString + pad, Pos(from.line, 0));\n        var lead = options.blockCommentLead || mode.blockCommentLead;\n        if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n          if (i != end || lastLineHasText)\n            self.replaceRange(lead + pad, Pos(i, 0));\n      } else {\n        self.replaceRange(endString, to);\n        self.replaceRange(startString, from);\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n    // Try finding line comments\n    var lineString = options.lineComment || mode.lineComment, lines = [];\n    var pad = options.padding == null ? \" \" : options.padding, didSomething;\n    lineComment: {\n      if (!lineString) break lineComment;\n      for (var i = start; i <= end; ++i) {\n        var line = self.getLine(i);\n        var found = line.indexOf(lineString);\n        if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n        if (found == -1 && nonWS.test(line)) break lineComment;\n        if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n        lines.push(line);\n      }\n      self.operation(function() {\n        for (var i = start; i <= end; ++i) {\n          var line = lines[i - start];\n          var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n          if (pos < 0) continue;\n          if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n          didSomething = true;\n          self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n        }\n      });\n      if (didSomething) return true;\n    }\n\n    // Try block comments\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) return false;\n    var lead = options.blockCommentLead || mode.blockCommentLead;\n    var startLine = self.getLine(start), open = startLine.indexOf(startString)\n    if (open == -1) return false\n    var endLine = end == start ? startLine : self.getLine(end)\n    var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n    var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n    if (close == -1 ||\n        !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n        !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n        self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n      return false;\n\n    // Avoid killing block comments completely outside the selection.\n    // Positions of the last startString before the start of the selection, and the first endString after it.\n    var lastStart = startLine.lastIndexOf(startString, from.ch);\n    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n    if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n    // Positions of the first endString after the end of the selection, and the last startString before it.\n    firstEnd = endLine.indexOf(endString, to.ch);\n    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n    if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n    self.operation(function() {\n      self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n                        Pos(end, close + endString.length));\n      var openEnd = open + startString.length;\n      if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n      self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n      if (lead) for (var i = start + 1; i <= end; ++i) {\n        var line = self.getLine(i), found = line.indexOf(lead);\n        if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n        var foundEnd = found + lead.length;\n        if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n        self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n      }\n    });\n    return true;\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-hint',[\"../../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    options = parseOptions(this, this.getCursor(\"start\"), options);\n    var selections = this.listSelections()\n    if (selections.length > 1) return;\n    // By default, don't allow completion when something is selected.\n    // A hint function can have a `supportsSelection` property to\n    // indicate that it can handle selections.\n    if (this.somethingSelected()) {\n      if (!options.hint.supportsSelection) return;\n      // Don't try with cross-line selections\n      for (var i = 0; i < selections.length; i++)\n        if (selections[i].head.line != selections[i].anchor.line) return;\n    }\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    if (!completion.options.hint) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    completion.update(true);\n  });\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.widget = null;\n    this.debounce = 0;\n    this.tick = 0;\n    this.startPos = this.cm.getCursor(\"start\");\n    this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n    var self = this;\n    cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n  }\n\n  var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n    return setTimeout(fn, 1000/60);\n  };\n  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n      this.tick = null;\n      this.cm.off(\"cursorActivity\", this.activityFunc);\n\n      if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n      if (this.widget) this.widget.close();\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    cursorActivity: function() {\n      if (this.debounce) {\n        cancelAnimationFrame(this.debounce);\n        this.debounce = 0;\n      }\n\n      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n      if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n          pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n          (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n        this.close();\n      } else {\n        var self = this;\n        this.debounce = requestAnimationFrame(function() {self.update();});\n        if (this.widget) this.widget.disable();\n      }\n    },\n\n    update: function(first) {\n      if (this.tick == null) return\n      var self = this, myTick = ++this.tick\n      fetchHints(this.options.hint, this.cm, this.options, function(data) {\n        if (self.tick == myTick) self.finishUpdate(data, first)\n      })\n    },\n\n    finishUpdate: function(data, first) {\n      if (this.data) CodeMirror.signal(this.data, \"update\");\n\n      var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n      if (this.widget) this.widget.close();\n\n      this.data = data;\n\n      if (data && data.list.length) {\n        if (picked && data.list.length == 1) {\n          this.pick(data, 0);\n        } else {\n          this.widget = new Widget(this, data);\n          CodeMirror.signal(data, \"shown\");\n        }\n      }\n    }\n  };\n\n  function parseOptions(cm, pos, options) {\n    var editor = 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    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n    return out;\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    this.picked = false;\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    var scrolls = hints.scrollHeight > hints.clientHeight + 1\n    var startScroll = cm.getScrollInfo();\n\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    if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n      node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\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    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[this.selectedHint], hints.childNodes[this.selectedHint]);\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    disable: function() {\n      this.completion.cm.removeKeyMap(this.keyMap);\n      var widget = this;\n      this.keyMap = {Enter: function() { widget.picked = true; }};\n      this.completion.cm.addKeyMap(this.keyMap);\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  function applicableHelpers(cm, helpers) {\n    if (!cm.somethingSelected()) return helpers\n    var result = []\n    for (var i = 0; i < helpers.length; i++)\n      if (helpers[i].supportsSelection) result.push(helpers[i])\n    return result\n  }\n\n  function fetchHints(hint, cm, options, callback) {\n    if (hint.async) {\n      hint(cm, callback, options)\n    } else {\n      var result = hint(cm, options)\n      if (result && result.then) result.then(callback)\n      else callback(result)\n    }\n  }\n\n  function resolveAutoHints(cm, pos) {\n    var helpers = cm.getHelpers(pos, \"hint\"), words\n    if (helpers.length) {\n      var resolved = function(cm, callback, options) {\n        var app = applicableHelpers(cm, helpers);\n        function run(i) {\n          if (i == app.length) return callback(null)\n          fetchHints(app[i], cm, options, function(result) {\n            if (result && result.list.length > 0) callback(result)\n            else run(i + 1)\n          })\n        }\n        run(0)\n      }\n      resolved.async = true\n      resolved.supportsSelection = true\n      return resolved\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n    } else if (CodeMirror.hint.anyword) {\n      return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n    } else {\n      return function() {}\n    }\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", {\n    resolve: resolveAutoHints\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n    var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n    if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n      term = token.string.substr(0, cur.ch - token.start)\n    } else {\n      term = \"\"\n      from = cur\n    }\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, term.length) == term)\n        found.push(word);\n    }\n\n    if (found.length) return {list: found, from: from, to: to};\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: true,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/anyword-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var WORD = /[\\w$]+/, RANGE = 500;\n\n  CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n    var word = options && options.word || WORD;\n    var range = options && options.range || RANGE;\n    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n    var end = cur.ch, start = end;\n    while (start && word.test(curLine.charAt(start - 1))) --start;\n    var curWord = start != end && curLine.slice(start, end);\n\n    var list = options && options.list || [], seen = {};\n    var re = new RegExp(word.source, \"g\");\n    for (var dir = -1; dir <= 1; dir += 2) {\n      var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n      for (; line != endLine; line += dir) {\n        var text = editor.getLine(line), m;\n        while (m = re.exec(text)) {\n          if (line == cur.line && m[0] === curWord) continue;\n          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n            seen[m[0]] = true;\n            list.push(m[0]);\n          }\n        }\n      }\n    }\n    return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, 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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/display/placeholder',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      cm.on(\"swapDoc\", onChange);\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      cm.off(\"swapDoc\", onChange);\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.style.direction = cm.getOption(\"direction\");\n    elt.className = \"CodeMirror-placeholder\";\n    var placeHolder = cm.getOption(\"placeholder\")\n    if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n    elt.appendChild(placeHolder)\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\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(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/runmode/runmode',[\"../../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.appendChild) {\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\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(require(\"../../lib/codemirror\"))\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/searchcursor',[\"../../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 regexpFlags(regexp) {\n    var flags = regexp.flags\n    return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n      + (regexp.global ? \"g\" : \"\")\n      + (regexp.multiline ? \"m\" : \"\")\n  }\n\n  function ensureFlags(regexp, flags) {\n    var current = regexpFlags(regexp), target = current\n    for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n      target += flags.charAt(i)\n    return current == target ? regexp : new RegExp(regexp.source, target)\n  }\n\n  function maybeMultiline(regexp) {\n    return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n  }\n\n  function searchRegexpForward(doc, regexp, start) {\n    regexp = ensureFlags(regexp, \"g\")\n    for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n      regexp.lastIndex = ch\n      var string = doc.getLine(line), match = regexp.exec(string)\n      if (match)\n        return {from: Pos(line, match.index),\n                to: Pos(line, match.index + match[0].length),\n                match: match}\n    }\n  }\n\n  function searchRegexpForwardMultiline(doc, regexp, start) {\n    if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n    regexp = ensureFlags(regexp, \"gm\")\n    var string, chunk = 1\n    for (var line = start.line, last = doc.lastLine(); line <= last;) {\n      // This grows the search buffer in exponentially-sized chunks\n      // between matches, so that nearby matches are fast and don't\n      // require concatenating the whole document (in case we're\n      // searching for something that has tons of matches), but at the\n      // same time, the amount of retries is limited.\n      for (var i = 0; i < chunk; i++) {\n        if (line > last) break\n        var curLine = doc.getLine(line++)\n        string = string == null ? curLine : string + \"\\n\" + curLine\n      }\n      chunk = chunk * 2\n      regexp.lastIndex = start.ch\n      var match = regexp.exec(string)\n      if (match) {\n        var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n        var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n        return {from: Pos(startLine, startCh),\n                to: Pos(startLine + inside.length - 1,\n                        inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n                match: match}\n      }\n    }\n  }\n\n  function lastMatchIn(string, regexp) {\n    var cutOff = 0, match\n    for (;;) {\n      regexp.lastIndex = cutOff\n      var newMatch = regexp.exec(string)\n      if (!newMatch) return match\n      match = newMatch\n      cutOff = match.index + (match[0].length || 1)\n      if (cutOff == string.length) return match\n    }\n  }\n\n  function searchRegexpBackward(doc, regexp, start) {\n    regexp = ensureFlags(regexp, \"g\")\n    for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n      var string = doc.getLine(line)\n      if (ch > -1) string = string.slice(0, ch)\n      var match = lastMatchIn(string, regexp)\n      if (match)\n        return {from: Pos(line, match.index),\n                to: Pos(line, match.index + match[0].length),\n                match: match}\n    }\n  }\n\n  function searchRegexpBackwardMultiline(doc, regexp, start) {\n    regexp = ensureFlags(regexp, \"gm\")\n    var string, chunk = 1\n    for (var line = start.line, first = doc.firstLine(); line >= first;) {\n      for (var i = 0; i < chunk; i++) {\n        var curLine = doc.getLine(line--)\n        string = string == null ? curLine.slice(0, start.ch) : curLine + \"\\n\" + string\n      }\n      chunk *= 2\n\n      var match = lastMatchIn(string, regexp)\n      if (match) {\n        var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n        var startLine = line + before.length, startCh = before[before.length - 1].length\n        return {from: Pos(startLine, startCh),\n                to: Pos(startLine + inside.length - 1,\n                        inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n                match: match}\n      }\n    }\n  }\n\n  var doFold, noFold\n  if (String.prototype.normalize) {\n    doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n    noFold = function(str) { return str.normalize(\"NFD\") }\n  } else {\n    doFold = function(str) { return str.toLowerCase() }\n    noFold = function(str) { return str }\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, foldFunc) {\n    if (orig.length == folded.length) return pos\n    for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n      if (min == max) return min\n      var mid = (min + max) >> 1\n      var len = foldFunc(orig.slice(0, mid)).length\n      if (len == pos) return mid\n      else if (len > pos) max = mid\n      else min = mid + 1\n    }\n  }\n\n  function searchStringForward(doc, query, start, caseFold) {\n    // Empty string would match anything and never progress, so we\n    // define it to match nothing instead.\n    if (!query.length) return null\n    var fold = caseFold ? doFold : noFold\n    var lines = fold(query).split(/\\r|\\n\\r?/)\n\n    search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n      var orig = doc.getLine(line).slice(ch), string = fold(orig)\n      if (lines.length == 1) {\n        var found = string.indexOf(lines[0])\n        if (found == -1) continue search\n        var start = adjustPos(orig, string, found, fold) + ch\n        return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n                to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n      } else {\n        var cutFrom = string.length - lines[0].length\n        if (string.slice(cutFrom) != lines[0]) continue search\n        for (var i = 1; i < lines.length - 1; i++)\n          if (fold(doc.getLine(line + i)) != lines[i]) continue search\n        var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n        if (endString.slice(0, lastLine.length) != lastLine) continue search\n        return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n                to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n      }\n    }\n  }\n\n  function searchStringBackward(doc, query, start, caseFold) {\n    if (!query.length) return null\n    var fold = caseFold ? doFold : noFold\n    var lines = fold(query).split(/\\r|\\n\\r?/)\n\n    search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n      var orig = doc.getLine(line)\n      if (ch > -1) orig = orig.slice(0, ch)\n      var string = fold(orig)\n      if (lines.length == 1) {\n        var found = string.lastIndexOf(lines[0])\n        if (found == -1) continue search\n        return {from: Pos(line, adjustPos(orig, string, found, fold)),\n                to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n      } else {\n        var lastLine = lines[lines.length - 1]\n        if (string.slice(0, lastLine.length) != lastLine) continue search\n        for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n          if (fold(doc.getLine(start + i)) != lines[i]) continue search\n        var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n        if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n        return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n                to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n      }\n    }\n  }\n\n  function SearchCursor(doc, query, pos, options) {\n    this.atOccurrence = false\n    this.doc = doc\n    pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n    this.pos = {from: pos, to: pos}\n\n    var caseFold\n    if (typeof options == \"object\") {\n      caseFold = options.caseFold\n    } else { // Backwards compat for when caseFold was the 4th argument\n      caseFold = options\n      options = null\n    }\n\n    if (typeof query == \"string\") {\n      if (caseFold == null) caseFold = false\n      this.matches = function(reverse, pos) {\n        return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n      }\n    } else {\n      query = ensureFlags(query, \"gm\")\n      if (!options || options.multiline !== false)\n        this.matches = function(reverse, pos) {\n          return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n        }\n      else\n        this.matches = function(reverse, pos) {\n          return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\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 result = this.matches(reverse, this.doc.clipPos(reverse ? this.pos.from : this.pos.to))\n\n      // Implements weird auto-growing behavior on null-matches for\n      // backwards-compatiblity with the vim code (unfortunately)\n      while (result && CodeMirror.cmpPos(result.from, result.to) == 0) {\n        if (reverse) {\n          if (result.from.ch) result.from = Pos(result.from.line, result.from.ch - 1)\n          else if (result.from.line == this.doc.firstLine()) result = null\n          else result = this.matches(reverse, this.doc.clipPos(Pos(result.from.line - 1)))\n        } else {\n          if (result.to.ch < this.doc.getLine(result.to.line).length) result.to = Pos(result.to.line, result.to.ch + 1)\n          else if (result.to.line == this.doc.lastLine()) result = null\n          else result = this.matches(reverse, Pos(result.to.line + 1, 0))\n        }\n      }\n\n      if (result) {\n        this.pos = result\n        this.atOccurrence = true\n        return this.pos.match || true\n      } else {\n        var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n        this.pos = {from: end, to: end}\n        return this.atOccurrence = false\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, origin) {\n      if (!this.atOccurrence) return\n      var lines = CodeMirror.splitLines(newText)\n      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\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  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 = []\n    var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n    while (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\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/dialog/dialog',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function dialogDiv(cm, template, bottom) {\n    var wrap = cm.getWrapperElement();\n    var dialog;\n    dialog = wrap.appendChild(document.createElement(\"div\"));\n    if (bottom)\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n    else\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n    if (typeof template == \"string\") {\n      dialog.innerHTML = template;\n    } else { // Assuming it's a detached DOM element.\n      dialog.appendChild(template);\n    }\n    return dialog;\n  }\n\n  function closeNotification(cm, newVal) {\n    if (cm.state.currentNotificationClose)\n      cm.state.currentNotificationClose();\n    cm.state.currentNotificationClose = newVal;\n  }\n\n  CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n    if (!options) options = {};\n\n    closeNotification(this, null);\n\n    var dialog = dialogDiv(this, template, options.bottom);\n    var closed = false, me = this;\n    function close(newVal) {\n      if (typeof newVal == 'string') {\n        inp.value = newVal;\n      } else {\n        if (closed) return;\n        closed = true;\n        dialog.parentNode.removeChild(dialog);\n        me.focus();\n\n        if (options.onClose) options.onClose(dialog);\n      }\n    }\n\n    var inp = dialog.getElementsByTagName(\"input\")[0], button;\n    if (inp) {\n      inp.focus();\n\n      if (options.value) {\n        inp.value = options.value;\n        if (options.selectValueOnOpen !== false) {\n          inp.select();\n        }\n      }\n\n      if (options.onInput)\n        CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n      if (options.onKeyUp)\n        CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n      CodeMirror.on(inp, \"keydown\", function(e) {\n        if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n        if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n          inp.blur();\n          CodeMirror.e_stop(e);\n          close();\n        }\n        if (e.keyCode == 13) callback(inp.value, e);\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n    } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n      CodeMirror.on(button, \"click\", function() {\n        close();\n        me.focus();\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n      button.focus();\n    }\n    return close;\n  });\n\n  CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n    closeNotification(this, null);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var buttons = dialog.getElementsByTagName(\"button\");\n    var closed = false, me = this, blurring = 1;\n    function close() {\n      if (closed) return;\n      closed = true;\n      dialog.parentNode.removeChild(dialog);\n      me.focus();\n    }\n    buttons[0].focus();\n    for (var i = 0; i < buttons.length; ++i) {\n      var b = buttons[i];\n      (function(callback) {\n        CodeMirror.on(b, \"click\", function(e) {\n          CodeMirror.e_preventDefault(e);\n          close();\n          if (callback) callback(me);\n        });\n      })(callbacks[i]);\n      CodeMirror.on(b, \"blur\", function() {\n        --blurring;\n        setTimeout(function() { if (blurring <= 0) close(); }, 200);\n      });\n      CodeMirror.on(b, \"focus\", function() { ++blurring; });\n    }\n  });\n\n  /*\n   * openNotification\n   * Opens a notification, that can be closed with an optional timer\n   * (default 5000ms timer) and always closes on click.\n   *\n   * If a notification is opened while another is opened, it will close the\n   * currently opened one and open the new one immediately.\n   */\n  CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n    closeNotification(this, close);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var closed = false, doneTimer;\n    var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n    function close() {\n      if (closed) return;\n      closed = true;\n      clearTimeout(doneTimer);\n      dialog.parentNode.removeChild(dialog);\n    }\n\n    CodeMirror.on(dialog, 'click', function(e) {\n      CodeMirror.e_preventDefault(e);\n      close();\n    });\n\n    if (duration)\n      doneTimer = setTimeout(close, duration);\n\n    return close;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/search',[\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function searchOverlay(query, caseInsensitive) {\n    if (typeof query == \"string\")\n      query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n    else if (!query.global)\n      query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n    return {token: function(stream) {\n      query.lastIndex = stream.pos;\n      var match = query.exec(stream.string);\n      if (match && match.index == stream.pos) {\n        stream.pos += match[0].length || 1;\n        return \"searching\";\n      } else if (match) {\n        stream.pos = match.index;\n      } else {\n        stream.skipToEnd();\n      }\n    }};\n  }\n\n  function SearchState() {\n    this.posFrom = this.posTo = this.lastQuery = this.query = null;\n    this.overlay = null;\n  }\n\n  function getSearchState(cm) {\n    return cm.state.search || (cm.state.search = new SearchState());\n  }\n\n  function queryCaseInsensitive(query) {\n    return typeof query == \"string\" && query == query.toLowerCase();\n  }\n\n  function getSearchCursor(cm, query, pos) {\n    // Heuristic: if the query string is all lowercase, do a case insensitive search.\n    return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n  }\n\n  function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n    cm.openDialog(text, onEnter, {\n      value: deflt,\n      selectValueOnOpen: true,\n      closeOnEnter: false,\n      onClose: function() { clearSearch(cm); },\n      onKeyDown: onKeyDown\n    });\n  }\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  function confirmDialog(cm, text, shortText, fs) {\n    if (cm.openConfirm) cm.openConfirm(text, fs);\n    else if (confirm(shortText)) fs[0]();\n  }\n\n  function parseString(string) {\n    return string.replace(/\\\\(.)/g, function(_, ch) {\n      if (ch == \"n\") return \"\\n\"\n      if (ch == \"r\") return \"\\r\"\n      return ch\n    })\n  }\n\n  function parseQuery(query) {\n    var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n    if (isRE) {\n      try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n      catch(e) {} // Not a regular expression after all, do a string search\n    } else {\n      query = parseString(query)\n    }\n    if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n      query = /x^/;\n    return query;\n  }\n\n  var queryDialog =\n    '<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n\n  function startSearch(cm, state, query) {\n    state.queryText = query;\n    state.query = parseQuery(query);\n    cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n    state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n    cm.addOverlay(state.overlay);\n    if (cm.showMatchesOnScrollbar) {\n      if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n      state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n    }\n  }\n\n  function doSearch(cm, rev, persistent, immediate) {\n    var state = getSearchState(cm);\n    if (state.query) return findNext(cm, rev);\n    var q = cm.getSelection() || state.lastQuery;\n    if (q instanceof RegExp && q.source == \"x^\") q = null\n    if (persistent && cm.openDialog) {\n      var hiding = null\n      var searchNext = function(query, event) {\n        CodeMirror.e_stop(event);\n        if (!query) return;\n        if (query != state.queryText) {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n        }\n        if (hiding) hiding.style.opacity = 1\n        findNext(cm, event.shiftKey, function(_, to) {\n          var dialog\n          if (to.line < 3 && document.querySelector &&\n              (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n              dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n            (hiding = dialog).style.opacity = .4\n        })\n      };\n      persistentDialog(cm, queryDialog, q, searchNext, function(event, query) {\n        var keyName = CodeMirror.keyName(event)\n        var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n        if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n          cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n          CodeMirror.e_stop(event);\n          startSearch(cm, getSearchState(cm), query);\n          cm.execCommand(cmd);\n        } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n          CodeMirror.e_stop(event);\n          searchNext(query, event);\n        }\n      });\n      if (immediate && q) {\n        startSearch(cm, state, q);\n        findNext(cm, rev);\n      }\n    } else {\n      dialog(cm, queryDialog, \"Search for:\", q, function(query) {\n        if (query && !state.query) cm.operation(function() {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n          findNext(cm, rev);\n        });\n      });\n    }\n  }\n\n  function findNext(cm, rev, callback) {cm.operation(function() {\n    var state = getSearchState(cm);\n    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n    if (!cursor.find(rev)) {\n      cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n      if (!cursor.find(rev)) return;\n    }\n    cm.setSelection(cursor.from(), cursor.to());\n    cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n    state.posFrom = cursor.from(); state.posTo = cursor.to();\n    if (callback) callback(cursor.from(), cursor.to())\n  });}\n\n  function clearSearch(cm) {cm.operation(function() {\n    var state = getSearchState(cm);\n    state.lastQuery = state.query;\n    if (!state.query) return;\n    state.query = state.queryText = null;\n    cm.removeOverlay(state.overlay);\n    if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n  });}\n\n  var replaceQueryDialog =\n    ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  var replacementQueryDialog = '<span class=\"CodeMirror-search-label\">With:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n  var doReplaceConfirm = '<span class=\"CodeMirror-search-label\">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';\n\n  function replaceAll(cm, query, text) {\n    cm.operation(function() {\n      for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n        if (typeof query != \"string\") {\n          var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n          cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n        } else cursor.replace(text);\n      }\n    });\n  }\n\n  function replace(cm, all) {\n    if (cm.getOption(\"readOnly\")) return;\n    var query = cm.getSelection() || getSearchState(cm).lastQuery;\n    var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? 'Replace all:' : 'Replace:') + '</span>';\n    dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) {\n      if (!query) return;\n      query = parseQuery(query);\n      dialog(cm, replacementQueryDialog, \"Replace with:\", \"\", function(text) {\n        text = parseString(text)\n        if (all) {\n          replaceAll(cm, query, text)\n        } else {\n          clearSearch(cm);\n          var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n          var advance = function() {\n            var start = cursor.from(), match;\n            if (!(match = cursor.findNext())) {\n              cursor = getSearchCursor(cm, query);\n              if (!(match = cursor.findNext()) ||\n                  (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n            }\n            cm.setSelection(cursor.from(), cursor.to());\n            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n            confirmDialog(cm, doReplaceConfirm, \"Replace?\",\n                          [function() {doReplace(match);}, advance,\n                           function() {replaceAll(cm, query, text)}]);\n          };\n          var doReplace = function(match) {\n            cursor.replace(typeof query == \"string\" ? text :\n                           text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n            advance();\n          };\n          advance();\n        }\n      });\n    });\n  }\n\n  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n  CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n  CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n  CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n  CodeMirror.commands.findNext = doSearch;\n  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n  CodeMirror.commands.clearSearch = clearSearch;\n  CodeMirror.commands.replace = replace;\n  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/jump-to-line',[\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  var jumpDialog =\n      'Jump to line: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use line:column or scroll% syntax)</span>';\n\n  function interpretLine(cm, string) {\n    var num = Number(string)\n    if (/^[-+]/.test(string)) return cm.getCursor().line + num\n    else return num - 1\n  }\n\n  CodeMirror.commands.jumpToLine = function(cm) {\n    var cur = cm.getCursor();\n    dialog(cm, jumpDialog, \"Jump to line:\", (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n      if (!posStr) return;\n\n      var match;\n      if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n      } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n        var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n        if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n        cm.setCursor(line - 1, cur.ch);\n      } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n      }\n    });\n  };\n\n  CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hover/text-hover',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n(function() {\n  \"use strict\";\n\n  var HOVER_CLASS = \" CodeMirror-hover\";\n\n  function showTooltip(e, content) {\n    var tt = document.createElement(\"div\");\n    tt.className = \"CodeMirror-hover-tooltip\";\n    if (typeof content == \"string\") {\n      content = document.createTextNode(content);\n    }\n    tt.appendChild(content);\n    document.body.appendChild(tt);\n\n    function position(e) {\n      if (!tt.parentNode)\n        return CodeMirror.off(document, \"mousemove\", position);\n      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n      tt.style.left = (e.clientX + 5) + \"px\";\n    }\n    CodeMirror.on(document, \"mousemove\", position);\n    position(e);\n    if (tt.style.opacity != null)\n      tt.style.opacity = 1;\n    return tt;\n  }\n  function rm(elt) {\n    if (elt.parentNode)\n      elt.parentNode.removeChild(elt);\n  }\n  function hideTooltip(tt) {\n    if (!tt.parentNode)\n      return;\n    if (tt.style.opacity == null)\n      rm(tt);\n    tt.style.opacity = 0;\n    setTimeout(function() {\n      rm(tt);\n    }, 600);\n  }\n\n  function showTooltipFor(e, content, node, state, cm) {\n    var tooltip = showTooltip(e, content);\n    function hide() {\n      CodeMirror.off(node, \"mouseout\", hide);\n      CodeMirror.off(node, \"click\", hide);\n      node.className = node.className.replace(HOVER_CLASS, \"\");\n      if (tooltip) {\n        hideTooltip(tooltip);\n        tooltip = null;\n      }\n      cm.removeKeyMap(state.keyMap);\n    }\n    var poll = setInterval(function() {\n      if (tooltip)\n        for ( var n = node;; n = n.parentNode) {\n          if (n == document.body)\n            return;\n          if (!n) {\n            hide();\n            break;\n          }\n        }\n      if (!tooltip)\n        return clearInterval(poll);\n    }, 400);\n    CodeMirror.on(node, \"mouseout\", hide);\n    CodeMirror.on(node, \"click\", hide);\n    state.keyMap = {Esc: hide};\n    cm.addKeyMap(state.keyMap);\n  }\n\n  function TextHoverState(cm, options) {\n    this.options = options;\n    this.timeout = null;\n    if (options.delay) {\n      this.onMouseOver = function(e) {\n        onMouseOverWithDelay(cm, e);\n      };\n    } else {\n      this.onMouseOver = function(e) {\n        onMouseOver(cm, e);\n      };\n    }\n    this.keyMap = null;\n  }\n\n  function parseOptions(cm, options) {\n    if (options instanceof Function)\n      return {\n        getTextHover : options\n      };\n    if (!options || options === true)\n      options = {};\n    if (!options.getTextHover)\n      options.getTextHover = cm.getHelper(CodeMirror.Pos(0, 0), \"textHover\");\n    if (!options.getTextHover)\n      throw new Error(\n          \"Required option 'getTextHover' missing (text-hover addon)\");\n    return options;\n  }\n\n  function onMouseOverWithDelay(cm, e) {\n    var state = cm.state.textHover, delay = state.options.delay;\n    clearTimeout(state.timeout);\n    if (e.srcElement) {\n\t// hack for IE, because e.srcElement failed when it is used in the tiemout function\n\tvar newE = {srcElement: e.srcElement, clientX : e.clientX, clientY: e.clientY};\n\te = newE;\n    }\n    state.timeout = setTimeout(function() {onMouseOver(cm, e);}, delay);\n  }\n\n  function onMouseOver(cm, e) {\n    var node = e.target || e.srcElement;\n    if (node) {\n      var state = cm.state.textHover, data = getTokenAndPosAt(cm, e);\n      var content = state.options.getTextHover(cm, data, e);\n      if (content) {\n        node.className += HOVER_CLASS;\n        if (typeof content == 'function')\n\t      content(showTooltipFor, data, e, node, state, cm);\n        else\n          showTooltipFor(e, content, node, state, cm);\n      }\n    }\n  }\n\n  function optionHandler(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      CodeMirror.off(cm.getWrapperElement(), \"mouseover\",\n          cm.state.textHover.onMouseOver);\n      delete cm.state.textHover;\n    }\n\n    if (val) {\n      var state = cm.state.textHover = new TextHoverState(cm, parseOptions(cm,\n          val));\n      CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n    }\n  }\n\n  // When the mouseover fires, the cursor might not actually be over\n  // the character itself yet. These pairs of x,y offsets are used to\n  // probe a few nearby points when no suitable marked range is found.\n  var nearby = [ 0, 0, 0, 5, 0, -5, 5, 0, -5, 0 ];\n\n  function getTokenAndPosAt(cm, e) {\n    var node = e.target || e.srcElement, text = node.innerText\n        || node.textContent;\n    for ( var i = 0; i < nearby.length; i += 2) {\n      var pos = cm.coordsChar({\n        left : e.clientX + nearby[i],\n        top : e.clientY + nearby[i + 1]\n      });\n      var token = cm.getTokenAt(pos);\n      if (token && token.string === text) {\n        return {\n          token : token,\n          pos : pos\n        };\n      }\n    }\n  }\n\n  CodeMirror.defineOption(\"textHover\", false, optionHandler); // deprecated\n\n})();\n\n});\n\n","define('cm/addon/hover/prolog-hover',[ \"../../lib/codemirror\",\n\t \"jquery\",\n\t \"laconic\"\n       ],\n       function(CodeMirror, $) {\n\"use strict\";\n\nvar pathTranslations = {};\n\nvar tokenHelp = {\n  \"goal_built_in\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Built-in predicate\";\n    }\n  },\n\n  \"goal_global\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Global predicate\";\n    }\n  },\n\n  \"goal_autoload\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (autoload from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Autoloaded predicate\";\n    }\n  },\n\n  \"goal_imported\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (imported from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Imported predicate\";\n    }\n  },\n\n  \"goal_recursion\":    \"Recursive call\",\n  \"goal_dynamic\":      \"Dynamic predicate\",\n  \"goal_undefined\":    \"Undefined predicate\",\n  \"goal_local\":        function(data, cm) {\n\t\t\t return localDef(\"predicate\",data,cm)\n\t\t       },\n  \"goal_constraint\":   function(data, cm) {\n\t\t\t return localDef(\"CHR constraint\",data,cm)\n\t\t       },\n  \"head_unreferenced\": \"Predicate is not called\",\n  \"unused_import\":     \"Imported predicate is not used\",\n  \"undefined_import\":  \"Imported predicate is not defined\",\n  \"head_constraint\":   \"CHR constraint\",\n\n  \"file\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path));\n    } else {\n      return \"File name\";\n    }\n  },\n\n  \"file_no_depends\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path),\n\t\t      $.el.div({class:\"hover-remark\"},\n\t\t\t       \"does not resolve any dependencies\")\n\t\t     );\n    } else {\n      return \"File name (does not resolve any dependencies)\";\n    }\n  },\n\n  \"error\": function(data, cm) {\n    if ( data ) {\n      if ( data.expected )\n\treturn $.el.div(\"error: \", $.el.strong(data.expected), \" expected\");\n    }\n\n    return \"error\";\n  },\n\n  \"singleton\": \"Variable appearing only once\",\n  \"codes\":     \"List of Unicode code points (integers)\",\n  \"chars\":     \"List of one-character atoms\",\n  \"string\":    \"Packed string (SWI7, use `text` for a list of codes)\",\n  \"qatom\":     \"Quoted atom\",\n  \"uatom\":     \"Uppercase atom due to var_prefix flag\",\n  \"tag\":       \"Tag of a SWI7 dict\",\n  \"ext_quant\": \"Existential quantification operator\",\n  \"instantiation_error\": \"No variable allowed here\",\n\n  \"string_terminal\": \"Terminal (DCG)\",\n\n  \"head\":       null,\n  \"control\":    null,\n  \"fullstop\":   null,\n  \"var\":        null,\n  \"int\":        null,\n  \"float\":      null,\n  \"number\":     null,\n  \"atom\":       null,\n  \"functor\":    null,\n  \"comment\":    null,\n  \"neck\":       null,\n  \"operator\":   null,\n  \"sep\":        null,\n  \"list_open\":  null,\n  \"list_close\": null,\n  \"dict_open\":  null,\n  \"dict_close\": null\n};\n\nfunction predName(data) {\n  return $.el.span({class:\"pred-name\"},\n\t\t   data.text+\"/\"+data.arity);\n}\n\nfunction addFileTranslation(cm, text, path) {\n  pathTranslations[path] = text;\n}\n\nfunction fileName(data, cm) {\n  var last;\n\n  if ( pathTranslations[data.file] )\n    return pathTranslations[data.file];\n\n  if ( (last=data.file.lastIndexOf(\"/\")) )\n    return data.file.substring(last+1);\n\n  return data.file;\n}\n\nfunction localDef(type, data, cm) {\n  if ( data && data.file ) {\n    return $.el.div(capitalizeFirstLetter(type)+\n\t\t    \" included from \",\n\t\t    $.el.span({class:\"file-path\"},\n\t\t\t      data.file));\n  } else if ( data && data.line ) {\n    return capitalizeFirstLetter(type) + \" defined in line \"+data.line;\n  } else {\n    return \"Locally defined \" + type;\n  }\n}\n\nfunction capitalizeFirstLetter(string) {\n    return string[0].toUpperCase() + string.slice(1);\n}\n\nCodeMirror.registerHelper(\"textHover\", \"prolog\", function(cm, data, node) {\n  if ( data ) {\n    var token = data.token;\n    var help  = tokenHelp[token.type];\n    var et;\n\n    if ( help !== undefined ) {\n      if ( typeof(help) === \"function\" ) {\n\tvar r = help(cm.getEnrichedToken(token), cm);\n\n\tif ( typeof(r) === \"string\" )\n\t  return $.el.div(r);\n\telse\n\t  return r;\n      } else if ( typeof(help) === \"string\" ) {\n\treturn $.el.div(help);\n      }\n    } else if ( (et=cm.getEnrichedToken(token)) ) {\n      if ( et.summary && et.info === \"ask\" )\n\treturn $.el.div(et.summary, cm.tokenInfo(et));\n      else if ( et.summary )\n\treturn $.el.div(et.summary);\n      else\n\treturn $.el.div(token.type);\n    } else {\n      return $.el.div(token.type);\n    }\n  }\n\n  return null;\n});\n\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-context-info',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var contextInfo = null;\n\n  CodeMirror.attachContextInfo = function(data) {\n    CodeMirror.on(data, 'select', function(completion, hints) {\n      hints = hints.parentNode;\n      var information = null;\n      if (completion.info) {\n        information = completion.info(completion);\n      }\n      if (information) {\n        var box = hints.getBoundingClientRect();\n        if (contextInfo == null) {\n          contextInfo = document.createElement('div');\n          contextInfo.className = 'CodeMirror-hints-contextInfo'\n          document.body.appendChild(contextInfo);\n        }\n        contextInfo.innerHTML = '';\n        contextInfo.style.top = hints.style.top;\n        contextInfo.style.left = box.right + 'px';\n        if(typeof information == \"string\") {\n          contextInfo.innerHTML = information;\n        } else {\n          contextInfo.appendChild(information);\n        }\n        contextInfo.style.display = 'block';\n      } else {\n        if (contextInfo != null) {\n          contextInfo.innerHTML = '';\n          contextInfo.style.display = 'none';\n        }\n      }\n    });\n\n    CodeMirror.on(data, 'close', function() {\n      if (contextInfo != null) {\n        contextInfo.parentNode.removeChild(contextInfo);\n      }\n      contextInfo = null;\n    });\n\n  }\n\n  CodeMirror.showContextInfo = function(getHints) {\n    return function(cm, showHints, options) {\n      if (!options)\n        options = showHints;\n      var data = getHints(cm, options);\n      CodeMirror.attachContextInfo(data);\n      return data;\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(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/keymap/emacs',[\"../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 posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n\n  // Kill 'ring'\n\n  var killRing = [];\n  function addToRing(str) {\n    killRing.push(str);\n    if (killRing.length > 50) killRing.shift();\n  }\n  function growRingTop(str) {\n    if (!killRing.length) return addToRing(str);\n    killRing[killRing.length - 1] += str;\n  }\n  function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || \"\"; }\n  function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }\n\n  var lastKill = null;\n\n  function kill(cm, from, to, ring, text) {\n    if (text == null) text = cm.getRange(from, to);\n\n    if (ring == \"grow\" && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))\n      growRingTop(text);\n    else if (ring !== false)\n      addToRing(text);\n    cm.replaceRange(\"\", from, to, \"+delete\");\n\n    if (ring == \"grow\") lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};\n    else lastKill = null;\n  }\n\n  // Boundaries of various units\n\n  function byChar(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"char\", true);\n  }\n\n  function byWord(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"word\", true);\n  }\n\n  function byLine(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"line\", cm.doc.sel.goalColumn);\n  }\n\n  function byPage(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"page\", cm.doc.sel.goalColumn);\n  }\n\n  function byParagraph(cm, pos, dir) {\n    var no = pos.line, line = cm.getLine(no);\n    var sawText = /\\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch));\n    var fst = cm.firstLine(), lst = cm.lastLine();\n    for (;;) {\n      no += dir;\n      if (no < fst || no > lst)\n        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));\n      line = cm.getLine(no);\n      var hasText = /\\S/.test(line);\n      if (hasText) sawText = true;\n      else if (sawText) return Pos(no, 0);\n    }\n  }\n\n  function bySentence(cm, pos, dir) {\n    var line = pos.line, ch = pos.ch;\n    var text = cm.getLine(pos.line), sawWord = false;\n    for (;;) {\n      var next = text.charAt(ch + (dir < 0 ? -1 : 0));\n      if (!next) { // End/beginning of line reached\n        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch);\n        text = cm.getLine(line + dir);\n        if (!/\\S/.test(text)) return Pos(line, ch);\n        line += dir;\n        ch = dir < 0 ? text.length : 0;\n        continue;\n      }\n      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0));\n      if (!sawWord) sawWord = /\\w/.test(next);\n      ch += dir;\n    }\n  }\n\n  function byExpr(cm, pos, dir) {\n    var wrap;\n    if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, {strict: true}))\n        && wrap.match && (wrap.forward ? 1 : -1) == dir)\n      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;\n\n    for (var first = true;; first = false) {\n      var token = cm.getTokenAt(pos);\n      var after = Pos(pos.line, dir < 0 ? token.start : token.end);\n      if (first && dir > 0 && token.end == pos.ch || !/\\w/.test(token.string)) {\n        var newPos = cm.findPosH(after, dir, \"char\");\n        if (posEq(after, newPos)) return pos;\n        else pos = newPos;\n      } else {\n        return after;\n      }\n    }\n  }\n\n  // Prefixes (only crudely supported)\n\n  function getPrefix(cm, precise) {\n    var digits = cm.state.emacsPrefix;\n    if (!digits) return precise ? null : 1;\n    clearPrefix(cm);\n    return digits == \"-\" ? -1 : Number(digits);\n  }\n\n  function repeated(cmd) {\n    var f = typeof cmd == \"string\" ? function(cm) { cm.execCommand(cmd); } : cmd;\n    return function(cm) {\n      var prefix = getPrefix(cm);\n      f(cm);\n      for (var i = 1; i < prefix; ++i) f(cm);\n    };\n  }\n\n  function findEnd(cm, pos, by, dir) {\n    var prefix = getPrefix(cm);\n    if (prefix < 0) { dir = -dir; prefix = -prefix; }\n    for (var i = 0; i < prefix; ++i) {\n      var newPos = by(cm, pos, dir);\n      if (posEq(newPos, pos)) break;\n      pos = newPos;\n    }\n    return pos;\n  }\n\n  function move(by, dir) {\n    var f = function(cm) {\n      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));\n    };\n    f.motion = true;\n    return f;\n  }\n\n  function killTo(cm, by, dir, ring) {\n    var selections = cm.listSelections(), cursor;\n    var i = selections.length;\n    while (i--) {\n      cursor = selections[i].head;\n      kill(cm, cursor, findEnd(cm, cursor, by, dir), ring);\n    }\n  }\n\n  function killRegion(cm, ring) {\n    if (cm.somethingSelected()) {\n      var selections = cm.listSelections(), selection;\n      var i = selections.length;\n      while (i--) {\n        selection = selections[i];\n        kill(cm, selection.anchor, selection.head, ring);\n      }\n      return true;\n    }\n  }\n\n  function addPrefix(cm, digit) {\n    if (cm.state.emacsPrefix) {\n      if (digit != \"-\") cm.state.emacsPrefix += digit;\n      return;\n    }\n    // Not active yet\n    cm.state.emacsPrefix = digit;\n    cm.on(\"keyHandled\", maybeClearPrefix);\n    cm.on(\"inputRead\", maybeDuplicateInput);\n  }\n\n  var prefixPreservingKeys = {\"Alt-G\": true, \"Ctrl-X\": true, \"Ctrl-Q\": true, \"Ctrl-U\": true};\n\n  function maybeClearPrefix(cm, arg) {\n    if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg))\n      clearPrefix(cm);\n  }\n\n  function clearPrefix(cm) {\n    cm.state.emacsPrefix = null;\n    cm.off(\"keyHandled\", maybeClearPrefix);\n    cm.off(\"inputRead\", maybeDuplicateInput);\n  }\n\n  function maybeDuplicateInput(cm, event) {\n    var dup = getPrefix(cm);\n    if (dup > 1 && event.origin == \"+input\") {\n      var one = event.text.join(\"\\n\"), txt = \"\";\n      for (var i = 1; i < dup; ++i) txt += one;\n      cm.replaceSelection(txt);\n    }\n  }\n\n  function addPrefixMap(cm) {\n    cm.state.emacsPrefixMap = true;\n    cm.addKeyMap(prefixMap);\n    cm.on(\"keyHandled\", maybeRemovePrefixMap);\n    cm.on(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  function maybeRemovePrefixMap(cm, arg) {\n    if (typeof arg == \"string\" && (/^\\d$/.test(arg) || arg == \"Ctrl-U\")) return;\n    cm.removeKeyMap(prefixMap);\n    cm.state.emacsPrefixMap = false;\n    cm.off(\"keyHandled\", maybeRemovePrefixMap);\n    cm.off(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  // Utilities\n\n  function setMark(cm) {\n    cm.setCursor(cm.getCursor());\n    cm.setExtending(!cm.getExtending());\n    cm.on(\"change\", function() { cm.setExtending(false); });\n  }\n\n  function clearMark(cm) {\n    cm.setExtending(false);\n    cm.setCursor(cm.getCursor());\n  }\n\n  function getInput(cm, msg, f) {\n    if (cm.openDialog)\n      cm.openDialog(msg + \": <input type=\\\"text\\\" style=\\\"width: 10em\\\"/>\", f, {bottom: true});\n    else\n      f(prompt(msg, \"\"));\n  }\n\n  function operateOnWord(cm, op) {\n    var start = cm.getCursor(), end = cm.findPosH(start, 1, \"word\");\n    cm.replaceRange(op(cm.getRange(start, end)), start, end);\n    cm.setCursor(end);\n  }\n\n  function toEnclosingExpr(cm) {\n    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;\n    var stack = [];\n    while (line >= cm.firstLine()) {\n      var text = cm.getLine(line);\n      for (var i = ch == null ? text.length : ch; i > 0;) {\n        var ch = text.charAt(--i);\n        if (ch == \")\")\n          stack.push(\"(\");\n        else if (ch == \"]\")\n          stack.push(\"[\");\n        else if (ch == \"}\")\n          stack.push(\"{\");\n        else if (/[\\(\\{\\[]/.test(ch) && (!stack.length || stack.pop() != ch))\n          return cm.extendSelection(Pos(line, i));\n      }\n      --line; ch = null;\n    }\n  }\n\n  function quit(cm) {\n    cm.execCommand(\"clearSearch\");\n    clearMark(cm);\n  }\n\n  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated};\n\n  // Actual keymap\n\n  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({\n    \"Ctrl-W\": function(cm) {kill(cm, cm.getCursor(\"start\"), cm.getCursor(\"end\"), true);},\n    \"Ctrl-K\": repeated(function(cm) {\n      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));\n      var text = cm.getRange(start, end);\n      if (!/\\S/.test(text)) {\n        text += \"\\n\";\n        end = Pos(start.line + 1, 0);\n      }\n      kill(cm, start, end, \"grow\", text);\n    }),\n    \"Alt-W\": function(cm) {\n      addToRing(cm.getSelection());\n      clearMark(cm);\n    },\n    \"Ctrl-Y\": function(cm) {\n      var start = cm.getCursor();\n      cm.replaceRange(getFromRing(getPrefix(cm)), start, start, \"paste\");\n      cm.setSelection(start, cm.getCursor());\n    },\n    \"Alt-Y\": function(cm) {cm.replaceSelection(popFromRing(), \"around\", \"paste\");},\n\n    \"Ctrl-Space\": setMark, \"Ctrl-Shift-2\": setMark,\n\n    \"Ctrl-F\": move(byChar, 1), \"Ctrl-B\": move(byChar, -1),\n    \"Right\": move(byChar, 1), \"Left\": move(byChar, -1),\n    \"Ctrl-D\": function(cm) { killTo(cm, byChar, 1, false); },\n    \"Delete\": function(cm) { killRegion(cm, false) || killTo(cm, byChar, 1, false); },\n    \"Ctrl-H\": function(cm) { killTo(cm, byChar, -1, false); },\n    \"Backspace\": function(cm) { killRegion(cm, false) || killTo(cm, byChar, -1, false); },\n\n    \"Alt-F\": move(byWord, 1), \"Alt-B\": move(byWord, -1),\n    \"Alt-Right\": move(byWord, 1), \"Alt-Left\": move(byWord, -1),\n    \"Alt-D\": function(cm) { killTo(cm, byWord, 1, \"grow\"); },\n    \"Alt-Backspace\": function(cm) { killTo(cm, byWord, -1, \"grow\"); },\n\n    \"Ctrl-N\": move(byLine, 1), \"Ctrl-P\": move(byLine, -1),\n    \"Down\": move(byLine, 1), \"Up\": move(byLine, -1),\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStart\",\n\n    \"Alt-V\": move(byPage, -1), \"Ctrl-V\": move(byPage, 1),\n    \"PageUp\": move(byPage, -1), \"PageDown\": move(byPage, 1),\n\n    \"Ctrl-Up\": move(byParagraph, -1), \"Ctrl-Down\": move(byParagraph, 1),\n\n    \"Alt-A\": move(bySentence, -1), \"Alt-E\": move(bySentence, 1),\n    \"Alt-K\": function(cm) { killTo(cm, bySentence, 1, \"grow\"); },\n\n    \"Ctrl-Alt-K\": function(cm) { killTo(cm, byExpr, 1, \"grow\"); },\n    \"Ctrl-Alt-Backspace\": function(cm) { killTo(cm, byExpr, -1, \"grow\"); },\n    \"Ctrl-Alt-F\": move(byExpr, 1), \"Ctrl-Alt-B\": move(byExpr, -1, \"grow\"),\n\n    \"Shift-Ctrl-Alt-2\": function(cm) {\n      var cursor = cm.getCursor();\n      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);\n    },\n    \"Ctrl-Alt-T\": function(cm) {\n      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1);\n      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1);\n      cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) +\n                      cm.getRange(leftStart, leftEnd), leftStart, rightEnd);\n    },\n    \"Ctrl-Alt-U\": repeated(toEnclosingExpr),\n\n    \"Alt-Space\": function(cm) {\n      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line);\n      while (from && /\\s/.test(text.charAt(from - 1))) --from;\n      while (to < text.length && /\\s/.test(text.charAt(to))) ++to;\n      cm.replaceRange(\" \", Pos(pos.line, from), Pos(pos.line, to));\n    },\n    \"Ctrl-O\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"start\"); }),\n    \"Ctrl-T\": repeated(function(cm) {\n      cm.execCommand(\"transposeChars\");\n    }),\n\n    \"Alt-C\": repeated(function(cm) {\n      operateOnWord(cm, function(w) {\n        var letter = w.search(/\\w/);\n        if (letter == -1) return w;\n        return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase();\n      });\n    }),\n    \"Alt-U\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toUpperCase(); });\n    }),\n    \"Alt-L\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toLowerCase(); });\n    }),\n\n    \"Alt-;\": \"toggleComment\",\n\n    \"Ctrl-/\": repeated(\"undo\"), \"Shift-Ctrl--\": repeated(\"undo\"),\n    \"Ctrl-Z\": repeated(\"undo\"), \"Cmd-Z\": repeated(\"undo\"),\n    \"Shift-Alt-,\": \"goDocStart\", \"Shift-Alt-.\": \"goDocEnd\",\n    \"Ctrl-S\": \"findPersistentNext\", \"Ctrl-R\": \"findPersistentPrev\", \"Ctrl-G\": quit, \"Shift-Alt-5\": \"replace\",\n    \"Alt-/\": \"autocomplete\",\n    \"Enter\": \"newlineAndIndent\",\n    \"Ctrl-J\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"end\"); }),\n    \"Tab\": \"indentAuto\",\n\n    \"Alt-G G\": function(cm) {\n      var prefix = getPrefix(cm, true);\n      if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1);\n\n      getInput(cm, \"Goto line\", function(str) {\n        var num;\n        if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)\n          cm.setCursor(num - 1);\n      });\n    },\n\n    \"Ctrl-X Tab\": function(cm) {\n      cm.indentSelection(getPrefix(cm, true) || cm.getOption(\"indentUnit\"));\n    },\n    \"Ctrl-X Ctrl-X\": function(cm) {\n      cm.setSelection(cm.getCursor(\"head\"), cm.getCursor(\"anchor\"));\n    },\n    \"Ctrl-X Ctrl-S\": \"save\",\n    \"Ctrl-X Ctrl-W\": \"save\",\n    \"Ctrl-X S\": \"saveAll\",\n    \"Ctrl-X F\": \"open\",\n    \"Ctrl-X U\": repeated(\"undo\"),\n    \"Ctrl-X K\": \"close\",\n    \"Ctrl-X Delete\": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), \"grow\"); },\n    \"Ctrl-X H\": \"selectAll\",\n\n    \"Ctrl-Q Tab\": repeated(\"insertTab\"),\n    \"Ctrl-U\": addPrefixMap\n  });\n\n  var prefixMap = {\"Ctrl-G\": clearPrefix};\n  function regPrefix(d) {\n    prefixMap[d] = function(cm) { addPrefix(cm, d); };\n    keyMap[\"Ctrl-\" + d] = function(cm) { addPrefix(cm, d); };\n    prefixPreservingKeys[\"Ctrl-\" + d] = true;\n  }\n  for (var i = 0; i < 10; ++i) regPrefix(String(i));\n  regPrefix(\"-\");\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Prolog editor plugin based on [CodeMirror](http://codemirror.net)\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires codemirror\n */\n\ndefine('editor',[ \"cm/lib/codemirror\",\n\t \"config\",\n\t \"preferences\",\n\t \"form\",\n\t \"cm/mode/prolog/prolog-template-hint\",\n\t \"modal\",\n\t \"tabbed\",\n\t \"prolog\",\n\n\t \"storage\",\n\n\t \"cm/mode/prolog/prolog\",\n\t \"cm/mode/prolog/prolog_keys\",\n\t \"cm/mode/prolog/prolog_query\",\n\t \"cm/mode/prolog/prolog_server\",\n\n\t \"cm/mode/markdown/markdown\",\n\n\t \"cm/addon/edit/matchbrackets\",\n\t \"cm/addon/comment/continuecomment\",\n\t \"cm/addon/comment/comment\",\n\t \"cm/addon/hint/show-hint\",\n\t \"cm/addon/hint/anyword-hint\",\n\t \"cm/addon/display/placeholder\",\n\t \"cm/addon/runmode/runmode\",\n\t \"cm/addon/search/search\",\n\t \"cm/addon/search/searchcursor\",\n\t \"cm/addon/search/jump-to-line\",\n\t \"cm/addon/dialog/dialog\",\n\n\t \"cm/addon/hover/text-hover\",\n\t \"cm/addon/hover/prolog-hover\",\n\n\t \"cm/addon/hint/templates-hint\",\n\t \"cm/addon/hint/show-context-info\",\n\n         \"jquery\", \"laconic\",\n\n\t \"cm/keymap/emacs\",\n       ],\n       function(CodeMirror, config, preferences, form, templateHint,\n\t\tmodal, tabbed, prolog) {\n\n(function($) {\n  var pluginName = 'prologEditor';\n\n  var modeDefaults = {\n    prolog: {\n      mode: \"prolog\",\n      role: \"source\",\n      placeholder: \"Your Prolog rules and facts go here ...\",\n      lineNumbers: true,\n      autoCurrent: true,\n      save: false,\n      theme: \"prolog\",\n      matchBrackets: true,\n      textHover: true,\n      prologKeys: true,\n      extraKeys: {\n\t\"Ctrl-Space\": \"autocomplete\",\n\t\"Alt-/\": \"autocomplete\",\n      },\n      hintOptions: {\n      hint: templateHint.getHints,\n      completeSingle: false\n      }\n    },\n\n    markdown: {\n      mode: \"markdown\",\n      placeholder: \"Your markdown block goes here ...\",\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var roleDefaults = {\n    query: {\n      mode: \"prolog\",\n      role: \"query\",\n      placeholder: \"Your query goes here ...\",\n      lineNumbers: false,\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var lastEditor;\n\n  /** @lends $.fn.prologEditor */\n  var methods = {\n    /**\n     * Initialize a Prolog editor.\n     * @param {Object} [options]\n     * @param {String} [options.role=\"source\"] determines the role of\n     * the editor. It is one of `source` or `query`.\n     * @param {String} [options.placeholder=\"Your Prolog program goes here ...\"]\n     * sets the placeholder for the editor.\n     * @param {Boolean} [options.lineNumbers=true] defines whether or\n     * not a left-gutter with line numbers is displayed.\n     * @param {Boolean} [options.save=false] defines whether the\n     * editor responds to storage events.\n     * @param {String} [options.mode=\"prolog\"] defines the mode used by\n     * CodeMirror.\n     * @param {String} [options.theme=\"prolog\"] defines the CSS used for\n     * highlighting.\n     * @param {Boolean} [options.matchBrackets=true] defines whether the\n     * matching bracket is highlighted.\n     * @param {Boolean} [options.prologKeys=true] defines whether \"(\",\n     * \">\" and \";\" act as active keys to support if-then-else layout.\n     * @param {Object} [options.extraKeys] specifies additional key\n     * bindings.  Default is to bind \"Ctrl-Space\" and \"Alt-/\" to\n     * \"autocomplete\".\n     *\n     */\n    _init: function(opts) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage meta-data */\n\tvar data = {};\t\t\t/* our data */\n\tvar ta;\t\t\t\t/* textarea */\n\n\topts      = opts||{};\n\topts.mode = opts.mode||\"prolog\";\n\n\tvar options = $.extend({}, modeDefaults[opts.mode]);\n\tif ( opts.role && roleDefaults[opts.role] )\n\t  options = $.extend(options, roleDefaults[opts.role]);\n\toptions = $.extend(options, opts);\n\n\tif ( preferences.getVal(\"emacs-keybinding\") )\n\t  options.keyMap = \"emacs\";\n\n\tif ( options.mode == \"prolog\" ) {\n\t  data.role = options.role;\n\t  if ( options.getSource )\n\t    data.getSource = options.getSource;\n\n\t  if ( config.http.locations.cm_highlight ) {\n\t    options.prologHighlightServer =\n\t    { url:  config.http.locations.cm_highlight,\n\t      role: options.role,\n\t      enabled: preferences.getVal(\"semantic-highlighting\")\n\t    };\n\t    if ( options.sourceID )\n\t      options.prologHighlightServer.sourceID = options.sourceID;\n\t    options.extraKeys[\"Ctrl-R\"] = \"refreshHighlight\";\n\t  }\n\n\t  if ( options.role == \"source\" ) {\n\t    options.continueComments = \"Enter\";\n\t    options.gutters = [\"Prolog-breakpoints\"]\n\t  }\n\n\t  /*\n\t   * Long click detection and handling.\n\t   */\n\t  data.long_click = {};\n\t  function moveLongClick(ev) {\n\t    var lc = data.long_click;\n\t    var dx = ev.clientX - lc.clientX;\n\t    var dy = ev.clientY - lc.clientY;\n\t    if ( Math.sqrt(dx*dx+dy*dy) > 5 )\n\t      cancelLongClick();\n\t  }\n\t  function cancelLongClick() {\n\t    elem.off(\"mousemove\", moveLongClick);\n\t    var lc = data.long_click;\n\t    if ( lc.timeout ) {\n\t      clearTimeout(lc.timeout);\n\t      lc.target  = undefined;\n\t      lc.timeout = undefined;\n\t    }\n\t  }\n\n\t  elem.on(\"mousedown\", \".CodeMirror-code\", function(ev) {\n\t    var lc = data.long_click;\n\n\t    lc.clientX = ev.clientX;\n\t    lc.clientY = ev.clientY;\n\t    elem.on(\"mousemove\", moveLongClick);\n\t    data.long_click.timeout = setTimeout(function() {\n\t      cancelLongClick();\n\t      elem.prologEditor('contextAction');\n\t    }, 500);\n\t  });\n\t  elem.on(\"mouseup\", function(ev) {\n\t    cancelLongClick();\n\t  });\n\t}\n\n\t/*\n\t * Create CodeMirror\n\t */\n\tif ( (ta=elem.children(\"textarea\")[0]) ) {\n\t  function copyData(name) {\n\t    var value = $(ta).data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  data.cm = CodeMirror.fromTextArea(ta, options);\n\t} else {\n\t  if ( !options.value )\n\t    options.value = elem.text();\n\t  data.cm = CodeMirror(elem[0], options);\n\t}\n\n\telem.data(pluginName, data);\n\telem.prologEditor('loadMode', options.mode);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.addClass(\"prolog-editor\");\n\telem.on(\"preference\", function(ev, pref) {\n\t  elem.prologEditor('preference', pref);\n\t});\n\telem.on(\"print\", function() {\n\t  if ( data.role != \"query\" )\n\t    elem.prologEditor('print');\n\t});\n\telem.on(\"clearMessages\", function(ev) {\n\t  elem.prologEditor('clearMessages');\n\t});\n\telem.on(\"edit-command\", function(ev, command) {\n\t  elem.prologEditor('execCommand', command);\n\t});\n\tdata.cm.on(\"blur\", function(ev) {\n\t  elem.prologEditor('execCommand', 'prepare');\n\t});\n\n\tif ( options.save ) {\n\t  storage.typeName = options.typeName||\"program\";\n\t  elem.prologEditor('setupStorage', storage);\n\t}\n\n\tif ( options.mode == \"prolog\" && data.role == \"source\" ) {\n\t  elem.on(\"activate-tab\", function(ev) {\n\t    if ( options.autoCurrent )\n\t      elem.prologEditor('makeCurrent');\n\t    data.cm.refresh();\t\t/* needed if a tab has been opened */\n\t  });\n\n\t  elem.on(\"source-error\", function(ev, error) {\n\t    elem.prologEditor('highlightError', error);\n\t  });\n\t  elem.on(\"pengine-died\", function(ev, id) {\n\t    if ( data.pengines ) {\n\t      var i = data.pengines.indexOf(id);\n\t      if ( i >= 0 )\n\t\tdata.pengines.splice(i, 1);\n\t    }\n\t    if ( data.traceMark && data.traceMark.pengine == id ) {\n\t      data.traceMark.clear();\n\t      data.traceMark = null;\n\t    }\n\t  });\n\t  elem.on('addExample', function(ev, query) {\n\t    elem.prologEditor('addExample', query);\n\t  });\n\t  data.cm.on(\"gutterClick\", function(cm, n) {\n\t    var info = cm.lineInfo(n);\n\n\t    function makeMarker() {\n\t      return $(\"<span class=\\\"breakpoint-marker\\\">&#9679;</span>\")[0];\n\t    }\n\n\t    if ( info.gutterMarkers )\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", null);\n\t    else\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", makeMarker());\n\t  });\n\t} /* end if prolog source */\n\n\tdata.cm.on(\"change\", function(cm, change) {\n\t  var clean;\n\n\t  if ( change.origin == \"setValue\" ) {\n\t    clean = true;\n\t  } else {\n\t    var store = elem.data(\"storage\");\n\t    var gen = store ? store.cleanGeneration : data.cleanGeneration;\n\n\t    clean = data.cm.isClean(gen);\n\t  }\n\n\t  elem.prologEditor('markClean', clean);\n\t});\n      });\n    },\n\n    /**\n     * @example // Get the CodeMirror instance\n     * $(element).prologEditor('getOption', 'cm');\n     * @param {String} opt Name of option to fetch.\n     * @return {*}\n     */\n\n    getOption: function(opt) {\n      return this.data(pluginName)[opt];\n    },\n\n    /**\n     * @example // Set the keybinding for the editor\n     * $(element).prologEditor('setKeybinding', 'emacs') set\n     * keybinding schema emacs.\n     * @param {String} schema Name of the keybinding\n     * return {*}\n     */\n    setKeybinding: function(schema) {\n      schema = schema || \"default\";\n      this.data(pluginName).cm.options.keyMap = schema;\n    },\n\n    /**\n     * Switch the editor to the requested mode, possibly by dynamically\n     * loading the mode.  It seems that if we use RequireJS, we should\n     * also use this for loading modes dynamically.\n     */\n    loadMode: function(mode) {\n      var data = this.data(pluginName);\n\n      if ( !CodeMirror.modes[mode] ) {\n\trequire([\"cm/mode/\"+mode+\"/\"+mode],\n\t\t  function() {\n\t\t    data.cm.setOption(\"mode\", mode);\n\t\t  });\n      } else if ( mode != data.mode ) {\n\tdata.cm.setOption(\"mode\", mode);\n      }\n\n      return this;\n    },\n\n    /**\n     * True if this source needs to be sent to the pengine.  This is\n     * the case of the source is loaded.  We should also exclude module\n     * files.  How do we detect a module file?  Detecting the module\n     * header without support from Prolog is rather hard: count the\n     * arity and ignore preceeding comments, encoding and conditional\n     * compilation directives.\n     */\n    isPengineSource: function() {\n      var data = $(this).data(pluginName);\n      if ( data && data.role == \"source\" ) {\n\tvar storageData = $(this).data('storage');\n\n\tif ( storageData && storageData.meta ) {\n\t  if ( storageData.meta.loaded ||\n\t       storageData.meta.module )\n\t    return false;\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the defined breakpoints.\n     * @param {String} pengineID is the pengine asking for the\n     * breakpoints.\n     * @returns {Array.Object} an array holding one object per source\n     * with breakpoints.  The object contains `file` and `breakpoints`,\n     * where the latter is an array of integers.\n     */\n    getBreakpoints: function(pengineID) {\n      var result = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar breakpoints = [];\n\tvar offset = 0;\n\tvar cm = data.cm;\n\tvar line = cm.firstLine();\n\tvar last = cm.lastLine();\n\n\tfor( ; line < last; line++ ) {\n\t  var info = cm.lineInfo(line);\n\t  if ( info.gutterMarkers )\n\t    breakpoints.push(offset+line+1);\n\t}\n\n\tif ( breakpoints.length > 0 ) {\n\t  var file;\n\n\t  if ( data.pengines && data.pengines.indexOf(pengineID) >= 0 ) {\n\t    file = \"pengine://\"+pengineID+\"/src\";\n\t  } else {\n\t    var store = $(this).data(\"storage\");\n\t    if ( store )\n\t      file = \"swish://\"+store.file;\n\t  }\n\n\t  if ( file )\n\t    result.push({ file: file,\n\t\t          breakpoints: breakpoints\n\t\t        });\n\t}\n      });\n\n      return result;\n    },\n\n    /**\n     * Get the source text from a set of editors.  Each source is\n     * preceeded by a line :- '#file'(DocID, Line).\n     *\n     * @param {String} [role] Only return source for editors that\n     * match the given role.\n     * @param {Boolean} [direct] If `true`, do not try to indirect\n     * over the `data.getSource` function.\n     * @returns {String} current contents of the editor.  If\n     * the jQuery object holds multiple editors, we return the\n     * joined content of the editors.\n     */\n    getSource: function(role, direct) {\n      var src = [];\n\n      this.each(function() {\n\tif ( $(this).prologEditor('isPengineSource') ) {\n\t  var data = $(this).data(pluginName);\n\n\t  if ( data ) {\n\t    if ( !role || (role == data.role) ) {\n\t      var mysrc;\n//TBD\t      var docid = $(this).prologEditor('docid');\n\n\t      if ( typeof(data.getSource) == \"function\" && !direct ) {\n\t\tmysrc = data.getSource();\n\t      } else {\n\t\tmysrc = data.cm.getValue();\n\t      }\n//TBD\t      if ( role == \"source\" )\n//TBD\t\tsrc.push(\":- '#file'(\"+Pengine.stringify(docid)+\",1).\");\n\t      src.push(mysrc);\n\t    }\n\t  }\n\t}\n      });\n\n      return src.join(\"\\n\\n\");\n    },\n\n    /**\n     * @returns {Object} holding extended source information\n     */\n    getSourceEx: function() {\n      var obj = { value: this.data(pluginName).cm.getValue()\n\t\t};\n      var bps = this.prologEditor('getBreakpoints');\n      if ( bps.length > 0 )\n\tobj.breakpoints = bps;\n\n      return obj;\n    },\n\n    /*\n     * @returns {String} document identifier relating this editor to\n     * the server side document store.\n     */\n    docid: function() {\n      var st;\n\n      if ( this.hasClass(\"storage\") )\n\treturn this.storage('docid');\n      else if ( (st=this.closest(\".storage\")) && st.length > 0 ) {\n\tstdoc = st.storage('docid');\n\tif ( stdoc )\n\t  return stdoc + \"#\" + this.closest(\".nb-cell\").attr(\"name\");\n      }\n    },\n\n    /**\n     * @return {String[]} UUIDs of the sources used for\n     * server-side analysis.  The array may contain `null`s\n     * for sources that have no server side backup.\n     */\n     getSourceID: function() {\n       var ids = [];\n\n       this.each(function() {\n\t var data = $(this).data(pluginName);\n\n\t if ( data && data.cm && data.cm.state.prologHighlightServer )\n\t   ids.push(data.cm.state.prologHighlightServer.uuid);\n\t else\n\t   ids.push(null);\n       });\n\n       return ids;\n     },\n\n    /**\n     * @param {String} source sets the new content for the editor.  If\n     * the editor is associated with a storage plugin, the call is\n     * forwarded to the storage plugin.\n     * @param {Boolean} [direct=false] if this parameter is `true`, the\n     * message is never delegated to the storage\n     */\n    setSource: function(source, direct) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      if ( this.data('storage') && direct != true ) {\n\tthis.storage('setSource', source);\n      } else {\n\tvar data = this.data(pluginName);\n\n\tdata.cm.setValue(source.data);\n\tif ( source.line || source.prompt ) {\n\t  data.cm.refresh();\n\n\t  if ( source.line ) {\n\t    this.prologEditor('gotoLine', source.line, source);\n\t  } else {\n\t    this.prologEditor('showTracePort', source.prompt);\n\t  }\n\t}\n\n\tif ( data.role == \"source\" ) {\n\t  $(\".swish-event-receiver\").trigger(\"program-loaded\",\n\t\t\t\t\t     { editor: this,\n\t\t\t\t\t       query: source.query\n\t\t\t\t\t     });\n\t}\n      }\n      return this;\n    },\n\n    /**\n     * Advertise this editor as the current editor.  This is the\n     * one used by the default query editor.\n     */\n    makeCurrent: function() {\n      $(\".swish-event-receiver\").trigger(\"current-program\", this);\n      return this;\n    },\n\n    /**\n     * Called if the editor changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      if ( data.clean_signalled != clean )\n      { data.clean_signalled = clean;\n\tthis.trigger(\"data-is-clean\", clean);\n      }\n    },\n\n    /**\n     * Set notion of clean for editors that are not associated with a\n     * storage\n     */\n    setIsClean: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tdata.cleanGeneration = data.cm.changeGeneration();\n\tdata.clean_signalled = true;\n      });\n    },\n\n    /**\n     * @param {Object} options\n     * @param {String} [options.add] Id of pengine to add\n     * @param {String} [options.has] Match pengine, returning boolean\n     */\n    pengine: function(options) {\n      var data = this.data(pluginName);\n\n      if ( data ) {\n\tif ( options.add ) {\n\t  data.pengines = data.pengines || [];\n\t  if ( data.pengines.indexOf(options.add) < 0 )\n\t    data.pengines.push(options.add);\n\n\t  return this;\n\t} else if ( options.has ) {\n\t  return (data.pengines &&\n\t\t  data.pengines.indexOf(options.has) >= 0);\n\t}\n      }\n    },\n\n    /**\n     * print the current content of the editor after applying the\n     * the CodeMirror mode to it.\n     * @param {String} [src] Prolog source to print. Default is to print\n     * the content of the editor.\n     */\n    print: function(src) {\n      var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n      if ( !src ) src = this.prologEditor('getSource');\n\n      CodeMirror.runMode(src, \"prolog\", pre);\n\n      function printWithIframe(elem) {\n\tvar iframe = $.el.iframe({src:\"about:blank\"});\n\t$(\"body\").append(iframe);\n\t$(\"body\", iframe.contentWindow.document).append(elem);\n\tiframe.contentWindow.print();\n      }\n\n      $.ajax({ url: config.http.locations.swish+\"js/codemirror/theme/prolog.css\",\n\t       dataType: \"text\",\n\t       success: function(data) {\n\t\t printWithIframe($.el.div($.el.style(data),\n\t\t\t\t\t  pre));\n\t       },\n\t       error: function(jqXHDR) {\n\t\t modal.ajaxError(jqXHDR);\n\t       }\n             });\n\n      return this;\n    },\n\n    /**\n     * Manage user preference changes.  Defines preferences are:\n     *\n     *   - \"highlight\" -- one of `semantic` or `syntactic`\n     *\n     * @param {Object} pref describes a preference\n     * @param {String} pref.name name of the preference\n     * @param {Any}    pref.value value of the preference\n     */\n    preference: function(pref) {\n      var data = this.data(pluginName);\n\n      if ( pref.name == \"semantic-highlighting\" ) {\n\tdata.cm.setOption(\"prologHighlightServer\",\n\t\t\t  { enabled: pref.value });\n      }\n\n      if ( pref.name == \"emacs-keybinding\") {\n\tif (pref.value == true) {\n\t  data.cm.setOption(\"keyMap\", \"emacs\");\n\t} else {\n\t  data.cm.setOption(\"keyMap\", \"default\");\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Highlight a (syntax) error in the source.\n     * @param {Object} error\n     * @param {String} error.data contains the error message (HTML\n     * string)\n     * @param {Object} error.location contains the location, providing\n     * `line` and `ch` attributes.\n     */\n    highlightError: function(error) {\n      if ( error.location.file &&\n\t   (error.location.file == true ||\n\t    this.prologEditor('isMyFile', error.location.file)) ) {\n\tvar data = this.data(pluginName);\n\tvar chmark;\n\n\tif ( error.location.ch ) {\n\t  left = data.cm.charCoords({ line: error.location.line-1,\n\t\t\t\t      ch:   error.location.ch-1\n\t\t\t\t    },\n\t\t\t\t    \"local\").left;\n\t  chmark = $.el.div({class:\"source-msg-charmark\"},\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-chevron-up\"}));\n\t  $(chmark).css(\"padding-left\", left+\"px\");\n\t}\n\n\tvar elem = $.el.div({ class:\"source-msg error error-context\",\n\t\t\t      title:\"Error message.  Click to remove\"\n\t\t\t    },\n\t\t\t    chmark,\n\t\t\t    $(error.data)[0],\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-remove-circle\"}));\n\tvar widget = data.cm.addLineWidget(error.location.line-1, elem);\n\n\tif ( error.error_context )\n\t  $(elem).data(\"error_context\", error.error_context);\n\t$(elem).on(\"click\", function(ev) {\n\t  if ( error.error_handler &&\n\t       error.error_handler(ev) == false )\n\t    return;\n\t  widget.clear();\n\t});\n\t$(elem).data(\"cm-widget\", widget);\n      }\n\n      return this;\n    },\n\n    /**\n     * Re-run the highlighting.  Used for query editors if the\n     * associated editor has changed.\n     */\n    refreshHighlight: function() {\n      var data = this.data(pluginName);\n      data.cm.serverAssistedHighlight(true);\n      return this;\n    },\n\n    /**\n     * Refresh the editor.  This is often needed if it is resized.\n     */\n    refresh: function() {\n      var data = this.data(pluginName);\n      if ( data )\n\tdata.cm.refresh();\n      return this;\n    },\n\n    /**\n     * Remove all inline messages from the editor\n     */\n    clearMessages: function() {\n      this.find(\".source-msg\").each(function() {\n\t$(this).data(\"cm-widget\").clear();\n      });\n\n      this.prologEditor('showTracePort', null);\n\n      return this;\n    },\n\n    /**\n     * Execute a command on the editor from the menu.  The trick is to\n     * find the current editor.  For that purpose we make \"blur\" trigger\n     * the 'prepare' command that sets the last editor.  On the\n     * following menu action we execute on the last editor.\n     */\n   execCommand: function(command) {\n     if ( command == 'prepare' ) {\n       lastEditor = this[0];\n     } else if ( lastEditor == this[0] ) {\n       elem = $(lastEditor);\n       var data = elem.data(pluginName);\n       data.cm.execCommand(command);\n       elem.find(\".Codemirror-dialog input\").focus();\n     }\n\n     return this;\n   },\n\n    /**\n     * @param {String} file is the file as known to Prolog,\n     * which is `pengine://<pengine>/src/` for the pengine main file\n     * and `swish://store.pl` for included files.\n     * @return {Boolean} whether or not this is my file.\n     */\n    isMyFile: function(file) {\n      var prefix = \"swish://\";\n\n      if ( file.startsWith(\"pengine://\") ) {\n\tvar data = this.data(pluginName);\n\n\tif ( data.pengines &&\n\t     (id = file.split(\"/\")[2]) &&\n\t     data.pengines.indexOf(id) >= 0 )\n\t  return true;\n      }\n\n      if ( file.startsWith(prefix) ) {\n\tvar store = this.data(\"storage\");\n\n\tif ( store && file.slice(prefix.length) == store.file )\n\t  return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Highlight source events.  The source pengine gets a prompt\n     * with `prompt.file` set to `pengine://<id>/src`.\n     * @param {Object|null} prompt for a tracer action.  Use `null`\n     * to clear.\n     * @return {jQuery|undefined} `this` if successful.  `undefined`\n     * if this is a valid trace event, but I cannot process it.\n     */\n    showTracePort: function(prompt) {\n      if ( this.length == 0 )\n\treturn this;\n\n      var data  = this.data(pluginName);\n\n      if ( data.traceMark ) {\n\tdata.traceMark.clear();\n\tdata.traceMark = null;\n      }\n\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file  = prompt.source.file;\n\n\tif ( this.prologEditor('isMyFile', file) ) {\n\t  if ( prompt.source.from && prompt.source.to ) {\n\t    var from = data.cm.charOffsetToPos(prompt.source.from);\n\t    var to   = data.cm.charOffsetToPos(prompt.source.to);\n\n\t    if ( !this.is(\":visible\") )\n\t      this.storage('expose', \"trace\");\n\n\t    if ( from && to ) {\n\t      data.traceMark = data.cm.markText(from, to,\n\t\t\t\t\t\t{ className: \"trace \"+prompt.port\n\t\t\t\t\t\t});\n\t      data.traceMark.pengine = prompt.pengine;\n\t      data.cm.scrollIntoView(from, 50);\n\t    }\n\t  }\n\n\t  return this;\n\t}\n      } else {\n\treturn this;\n      }\n    },\n\n    /**\n     * Get the selection for later reuse.\n     * @returns {null|Array} Array of selection descriptions for each\n     * editor in the jQuery object that has a selection.  Each editor\n     * selection contains `editor` and `selections`, where `selections`\n     * is an array of objects with `from`, `to` (line,ch), `string` and\n     * `context`.  The latter two allow for fuzzy restoration of the\n     * selection.\n     */\n    getSelection: function() {\n      var selection = [];\n\n      this.each(function() {\n\tvar ed   = $(this);\n\tvar data = ed.data(pluginName);\n\n\tif ( data.cm.somethingSelected() == true ) {\n\t  var sel    = data.cm.listSelections();\n\t  var esel   = {selections:[]};\n\n\t\t\t\t\t\t/* Hack */\n\t  var cell_name = ed.closest(\".nb-cell\").attr(\"name\");\n\t  if ( cell_name )\n\t    esel.cell = cell_name;\n\n\t  for(var i=0; i<sel.length; i++) {\n\t    var s = sel[i];\n\t    var sr = {};\n\n\t    function cmploc(l1, l2) {\n\t      if ( l1.line < l2.line ) return -1;\n\t      if ( l1.line > l2.line ) return  1;\n\t      if ( l1.ch   < l2.ch   ) return -1;\n\t      if ( l1.ch   > l2.ch   ) return  1;\n\t      return 0;\n\t    }\n\t    function sol(pos) {\n\t      return {line:pos.line, ch:0};\n\t    }\n\t    function eol(pos) {\n\t      return {line:pos.line, ch:data.cm.getLine(pos.line).length};\n\t    }\n\t    function cppos(pos) {\n\t      return {line:pos.line, ch:pos.ch};\n\t    }\n\n\t    switch ( cmploc(s.anchor, s.head) )\n\t    { case -1:\n\t\tsr.from = cppos(s.anchor);\n\t        sr.to   = cppos(s.head);\n\t\tbreak;\n\t      case 1:\n\t\tsr.to   = cppos(s.anchor);\n\t        sr.from = cppos(s.head);\n\t\tbreak;\n\t      case 0:\n\t\tcontinue;\n\t    }\n\n\t    sr.string  = data.cm.getRange(sr.from, sr.to);\n\t    sr.context = data.cm.getRange(sol(sr.from), eol(sr.to));\n\n\t    esel.selections.push(sr);\n\t  }\n\n\t  selection.push(esel);\n\t}\n      });\n\n      return selection.length > 0 ? selection : null;\n    },\n\n    /**\n     * @param {Array} sel is the selection to restore\n     * @fixme deal with notebook selections\n     */\n    restoreSelection: function(selection) {\n      function restoreEditorSelection(ed, sel) {\n\tvar data    = ed.data(pluginName);\n\tvar cm      = data.cm;\n\tvar cmsel   = [];\n\tvar loffset = \"\";\n\n\tfunction findsel(s) {\n\t  if ( cm.getRange(s.from, s.to) == s.string ) {\n\t    return {anchor:s.from, head: s.to};\n\t  } else {\n\t    var start   = cm.firstLine();\n\t    var end     = cm.lastLine();\n\t    var offset  = 0;\n\t    var goffset = 1;\n\n\t    function contextMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tif ( cm.getLine(l0+i) != lines[i] )\n\t\t  return false;\n\t      }\n\t      return true;\n\t    }\n\n\t    function stringMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tvar cml = cm.getLine(l0);\n\t\tvar   l = lines[i];\n\t\tvar choff;\n\n\t\tif ( i == 0 ) {\n\t\t  if ( i == lines.length-1 ) {\n\t\t    return cml.indexOf(l);\n\t\t  } else {\n\t\t    choff = cml.indexOf(l);\n\n\t\t    if ( !(choff >= 0 && l.length+choff == cml.length) )\n\t\t      return -1;\n\t\t  }\n\t\t} else if ( i == lines.length-1 ) {\n\t\t  if ( cml.indexOf(l) != 0 )\n\t\t    return -1;\n\t\t} else {\n\t\t  if ( cm.getLine(l0+i) != lines[i] )\n\t\t    return -1;\n\t\t}\n\t      }\n\t      return choff;\t\t\t/* ch of selection start */\n\t    }\n\n\t    function poff(p, l, ch) {\n\t      ch = ch||0;\n\t      return {line:p.line+l, ch:p.ch+ch};\n\t    }\n\n\t    while( s.from.line+offset >= start &&\n\t\t   s.to.line+offset <= end ) {\n\t      var ch;\n\n\t      if ( contextMatch(s.from.line+offset, s.context) )\n\t\treturn { anchor:poff(s.from, offset),\n\t\t\t head:  poff(s.to,   offset),\n\t\t\t offset:offset\n\t\t       };\n\t      if ( (ch=stringMatch(s.from.line+offset, s.string)) >= 0 ) {\n\t\tvar soff = ch-s.from.ch;\n\t\tvar toff = s.to.line != s.from.line ? 0 : soff;\n\n\t\treturn { anchor:poff(s.from, offset, soff),\n\t\t\t head:  poff(s.to,   offset, toff),\n\t\t\t offset:offset\n\t\t       };\n\t      }\n\n\t      goffset++;\n\t      offset = Math.floor(goffset/2);\n\t      if ( goffset%2 == 1 )\n\t\toffset = -offset;\n\t    }\n\t  }\n\t}\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var r = findsel(sel[i]);\n\t  if ( r ) {\n\t    cmsel.push(r);\n\t    if ( r.offset ) {\n\t      if ( loffset != \"\" )\n\t\tloffset += \";\";\n\t      loffset += r.offset\n\t    }\n\t  }\n\t}\n\n\tif ( cmsel.length > 0 )\n\t  cm.setSelections(cmsel, 0);\n\tif ( loffset != \"\" || cmsel.length < sel.length ) {\n\t  var msg;\n\n\t  if ( cmsel.length == sel.length )\n\t    msg = \"Found selections at offset \"+loffset;\n\t  else if ( loffset == \"\" )\n\t    msg = \"Could not restore all selections\";\n\t  else\n\t    msg = \"Only found some selections at offsets \" + loffset;\n\n\t  modal.feedback({ html: msg, owner: ed });\n\t}\n      }\n\n      // Our body\n      if ( selection[0].cell ) {\t/* notebook style */\n\tvar editors = this;\n\n\tfor(var i=0; i<selection.length; i++) {\n\t  var s = selection[i];\n\n\t  function findEditor(name) {\n\t    for(var i=0; i<editors.length; i++) {\n\t      if ( $(editors[i]).closest(\".nb-cell\").attr(\"name\") == name )\n\t\treturn $(editors[i]);\n\t    }\n\t  }\n\n\t  var ed = findEditor(s.cell);\n\t  if ( ed )\n\t    restoreEditorSelection(ed, s.selections);\n\t}\n      } else {\t\t\t\t/* plain editor */\n\trestoreEditorSelection(this, selection);\n      }\n\n      return this;\n    },\n\n    /**\n     * Extract example queries from text.  By   default,  this looks for\n     * structured  comment  blocks  labelled   *examples*  and  extracts\n     * fragments between `^ *?-` and `.`\n     *\n     * @param {String} [src] Source to parse. Default is the editor\n     * content.\n     * @param {Boolean} [inComment=true] if `true`, only process text\n     * that is in an *examples* structured comment block\n     * @returns {null|Array} Examples extracted from the source code.  If\n     * there is _no source_ code, `null` is returned.\n     */\n    getExamples: function(src, inComment) {\n      var source = src ? src : this.prologEditor('getSource');\n      var comments;\n      var exlist = [];\n\n      if ( $.trim(source) == \"\" )\n\treturn null;\n\n      if ( inComment == false )\n\tcomments = [src];\n      else\n\tcomments = source.match(/\\/\\*\\* *<?examples>?[\\s\\S]*?\\*\\//igm);\n\n      if ( comments ) {\n\tfor(var i=0; i<comments.length; i++) {\n\t  var exl = comments[i].match(/^ *\\?-[\\s\\S]*?[^-#$&*+./:<=>?@\\\\^~]\\.\\s/gm);\n\n\t  if ( exl ) {\n\t    for(var j=0; j<exl.length; j++) {\n\t      var ex = exl[j].replace(/^ *\\?-\\s*/, \"\")\n\t\t\t     .replace(/\\s*$/, \"\");\n\t      exlist.push(ex);\n\t    }\n\t  }\n\t}\n      }\n\n      return exlist;\n    },\n\n    /**\n     * Add an example to the examples comment block or create such a\n     * block.\n     */\n    addExample: function(query) {\n      var cm      = this.data(pluginName).cm;\n      var source = this.prologEditor('getSource');\n      var start  = this.prologEditor('search',\n\t\t\t\t     /\\/\\*\\* *<?examples>?/igm, {dir:-1,max:1});\n      var end    = this.prologEditor('search', /\\*\\//, {start:start.line,max:1});\n\n      if ( start.length == 1 )\n      { var end = this.prologEditor('search', /\\*\\//,\n\t\t\t\t    {start:start[0].line, max:1});\n\tvar current = this.prologEditor('getExamples', source);\n\n\tif ( current && current.indexOf(query) != -1 )\n\t{ modal.alert(\"Query is already in examples\");\n\t  return this;\n\t}\n\tif ( end.length != 1 )\n\t{ modal.alert(\"/** <examples> block is not terminated with */\");\n\t  return this;\n\t}\n\n\tquery = query.split(\"\\n\").join(\"\\n   \");\n\tcm.setSelection({line:end[0].line-1, ch:0});\n\tcm.replaceSelection(\"?- \"+query+\"\\n\");\n      } else\n      { cm.setSelection({line:cm.lastLine(), ch:0});\n\tcm.replaceSelection(\"/** <examples>\\n\" +\n\t\t\t    \"?- \"+query+\"\\n\" +\n\t\t\t    \"*/\\n\");\n      }\n\n      return this;\n    },\n\n    /**\n     * @param {RegExp} re is the regular expression to search for\n     * @param {Object} [options]\n     * @param {number} [options.max] is the max number of hits to return\n     * @param {number} [options.dir=1] is -1 to search backwards\n     * @param {number} [options.start] to start at a given line\n     * @param {number} [options.end] to end at a given line\n     * @returns {Array.object} list of objects holding the matching line\n     * content and line number.\n     */\n    search: function(re, options) {\n      var cm      = this.data(pluginName).cm;\n      var dir     = options.dir||1;\n      var start   = options.start == undefined ? cm.firstLine() : options.start;\n      var end     = options.end   == undefined ? cm.lastLine()  : options.end;\n      var matches = [];\n\n      if ( (dir == -1 && end > start) ||\n\t   (dir == 1 && start > end) )\n      { var tmp = start;\n\tstart = end;\n\tend = tmp;\n      }\n\n      if ( (dir > 0 && start > end) ||\n\t   (dir < 0 && start < end) )\n\treturn matches;\n      end += dir;\n\n      for(var i=start; i!=end; i+=dir) {\n\tvar line = cm.getLine(i);\n\tif ( line.search(re) >= 0 ) {\n\t  matches.push({line:i+1, text:line});\n\t  if ( options.max && options.max === matches.length )\n\t    return matches;\n\t}\n      }\n\n      return matches;\n    },\n\n    /**\n     * Go to a given 1-based line number and optionally highlight the\n     * match(es).\n     *\n     * @param {number} line\n     * @param {Object} [options]\n     * @param {RegExp} [options.regex] If provided, highlight the\n     * matches.\n     * @param {Boolean} [options.showAllMatches] if `true`, show all\n     * matches in the viewport.\n     */\n    gotoLine: function(line, options) {\n      var data = this.data(pluginName);\n      var cm   = data.cm;\n      var ch   = 0;\n      var re;\n\n      function clearSearchMarkers(cm) {\n\tif ( cm._searchMarkers !== undefined ) {\n\t  for(var i=0; i<cm._searchMarkers.length; i++)\n\t    cm._searchMarkers[i].clear();\n\t  cm.off(\"cursorActivity\", clearSearchMarkers);\n\t}\n\tcm._searchMarkers = [];\n      }\n\n      clearSearchMarkers(cm);\n      options = options||{};\n      re      = options.regex;\n      line    = line-1;\n\n      if ( re ) {\n\tch = cm.getLine(line).search(re);\n\tif ( ch < 0 )\n\t  ch = 0;\n      }\n\n      cm.setCursor({line:line,ch:ch});\n      var myHeight = cm.getScrollInfo().clientHeight;\n      var coords = cm.charCoords({line: line, ch: 0}, \"local\");\n      cm.scrollTo(null, (coords.top + coords.bottom - myHeight) / 2);\n\n      if ( re ) {\n\tfunction markMatches(line, className) {\n\t  var match;\n\n\t  while( (match=re.exec(cm.getLine(line))) ) {\n\t    cm._searchMarkers.push(\n\t      cm.markText({line:line,ch:match.index},\n\t\t\t  {line:line,ch:match.index+match[0].length},\n\t\t\t  {className:className,\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Search match\"\n\t\t\t  }));\n\t  }\n\t}\n\n\tmarkMatches(line, \"CodeMirror-search-match\");\n\tif ( options.showAllMatches ) {\n\t  var vp = cm.getViewport();\n\n\t  for(var i=vp.from; i<vp.to; i++) {\n\t    if ( i != line ) {\n\t      markMatches(i, \"CodeMirror-search-alt-match\");\n\t    }\n\t  }\n\t}\n\n\tif ( cm._searchMarkers.length > 0 )\n\t  cm.on(\"cursorActivity\", clearSearchMarkers);\n      } else {\t\t\t\t\t/* mark entire line */\n\tcm._searchMarkers.push(\n\t      cm.markText({line:line, ch:0},\n\t\t\t  {line:line, ch:cm.getLine(line).length},\n\t\t\t  {className:\"CodeMirror-search-match\",\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Target line\"\n\t\t\t  }));\n      }\n\n      return this;\n    },\n\n    /**\n     * @return {Integer} change generation for this editor\n     */\n    changeGen: function() {\n      return this.data(pluginName).cm.changeGeneration();\n    },\n\n    isClean: function(gen) {\n      return this.data(pluginName).cm.isClean(gen);\n    },\n\n    /**\n     * Associate the editor with the server side (gitty) source\n     */\n    setupStorage: function(storage) {\n      var data = this.data(pluginName);\n      var elem = this;\n\n      storage.setValue = function(source) {\n\telem.prologEditor('setSource', source, true);\n      };\n      storage.getValue = function() {\n\treturn data.cm.getValue();\n      };\n      storage.changeGen = function() {\n\treturn data.cm.changeGeneration();\n      };\n      storage.isClean = function(generation) {\n\treturn data.cm.isClean(generation);\n      };\n      storage.markClean = function(clean) {\n\telem.prologEditor('markClean', clean);\n      };\n\n      storage.cleanGeneration = data.cm.changeGeneration();\n      storage.cleanData       = data.cm.getValue();\n      storage.cleanCheckpoint = \"load\";\n\n      this.storage(storage);\n      return this;\n    },\n\n    /**\n     * Act on the current token.  Normally invoked after a long click.\n     */\n    contextAction: function() {\n      var elem  = this;\n      var data  = this.data(pluginName);\n      var here  = data.cm.getCursor();\n      var token = data.cm.getTokenAt(here, true);\n      var et    = data.cm.getEnrichedToken(token);\n      var locations = data.cm.getTokenReferences(et);\n\n      if ( locations && locations.length > 0 ) {\n\tvar ul = $.el.ul();\n\tvar select  = $.el.div({class: \"goto-source\"}, $.el.div(\"Go to\"), ul);\n\tvar modalel = $.el.div({class: \"edit-modal\"},\n\t\t\t       $.el.div({class: \"mask\"}),\n\t\t\t       select)\n\n\tfor(var i=0; i<locations.length; i++) {\n\t  var loc = locations[i];\n\t  $(ul).append($.el.li($.el.a({'data-locindex':i}, loc.title)));\n\t}\n\n\tvar coord = data.cm.cursorCoords(true);\n\t$(select).css({top: coord.bottom, left: coord.left});\n\n\t$(\"body\").append(modalel);\n\t$(modalel).on(\"click\", function(ev) {\n\t  var i = $(ev.target).data('locindex');\n\t  $(modalel).remove();\n\n\t  if ( i !== undefined ) {\n\t    var loc = locations[i];\n\n\t    if ( loc.file ) {\n\t      elem.closest(\".swish\").swish('playFile', loc);\n\t    } else {\n\t      var editor;\n\n\t      // If we are the query editor, we must find the related\n\t      // program editor.\n\t      if ( data.role == \"query\" ) {\n\t\teditor = elem.closest(\".prolog-query-editor\")\n\t\t\t     .queryEditor('getProgramEditor');\n\n\t\tif ( !editor[0] )\n\t\t  modal.alert(\"No related program editor\");\n\t      } else\n\t      { editor = elem;\n\t      }\n\n\t      if ( editor && editor[0] )\n\t\teditor.prologEditor('gotoLine', loc.line, loc).focus();\n\t    }\n\n\t  }\n\t});\n\n\t$(modalel).show();\n      }\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\tQUERY MANIPULATION\t*\n\t\t *******************************/\n\n    /**\n     * @param {String} [query] query to get the variables from\n     * @param {Boolean} [anon] if `true`, also include _X variables.\n     * @return {List.string} is a list of Prolog variables without\n     * duplicates\n     */\n\n    variables: function(query, anon) {\n      var qspan = $.el.span({class:\"query cm-s-prolog\"});\n      var vars = [];\n\n      CodeMirror.runMode(query, \"prolog\", qspan);\n\n      function addVars(selector) {\n\t$(qspan).find(selector).each(function() {\n\t  var name = $(this).text();\n\t  if ( vars.indexOf(name) < 0 )\n\t    vars.push(name);\n\t});\n      }\n\n      addVars(\"span.cm-var\");\n      if ( anon )\n\taddVars(\"span.cm-var-2\");\n\n      return vars;\n    },\n\n    /**\n     * Wrap current query in a solution modifier.\n     * TBD: If there is a selection, only wrap the selection\n     *\n     * @param {String} wrapper defines the type of wrapper to use.\n     */\n    wrapSolution: function(wrapper) {\n      var query = prolog.trimFullStop(this.prologEditor('getSource', \"query\"));\n      var that = this;\n      var vars = this.prologEditor('variables', query);\n\n      function wrapQuery(pre, post) {\n\tthat.prologEditor('setSource', pre + \"(\"+query+\")\" + post + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function prefixQuery(pre) {\n\tthat.prologEditor('setSource', pre + query + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function order(l) {\n\tvar order = [];\n\tfor(var i=0; i<vars.length; i++)\n\t  order.push(\"asc(\"+vars[i]+\")\");\n\treturn order.join(\",\");\n      }\n\n      switch ( wrapper ) {\n        case \"Aggregate (count all)\":\n\t  return wrapQuery(\"aggregate_all(count, \", \", Count)\");\n\tcase \"Projection\":\n\t  return prefixQuery(\"projection([\"+vars.join(\",\")+\"]),\\n\");\n        case \"Order by\":\n\t  return wrapQuery(\"order_by([\"+order(vars)+\"], \", \")\");\n        case \"Distinct\":\n\t  return wrapQuery(\"distinct([\"+vars.join(\",\")+\"], \", \")\");\n        case \"Limit\":\n\t  return wrapQuery(\"limit(10, \", \")\");\n        case \"Time\":\n\t  return wrapQuery(\"time(\", \")\");\n        case \"Debug (trace)\":\n\t  return wrapQuery(\"trace, \", \"\");\n\tdefault:\n\t  alert(\"Unknown wrapper: \\\"\"+wrapper+\"\\\"\");\n      }\n    }\n  }; // methods\n\n  tabbed.tabTypes.program = {\n    dataType: \"pl\",\n    typeName: \"program\",\n    label: \"Program\",\n    contentType: \"text/x-prolog\",\n    order: 100,\n    create: function(dom, options) {\n      $(dom).addClass(\"prolog-editor\")\n            .prologEditor($.extend({save:true}, options))\n\t    .prologEditor('makeCurrent');\n    }\n  };\n\n  if ( config.swish.tab_types ) {\n    var editDefaults = {\n      save: true,\n      lineNumbers: true\n    };\n\n    for(var i=0; i<config.swish.tab_types.length; i++) {\n      var tabType = config.swish.tab_types[i];\n      if ( tabType.editor ) {\n\tvar options = $.extend({typeName:tabType.typeName},\n\t\t\t       editDefaults,\n\t\t\t       tabType.editor);\n\n\ttabType.create = function(dom) {\n\t  $(dom).addClass(\"prolog-editor\")\n\t        .prologEditor(options);\n\t};\n\n\ttabbed.tabTypes[tabType.typeName] = tabType;\n      }\n    }\n  }\n\n\n  /**\n   * The prologEditor jQuery plugin converts a `<div>` into an code\n   * editor based on [CodeMirror](http://codemirror.net)\n   *\n   * @class prologEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example // Create a default Prolog editor\n   * $(\"#editor\").prologEditor();\n   * @example // Extract embedded examples\n   * $(\"#editor\").prologEditor('getExamples');\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\nCodeMirror.prototype.charOffsetToPos = function(offset) {\n  var line = this.firstLine();\n  var last = this.lastLine();\n  var charno = 0;\n\n  for( ; line < last; line++ ) {\n    var text = this.getLine(line);\n\n    if ( charno <= offset && charno+text.length >= offset )\n      return {line:line, ch:offset-charno};\n\n    charno += text.length + 1;\t\t/* one extra for the newline */\n  }\n};\n\n\n\t\t /*******************************\n\t\t *\t      EMACS\t\t*\n\t\t *******************************/\n\nCodeMirror.keyMap.emacs.Enter = \"newlineAndIndent\";\n\n\n\t\t /*******************************\n\t\t *\tSTYLE CONFIGURATION\t*\n\t\t *******************************/\n\n/**\n * Include styles provided through the configuration object.\n *\n * @param {Object} style is an object mapping style names into style\n * properties.  The properties are also in an object, linking style\n * names to values.  For example:\n *\n *    ```\n *    { column: {color: \"#8b008b},\n *      table:  {color: \"#8b008b, \"font-weight\":\"bold\"}\n *    }\n *    ```\n */\n\nfunction loadStyleExtensions(style, prefix)\n{ var parts=[];\n\n  prefix = prefix || \"\";\n\n  parts.push(\"<style>\\n\");\n  for(var sname in style) {\n    if ( style.hasOwnProperty(sname) ) {\n      var attrs = style[sname];\n\n      parts.push(prefix, sname, \"{\");\n\n      for(var a in attrs) {\n\tif ( attrs.hasOwnProperty(a) ) {\n\t  parts.push(a, \":\", attrs[a], \";\");\n\t}\n      }\n\n      parts.push(\"}\\n\");\n    }\n  }\n  parts.push(\"</style>\\n\");\n\n  $(\"body\").append(parts.join(\"\"));\n}\n\nif ( config.swish.cm_style )\n  loadStyleExtensions(config.swish.cm_style,\n\t\t      \".cm-s-prolog span.cm-\");\nif ( config.swish.cm_hover_style )\n  loadStyleExtensions(config.swish.cm_hover_style,\n\t\t      \".CodeMirror-hover-tooltip \");\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2018, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the query editing facilities.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('query',[ \"jquery\", \"config\", \"preferences\", \"cm/lib/codemirror\", \"modal\",\n\t \"utils\",\n\t \"laconic\", \"editor\"\n       ],\n       function($, config, preferences, CodeMirror, modal, utils) {\n\n(function($) {\n  var pluginName = 'queryEditor';\n\n  var defaults = {\n    maxHistoryLength: 50\n  };\n\n  /** @lends $.fn.queryEditor */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Runner} options.runner an object that understands\n     * run(source, query), where source and query are strings.\n     * @param {Array.String|Function} [options.examples] called to\n     * populate the _Examples_ menu. Must return an array of strings.\n     * @param {Integer} [options.maxHistoryLength=50] is the max number\n     * of entries recalled by the history menu.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem   = $(this);\n\tvar data   = $.extend({}, defaults, options);\n\tvar qediv  = $.el.div({class:\"query\"});\n\tvar tabled = tableCheckbox(data);\n\n\telem.addClass(\"prolog-query-editor swish-event-receiver reactive-size \" +\n\t\t      \"unloadable\");\n\n\telem.append(qediv,\n\t\t    $.el.div({class:\"prolog-prompt\"}, \"?-\"),\n\t\t    $.el.div({class:\"query-buttons\"},\n\t\t\t     $.el.span({class:\"buttons-left\"},\n\t\t\t\t       examplesButton(data),\n\t\t\t\t       historyButton(data),\n\t\t\t\t       aggregateButton(data)),\n\t\t\t     $.el.span({class:\"buttons-right\"},\n\t\t\t\t       tabled,\n\t\t\t\t       runButton(data))));\n\n\tfunction tableSelected() {\n\t  return $(tabled).find(\"input\").prop(\"checked\");\n\t}\n\n\t$(qediv).append(elem.children(\"textarea\"))\n\t        .prologEditor({ role: \"query\",\n\t\t\t\tsourceID: function() {\n\t\t\t\t  return data.sourceID();\n\t\t\t\t},\n\t\t\t\tprologQuery: function(q) {\n\t\t\t\t  elem.queryEditor('run', q, tableSelected());\n\t\t\t\t}\n\t\t              });\n\n\telem.data(pluginName, data);\n\n\tif ( !$(qediv).prologEditor('getSource', \"query\") )\n\t{ if ( typeof(data.examples) == \"object\" ) {\n\t    if ( data.examples[0] )\n\t      $(qediv).prologEditor('setSource', data.examples[0]);\n\t  } else {\n\t    elem[pluginName]('setProgramEditor', $(data.editor), true);\n\t  }\n\t}\n\n\telem.on(\"current-program\", function(ev, editor) {\n\t  elem[pluginName]('setProgramEditor', $(editor));\n\t});\n\telem.on(\"program-loaded\", function(ev, options) {\n\t  var query = options.query;\n\n\t  if ( query != null ) {\t\t/* null: keep */\n\t    if ( query == undefined ) {\n\t      if ( $(data.editor).data('prologEditor') ==\n\t\t   $(options.editor).data('prologEditor') ) {\n\t\tvar exl = data.examples();\n\t\tquery = exl && exl[0] ? exl[0] : \"\";\n\t      }\n\t    }\n\t    elem.queryEditor('setQuery', query);\n\t  }\n\t});\n\telem.on(\"unload\", function(ev, rc) {\n\t  if ( elem.closest(\".swish\").swish('preserve_state') ) {\n\t    var state = elem[pluginName]('getState');\n\t    if ( state )\n\t      localStorage.setItem(\"query\", JSON.stringify(state));\n\t  }\n\t});\n\telem.on(\"restore\", function(ev, rc) {\n\t  if ( elem[pluginName]('getQuery') == \"\" ) {\n\t    var state;\n\t    // called with explicit query\n\t    // TBD: not save in this case?\n\t    try {\n\t      var str = localStorage.getItem(\"query\");\n\t      state = JSON.parse(str);\n\t    } catch(err) {\n\t    }\n\n\t    if ( typeof(state) == \"object\" ) {\n\t      elem[pluginName]('setState', state);\n\t    }\n\t  }\n\t});\n\telem.on(\"preference\", function(ev, pref) {\n\t  if ( pref.name == \"preserve-state\" &&\n\t       pref.value == false ) {\n\t    localStorage.removeItem(\"query\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * @param {jQuery} editor has become the new current program\n     * editor.  Update the examples and re-run the query highlighting.\n     */\n    setProgramEditor: function(editor, force) {\n      var data = this.data(pluginName);\n\n      if ( data.editor == editor[0] && !force )\n\treturn this;\n\n      data.editor = editor[0];\n      if ( data.editor ) {\n\tdata.examples = function() {\n\t  var exl    = editor.prologEditor('getExamples')||[];\n\t  var global = editor.parents(\".swish\").swish('examples', true)||[];\n\n\t  if ( $.isArray(global) )\n\t  exl.concat(global);\n\n\t  return exl;\n\t};\n\tif ( editor.prologEditor('isPengineSource') ) {\n\t  data.source = function() {\n\t    var src = editor.prologEditor('getSource', \"source\");\n\t    var bg  = $(\".background.prolog.source\").text();\n\n\t    if ( bg )\n\t      src += '\\n%@background@\\n' + bg;\n\n\t    return src;\n\t  };\n\t} else {\n\t  data.source = \"\";\n\t}\n\tdata.sourceID = function() {\n\t  return editor.prologEditor('getSourceID');\n\t};\n\n\tvar exl = data.examples();\n\tif ( exl && exl[0] && this.queryEditor('isClean') ) {\n\t  this.queryEditor('setQuery', exl[0]);\n\t} else {\n\t  editor.prologEditor('refreshHighlight');\n\t}\n      } else\n      { data.examples = \"\";\n      }\n    },\n\n    /**\n     * @returns {jQuery} the associated program editor\n     */\n    getProgramEditor: function() {\n      var data = this.data(pluginName);\n\n      if ( data.editor )\n\treturn $(data.editor);\n      else\n\treturn $();\n    },\n\n    /**\n     * @param {Array.String} set or extend the contents of the\n     * _Examples_ menu.\n     * @param {Boolean} [clear=true] clear the list before adding the\n     * new examples.\n     */\n    setExamples: function(list, clear) {\n      var ul = this.find(\"ul.examples\");\n\n      if ( !list ) list  = [];\n      if ( clear === undefined ) clear = true;\n\n      if ( clear && sameExamples(list) )\n\treturn this;\t\t\t/* no change */\n\n      function sameExamples(exs) {\n\tvar ex0;\n\n\tif ( (ex0=ul.data('examples')) &&\n\t     ex0.length == exs.length ) {\n\t  for(var i=0; i<ex0.length; i++) {\n\t    if ( ex0[i] != exs[i] )\n\t      return false;\n\t  }\n\t  return true;\n\t}\n\treturn false;\n      }\n\n      if ( clear === true )\n\tul.html(\"\");\n      ul.find(\"li.add-example, li.divider\").remove();\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n      ul.data('examples', list.slice(0));\n      ul.append($.el.li({class:\"divider\"}));\n      ul.append($.el.li({class:'add-example'},\n\t\t\t$.el.a(\"Add current query to examples\")));\n\n      return this;\n    },\n\n    /**\n     * Add the current query to the examples in the program\n     */\n    addExample: function()\n    { var query\t= this.find(\".query\").prologEditor('getSource');\n\n      if ( query.trim() != \"\" ) {\n\t$(\".swish-event-receiver:visible\")\n\t     .trigger(\"addExample\",\n\t\t      this.find(\".query\").prologEditor('getSource'));\n      } else\n      { modal.alert(\"The query window is empty\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Add a query to the history menu. If it is already part of the\n     * menu, move it to the bottom.  If the menu exceeds the value\n     * of the option `maxHistoryLength`, remove the oldest entry.\n     * @param {String} query query to add to the history menu.\n     */\n    addHistory: function(query) {\n      var ul   = this.find(\"ul.history\");\n      var data = this.data('queryEditor');\n\n      function findInHistory() {\n\treturn ul.children().filter(function() {\n\t  return $(this).text() == query;\n\t});\n      }\n\n      if ( query ) {\n\tvar li;\n\tvar a;\n\n\tif ( (li=findInHistory()) )\n\t  li.remove();\n\tif ( ul.children().length >= data.maxHistoryLength )\n\t  ul.children().first().remove();\n\tul.append($.el.li(a=$.el.a(query)));\n\t$(a).data('time', (new Date().getTime())/1000);\n      }\n\n      return this;\n    },\n\n    /**\n     * @return {Array} An arrayt of strings representing the\n     * current history.\n     */\n    getHistory: function() {\n      var ul   = this.find(\"ul.history\");\n      var h = [];\n\n      ul.children().each(function() {\n\tvar a =\t$(this).find(\"a\");\n\th.push({\n\t  query: a.text(),\n\t  time:  a.data('time')\n\t});\n      });\n\n      return h;\n    },\n\n    restoreHistory: function(h) {\n      var ul   = this.find(\"ul.history\");\n\n      ul.html(\"\");\n      for(var i=0; i<h.length; i++) {\n\tvar a;\n\tul.append($.el.li(a= $.el.a(h[i].query)));\n\t$(a).data('time', h[i].time);\n      }\n    },\n\n    /**\n     * Set the current query and focus the editor.\n     * @param {String} query the new value of the query\n     */\n    setQuery: function(query) {\n      var data = this.data(pluginName);\n\n      data.cleanGen =\n\tthis.find(\".query\")\n\t    .prologEditor('setSource', query)\n\t    .focus()\n\t    .prologEditor('changeGen');\n\n      return this;\n    },\n\n    isClean: function() {\n      var data = this.data(pluginName);\n\n      return ( !this.queryEditor('getQuery') ||\n\t       ( data.cleanGen &&\n\t\t this.find(\".query\").prologEditor('isClean', data.cleanGen)\n\t       )\n\t     );\n    },\n\n    /**\n     * @returns {String} the current query as Prolog text\n     */\n    getQuery: function() {\n      return this.find(\".query\").prologEditor('getSource', \"query\");\n    },\n\n    getState: function() {\n      return {\n        query:   this[pluginName]('getQuery'),\n        history: this[pluginName]('getHistory')\n      };\n    },\n\n    setState: function(state) {\n      this[pluginName]('restoreHistory', state.history||[]);\n      this[pluginName]('setQuery', state.query||\"\");\n    },\n\n    /**\n     * Collect source and query and submit them to the associated\n     * `runner`.\n     *\n     * @param {String} [q] is the query to execute.  Default asks it\n     * from the associated query editor.\n     * @param {Boolean} [tabled=false] when `true`, present the results\n     * as a table.\n     */\n    run: function(q, tabled) {\n      var data  = this.data('queryEditor');\n\n      if ( q === undefined ) q = this.queryEditor('getQuery');\n      q = $.trim(q);\n\n      if ( !q ) {\n\t$(\".swish-event-receiver\").trigger(\"help\", {file:\"query.html\"});\n\treturn this;\n      }\n      $(\".swish-event-receiver\").trigger(\"clearMessages\");\n\n      var query = { query: q,\n\t\t    editor: data.editor,\n\t\t    query_editor: this.find(\".query\")\n\t\t  };\n\n      if ( typeof(data.source) == \"function\" )\n\tquery.source = data.source(q);\n      else if ( typeof(data.source) == \"string\" )\n\tquery.source = data.source;\n      if ( tabled )\n\tquery.tabled = true;\n\n      this.queryEditor('addHistory', q);\n      data.runner.prologRunners('run', query);\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\tPRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  /* Allow for e.g. Q(part).method(...)\n  */\n\n  function Q(from) {\n    return $(from).closest(\".prolog-query-editor\");\n  }\n\n  function dropup(cls, label, options) {\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\tlabel,\n\t$.el.span({class:\"caret\"})),\n      $.el.ul({class:\"dropdown-menu \"+cls}));\n\n    $(dropup).on(\"click\", \"a\", function() {\n      var li = $(this).closest(\"li\");\n\n      if ( li.hasClass(\"add-example\") )\n\tQ(this).queryEditor('addExample');\n      else\n\tQ(this).queryEditor('setQuery', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function examplesButton(options) {\n    var el = dropup(\"examples\", \"Examples\", options);\n    var ul = $(el).find(\"ul\");\n\n    function updateExamples(options) {\n      var list = options.examples();\n\n      if ( $.isArray(list) )\n\tQ(el).queryEditor('setExamples', list, true);\n    }\n\n    if ( typeof(options.examples) == \"function\" ) {\n      var copy = $.extend({}, options);\n      $(el).mousedown(function(ev) {\n\t\t\tif ( ev.which == 1 ) {\n\t\t\t  updateExamples(copy);\n\t\t\t}\n\t\t      });\n    } else if ( options.examples ) {\n      var list = options.examples;\n\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n    }\n\n    return el;\n  }\n\n  function historyButton(options) {\n    var menu = dropup(\"history\", \"History\", options);\n\n    $(menu).on(\"mouseenter\", \"li\", function(ev) {\n      var a = $(ev.target).closest(\"li\").find(\"a\");\n      a.attr(\"title\", utils.ago(a.data('time')));\n    });\n\n    return menu;\n  }\n\n  function aggregateButton(options) {\n    var cls = \"aggregate\";\n    var list = options.aggregates ||\n      [ \"Aggregate (count all)\",\n\t\"--\",\n\t\"Projection\",\n\t\"Order by\",\n\t\"Distinct\",\n\t\"Limit\",\n\t\"--\",\n\t\"Time\",\n\t\"Debug (trace)\"\n      ];\n    var ul;\n\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\t\"Solutions\",\n\t$.el.span({class:\"caret\"})),\n      ul=$.el.ul({class:\"dropdown-menu \"+cls}));\n\n    for(var i = 0; i<list.length; i++) {\n      var wrap = list[i];\n\n      if ( wrap == \"--\" )\n\t$(ul).append($.el.li({class:\"divider\"}));\n      else\n\t$(ul).append($.el.li($.el.a(wrap)));\n    }\n\n    $(dropup).on(\"click\", \"a\", function() {\n      Q(this).find(\".query\").prologEditor('wrapSolution', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function runButton(options) {\n    var button =\n      $.el.button(\n\t{class:\"run-btn-query\",\n\t class:\"btn btn-default btn-primary btn-xs\"\n\t},\n\t\"Run!\");\n\n    $(button).on(\"click\", function() {\n      Q(this).queryEditor('run', undefined, tableSelected(this));\n    });\n\n    return button;\n  }\n\n  function tableSelected(from) {\n    return $(from).parent().find(\"input\").prop(\"checked\");\n  }\n\n  function tableCheckbox(options) {\n    var checked = preferences.getVal(\"tabled_results\");\n    var attr    = {type:\"checkbox\", name:\"table\"};\n\n    if ( checked === undefined ) {\n      checked = config.swish.tabled_results;\n    }\n    if ( checked )\n      attr.checked = \"checked\";\n\n    var input = $.el.input(attr);\n    var checkbox = $.el.span({class:\"run-chk-table\"},\n\t\t\t     input, \" table results\");\n    $(input).on(\"change\", function(ev) {\n      preferences.setVal(\"tabled_results\",\n\t\t\t $(ev.target).prop(\"checked\"));\n    });\n\n    return checkbox;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class queryEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.queryEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\ndefine('term',[ \"jquery\" ],\n       function() {\n\nfunction unfold() {\n\t$(this).next().toggleClass('fold')\n\t$(this).remove()\n}\n\n$(document).on('click', '.pl-functor, .pl-infix', function() {\n\tvar p = $(this).parent()\n\t$(p).toggleClass('fold')\n\t$(p).before('<span class=\"pl-ellipsis\">...</span>').prev().click(unfold)\n})\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Handle JavaScript based login\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('login',[ \"jquery\", \"modal\", \"config\", \"form\", \"laconic\" ],\n       function($, modal, config, form) {\n\nvar DEFAULT_USER_FIELDS = [\"display_name\", \"email\", \"avatar\"];\n\n(function($) {\n  var pluginName = 'login';\n\n  /** @lends $.fn.login */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tdata.url = elem.attr(\"href\");\n\telem.removeAttr(\"href\");\n\n\telem.on(\"click\", function(ev) {\n\t  if ( elem.hasClass(\"login\") )\n\t    elem.login('login', ev);\n\t});\n\n\telem.data(pluginName, data);\n\telem.login('update', \"startup\");\n      });\n    },\n\n    /**\n     * Update the status of the login element\n     */\n    update: function(why) {\n      var elem = $(this);\n      $.get(config.http.locations.user_info, {reason:why},\n\t    function(obj) {\n\t      if ( obj ) {\n\t\tconfig.swish.user = obj;\n\t\telem.removeClass(\"login\").addClass(\"logout\");\n\n\t\tvar span = elem.find(\"span.logout span.value\");\n\t\tvar icon;\n\n\t\tif ( obj.avatar ) {\n\t\t  icon = $.el.img({ class: \"profile-picture\",\n\t\t\t\t    src: obj.avatar\n\t\t\t\t  });\n\t\t} else {\n\t\t  icon = $.el.span({class:\"glyphicon glyphicon-user\"});\n\t\t}\n\t\ticon = $.el.span(icon, $.el.b({class: \"caret\"}));\n\t\tspan.html(\"\");\n\t\tspan.append(form.widgets.dropdownButton(icon, {\n\t\t  divClass:\"user-menu btn-transparent\",\n\t\t  ulClass:\"pull-right\",\n\t\t  client: elem,\n\t\t  actions: {\n\t\t    \"Logout\":  elem.hasClass('no-logout') ? undefined :\n\t\t\t       function() {\n\t\t      this.login('logout');\n\t\t    },\n\t\t    \"Profile\": function() {\n\t\t      this.login('profile');\n\t\t    }\n\t\t  }\n\t\t}));\n\n\t\tif ( why == \"logout_by_http\" )\n\t\t  modal.alert(\"Failed to logout from HTTP login.  Logout from HTTP \"+\n\t\t\t      \"is known not to work for Chrome.  For some browsers \"+\n\t\t\t      \"there is a plugin to logout.  Otherwise stopping your \"+\n\t\t\t      \"browser completely (all pages) and restarting is the \"+\n\t\t\t      \"only way to logout.  HTTP logout does work for FireFox \"+\n\t\t\t      \"and IE.\");\n\n\t      } else\n\t      { delete config.swish.user;\n\t\telem.removeClass(\"logout\").addClass(\"login\");\n\t      }\n\t      $(\".sourcelist\").trigger(\"login\");\n\t    },\n\t    \"json\");\n    },\n\n    /**\n     * Perform the login\n     */\n    login: function(ev) {\n      var elem   = $(this);\n      var data   = this.data(pluginName);\n      var target = $(ev.target);\n      var url    = data.url;\n      var server = target.closest(\"[data-server]\").data(\"server\");\n      var frame  = target.closest(\"[data-frame]\").data(\"frame\")||\"iframe\";\n\n      if ( server )\n\turl += \"?server=\"+encodeURIComponent(server);\n\n      if ( frame == \"popup\" ) {\n\topenPopup(url, \"_blank\",\n\t\t  'location=true,status=true,height=400,width=800',\n\t\t  function() {\n\t\t    elem.login('logged_in');\n\t\t  });\n      } else {\n\tmodal.show({\n\t  title: \"Login\",\n\t  body: function() {\n\t    var button = $.el.button({ name:\"ok\",\n\t\t\t\t       class:\"btn btn-primary login-cont\",\n\t\t\t\t       \"data-dismiss\":\"modal\"\n\t\t\t\t     },\n\t\t\t\t     \"Continue\");\n\t    this.append($.el.iframe({class:\"login\", src:url}),\n\t\t\tbutton);\n\t  },\n\t  onclose: function() {\n\t    elem.login('logged_in');\n\t  }\n\t});\n      }\n    },\n\n    /**\n     * User closed the login modal window.  Check the login.\n     */\n    logged_in: function() {\n      this.login('update', \"login\");\n    },\n\n    /**\n     * Examine/edit the user profile.  Opens a modal window that is\n     * filled through an AJAX call on the server.\n     */\n    profile: function() {\n      var login = $(this);\n\n      modal.server_form({\n\ttitle: \"User profile\",\n\turl: config.swish.user.swish_profile_url ||\n\t     config.http.locations.user_profile,\n\tonreply: function() { login.login('update', \"profile\"); }\n      });\n    },\n\n    /**\n     * Get information about the current user. If possible we get this\n     * from the logged in user.  Else we get the name and avatar from\n     * #chat.\n     * @param [fields] is an array with fields we want to have\n     * @return {Object} info about current user\n     */\n    get_profile: function(fields) {\n      var info = {};\n      var obj = config.swish.user||{};\n\n      function set_from_chat(key, chat_key) {\n\tvar chat = $(\"#chat\");\n\tif ( chat.length == 1 ) {\n\t  var v = chat.chat('self', [chat_key]);\n\t  if ( v[chat_key] ) info[key] = v[chat_key];\n\t}\n      }\n\n      fields = fields||DEFAULT_USER_FIELDS;\n      for(var i=0; i<fields.length; i++) {\n\tvar key = fields[i];\n\n\tif ( obj[key] ) {\n\t  info[key] = obj[key];\n\t} else if ( key == 'display_name' ) {\n\t  if ( obj.name )\n\t    info.display_name = obj.name;\n\t  else if ( obj.given_name && obj.family_name )\n\t    info.display_name = obj.given_name + \" \" + obj.family_name;\n\t  else if ( obj.family_name )\n\t    info.display_name = obj.family_name;\n\t  else if ( obj.given_name )\n\t    info.display_name = obj.given_name;\n\t  else if ( obj.nick_name )\n\t    info.display_name = obj.nick_name;\n\t  else\n\t    set_from_chat('display_name', 'name');\n\t} else if ( key == 'identity' ) {\n\t  if ( obj.external_identity && obj.identity_provider )\n\t    info.identity = obj.identity_provider + \":\" + obj.external_identity;\n\t} else if ( key == 'avatar' ) {\n\t  set_from_chat('avatar', 'avatar');\n\t}\n      }\n\n      return info;\n    },\n\n    /**\n     * Logout the current user\n     */\n    logout: function() {\n      var user = config.swish.user;\n      var elem = $(this);\n\n      if ( user ) {\n\tif ( user.logout_url ) {\n\t  $.ajax({ url: user.logout_url,\n\t           success: function() {\n\t\t     elem.login('update', \"logout_by_url\");\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modal.ajaxError(jqXHDR);\n\t\t   }\n\t         });\n\t} else if ( user.auth_method == \"basic\" ||\n\t\t    user.auth_method == \"digest\" ) {\n\t  clearAuthenticationCache(config.http.locations.http_logout,\n\t\t\t\t   config.swish.user.auth_method,\n\t\t\t\t   function() {\n\t\t\t\t     elem.login('update', \"logout_by_http\");\n\t\t\t\t   });\n\t} else {\n\t  alert(\"Don't know how to logout\");\n\t}\n      }\n    }\n  }; // methods\n\n  /**\n   * @see https://trac-hacks.org/wiki/TrueHttpLogoutPatch\n   * @see http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication\n   */\n  function clearAuthenticationCache(page, method, oncomplete) {\n    // Default to a non-existing page (give error 500).\n    // An empty page is better, here.\n    if (!page) page = '.force_logout';\n    try{\n      var agt=navigator.userAgent.toLowerCase();\n\n      if ( agt.indexOf(\"msie\") != -1 ) {\n\tdocument.execCommand(\"ClearAuthenticationCache\");\n      } else if ( agt.indexOf(\"webkit\") != -1 && method == \"basic\" ) {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true);\n\t  xmlhttp.setRequestHeader(\"Authorization\", \"Basic logout\");\n\t  xmlhttp.send();\n\t}\n      } else {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true, \"logout\", \"logout\");\n\t  xmlhttp.send(\"\");\n\t  xmlhttp.abort();\n\t}\n      }\n    } catch(e) {\n      // There was an error\n      return;\n    }\n  }\n\n  function createXMLObject(oncomplete) {\n    var xmlhttp;\n\n    try {\n      if (window.XMLHttpRequest) {\n\txmlhttp = new XMLHttpRequest();\n      } else if (window.ActiveXObject) {\n\txmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n      }\n\n      if ( oncomplete ) {\n\txmlhttp.addEventListener(\"load\",  oncomplete);\n\txmlhttp.addEventListener(\"error\", oncomplete);\n\txmlhttp.addEventListener(\"abort\", oncomplete);\n      }\n    } catch (e) {\n    }\n\n    return xmlhttp;\n  }\n\n  /**\n   * Open a popup window for dealing with the federated login.  We\n   * must check the login status after the user completes the popup.\n   * Unfortunately the code below does not always work as `win.closed`\n   * is not always set.  An example is FF 51.0 using Cinamon.\n   */\n  function openPopup(uri, name, options, closeCallback) {\n    var win = window.open(uri, name, options);\n    var interval = window.setInterval(function() {\n      try {\n\tif (win == null || win.closed) {\n\t  window.clearInterval(interval);\n\t  closeCallback(win);\n\t}\n      }\n      catch (e) {\n      }\n    }, 1000);\n\n    if ( window.focus )\n      win.focus();\n\n    return win;\n  };\n\n\n  /**\n   * <Class description>\n   *\n   * @class login\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.login = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","// https://d3js.org Version 4.13.0. Copyright 2018 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define('d3',['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar version = \"4.13.0\";\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction bisector(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n\nvar ascendingBisect = bisector(ascending);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n\nfunction pairs(array, f) {\n  if (f == null) f = pair;\n  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n  while (i < n) pairs[i] = f(p, p = array[++i]);\n  return pairs;\n}\n\nfunction pair(a, b) {\n  return [a, b];\n}\n\nfunction cross(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n\nfunction descending(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\nfunction number(x) {\n  return x === null ? NaN : +x;\n}\n\nfunction variance(values, valueof) {\n  var n = values.length,\n      m = 0,\n      i = -1,\n      mean = 0,\n      value,\n      delta,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  if (m > 1) return sum / (m - 1);\n}\n\nfunction deviation(array, f) {\n  var v = variance(array, f);\n  return v ? Math.sqrt(v) : v;\n}\n\nfunction extent(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\nfunction constant(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction identity(x) {\n  return x;\n}\n\nfunction sequence(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n\nfunction ticks(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n\nfunction sturges(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n\nfunction histogram() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = sequence(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisectRight(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n\nfunction threshold(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction freedmanDiaconis(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (threshold(values, 0.75) - threshold(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction scott(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction max(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n\nfunction mean(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n\nfunction median(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      numbers = [];\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  return threshold(numbers.sort(ascending), 0.5);\n}\n\nfunction merge(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n\nfunction min(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n\nfunction permute(array, indexes) {\n  var i = indexes.length, permutes = new Array(i);\n  while (i--) permutes[i] = array[indexes[i]];\n  return permutes;\n}\n\nfunction scan(values, compare) {\n  if (!(n = values.length)) return;\n  var n,\n      i = 0,\n      j = 0,\n      xi,\n      xj = values[j];\n\n  if (compare == null) compare = ascending;\n\n  while (++i < n) {\n    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n      xj = xi, j = i;\n    }\n  }\n\n  if (compare(xj, xj) === 0) return j;\n}\n\nfunction shuffle(array, i0, i1) {\n  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n\nfunction sum(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n\nfunction transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n\nfunction zip() {\n  return transpose(arguments);\n}\n\nvar slice$1 = Array.prototype.slice;\n\nfunction identity$1(x) {\n  return x;\n}\n\nvar top = 1;\nvar right = 2;\nvar bottom = 3;\nvar left = 4;\nvar epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number$1(scale) {\n  return function(d) {\n    return +scale(d);\n  };\n}\n\nfunction center(scale) {\n  var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n  if (scale.round()) offset = Math.round(offset);\n  return function(d) {\n    return +scale(d) + offset;\n  };\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + 0.5,\n        range1 = +range[range.length - 1] + 0.5,\n        position = (scale.bandwidth ? center : number$1)(scale.copy()),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"#000\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"#000\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"#000\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient == right\n            ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n            : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d)); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = slice$1.call(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  return axis;\n}\n\nfunction axisTop(scale) {\n  return axis(top, scale);\n}\n\nfunction axisRight(scale) {\n  return axis(right, scale);\n}\n\nfunction axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nfunction axisLeft(scale) {\n  return axis(left, scale);\n}\n\nvar noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\nvar namespaces = {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\nfunction namespace(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nfunction creator(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n\nfunction none() {}\n\nfunction selector(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n\nfunction selection_select(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n\nfunction empty$1() {\n  return [];\n}\n\nfunction selectorAll(selector) {\n  return selector == null ? empty$1 : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n\nfunction selection_selectAll(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n\nvar matcher = function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n};\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!element.matches) {\n    var vendorMatches = element.webkitMatchesSelector\n        || element.msMatchesSelector\n        || element.mozMatchesSelector\n        || element.oMatchesSelector;\n    matcher = function(selector) {\n      return function() {\n        return vendorMatches.call(this, selector);\n      };\n    };\n  }\n}\n\nvar matcher$1 = matcher;\n\nfunction selection_filter(match) {\n  if (typeof match !== \"function\") match = matcher$1(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n\nfunction sparse(update) {\n  return new Array(update.length);\n}\n\nfunction selection_enter() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nfunction EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\nfunction constant$1(x) {\n  return function() {\n    return x;\n  };\n}\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction selection_data(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant$1(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\nfunction selection_exit() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n\nfunction selection_merge(selection$$1) {\n\n  for (var groups0 = this._groups, groups1 = selection$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n\nfunction selection_order() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction selection_sort(compare) {\n  if (!compare) compare = ascending$1;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending$1(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction selection_call() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n\nfunction selection_nodes() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n\nfunction selection_node() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n\nfunction selection_size() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n\nfunction selection_empty() {\n  return !this.node();\n}\n\nfunction selection_each(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nfunction selection_attr(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n\nfunction defaultView(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nfunction selection_style(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nfunction styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\nfunction propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nfunction selection_property(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n\nfunction classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nfunction selection_classed(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n\nfunction textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nfunction selection_text(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n\nfunction htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nfunction selection_html(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n\nfunction raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nfunction selection_raise() {\n  return this.each(raise);\n}\n\nfunction lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nfunction selection_lower() {\n  return this.each(lower);\n}\n\nfunction selection_append(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n\nfunction constantNull() {\n  return null;\n}\n\nfunction selection_insert(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n\nfunction remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nfunction selection_remove() {\n  return this.each(remove);\n}\n\nfunction selection_cloneShallow() {\n  return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n  return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nfunction selection_clone(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n\nfunction selection_datum(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n\nvar filterEvents = {};\n\nexports.event = null;\n\nif (typeof document !== \"undefined\") {\n  var element$1 = document.documentElement;\n  if (!(\"onmouseenter\" in element$1)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = exports.event; // Events can be reentrant (e.g., focus).\n    exports.event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      exports.event = event0;\n    }\n  };\n}\n\nfunction parseTypenames$1(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nfunction selection_on(typename, value, capture) {\n  var typenames = parseTypenames$1(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nfunction customEvent(event1, listener, that, args) {\n  var event0 = exports.event;\n  event1.sourceEvent = exports.event;\n  exports.event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    exports.event = event0;\n  }\n}\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nfunction selection_dispatch(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nfunction select(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n\nfunction create(name) {\n  return select(creator(name).call(document.documentElement));\n}\n\nvar nextId = 0;\n\nfunction local$1() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local$1.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nfunction sourceEvent() {\n  var current = exports.event, source;\n  while (source = current.sourceEvent) current = source;\n  return current;\n}\n\nfunction point(node, event) {\n  var svg = node.ownerSVGElement || node;\n\n  if (svg.createSVGPoint) {\n    var point = svg.createSVGPoint();\n    point.x = event.clientX, point.y = event.clientY;\n    point = point.matrixTransform(node.getScreenCTM().inverse());\n    return [point.x, point.y];\n  }\n\n  var rect = node.getBoundingClientRect();\n  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\nfunction mouse(node) {\n  var event = sourceEvent();\n  if (event.changedTouches) event = event.changedTouches[0];\n  return point(node, event);\n}\n\nfunction selectAll(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([selector == null ? [] : selector], root);\n}\n\nfunction touch(node, touches, identifier) {\n  if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n    if ((touch = touches[i]).identifier === identifier) {\n      return point(node, touch);\n    }\n  }\n\n  return null;\n}\n\nfunction touches(node, touches) {\n  if (touches == null) touches = sourceEvent().touches;\n\n  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n    points[i] = point(node, touches[i]);\n  }\n\n  return points;\n}\n\nfunction nopropagation() {\n  exports.event.stopImmediatePropagation();\n}\n\nfunction noevent() {\n  exports.event.preventDefault();\n  exports.event.stopImmediatePropagation();\n}\n\nfunction dragDisable(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, true);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, true);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nfunction yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, true);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n\nfunction constant$2(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n  this.target = target;\n  this.type = type;\n  this.subject = subject;\n  this.identifier = id;\n  this.active = active;\n  this.x = x;\n  this.y = y;\n  this.dx = dx;\n  this.dy = dy;\n  this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter$1() {\n  return !exports.event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n  return d == null ? {x: exports.event.x, y: exports.event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return \"ontouchstart\" in this;\n}\n\nfunction drag() {\n  var filter = defaultFilter$1,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n    if (!gesture) return;\n    select(exports.event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n    dragDisable(exports.event.view);\n    nopropagation();\n    mousemoving = false;\n    mousedownx = exports.event.clientX;\n    mousedowny = exports.event.clientY;\n    gesture(\"start\");\n  }\n\n  function mousemoved() {\n    noevent();\n    if (!mousemoving) {\n      var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\");\n  }\n\n  function mouseupped() {\n    select(exports.event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(exports.event.view, mousemoving);\n    noevent();\n    gestures.mouse(\"end\");\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = exports.event.changedTouches,\n        c = container.apply(this, arguments),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n        nopropagation();\n        gesture(\"start\");\n      }\n    }\n  }\n\n  function touchmoved() {\n    var touches = exports.event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent();\n        gesture(\"drag\");\n      }\n    }\n  }\n\n  function touchended() {\n    var touches = exports.event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation();\n        gesture(\"end\");\n      }\n    }\n  }\n\n  function beforestart(id, container, point, that, args) {\n    var p = point(container, id), s, dx, dy,\n        sublisteners = listeners.copy();\n\n    if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n      if ((exports.event.subject = s = subject.apply(that, args)) == null) return false;\n      dx = s.x - p[0] || 0;\n      dy = s.y - p[1] || 0;\n      return true;\n    })) return;\n\n    return function gesture(type) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[id] = gesture, n = active++; break;\n        case \"end\": delete gestures[id], --active; // nobreak\n        case \"drag\": p = point(container, id), n = active; break;\n      }\n      customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$2(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$2(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$2(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n\nfunction define(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nfunction extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\nvar reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\nvar reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\nvar reHex3 = /^#([0-9a-f]{3})$/;\nvar reHex6 = /^#([0-9a-f]{6})$/;\nvar reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\nvar reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\nvar reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\nvar reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\nvar reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\nvar reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  toString: function() {\n    return this.rgb() + \"\";\n  }\n});\n\nfunction color(format) {\n  var m;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n      : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format])\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (0 <= this.r && this.r <= 255)\n        && (0 <= this.g && this.g <= 255)\n        && (0 <= this.b && this.b <= 255)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  toString: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"rgb(\" : \"rgba(\")\n        + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n\nvar Kn = 18;\nvar Xn = 0.950470;\nvar Yn = 1;\nvar Zn = 1.088830;\nvar t0 = 4 / 29;\nvar t1 = 6 / 29;\nvar t2 = 3 * t1 * t1;\nvar t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) {\n    var h = o.h * deg2rad;\n    return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n  }\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var b = rgb2xyz(o.r),\n      a = rgb2xyz(o.g),\n      l = rgb2xyz(o.b),\n      x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n      y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n      z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    y = Yn * lab2xyz(y);\n    x = Xn * lab2xyz(x);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n      xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n      xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  var h = Math.atan2(o.b, o.a) * rad2deg;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return labConvert(this).rgb();\n  }\n}));\n\nvar A = -0.14861;\nvar B = +1.78277;\nvar C = -0.29227;\nvar D = -0.90649;\nvar E = +1.97294;\nvar ED = E * D;\nvar EB = E * B;\nvar BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n\nfunction basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nfunction basis$1(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n\nfunction basisClosed(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n\nfunction constant$3(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nfunction hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$3(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a);\n  };\n}\n\nfunction nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant$3(isNaN(a) ? b : a);\n}\n\nvar interpolateRgb = (function rgbGamma(y) {\n  var color$$1 = gamma(y);\n\n  function rgb$$1(start, end) {\n    var r = color$$1((start = rgb(start)).r, (end = rgb(end)).r),\n        g = color$$1(start.g, end.g),\n        b = color$$1(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb$$1.gamma = rgbGamma;\n\n  return rgb$$1;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color$$1;\n    for (i = 0; i < n; ++i) {\n      color$$1 = rgb(colors[i]);\n      r[i] = color$$1.r || 0;\n      g[i] = color$$1.g || 0;\n      b[i] = color$$1.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color$$1.opacity = 1;\n    return function(t) {\n      color$$1.r = r(t);\n      color$$1.g = g(t);\n      color$$1.b = b(t);\n      return color$$1 + \"\";\n    };\n  };\n}\n\nvar rgbBasis = rgbSpline(basis$1);\nvar rgbBasisClosed = rgbSpline(basisClosed);\n\nfunction array$1(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n\nfunction date(a, b) {\n  var d = new Date;\n  return a = +a, b -= a, function(t) {\n    return d.setTime(a + b * t), d;\n  };\n}\n\nfunction reinterpolate(a, b) {\n  return a = +a, b -= a, function(t) {\n    return a + b * t;\n  };\n}\n\nfunction object(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = interpolateValue(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\nvar reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nfunction interpolateString(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: reinterpolate(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n\nfunction interpolateValue(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant$3(b)\n      : (t === \"number\" ? reinterpolate\n      : t === \"string\" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString)\n      : b instanceof color ? interpolateRgb\n      : b instanceof Date ? date\n      : Array.isArray(b) ? array$1\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : reinterpolate)(a, b);\n}\n\nfunction interpolateRound(a, b) {\n  return a = +a, b -= a, function(t) {\n    return Math.round(a + b * t);\n  };\n}\n\nvar degrees = 180 / Math.PI;\n\nvar identity$2 = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nfunction decompose(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n\nvar cssNode;\nvar cssRoot;\nvar cssView;\nvar svgNode;\n\nfunction parseCss(value) {\n  if (value === \"none\") return identity$2;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nfunction parseSvg(value) {\n  if (value == null) return identity$2;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: reinterpolate(xa, xb)}, {i: i - 2, x: reinterpolate(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: reinterpolate(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: reinterpolate(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: reinterpolate(xa, xb)}, {i: i - 2, x: reinterpolate(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\nvar rho = Math.SQRT2;\nvar rho2 = 2;\nvar rho4 = 4;\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nfunction interpolateZoom(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 ≅ u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    };\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    };\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n\nfunction hsl$1(hue$$1) {\n  return function(start, end) {\n    var h = hue$$1((start = hsl(start)).h, (end = hsl(end)).h),\n        s = nogamma(start.s, end.s),\n        l = nogamma(start.l, end.l),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nvar hsl$2 = hsl$1(hue);\nvar hslLong = hsl$1(nogamma);\n\nfunction lab$1(start, end) {\n  var l = nogamma((start = lab(start)).l, (end = lab(end)).l),\n      a = nogamma(start.a, end.a),\n      b = nogamma(start.b, end.b),\n      opacity = nogamma(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n\nfunction hcl$1(hue$$1) {\n  return function(start, end) {\n    var h = hue$$1((start = hcl(start)).h, (end = hcl(end)).h),\n        c = nogamma(start.c, end.c),\n        l = nogamma(start.l, end.l),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nvar hcl$2 = hcl$1(hue);\nvar hclLong = hcl$1(nogamma);\n\nfunction cubehelix$1(hue$$1) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix$$1(start, end) {\n      var h = hue$$1((start = cubehelix(start)).h, (end = cubehelix(end)).h),\n          s = nogamma(start.s, end.s),\n          l = nogamma(start.l, end.l),\n          opacity = nogamma(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix$$1.gamma = cubehelixGamma;\n\n    return cubehelix$$1;\n  })(1);\n}\n\nvar cubehelix$2 = cubehelix$1(hue);\nvar cubehelixLong = cubehelix$1(nogamma);\n\nfunction quantize(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n\nvar frame = 0;\nvar timeout = 0;\nvar interval = 0;\nvar pokeDelay = 1000;\nvar taskHead;\nvar taskTail;\nvar clockLast = 0;\nvar clockNow = 0;\nvar clockSkew = 0;\nvar clock = typeof performance === \"object\" && performance.now ? performance : Date;\nvar setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nfunction Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nfunction timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nfunction timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n\nfunction timeout$1(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n\nfunction interval$1(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  delay = +delay, time = time == null ? now() : +time;\n  t.restart(function tick(elapsed) {\n    elapsed += total;\n    t.restart(tick, total += delay, time);\n    callback(elapsed);\n  }, delay, time);\n  return t;\n}\n\nvar emptyOn = dispatch(\"start\", \"end\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\nfunction schedule(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create$1(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nfunction init(node, id) {\n  var schedule = get$1(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nfunction set$1(node, id) {\n  var schedule = get$1(node, id);\n  if (schedule.state > STARTING) throw new Error(\"too late; already started\");\n  return schedule;\n}\n\nfunction get$1(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create$1(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout$1(start);\n\n      // Interrupt the active transition, if any.\n      // Dispatch the interrupt event.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions. No interrupt event is dispatched\n      // because the cancelled transitions never started. Note that this also\n      // removes this transition from the pending list!\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout$1(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(null, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n\nfunction interrupt(node, name) {\n  var schedules = node.__transition,\n      schedule$$1,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule$$1 = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule$$1.state > STARTING && schedule$$1.state < ENDING;\n    schedule$$1.state = ENDED;\n    schedule$$1.timer.stop();\n    if (active) schedule$$1.on.call(\"interrupt\", node, node.__data__, schedule$$1.index, schedule$$1.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n\nfunction selection_interrupt(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule$$1 = set$1(this, id),\n        tween = schedule$$1.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule$$1.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule$$1 = set$1(this, id),\n        tween = schedule$$1.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule$$1.tween = tween1;\n  };\n}\n\nfunction transition_tween(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get$1(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nfunction tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule$$1 = set$1(this, id);\n    (schedule$$1.value || (schedule$$1.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get$1(node, id).value[name];\n  };\n}\n\nfunction interpolate(a, b) {\n  var c;\n  return (typeof b === \"number\" ? reinterpolate\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n\nfunction attrRemove$1(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS$1(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant$1(name, interpolate$$1, value1) {\n  var value00,\n      interpolate0;\n  return function() {\n    var value0 = this.getAttribute(name);\n    return value0 === value1 ? null\n        : value0 === value00 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value1);\n  };\n}\n\nfunction attrConstantNS$1(fullname, interpolate$$1, value1) {\n  var value00,\n      interpolate0;\n  return function() {\n    var value0 = this.getAttributeNS(fullname.space, fullname.local);\n    return value0 === value1 ? null\n        : value0 === value00 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value1);\n  };\n}\n\nfunction attrFunction$1(name, interpolate$$1, value) {\n  var value00,\n      value10,\n      interpolate0;\n  return function() {\n    var value0, value1 = value(this);\n    if (value1 == null) return void this.removeAttribute(name);\n    value0 = this.getAttribute(name);\n    return value0 === value1 ? null\n        : value0 === value00 && value1 === value10 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n  };\n}\n\nfunction attrFunctionNS$1(fullname, interpolate$$1, value) {\n  var value00,\n      value10,\n      interpolate0;\n  return function() {\n    var value0, value1 = value(this);\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    value0 = this.getAttributeNS(fullname.space, fullname.local);\n    return value0 === value1 ? null\n        : value0 === value00 && value1 === value10 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n  };\n}\n\nfunction transition_attr(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname)\n      : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value + \"\"));\n}\n\nfunction attrTweenNS(fullname, value) {\n  function tween() {\n    var node = this, i = value.apply(node, arguments);\n    return i && function(t) {\n      node.setAttributeNS(fullname.space, fullname.local, i(t));\n    };\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  function tween() {\n    var node = this, i = value.apply(node, arguments);\n    return i && function(t) {\n      node.setAttribute(name, i(t));\n    };\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction transition_attrTween(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nfunction transition_delay(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get$1(this.node(), id).delay;\n}\n\nfunction durationFunction(id, value) {\n  return function() {\n    set$1(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set$1(this, id).duration = value;\n  };\n}\n\nfunction transition_duration(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get$1(this.node(), id).duration;\n}\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set$1(this, id).ease = value;\n  };\n}\n\nfunction transition_ease(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get$1(this.node(), id).ease;\n}\n\nfunction transition_filter(match) {\n  if (typeof match !== \"function\") match = matcher$1(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n\nfunction transition_merge(transition$$1) {\n  if (transition$$1._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set$1;\n  return function() {\n    var schedule$$1 = sit(this, id),\n        on = schedule$$1.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule$$1.on = on1;\n  };\n}\n\nfunction transition_on(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get$1(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n\nfunction removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nfunction transition_remove() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n\nfunction transition_select(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get$1(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n\nfunction transition_selectAll(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n\nvar Selection$1 = selection.prototype.constructor;\n\nfunction transition_selection() {\n  return new Selection$1(this._groups, this._parents);\n}\n\nfunction styleRemove$1(name, interpolate$$1) {\n  var value00,\n      value10,\n      interpolate0;\n  return function() {\n    var value0 = styleValue(this, name),\n        value1 = (this.style.removeProperty(name), styleValue(this, name));\n    return value0 === value1 ? null\n        : value0 === value00 && value1 === value10 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n  };\n}\n\nfunction styleRemoveEnd(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant$1(name, interpolate$$1, value1) {\n  var value00,\n      interpolate0;\n  return function() {\n    var value0 = styleValue(this, name);\n    return value0 === value1 ? null\n        : value0 === value00 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value1);\n  };\n}\n\nfunction styleFunction$1(name, interpolate$$1, value) {\n  var value00,\n      value10,\n      interpolate0;\n  return function() {\n    var value0 = styleValue(this, name),\n        value1 = value(this);\n    if (value1 == null) value1 = (this.style.removeProperty(name), styleValue(this, name));\n    return value0 === value1 ? null\n        : value0 === value00 && value1 === value10 ? interpolate0\n        : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n  };\n}\n\nfunction transition_style(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n  return value == null ? this\n          .styleTween(name, styleRemove$1(name, i))\n          .on(\"end.style.\" + name, styleRemoveEnd(name))\n      : this.styleTween(name, typeof value === \"function\"\n          ? styleFunction$1(name, i, tweenValue(this, \"style.\" + name, value))\n          : styleConstant$1(name, i, value + \"\"), priority);\n}\n\nfunction styleTween(name, value, priority) {\n  function tween() {\n    var node = this, i = value.apply(node, arguments);\n    return i && function(t) {\n      node.style.setProperty(name, i(t), priority);\n    };\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction transition_styleTween(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n\nfunction textConstant$1(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction$1(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nfunction transition_text(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction$1(tweenValue(this, \"text\", value))\n      : textConstant$1(value == null ? \"\" : value + \"\"));\n}\n\nfunction transition_transition() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get$1(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nfunction transition(name) {\n  return selection().transition(name);\n}\n\nfunction newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease\n};\n\nfunction linear$1(t) {\n  return +t;\n}\n\nfunction quadIn(t) {\n  return t * t;\n}\n\nfunction quadOut(t) {\n  return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\nfunction cubicIn(t) {\n  return t * t * t;\n}\n\nfunction cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n\nvar pi = Math.PI;\nvar halfPi = pi / 2;\n\nfunction sinIn(t) {\n  return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n\nfunction expIn(t) {\n  return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n  return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n  return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\nfunction circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\nvar b1 = 4 / 11;\nvar b2 = 6 / 11;\nvar b3 = 8 / 11;\nvar b4 = 3 / 4;\nvar b5 = 9 / 11;\nvar b6 = 10 / 11;\nvar b7 = 15 / 16;\nvar b8 = 21 / 22;\nvar b9 = 63 / 64;\nvar b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return t * t * ((s + 1) * t - s);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((s + 1) * t + s) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n\nvar tau = 2 * Math.PI;\nvar amplitude = 1;\nvar period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n        : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: cubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      return defaultTiming.time = now(), defaultTiming;\n    }\n  }\n  return timing;\n}\n\nfunction selection_transition(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n\nvar root$1 = [null];\n\nfunction active(node, name) {\n  var schedules = node.__transition,\n      schedule$$1,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule$$1 = schedules[i]).state > SCHEDULED && schedule$$1.name === name) {\n        return new Transition([[node]], root$1, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction constant$4(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction BrushEvent(target, type, selection) {\n  this.target = target;\n  this.type = type;\n  this.selection = selection;\n}\n\nfunction nopropagation$1() {\n  exports.event.stopImmediatePropagation();\n}\n\nfunction noevent$1() {\n  exports.event.preventDefault();\n  exports.event.stopImmediatePropagation();\n}\n\nvar MODE_DRAG = {name: \"drag\"};\nvar MODE_SPACE = {name: \"space\"};\nvar MODE_HANDLE = {name: \"handle\"};\nvar MODE_CENTER = {name: \"center\"};\n\nvar X = {\n  name: \"x\",\n  handles: [\"e\", \"w\"].map(type),\n  input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n  input: function(xy) { return xy; },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !exports.event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nfunction brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nfunction brushX() {\n  return brush$1(X);\n}\n\nfunction brushY() {\n  return brush$1(Y);\n}\n\nfunction brush() {\n  return brush$1(XY);\n}\n\nfunction brush$1(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n        .on(\"mousedown.brush touchstart.brush\", started);\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolateValue(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && empty(selection1) ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 && selection1 ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 == null || empty(selection1) ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args) {\n    return that.__brush.emitter || new Emitter(that, args);\n  }\n\n  function Emitter(that, args) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (exports.event.touches) { if (exports.event.changedTouches.length < exports.event.touches.length) return noevent$1(); }\n    else if (touchending) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = exports.event.target.__data__.type,\n        mode = (exports.event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (exports.event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx,\n        dy,\n        moving,\n        shifting = signX && signY && exports.event.shiftKey,\n        lockX,\n        lockY,\n        point0 = mouse(that),\n        point = point0,\n        emit = emitter(that, arguments).beforestart();\n\n    if (type === \"overlay\") {\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (exports.event.touches) {\n      group\n          .on(\"touchmove.brush\", moved, true)\n          .on(\"touchend.brush touchcancel.brush\", ended, true);\n    } else {\n      var view = select(exports.event.view)\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n\n      dragDisable(exports.event.view);\n    }\n\n    nopropagation$1();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = mouse(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent$1();\n      move();\n    }\n\n    function move() {\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush();\n      }\n    }\n\n    function ended() {\n      nopropagation$1();\n      if (exports.event.touches) {\n        if (exports.event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n        group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\n      } else {\n        yesdrag(exports.event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end();\n    }\n\n    function keydowned() {\n      switch (exports.event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent$1();\n    }\n\n    function keyupped() {\n      switch (exports.event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (exports.event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent$1();\n    }\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = extent.apply(this, arguments);\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant$4([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$4(!!_), brush) : filter;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar pi$1 = Math.PI;\nvar halfPi$1 = pi$1 / 2;\nvar tau$1 = pi$1 * 2;\nvar max$1 = Math.max;\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nfunction chord() {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = [],\n        groupIndex = sequence(n),\n        subgroupIndex = [],\n        chords = [],\n        groups = chords.groups = new Array(n),\n        subgroups = new Array(n * n),\n        k,\n        x,\n        x0,\n        dx,\n        i,\n        j;\n\n    // Compute the sum.\n    k = 0, i = -1; while (++i < n) {\n      x = 0, j = -1; while (++j < n) {\n        x += matrix[i][j];\n      }\n      groupSums.push(x);\n      subgroupIndex.push(sequence(n));\n      k += x;\n    }\n\n    // Sort groups…\n    if (sortGroups) groupIndex.sort(function(a, b) {\n      return sortGroups(groupSums[a], groupSums[b]);\n    });\n\n    // Sort subgroups…\n    if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n      d.sort(function(a, b) {\n        return sortSubgroups(matrix[i][a], matrix[i][b]);\n      });\n    });\n\n    // Convert the sum to scaling factor for [0, 2pi].\n    // TODO Allow start and end angle to be specified?\n    // TODO Allow padding to be specified as percentage?\n    k = max$1(0, tau$1 - padAngle * n) / k;\n    dx = k ? padAngle : tau$1 / n;\n\n    // Compute the start and end angle for each group and subgroup.\n    // Note: Opera has a bug reordering object literal properties!\n    x = 0, i = -1; while (++i < n) {\n      x0 = x, j = -1; while (++j < n) {\n        var di = groupIndex[i],\n            dj = subgroupIndex[di][j],\n            v = matrix[di][dj],\n            a0 = x,\n            a1 = x += v * k;\n        subgroups[dj * n + di] = {\n          index: di,\n          subindex: dj,\n          startAngle: a0,\n          endAngle: a1,\n          value: v\n        };\n      }\n      groups[di] = {\n        index: di,\n        startAngle: x0,\n        endAngle: x,\n        value: groupSums[di]\n      };\n      x += dx;\n    }\n\n    // Generate chords for each (non-empty) subgroup-subgroup link.\n    i = -1; while (++i < n) {\n      j = i - 1; while (++j < n) {\n        var source = subgroups[j * n + i],\n            target = subgroups[i * n + j];\n        if (source.value || target.value) {\n          chords.push(source.value < target.value\n              ? {source: target, target: source}\n              : {source: source, target: target});\n        }\n      }\n    }\n\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\n\nvar slice$2 = Array.prototype.slice;\n\nfunction constant$5(x) {\n  return function() {\n    return x;\n  };\n}\n\nvar pi$2 = Math.PI;\nvar tau$2 = 2 * pi$2;\nvar epsilon$1 = 1e-6;\nvar tauEpsilon = tau$2 - epsilon$1;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon$1)) {}\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon$1) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau$2 + tau$2;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon$1) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi$2)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction ribbon() {\n  var source = defaultSource,\n      target = defaultTarget,\n      radius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        argv = slice$2.call(arguments),\n        s = source.apply(this, argv),\n        t = target.apply(this, argv),\n        sr = +radius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi$1,\n        sa1 = endAngle.apply(this, argv) - halfPi$1,\n        sx0 = sr * cos(sa0),\n        sy0 = sr * sin(sa0),\n        tr = +radius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi$1,\n        ta1 = endAngle.apply(this, argv) - halfPi$1;\n\n    if (!context) context = buffer = path();\n\n    context.moveTo(sx0, sy0);\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n      context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n      context.arc(0, 0, tr, ta0, ta1);\n    }\n    context.quadraticCurveTo(0, 0, sx0, sy0);\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$5(+_), ribbon) : radius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$5(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$5(+_), ribbon) : endAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, ribbon) : context;\n  };\n\n  return ribbon;\n}\n\nvar prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map$1.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map$1(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\nfunction nest() {\n  var keys = [],\n      sortKeys = [],\n      sortValues,\n      rollup,\n      nest;\n\n  function apply(array, depth, createResult, setResult) {\n    if (depth >= keys.length) {\n      if (sortValues != null) array.sort(sortValues);\n      return rollup != null ? rollup(array) : array;\n    }\n\n    var i = -1,\n        n = array.length,\n        key = keys[depth++],\n        keyValue,\n        value,\n        valuesByKey = map$1(),\n        values,\n        result = createResult();\n\n    while (++i < n) {\n      if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n        values.push(value);\n      } else {\n        valuesByKey.set(keyValue, [value]);\n      }\n    }\n\n    valuesByKey.each(function(values, key) {\n      setResult(result, key, apply(values, depth, createResult, setResult));\n    });\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    var array, sortKey = sortKeys[depth - 1];\n    if (rollup != null && depth >= keys.length) array = map.entries();\n    else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n    return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n  }\n\n  return nest = {\n    object: function(array) { return apply(array, 0, createObject, setObject); },\n    map: function(array) { return apply(array, 0, createMap, setMap); },\n    entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n    key: function(d) { keys.push(d); return nest; },\n    sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n    sortValues: function(order) { sortValues = order; return nest; },\n    rollup: function(f) { rollup = f; return nest; }\n  };\n}\n\nfunction createObject() {\n  return {};\n}\n\nfunction setObject(object, key, value) {\n  object[key] = value;\n}\n\nfunction createMap() {\n  return map$1();\n}\n\nfunction setMap(map, key, value) {\n  map.set(key, value);\n}\n\nfunction Set() {}\n\nvar proto = map$1.prototype;\n\nSet.prototype = set$2.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set$2(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\nfunction keys(map) {\n  var keys = [];\n  for (var key in map) keys.push(key);\n  return keys;\n}\n\nfunction values(map) {\n  var values = [];\n  for (var key in map) values.push(map[key]);\n  return values;\n}\n\nfunction entries(map) {\n  var entries = [];\n  for (var key in map) entries.push({key: key, value: map[key]});\n  return entries;\n}\n\nvar EOL = {};\nvar EOF = {};\nvar QUOTE = 34;\nvar NEWLINE = 10;\nvar RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"]\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction dsv(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    })).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(text) {\n    return text == null ? \"\"\n        : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : text;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatRows: formatRows\n  };\n}\n\nvar csv = dsv(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatRows = csv.formatRows;\n\nvar tsv = dsv(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatRows = tsv.formatRows;\n\nfunction center$1(x, y) {\n  var nodes;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\nfunction constant$6(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction jiggle() {\n  return (Math.random() - 0.5) * 1e-6;\n}\n\nfunction tree_add(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nfunction addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, inherit the existing extent.\n  if (x1 < x0) x0 = this._x0, x1 = this._x1;\n  if (y1 < y0) y0 = this._y0, y1 = this._y1;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n\nfunction tree_cover(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else if (x0 > x || x > x1 || y0 > y || y > y1) {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {\n      case 0: {\n        do parent = new Array(4), parent[i] = node, node = parent;\n        while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);\n        break;\n      }\n      case 1: {\n        do parent = new Array(4), parent[i] = node, node = parent;\n        while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);\n        break;\n      }\n      case 2: {\n        do parent = new Array(4), parent[i] = node, node = parent;\n        while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);\n        break;\n      }\n      case 3: {\n        do parent = new Array(4), parent[i] = node, node = parent;\n        while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);\n        break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  // If the quadtree covers the point already, just return.\n  else return this;\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n\nfunction tree_data() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n\nfunction tree_extent(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n\nfunction Quad(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n\nfunction tree_find(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n\nfunction tree_remove(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return next ? previous.next = next : delete previous.next, this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nfunction removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n\nfunction tree_root() {\n  return this._root;\n}\n\nfunction tree_size() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n\nfunction tree_visit(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n\nfunction tree_visitAfter(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction tree_x(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction tree_y(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n\nfunction quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nfunction collide(radius) {\n  var nodes,\n      radii,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant$6(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(), l += x * x;\n            if (y === 0) y = jiggle(), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"missing: \" + nodeId);\n  return node;\n}\n\nfunction link(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant$6(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle();\n        y = target.y + target.vy - source.y - source.vy || jiggle();\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = map$1(nodes, id),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant$6(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n\nfunction x$1(d) {\n  return d.x;\n}\n\nfunction y$1(d) {\n  return d.y;\n}\n\nvar initialRadius = 10;\nvar initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nfunction simulation(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = map$1(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick() {\n    var i, n = nodes.length, node;\n\n    alpha += (alphaTarget - alpha) * alphaDecay;\n\n    forces.each(function(force) {\n      force(alpha);\n    });\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (node.fx == null) node.x += node.vx *= velocityDecay;\n      else node.x = node.fx, node.vx = 0;\n      if (node.fy == null) node.y += node.vy *= velocityDecay;\n      else node.y = node.fy, node.vy = 0;\n    }\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? (_ == null ? forces.remove(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n\nfunction manyBody() {\n  var nodes,\n      node,\n      alpha,\n      strength = constant$6(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(), l += x * x;\n        if (y === 0) y = jiggle(), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(), l += x * x;\n      if (y === 0) y = jiggle(), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n\nfunction radial(radius, x, y) {\n  var nodes,\n      strength = constant$6(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant$6(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\nfunction x$2(x) {\n  var strength = constant$6(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant$6(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n\nfunction y$2(y) {\n  var strength = constant$6(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant$6(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nfunction formatDecimal(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n\nfunction exponent$1(x) {\n  return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n\nfunction formatGroup(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n\nfunction formatNumerals(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n\nfunction formatDefault(x, p) {\n  x = x.toPrecision(p);\n\n  out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (x[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      case \"e\": break out;\n      default: if (i0 > 0) i0 = 0; break;\n    }\n  }\n\n  return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n}\n\nvar prefixExponent;\n\nfunction formatPrefixAuto(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\nfunction formatRounded(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\nvar formatTypes = {\n  \"\": formatDefault,\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": function(x) { return Math.round(x).toString(10); },\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n  var match,\n      fill = match[1] || \" \",\n      align = match[2] || \">\",\n      sign = match[3] || \"-\",\n      symbol = match[4] || \"\",\n      zero = !!match[5],\n      width = match[6] && +match[6],\n      comma = !!match[7],\n      precision = match[8] && +match[8].slice(1),\n      type = match[9] || \"\";\n\n  // The \"n\" type is an alias for \",g\".\n  if (type === \"n\") comma = true, type = \"g\";\n\n  // Map invalid types to the default format.\n  else if (!formatTypes[type]) type = \"\";\n\n  // If zero fill is specified, padding goes after sign and before digits.\n  if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n  this.fill = fill;\n  this.align = align;\n  this.sign = sign;\n  this.symbol = symbol;\n  this.zero = zero;\n  this.width = width;\n  this.comma = comma;\n  this.precision = precision;\n  this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + this.type;\n};\n\nfunction identity$3(x) {\n  return x;\n}\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xB5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nfunction formatLocale(locale) {\n  var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$3,\n      currency = locale.currency,\n      decimal = locale.decimal,\n      numerals = locale.numerals ? formatNumerals(locale.numerals) : identity$3,\n      percent = locale.percent || \"%\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        type = specifier.type;\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = !type || /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision == null ? (type ? 6 : 12)\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Perform the initial formatting.\n        var valueNegative = value < 0;\n        value = formatType(Math.abs(value), precision);\n\n        // If a negative value rounds to zero during formatting, treat as positive.\n        if (valueNegative && +value === 0) valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n\nvar locale;\n\n\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  exports.format = locale.format;\n  exports.formatPrefix = locale.formatPrefix;\n  return locale;\n}\n\nfunction precisionFixed(step) {\n  return Math.max(0, -exponent$1(Math.abs(step)));\n}\n\nfunction precisionPrefix(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step)));\n}\n\nfunction precisionRound(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent$1(max) - exponent$1(step)) + 1;\n}\n\n// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nfunction adder() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add$1(temp, y, this.t);\n    add$1(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add$1(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n\nvar epsilon$2 = 1e-6;\nvar epsilon2$1 = 1e-12;\nvar pi$3 = Math.PI;\nvar halfPi$2 = pi$3 / 2;\nvar quarterPi = pi$3 / 4;\nvar tau$3 = pi$3 * 2;\n\nvar degrees$1 = 180 / pi$3;\nvar radians = pi$3 / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos$1 = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\n\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin$1 = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x > 1 ? halfPi$2 : x < -1 ? -halfPi$2 : Math.asin(x);\n}\n\nfunction haversin(x) {\n  return (x = sin$1(x / 2)) * x;\n}\n\nfunction noop$1() {}\n\nfunction streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nfunction geoStream(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n\nvar areaRingSum = adder();\n\nvar areaSum = adder();\nvar lambda00;\nvar phi00;\nvar lambda0;\nvar cosPhi0;\nvar sinPhi0;\n\nvar areaStream = {\n  point: noop$1,\n  lineStart: noop$1,\n  lineEnd: noop$1,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau$3 + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop$1;\n  },\n  sphere: function() {\n    areaSum.add(tau$3);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos$1(phi),\n      sinPhi = sin$1(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos$1(adLambda),\n      v = k * sdLambda * sin$1(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nfunction area(object) {\n  areaSum.reset();\n  geoStream(object, areaStream);\n  return areaSum * 2;\n}\n\nfunction spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi);\n  return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)];\n}\n\nfunction cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\nvar lambda0$1;\nvar phi0;\nvar lambda1;\nvar phi1;\nvar lambda2;\nvar lambda00$1;\nvar phi00$1;\nvar p0;\nvar deltaSum = adder();\nvar ranges;\nvar range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon$2) phi1 = 90;\n    else if (deltaSum < -epsilon$2) phi0 = -90;\n    range[0] = lambda0$1, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign$$1 = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees$1 * sign$$1,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {\n      phii = inflection[1] * degrees$1;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {\n      phii = -inflection[1] * degrees$1;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0$1) {\n        if (lambda < lambda0$1) lambda0$1 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0$1, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00$1 = lambda, phi00$1 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00$1, phi00$1);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon$2) lambda0$1 = -(lambda1 = 180);\n  range[0] = lambda0$1, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nfunction bounds(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity);\n  ranges = [];\n  geoStream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0$1 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0$1, phi0], [lambda1, phi1]];\n}\n\nvar W0;\nvar W1;\nvar X0;\nvar Y0;\nvar Z0;\nvar X1;\nvar Y1;\nvar Z1;\nvar X2;\nvar Y2;\nvar Z2;\nvar lambda00$2;\nvar phi00$2;\nvar x0;\nvar y0;\nvar z0; // previous point\n\nvar centroidStream = {\n  sphere: noop$1,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos$1(phi);\n  centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos$1(phi);\n  x0 = cosPhi * cos$1(lambda);\n  y0 = cosPhi * sin$1(lambda);\n  z0 = sin$1(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos$1(phi),\n      x = cosPhi * cos$1(lambda),\n      y = cosPhi * sin$1(lambda),\n      z = sin$1(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00$2, phi00$2);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00$2 = lambda, phi00$2 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos$1(phi);\n  x0 = cosPhi * cos$1(lambda);\n  y0 = cosPhi * sin$1(lambda);\n  z0 = sin$1(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos$1(phi),\n      x = cosPhi * cos$1(lambda),\n      y = cosPhi * sin$1(lambda),\n      z = sin$1(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroid(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  geoStream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2$1) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon$2) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2$1) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees$1, asin(z / sqrt(m)) * degrees$1];\n}\n\nfunction constant$7(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction compose(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n\nfunction rotationIdentity(lambda, phi) {\n  return [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau$3) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos$1(deltaPhi),\n      sinDeltaPhi = sin$1(deltaPhi),\n      cosDeltaGamma = cos$1(deltaGamma),\n      sinDeltaGamma = sin$1(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos$1(phi),\n        x = cos$1(lambda) * cosPhi,\n        y = sin$1(lambda) * cosPhi,\n        z = sin$1(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos$1(phi),\n        x = cos$1(lambda) * cosPhi,\n        y = sin$1(lambda) * cosPhi,\n        z = sin$1(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nfunction rotation(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates;\n  };\n\n  return forward;\n}\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos$1(radius),\n      sinRadius = sin$1(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau$3;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$3;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau$3 - epsilon$2) % tau$3;\n}\n\nfunction circle() {\n  var center = constant$7([0, 0]),\n      radius = constant$7(90),\n      precision = constant$7(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees$1, x[1] *= degrees$1;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant$7([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$7(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant$7(+_), circle) : precision;\n  };\n\n  return circle;\n}\n\nfunction clipBuffer() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop$1,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n\nfunction pointEqual(a, b) {\n  return abs(a[0] - b[0]) < epsilon$2 && abs(a[1] - b[1]) < epsilon$2;\n}\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nfunction clipRejoin(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    // If the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\n      stream.lineStart();\n      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n      stream.lineEnd();\n      return;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link$1(subject);\n  link$1(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link$1(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n\nvar sum$1 = adder();\n\nfunction polygonContains(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      normal = [sin$1(lambda), -cos$1(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum$1.reset();\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin$1(phi0),\n        cosPhi0 = cos$1(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin$1(phi1),\n          cosPhi1 = cos$1(phi1),\n          delta = lambda1 - lambda0,\n          sign$$1 = delta >= 0 ? 1 : -1,\n          absDelta = sign$$1 * delta,\n          antimeridian = absDelta > pi$3,\n          k = sinPhi0 * sinPhi1;\n\n      sum$1.add(atan2(k * sign$$1 * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));\n      angle += antimeridian ? delta + sign$$1 * tau$3 : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1);\n}\n\nfunction clip(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi$2 - epsilon$2 : halfPi$2 - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi$2 - epsilon$2 : halfPi$2 - b[1]);\n}\n\nvar clipAntimeridian = clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi$3, -halfPi$2]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi$3 : -pi$3,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi$3) < epsilon$2) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$2 : -halfPi$2);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi$3) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon$2) lambda0 -= sign0 * epsilon$2; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon$2) lambda1 -= sign1 * epsilon$2;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin$1(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon$2\n      ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1)\n          - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi$2;\n    stream.point(-pi$3, phi);\n    stream.point(0, phi);\n    stream.point(pi$3, phi);\n    stream.point(pi$3, 0);\n    stream.point(pi$3, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi$3, -phi);\n    stream.point(-pi$3, 0);\n    stream.point(-pi$3, phi);\n  } else if (abs(from[0] - to[0]) > epsilon$2) {\n    var lambda = from[0] < to[0] ? pi$3 : -pi$3;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n\nfunction clipCircle(radius) {\n  var cr = cos$1(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon$2; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos$1(lambda) * cos$1(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi$3 : -pi$3), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon$2;\n            point1[1] += epsilon$2;\n            v = visible(point1[0], point1[1]);\n          }\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1]);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi$3) < epsilon$2,\n        meridian = polar || delta < epsilon$2;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$2 ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi$3 ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi$3 - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$3, radius - pi$3]);\n}\n\nfunction clipLine(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n\nvar clipMax = 1e9;\nvar clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon$2 ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon$2 ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon$2 ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\nfunction extent$1() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n\nvar lengthSum = adder();\nvar lambda0$2;\nvar sinPhi0$1;\nvar cosPhi0$1;\n\nvar lengthStream = {\n  sphere: noop$1,\n  point: noop$1,\n  lineStart: lengthLineStart,\n  lineEnd: noop$1,\n  polygonStart: noop$1,\n  polygonEnd: noop$1\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop$1;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin$1(phi),\n      cosPhi = cos$1(phi),\n      delta = abs(lambda - lambda0$2),\n      cosDelta = cos$1(delta),\n      sinDelta = sin$1(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta,\n      z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi;\n}\n\nfunction length$1(object) {\n  lengthSum.reset();\n  geoStream(object, lengthStream);\n  return +lengthSum;\n}\n\nvar coordinates = [null, null];\nvar object$1 = {type: \"LineString\", coordinates: coordinates};\n\nfunction distance(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length$1(object$1);\n}\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ab = distance(coordinates[0], coordinates[1]),\n      ao = distance(coordinates[0], point),\n      ob = distance(point, coordinates[1]);\n  return ao + ob <= ab + epsilon$2;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nfunction contains(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n\nfunction graticuleX(y0, y1, dy) {\n  var y = sequence(y0, y1 - epsilon$2, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = sequence(x0, x1 - epsilon$2, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return sequence(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(sequence(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(sequence(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$2; }).map(x))\n        .concat(sequence(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$2; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon$2], [180, 90 - epsilon$2]])\n      .extentMinor([[-180, -80 - epsilon$2], [180, 80 + epsilon$2]]);\n}\n\nfunction graticule10() {\n  return graticule()();\n}\n\nfunction interpolate$1(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos$1(y0),\n      sy0 = sin$1(y0),\n      cy1 = cos$1(y1),\n      sy1 = sin$1(y1),\n      kx0 = cy0 * cos$1(x0),\n      ky0 = cy0 * sin$1(x0),\n      kx1 = cy1 * cos$1(x1),\n      ky1 = cy1 * sin$1(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin$1(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin$1(t *= d) / k,\n        A = sin$1(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees$1,\n      atan2(z, sqrt(x * x + y * y)) * degrees$1\n    ];\n  } : function() {\n    return [x0 * degrees$1, y0 * degrees$1];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n\nfunction identity$4(x) {\n  return x;\n}\n\nvar areaSum$1 = adder();\nvar areaRingSum$1 = adder();\nvar x00;\nvar y00;\nvar x0$1;\nvar y0$1;\n\nvar areaStream$1 = {\n  point: noop$1,\n  lineStart: noop$1,\n  lineEnd: noop$1,\n  polygonStart: function() {\n    areaStream$1.lineStart = areaRingStart$1;\n    areaStream$1.lineEnd = areaRingEnd$1;\n  },\n  polygonEnd: function() {\n    areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$1;\n    areaSum$1.add(abs(areaRingSum$1));\n    areaRingSum$1.reset();\n  },\n  result: function() {\n    var area = areaSum$1 / 2;\n    areaSum$1.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart$1() {\n  areaStream$1.point = areaPointFirst$1;\n}\n\nfunction areaPointFirst$1(x, y) {\n  areaStream$1.point = areaPoint$1;\n  x00 = x0$1 = x, y00 = y0$1 = y;\n}\n\nfunction areaPoint$1(x, y) {\n  areaRingSum$1.add(y0$1 * x - x0$1 * y);\n  x0$1 = x, y0$1 = y;\n}\n\nfunction areaRingEnd$1() {\n  areaPoint$1(x00, y00);\n}\n\nvar x0$2 = Infinity;\nvar y0$2 = x0$2;\nvar x1 = -x0$2;\nvar y1 = x1;\n\nvar boundsStream$1 = {\n  point: boundsPoint$1,\n  lineStart: noop$1,\n  lineEnd: noop$1,\n  polygonStart: noop$1,\n  polygonEnd: noop$1,\n  result: function() {\n    var bounds = [[x0$2, y0$2], [x1, y1]];\n    x1 = y1 = -(y0$2 = x0$2 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint$1(x, y) {\n  if (x < x0$2) x0$2 = x;\n  if (x > x1) x1 = x;\n  if (y < y0$2) y0$2 = y;\n  if (y > y1) y1 = y;\n}\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0$1 = 0;\nvar Y0$1 = 0;\nvar Z0$1 = 0;\nvar X1$1 = 0;\nvar Y1$1 = 0;\nvar Z1$1 = 0;\nvar X2$1 = 0;\nvar Y2$1 = 0;\nvar Z2$1 = 0;\nvar x00$1;\nvar y00$1;\nvar x0$3;\nvar y0$3;\n\nvar centroidStream$1 = {\n  point: centroidPoint$1,\n  lineStart: centroidLineStart$1,\n  lineEnd: centroidLineEnd$1,\n  polygonStart: function() {\n    centroidStream$1.lineStart = centroidRingStart$1;\n    centroidStream$1.lineEnd = centroidRingEnd$1;\n  },\n  polygonEnd: function() {\n    centroidStream$1.point = centroidPoint$1;\n    centroidStream$1.lineStart = centroidLineStart$1;\n    centroidStream$1.lineEnd = centroidLineEnd$1;\n  },\n  result: function() {\n    var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1]\n        : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1]\n        : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1]\n        : [NaN, NaN];\n    X0$1 = Y0$1 = Z0$1 =\n    X1$1 = Y1$1 = Z1$1 =\n    X2$1 = Y2$1 = Z2$1 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint$1(x, y) {\n  X0$1 += x;\n  Y0$1 += y;\n  ++Z0$1;\n}\n\nfunction centroidLineStart$1() {\n  centroidStream$1.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream$1.point = centroidPointLine;\n  centroidPoint$1(x0$3 = x, y0$3 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy);\n  X1$1 += z * (x0$3 + x) / 2;\n  Y1$1 += z * (y0$3 + y) / 2;\n  Z1$1 += z;\n  centroidPoint$1(x0$3 = x, y0$3 = y);\n}\n\nfunction centroidLineEnd$1() {\n  centroidStream$1.point = centroidPoint$1;\n}\n\nfunction centroidRingStart$1() {\n  centroidStream$1.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd$1() {\n  centroidPointRing(x00$1, y00$1);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream$1.point = centroidPointRing;\n  centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0$3,\n      dy = y - y0$3,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1$1 += z * (x0$3 + x) / 2;\n  Y1$1 += z * (y0$3 + y) / 2;\n  Z1$1 += z;\n\n  z = y0$3 * x - x0$3 * y;\n  X2$1 += z * (x0$3 + x);\n  Y2$1 += z * (y0$3 + y);\n  Z2$1 += z * 3;\n  centroidPoint$1(x0$3 = x, y0$3 = y);\n}\n\nfunction PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau$3);\n        break;\n      }\n    }\n  },\n  result: noop$1\n};\n\nvar lengthSum$1 = adder();\nvar lengthRing;\nvar x00$2;\nvar y00$2;\nvar x0$4;\nvar y0$4;\n\nvar lengthStream$1 = {\n  point: noop$1,\n  lineStart: function() {\n    lengthStream$1.point = lengthPointFirst$1;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint$1(x00$2, y00$2);\n    lengthStream$1.point = noop$1;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum$1;\n    lengthSum$1.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst$1(x, y) {\n  lengthStream$1.point = lengthPoint$1;\n  x00$2 = x0$4 = x, y00$2 = y0$4 = y;\n}\n\nfunction lengthPoint$1(x, y) {\n  x0$4 -= x, y0$4 -= y;\n  lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4));\n  x0$4 = x, y0$4 = y;\n}\n\nfunction PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle$1(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle$1(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle$1(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n\nfunction index$1(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      geoStream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    geoStream(object, projectionStream(areaStream$1));\n    return areaStream$1.result();\n  };\n\n  path.measure = function(object) {\n    geoStream(object, projectionStream(lengthStream$1));\n    return lengthStream$1.result();\n  };\n\n  path.bounds = function(object) {\n    geoStream(object, projectionStream(boundsStream$1));\n    return boundsStream$1.result();\n  };\n\n  path.centroid = function(object) {\n    geoStream(object, projectionStream(centroidStream$1));\n    return centroidStream$1.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity$4) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n\nfunction transform(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nfunction transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream$1));\n  fitBounds(boundsStream$1.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nfunction fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nfunction fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nvar maxDepth = 16;\nvar cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance)\n\nfunction resample(project, delta2) {\n  return +delta2 ? resample$1(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample$1(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon$2 || abs(lambda0 - lambda1) < epsilon$2 ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nfunction projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      dx, dy, lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n      theta = null, preclip = clipAntimeridian, // clip angle\n      x0 = null, y0, x1, y1, postclip = identity$4, // clip extent\n      delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    point = projectRotate(point[0] * radians, point[1] * radians);\n    return [point[0] * k + dx, dy - point[1] * k];\n  }\n\n  function invert(point) {\n    point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n    return point && [point[0] * degrees$1, point[1] * degrees$1];\n  }\n\n  function projectTransform(x, y) {\n    return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1];\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n    var center = project(lambda, phi);\n    dx = x - center[0] * k;\n    dy = y + center[1] * k;\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n\nfunction conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi$3 / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1];\n  };\n\n  return p;\n}\n\nfunction cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos$1(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin$1(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n\nfunction conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon$2) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin$1(y)) / n;\n    return [r * sin$1(x *= n), r0 - r * cos$1(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y;\n    return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nfunction conicEqualArea() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n\nfunction albers() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nfunction albersUsa() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null, (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon$2, y + 0.120 * k + epsilon$2], [x - 0.214 * k - epsilon$2, y + 0.234 * k - epsilon$2]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon$2, y + 0.166 * k + epsilon$2], [x - 0.115 * k - epsilon$2, y + 0.234 * k - epsilon$2]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n\nfunction azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos$1(x),\n        cy = cos$1(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin$1(x),\n      k * sin$1(y)\n    ];\n  }\n}\n\nfunction azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin$1(c),\n        cc = cos$1(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n\nvar azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nfunction azimuthalEqualArea() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n\nvar azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin$1(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nfunction azimuthalEquidistant() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n\nfunction mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi$2 + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi$2];\n};\n\nfunction mercator() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau$3);\n}\n\nfunction mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi$3 * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n\nfunction tany(y) {\n  return tan((halfPi$2 + y) / 2);\n}\n\nfunction conicConformalRaw(y0, y1) {\n  var cy0 = cos$1(y0),\n      n = y0 === y1 ? sin$1(y0) : log(cy0 / cos$1(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi$2 + epsilon$2) y = -halfPi$2 + epsilon$2; }\n    else { if (y > halfPi$2 - epsilon$2) y = halfPi$2 - epsilon$2; }\n    var r = f / pow(tany(y), n);\n    return [r * sin$1(n * x), f - r * cos$1(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n    return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2];\n  };\n\n  return project;\n}\n\nfunction conicConformal() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n\nfunction equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nfunction equirectangular() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n\nfunction conicEquidistantRaw(y0, y1) {\n  var cy0 = cos$1(y0),\n      n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon$2) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin$1(nx), g - gy * cos$1(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y;\n    return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nfunction conicEquidistant() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n\nfunction gnomonicRaw(x, y) {\n  var cy = cos$1(y), k = cos$1(x) * cy;\n  return [cy * sin$1(x) / k, sin$1(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nfunction gnomonic() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n  return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$4 : transformer({\n    point: function(x, y) {\n      this.stream.point(x * kx + tx, y * ky + ty);\n    }\n  });\n}\n\nfunction identity$5() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity$4, // scale, translate and reflect\n      x0 = null, y0, x1, y1, // clip extent\n      postclip = identity$4,\n      cache,\n      cacheStream,\n      projection;\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return projection = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = transform$$1(postclip(cacheStream = stream));\n    },\n    postclip: function(_) {\n      return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n    },\n    clipExtent: function(_) {\n      return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n    },\n    scale: function(_) {\n      return arguments.length ? (transform$$1 = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n    },\n    translate: function(_) {\n      return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n    },\n    reflectX: function(_) {\n      return arguments.length ? (transform$$1 = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n    },\n    reflectY: function(_) {\n      return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n    },\n    fitExtent: function(extent, object) {\n      return fitExtent(projection, extent, object);\n    },\n    fitSize: function(size, object) {\n      return fitSize(projection, size, object);\n    },\n    fitWidth: function(width, object) {\n      return fitWidth(projection, width, object);\n    },\n    fitHeight: function(height, object) {\n      return fitHeight(projection, height, object);\n    }\n  };\n}\n\nfunction naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon$2 && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nfunction naturalEarth1() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n\nfunction orthographicRaw(x, y) {\n  return [cos$1(y) * sin$1(x), sin$1(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nfunction orthographic() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon$2);\n}\n\nfunction stereographicRaw(x, y) {\n  var cy = cos$1(y), k = 1 + cos$1(x) * cy;\n  return [cy * sin$1(x) / k, sin$1(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nfunction stereographic() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n\nfunction transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi$2 + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi$2];\n};\n\nfunction transverseMercator() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nfunction cluster() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n\nfunction count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nfunction node_count() {\n  return this.eachAfter(count);\n}\n\nfunction node_each(callback) {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      callback(node), children = node.children;\n      if (children) for (i = 0, n = children.length; i < n; ++i) {\n        next.push(children[i]);\n      }\n    }\n  } while (next.length);\n  return this;\n}\n\nfunction node_eachBefore(callback) {\n  var node = this, nodes = [node], children, i;\n  while (node = nodes.pop()) {\n    callback(node), children = node.children;\n    if (children) for (i = children.length - 1; i >= 0; --i) {\n      nodes.push(children[i]);\n    }\n  }\n  return this;\n}\n\nfunction node_eachAfter(callback) {\n  var node = this, nodes = [node], next = [], children, i, n;\n  while (node = nodes.pop()) {\n    next.push(node), children = node.children;\n    if (children) for (i = 0, n = children.length; i < n; ++i) {\n      nodes.push(children[i]);\n    }\n  }\n  while (node = next.pop()) {\n    callback(node);\n  }\n  return this;\n}\n\nfunction node_sum(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n\nfunction node_sort(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n\nfunction node_path(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n\nfunction node_ancestors() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n\nfunction node_descendants() {\n  var nodes = [];\n  this.each(function(node) {\n    nodes.push(node);\n  });\n  return nodes;\n}\n\nfunction node_leaves() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n\nfunction node_links() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n\nfunction hierarchy(data, children) {\n  var root = new Node(data),\n      valued = +data.value && (root.value = data.value),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  if (children == null) children = defaultChildren;\n\n  while (node = nodes.pop()) {\n    if (valued) node.value = +node.data.value;\n    if ((childs = children(node.data)) && (n = childs.length)) {\n      node.children = new Array(n);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n  return d.children;\n}\n\nfunction copyData(node) {\n  node.data = node.data.data;\n}\n\nfunction computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nfunction Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy\n};\n\nvar slice$3 = Array.prototype.slice;\n\nfunction shuffle$1(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n\nfunction enclose(circles) {\n  var i = 0, n = (circles = shuffle$1(slice$3.call(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n\nfunction place(a, b, c) {\n  var ax = a.x,\n      ay = a.y,\n      da = b.r + c.r,\n      db = a.r + c.r,\n      dx = b.x - ax,\n      dy = b.y - ay,\n      dc = dx * dx + dy * dy;\n  if (dc) {\n    var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc),\n        y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n    c.x = ax + x * dx + y * dy;\n    c.y = ay + x * dy - y * dx;\n  } else {\n    c.x = ax + db;\n    c.y = ay;\n  }\n}\n\nfunction intersects(a, b) {\n  var dx = b.x - a.x,\n      dy = b.y - a.y,\n      dr = a.r + b.r;\n  return dr * dr - 1e-6 > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node$1(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nfunction packEnclose(circles) {\n  if (!(n = circles.length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node$1(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nfunction siblings(circles) {\n  packEnclose(circles);\n  return circles;\n}\n\nfunction optional(f) {\n  return f == null ? null : required(f);\n}\n\nfunction required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n\nfunction constantZero() {\n  return 0;\n}\n\nfunction constant$8(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction defaultRadius$1(d) {\n  return Math.sqrt(d.value);\n}\n\nfunction index$2() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius$1))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant$8(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n\nfunction roundNode(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n\nfunction treemapDice(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n\nfunction partition() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n\nvar keyPrefix$1 = \"$\";\nvar preroot = {depth: -1};\nvar ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nfunction stratify() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var d,\n        i,\n        n = data.length,\n        root,\n        parent,\n        node,\n        nodes = new Array(n),\n        nodeId,\n        nodeKey,\n        nodeByKey = {};\n\n    for (i = 0; i < n; ++i) {\n      d = data[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = keyPrefix$1 + (node.id = nodeId);\n        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], nodeId = parentId(data[i], i, data);\n      if (nodeId == null || !(nodeId += \"\")) {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      } else {\n        parent = nodeByKey[keyPrefix$1 + nodeId];\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n\nfunction defaultSeparation$1(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nfunction tree() {\n  var separation = defaultSeparation$1,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n\nfunction treemapSlice(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n\nvar phi = (1 + Math.sqrt(5)) / 2;\n\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nvar squarify = (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n\nfunction index$3() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant$8(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant$8(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant$8(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant$8(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant$8(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n\nfunction binary(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = (x0 * valueRight + x1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = (y0 * valueRight + y1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n\nfunction sliceDice(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);\n}\n\nvar resquarify = (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n        else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n\nfunction area$1(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n\nfunction centroid$1(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    k += c = a[0] * b[1] - b[0] * a[1];\n    x += (a[0] + b[0]) * c;\n    y += (a[1] + b[1]) * c;\n  }\n\n  return k *= 3, [x / k, y / k];\n}\n\n// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nfunction cross$1(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  var n = points.length,\n      indexes = [0, 1],\n      size = 2;\n\n  for (var i = 2; i < n; ++i) {\n    while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nfunction hull(points) {\n  if ((n = points.length) < 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n\nfunction contains$1(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i < n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n\nfunction length$2(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.sqrt(xa * xa + ya * ya);\n  }\n\n  return perimeter;\n}\n\nvar slice$4 = [].slice;\n\nvar noabort = {};\n\nfunction Queue(size) {\n  this._size = size;\n  this._call =\n  this._error = null;\n  this._tasks = [];\n  this._data = [];\n  this._waiting =\n  this._active =\n  this._ended =\n  this._start = 0; // inside a synchronous task callback?\n}\n\nQueue.prototype = queue.prototype = {\n  constructor: Queue,\n  defer: function(callback) {\n    if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n    if (this._call) throw new Error(\"defer after await\");\n    if (this._error != null) return this;\n    var t = slice$4.call(arguments, 1);\n    t.push(callback);\n    ++this._waiting, this._tasks.push(t);\n    poke$1(this);\n    return this;\n  },\n  abort: function() {\n    if (this._error == null) abort(this, new Error(\"abort\"));\n    return this;\n  },\n  await: function(callback) {\n    if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n    if (this._call) throw new Error(\"multiple await\");\n    this._call = function(error, results) { callback.apply(null, [error].concat(results)); };\n    maybeNotify(this);\n    return this;\n  },\n  awaitAll: function(callback) {\n    if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n    if (this._call) throw new Error(\"multiple await\");\n    this._call = callback;\n    maybeNotify(this);\n    return this;\n  }\n};\n\nfunction poke$1(q) {\n  if (!q._start) {\n    try { start$1(q); } // let the current task complete\n    catch (e) {\n      if (q._tasks[q._ended + q._active - 1]) abort(q, e); // task errored synchronously\n      else if (!q._data) throw e; // await callback errored synchronously\n    }\n  }\n}\n\nfunction start$1(q) {\n  while (q._start = q._waiting && q._active < q._size) {\n    var i = q._ended + q._active,\n        t = q._tasks[i],\n        j = t.length - 1,\n        c = t[j];\n    t[j] = end(q, i);\n    --q._waiting, ++q._active;\n    t = c.apply(null, t);\n    if (!q._tasks[i]) continue; // task finished synchronously\n    q._tasks[i] = t || noabort;\n  }\n}\n\nfunction end(q, i) {\n  return function(e, r) {\n    if (!q._tasks[i]) return; // ignore multiple callbacks\n    --q._active, ++q._ended;\n    q._tasks[i] = null;\n    if (q._error != null) return; // ignore secondary errors\n    if (e != null) {\n      abort(q, e);\n    } else {\n      q._data[i] = r;\n      if (q._waiting) poke$1(q);\n      else maybeNotify(q);\n    }\n  };\n}\n\nfunction abort(q, e) {\n  var i = q._tasks.length, t;\n  q._error = e; // ignore active callbacks\n  q._data = undefined; // allow gc\n  q._waiting = NaN; // prevent starting\n\n  while (--i >= 0) {\n    if (t = q._tasks[i]) {\n      q._tasks[i] = null;\n      if (t.abort) {\n        try { t.abort(); }\n        catch (e) { /* ignore */ }\n      }\n    }\n  }\n\n  q._active = NaN; // allow notification\n  maybeNotify(q);\n}\n\nfunction maybeNotify(q) {\n  if (!q._active && q._call) {\n    var d = q._data;\n    q._data = undefined; // allow gc\n    q._call(q._error, d);\n  }\n}\n\nfunction queue(concurrency) {\n  if (concurrency == null) concurrency = Infinity;\n  else if (!((concurrency = +concurrency) >= 1)) throw new Error(\"invalid concurrency\");\n  return new Queue(concurrency);\n}\n\nfunction defaultSource$1() {\n  return Math.random();\n}\n\nvar uniform = (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource$1);\n\nvar normal = (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource$1);\n\nvar logNormal = (function sourceRandomLogNormal(source) {\n  function randomLogNormal() {\n    var randomNormal = normal.source(source).apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource$1);\n\nvar irwinHall = (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    return function() {\n      for (var sum = 0, i = 0; i < n; ++i) sum += source();\n      return sum;\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource$1);\n\nvar bates = (function sourceRandomBates(source) {\n  function randomBates(n) {\n    var randomIrwinHall = irwinHall.source(source)(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource$1);\n\nvar exponential$1 = (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log(1 - source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource$1);\n\nfunction request(url, callback) {\n  var request,\n      event = dispatch(\"beforesend\", \"progress\", \"load\", \"error\"),\n      mimeType,\n      headers = map$1(),\n      xhr = new XMLHttpRequest,\n      user = null,\n      password = null,\n      response,\n      responseType,\n      timeout = 0;\n\n  // If IE does not support CORS, use XDomainRequest.\n  if (typeof XDomainRequest !== \"undefined\"\n      && !(\"withCredentials\" in xhr)\n      && /^(http(s)?:)?\\/\\//.test(url)) xhr = new XDomainRequest;\n\n  \"onload\" in xhr\n      ? xhr.onload = xhr.onerror = xhr.ontimeout = respond\n      : xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); };\n\n  function respond(o) {\n    var status = xhr.status, result;\n    if (!status && hasResponse(xhr)\n        || status >= 200 && status < 300\n        || status === 304) {\n      if (response) {\n        try {\n          result = response.call(request, xhr);\n        } catch (e) {\n          event.call(\"error\", request, e);\n          return;\n        }\n      } else {\n        result = xhr;\n      }\n      event.call(\"load\", request, result);\n    } else {\n      event.call(\"error\", request, o);\n    }\n  }\n\n  xhr.onprogress = function(e) {\n    event.call(\"progress\", request, e);\n  };\n\n  request = {\n    header: function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers.get(name);\n      if (value == null) headers.remove(name);\n      else headers.set(name, value + \"\");\n      return request;\n    },\n\n    // If mimeType is non-null and no Accept header is set, a default is used.\n    mimeType: function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return request;\n    },\n\n    // Specifies what type the response value should take;\n    // for instance, arraybuffer, blob, document, or text.\n    responseType: function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return request;\n    },\n\n    timeout: function(value) {\n      if (!arguments.length) return timeout;\n      timeout = +value;\n      return request;\n    },\n\n    user: function(value) {\n      return arguments.length < 1 ? user : (user = value == null ? null : value + \"\", request);\n    },\n\n    password: function(value) {\n      return arguments.length < 1 ? password : (password = value == null ? null : value + \"\", request);\n    },\n\n    // Specify how to convert the response content to a specific type;\n    // changes the callback value on \"load\" events.\n    response: function(value) {\n      response = value;\n      return request;\n    },\n\n    // Alias for send(\"GET\", …).\n    get: function(data, callback) {\n      return request.send(\"GET\", data, callback);\n    },\n\n    // Alias for send(\"POST\", …).\n    post: function(data, callback) {\n      return request.send(\"POST\", data, callback);\n    },\n\n    // If callback is non-null, it will be used for error and load events.\n    send: function(method, data, callback) {\n      xhr.open(method, url, true, user, password);\n      if (mimeType != null && !headers.has(\"accept\")) headers.set(\"accept\", mimeType + \",*/*\");\n      if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); });\n      if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType);\n      if (responseType != null) xhr.responseType = responseType;\n      if (timeout > 0) xhr.timeout = timeout;\n      if (callback == null && typeof data === \"function\") callback = data, data = null;\n      if (callback != null && callback.length === 1) callback = fixCallback(callback);\n      if (callback != null) request.on(\"error\", callback).on(\"load\", function(xhr) { callback(null, xhr); });\n      event.call(\"beforesend\", request, xhr);\n      xhr.send(data == null ? null : data);\n      return request;\n    },\n\n    abort: function() {\n      xhr.abort();\n      return request;\n    },\n\n    on: function() {\n      var value = event.on.apply(event, arguments);\n      return value === event ? request : value;\n    }\n  };\n\n  if (callback != null) {\n    if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    return request.get(callback);\n  }\n\n  return request;\n}\n\nfunction fixCallback(callback) {\n  return function(error, xhr) {\n    callback(error == null ? xhr : null);\n  };\n}\n\nfunction hasResponse(xhr) {\n  var type = xhr.responseType;\n  return type && type !== \"text\"\n      ? xhr.response // null on error\n      : xhr.responseText; // \"\" on error\n}\n\nfunction type$1(defaultMimeType, response) {\n  return function(url, callback) {\n    var r = request(url).mimeType(defaultMimeType).response(response);\n    if (callback != null) {\n      if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n      return r.get(callback);\n    }\n    return r;\n  };\n}\n\nvar html = type$1(\"text/html\", function(xhr) {\n  return document.createRange().createContextualFragment(xhr.responseText);\n});\n\nvar json = type$1(\"application/json\", function(xhr) {\n  return JSON.parse(xhr.responseText);\n});\n\nvar text = type$1(\"text/plain\", function(xhr) {\n  return xhr.responseText;\n});\n\nvar xml = type$1(\"application/xml\", function(xhr) {\n  var xml = xhr.responseXML;\n  if (!xml) throw new Error(\"parse error\");\n  return xml;\n});\n\nfunction dsv$1(defaultMimeType, parse) {\n  return function(url, row, callback) {\n    if (arguments.length < 3) callback = row, row = null;\n    var r = request(url).mimeType(defaultMimeType);\n    r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; };\n    r.row(row);\n    return callback ? r.get(callback) : r;\n  };\n}\n\nfunction responseOf(parse, row) {\n  return function(request$$1) {\n    return parse(request$$1.responseText, row);\n  };\n}\n\nvar csv$1 = dsv$1(\"text/csv\", csvParse);\n\nvar tsv$1 = dsv$1(\"text/tab-separated-values\", tsvParse);\n\nvar array$2 = Array.prototype;\n\nvar map$3 = array$2.map;\nvar slice$5 = array$2.slice;\n\nvar implicit = {name: \"implicit\"};\n\nfunction ordinal(range) {\n  var index = map$1(),\n      domain = [],\n      unknown = implicit;\n\n  range = range == null ? [] : slice$5.call(range);\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = map$1();\n    var i = -1, n = _.length, d, key;\n    while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice$5.call(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return scale;\n}\n\nfunction band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      range$$1 = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = range$$1[1] < range$$1[0],\n        start = range$$1[reverse - 0],\n        stop = range$$1[1 - reverse];\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range$$1 = [+_[0], +_[1]], round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band()\n        .domain(domain())\n        .range(range$$1)\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return rescale();\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point$1() {\n  return pointish(band().paddingInner(1));\n}\n\nfunction constant$9(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction number$2(x) {\n  return +x;\n}\n\nvar unit = [0, 1];\n\nfunction deinterpolateLinear(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant$9(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n  return function(a, b) {\n    var d = deinterpolate(a = +a, b = +b);\n    return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n  };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n  return function(a, b) {\n    var r = reinterpolate(a = +a, b = +b);\n    return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n  };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n  else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = deinterpolate(domain[i], domain[i + 1]);\n    r[i] = reinterpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisectRight(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nfunction continuous(deinterpolate, reinterpolate) {\n  var domain = unit,\n      range = unit,\n      interpolate$$1 = interpolateValue,\n      clamp = false,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);\n  }\n\n  scale.invert = function(y) {\n    return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = map$3.call(_, number$2), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = slice$5.call(_), interpolate$$1 = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, rescale()) : clamp;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;\n  };\n\n  return rescale();\n}\n\nfunction tickFormat(domain, count, specifier) {\n  var start = domain[0],\n      stop = domain[domain.length - 1],\n      step = tickStep(start, stop, count == null ? 10 : count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return exports.formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return exports.format(specifier);\n}\n\nfunction linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return tickFormat(domain(), count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain(),\n        i0 = 0,\n        i1 = d.length - 1,\n        start = d[i0],\n        stop = d[i1],\n        step;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n\n    step = tickIncrement(start, stop, count);\n\n    if (step > 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n      step = tickIncrement(start, stop, count);\n    } else if (step < 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n      step = tickIncrement(start, stop, count);\n    }\n\n    if (step > 0) {\n      d[i0] = Math.floor(start / step) * step;\n      d[i1] = Math.ceil(stop / step) * step;\n      domain(d);\n    } else if (step < 0) {\n      d[i0] = Math.ceil(start * step) / step;\n      d[i1] = Math.floor(stop * step) / step;\n      domain(d);\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nfunction linear$2() {\n  var scale = continuous(deinterpolateLinear, reinterpolate);\n\n  scale.copy = function() {\n    return copy(scale, linear$2());\n  };\n\n  return linearish(scale);\n}\n\nfunction identity$6() {\n  var domain = [0, 1];\n\n  function scale(x) {\n    return +x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice();\n  };\n\n  scale.copy = function() {\n    return identity$6().domain(domain);\n  };\n\n  return linearish(scale);\n}\n\nfunction nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n\nfunction deinterpolate(a, b) {\n  return (b = Math.log(b / a))\n      ? function(x) { return Math.log(x / a) / b; }\n      : constant$9(b);\n}\n\nfunction reinterpolate$1(a, b) {\n  return a < 0\n      ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n      : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nfunction log$1() {\n  var scale = continuous(deinterpolate, reinterpolate$1).domain([1, 10]),\n      domain = scale.domain,\n      base = 10,\n      logs = logp(10),\n      pows = powp(10);\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.round(i) - 1, j = Math.round(j) + 1;\n      if (u > 0) for (; i < j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i < j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = exports.format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  scale.copy = function() {\n    return copy(scale, log$1().base(base));\n  };\n\n  return scale;\n}\n\nfunction raise$1(x, exponent) {\n  return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nfunction pow$1() {\n  var exponent = 1,\n      scale = continuous(deinterpolate, reinterpolate),\n      domain = scale.domain;\n\n  function deinterpolate(a, b) {\n    return (b = raise$1(b, exponent) - (a = raise$1(a, exponent)))\n        ? function(x) { return (raise$1(x, exponent) - a) / b; }\n        : constant$9(b);\n  }\n\n  function reinterpolate(a, b) {\n    b = raise$1(b, exponent) - (a = raise$1(a, exponent));\n    return function(t) { return raise$1(a + b * t, 1 / exponent); };\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n  };\n\n  scale.copy = function() {\n    return copy(scale, pow$1().exponent(exponent));\n  };\n\n  return linearish(scale);\n}\n\nfunction sqrt$1() {\n  return pow$1().exponent(0.5);\n}\n\nfunction quantile$$1() {\n  var domain = [],\n      range = [],\n      thresholds = [];\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    if (!isNaN(x = +x)) return range[bisectRight(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice();\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile$$1()\n        .domain(domain)\n        .range(range);\n  };\n\n  return scale;\n}\n\nfunction quantize$1() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1];\n\n  function scale(x) {\n    if (x <= x) return range[bisectRight(domain, x, 0, n)];\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = slice$5.call(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.copy = function() {\n    return quantize$1()\n        .domain([x0, x1])\n        .range(range);\n  };\n\n  return linearish(scale);\n}\n\nfunction threshold$1() {\n  var domain = [0.5],\n      range = [0, 1],\n      n = 1;\n\n  function scale(x) {\n    if (x <= x) return range[bisectRight(domain, x, 0, n)];\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.copy = function() {\n    return threshold$1()\n        .domain(domain)\n        .range(range);\n  };\n\n  return scale;\n}\n\nvar t0$1 = new Date;\nvar t1$1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = new Date(+date)), date;\n  }\n\n  interval.floor = interval;\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0$1.setTime(+start), t1$1.setTime(+end);\n      floori(t0$1), floori(t1$1);\n      return Math.floor(count(t0$1, t1$1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n\nvar millisecond = newInterval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return newInterval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nvar milliseconds = millisecond.range;\n\nvar durationSecond$1 = 1e3;\nvar durationMinute$1 = 6e4;\nvar durationHour$1 = 36e5;\nvar durationDay$1 = 864e5;\nvar durationWeek$1 = 6048e5;\n\nvar second = newInterval(function(date) {\n  date.setTime(Math.floor(date / durationSecond$1) * durationSecond$1);\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond$1);\n}, function(start, end) {\n  return (end - start) / durationSecond$1;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nvar seconds = second.range;\n\nvar minute = newInterval(function(date) {\n  date.setTime(Math.floor(date / durationMinute$1) * durationMinute$1);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute$1);\n}, function(start, end) {\n  return (end - start) / durationMinute$1;\n}, function(date) {\n  return date.getMinutes();\n});\n\nvar minutes = minute.range;\n\nvar hour = newInterval(function(date) {\n  var offset = date.getTimezoneOffset() * durationMinute$1 % durationHour$1;\n  if (offset < 0) offset += durationHour$1;\n  date.setTime(Math.floor((+date - offset) / durationHour$1) * durationHour$1 + offset);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour$1);\n}, function(start, end) {\n  return (end - start) / durationHour$1;\n}, function(date) {\n  return date.getHours();\n});\n\nvar hours = hour.range;\n\nvar day = newInterval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationDay$1;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nvar days = day.range;\n\nfunction weekday(i) {\n  return newInterval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationWeek$1;\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\nvar month = newInterval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nvar months = month.range;\n\nvar year = newInterval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nvar years = year.range;\n\nvar utcMinute = newInterval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute$1);\n}, function(start, end) {\n  return (end - start) / durationMinute$1;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nvar utcMinutes = utcMinute.range;\n\nvar utcHour = newInterval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour$1);\n}, function(start, end) {\n  return (end - start) / durationHour$1;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nvar utcHours = utcHour.range;\n\nvar utcDay = newInterval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay$1;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nvar utcDays = utcDay.range;\n\nfunction utcWeekday(i) {\n  return newInterval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek$1;\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\nvar utcMonth = newInterval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nvar utcMonths = utcMonth.range;\n\nvar utcYear = newInterval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nvar utcYears = utcYear.range;\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n  return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale$1(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, newDate) {\n    return function(string) {\n      var d = newYear(1900),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day$$1;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newYear(d.y)), day$$1 = week.getUTCDay();\n          week = day$$1 > 4 || day$$1 === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = newDate(newYear(d.y)), day$$1 = week.getDay();\n          week = day$$1 > 4 || day$$1 === 0 ? monday.ceil(week) : monday(week);\n          week = day.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day$$1 = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day$$1 + 5) % 7 : d.w + d.U * 7 - (day$$1 + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return newDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", localDate);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier, utcDate);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\nvar numberRe = /^\\s*\\d+/;\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + day.count(year(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day$$1 = d.getDay();\n  return day$$1 === 0 ? 7 : day$$1;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(sunday.count(year(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  var day$$1 = d.getDay();\n  d = (day$$1 >= 4 || day$$1 === 0) ? thursday(d) : thursday.ceil(d);\n  return pad(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(monday.count(year(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  var day$$1 = d.getUTCDay();\n  d = (day$$1 >= 4 || day$$1 === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n\nvar locale$1;\n\n\n\n\n\ndefaultLocale$1({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale$1(definition) {\n  locale$1 = formatLocale$1(definition);\n  exports.timeFormat = locale$1.format;\n  exports.timeParse = locale$1.parse;\n  exports.utcFormat = locale$1.utcFormat;\n  exports.utcParse = locale$1.utcParse;\n  return locale$1;\n}\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : exports.utcFormat(isoSpecifier);\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : exports.utcParse(isoSpecifier);\n\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\nfunction date$1(t) {\n  return new Date(t);\n}\n\nfunction number$3(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format) {\n  var scale = continuous(deinterpolateLinear, reinterpolate),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  var tickIntervals = [\n    [second$$1,  1,      durationSecond],\n    [second$$1,  5,  5 * durationSecond],\n    [second$$1, 15, 15 * durationSecond],\n    [second$$1, 30, 30 * durationSecond],\n    [minute$$1,  1,      durationMinute],\n    [minute$$1,  5,  5 * durationMinute],\n    [minute$$1, 15, 15 * durationMinute],\n    [minute$$1, 30, 30 * durationMinute],\n    [  hour$$1,  1,      durationHour  ],\n    [  hour$$1,  3,  3 * durationHour  ],\n    [  hour$$1,  6,  6 * durationHour  ],\n    [  hour$$1, 12, 12 * durationHour  ],\n    [   day$$1,  1,      durationDay   ],\n    [   day$$1,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month$$1,  1,      durationMonth ],\n    [ month$$1,  3,  3 * durationMonth ],\n    [  year$$1,  1,      durationYear  ]\n  ];\n\n  function tickFormat(date) {\n    return (second$$1(date) < date ? formatMillisecond\n        : minute$$1(date) < date ? formatSecond\n        : hour$$1(date) < date ? formatMinute\n        : day$$1(date) < date ? formatHour\n        : month$$1(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year$$1(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  function tickInterval(interval, start, stop, step) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year$$1;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond$$1;\n      }\n    }\n\n    return step == null ? interval : interval.every(step);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1);\n  };\n\n  scale.ticks = function(interval, step) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1, step);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval, step) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format));\n  };\n\n  return scale;\n}\n\nfunction time() {\n  return calendar(year, month, sunday, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n\nfunction utcTime() {\n  return calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n\nfunction colors(s) {\n  return s.match(/.{6}/g).map(function(x) {\n    return \"#\" + x;\n  });\n}\n\nvar category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\nvar category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\nvar category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\nvar category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\nvar cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n\nvar warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nfunction rainbow$1(t) {\n  if (t < 0 || t > 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  rainbow.h = 360 * t - 100;\n  rainbow.s = 1.5 - 1.5 * ts;\n  rainbow.l = 0.8 - 0.9 * ts;\n  return rainbow + \"\";\n}\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nvar viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nvar magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nvar inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nvar plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\nfunction sequential(interpolator) {\n  var x0 = 0,\n      x1 = 1,\n      clamp = false;\n\n  function scale(x) {\n    var t = (x - x0) / (x1 - x0);\n    return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.copy = function() {\n    return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n  };\n\n  return linearish(scale);\n}\n\nfunction constant$10(x) {\n  return function constant() {\n    return x;\n  };\n}\n\nvar abs$1 = Math.abs;\nvar atan2$1 = Math.atan2;\nvar cos$2 = Math.cos;\nvar max$2 = Math.max;\nvar min$1 = Math.min;\nvar sin$2 = Math.sin;\nvar sqrt$2 = Math.sqrt;\n\nvar epsilon$3 = 1e-12;\nvar pi$4 = Math.PI;\nvar halfPi$3 = pi$4 / 2;\nvar tau$4 = 2 * pi$4;\n\nfunction acos$1(x) {\n  return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x);\n}\n\nfunction asin$1(x) {\n  return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x);\n}\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt$2(max$2(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nfunction arc() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant$10(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi$3,\n        a1 = endAngle.apply(this, arguments) - halfPi$3,\n        da = abs$1(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon$3)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau$4 - epsilon$3) {\n      context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon$3) {\n        context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)),\n          rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon$3) {\n        var p0 = asin$1(rp / r0 * sin$2(ap)),\n            p1 = asin$1(rp / r1 * sin$2(ap));\n        if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos$2(a01),\n          y01 = r1 * sin$2(a01),\n          x10 = r0 * cos$2(a10),\n          y10 = r0 * sin$2(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon$3) {\n        var x11 = r1 * cos$2(a11),\n            y11 = r1 * sin$2(a11),\n            x00 = r0 * cos$2(a00),\n            y00 = r0 * sin$2(a00);\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi$4) {\n          var oc = da0 > epsilon$3 ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n              ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2),\n              lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min$1(rc, (r0 - lc) / (kc - 1));\n          rc1 = min$1(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon$3)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon$3) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon$3) || !(da0 > epsilon$3)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon$3) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2;\n    return [cos$2(a) * r, sin$2(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant$10(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant$10(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant$10(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant$10(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$10(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$10(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant$10(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, arc) : context;\n  };\n\n  return arc;\n}\n\nfunction Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nfunction curveLinear(context) {\n  return new Linear(context);\n}\n\nfunction x$3(p) {\n  return p[0];\n}\n\nfunction y$3(p) {\n  return p[1];\n}\n\nfunction line() {\n  var x$$1 = x$3,\n      y$$1 = y$3,\n      defined = constant$10(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function line(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant$10(+_), line) : x$$1;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant$10(+_), line) : y$$1;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$10(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n\nfunction area$2() {\n  var x0 = x$3,\n      x1 = null,\n      y0 = constant$10(0),\n      y1 = y$3,\n      defined = constant$10(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$10(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$10(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$10(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$10(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$10(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$10(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$10(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n\nfunction descending$1(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\nfunction identity$7(d) {\n  return d;\n}\n\nfunction pie() {\n  var value = identity$7,\n      sortValues = descending$1,\n      sort = null,\n      startAngle = constant$10(0),\n      endAngle = constant$10(tau$4),\n      padAngle = constant$10(0);\n\n  function pie(data) {\n    var i,\n        n = data.length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau$4, Math.max(-tau$4, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant$10(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$10(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$10(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant$10(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n\nvar curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nfunction curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n\nfunction lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nfunction lineRadial$1() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n\nfunction areaRadial() {\n  var a = area$2().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n\nfunction pointRadial(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n\nvar slice$6 = Array.prototype.slice;\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link$2(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x$$1 = x$3,\n      y$$1 = y$3,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = path();\n    curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant$10(+_), link) : x$$1;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant$10(+_), link) : y$$1;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial$1(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n  return link$2(curveHorizontal);\n}\n\nfunction linkVertical() {\n  return link$2(curveVertical);\n}\n\nfunction linkRadial() {\n  var l = link$2(curveRadial$1);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n\nvar circle$2 = {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi$4);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau$4);\n  }\n};\n\nvar cross$2 = {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n\nvar tan30 = Math.sqrt(1 / 3);\nvar tan30_2 = tan30 * 2;\n\nvar diamond = {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n\nvar ka = 0.89081309152928522810;\nvar kr = Math.sin(pi$4 / 10) / Math.sin(7 * pi$4 / 10);\nvar kx = Math.sin(tau$4 / 10) * kr;\nvar ky = -Math.cos(tau$4 / 10) * kr;\n\nvar star = {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau$4 * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n\nvar square = {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n\nvar sqrt3 = Math.sqrt(3);\n\nvar triangle = {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n\nvar c = -0.5;\nvar s = Math.sqrt(3) / 2;\nvar k = 1 / Math.sqrt(12);\nvar a = (k / 2 + 1) * 3;\n\nvar wye = {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n\nvar symbols = [\n  circle$2,\n  cross$2,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nfunction symbol() {\n  var type = constant$10(circle$2),\n      size = constant$10(64),\n      context = null;\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant$10(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant$10(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n\nfunction noop$2() {}\n\nfunction point$2(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nfunction Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point$2(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point$2(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nfunction basis$2(context) {\n  return new Basis(context);\n}\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop$2,\n  areaEnd: noop$2,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point$2(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nfunction basisClosed$1(context) {\n  return new BasisClosed(context);\n}\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point$2(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nfunction basisOpen(context) {\n  return new BasisOpen(context);\n}\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nvar bundle = (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n\nfunction point$3(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nfunction Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point$3(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point$3(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar cardinal = (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n\nfunction CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop$2,\n  areaEnd: noop$2,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point$3(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar cardinalClosed = (function custom(tension) {\n\n  function cardinal$$1(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal$$1.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal$$1;\n})(0);\n\nfunction CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point$3(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar cardinalOpen = (function custom(tension) {\n\n  function cardinal$$1(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal$$1.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal$$1;\n})(0);\n\nfunction point$4(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon$3) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon$3) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point$4(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar catmullRom = (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop$2,\n  areaEnd: noop$2,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point$4(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar catmullRomClosed = (function custom(alpha) {\n\n  function catmullRom$$1(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom$$1.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom$$1;\n})(0.5);\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point$4(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nvar catmullRomOpen = (function custom(alpha) {\n\n  function catmullRom$$1(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom$$1.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom$$1;\n})(0.5);\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop$2,\n  areaEnd: noop$2,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nfunction linearClosed(context) {\n  return new LinearClosed(context);\n}\n\nfunction sign$1(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point$5(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point$5(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point$5(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point$5(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n};\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n  return new MonotoneY(context);\n}\n\nfunction Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nfunction natural(context) {\n  return new Natural(context);\n}\n\nfunction Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nfunction step(context) {\n  return new Step(context, 0.5);\n}\n\nfunction stepBefore(context) {\n  return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n  return new Step(context, 1);\n}\n\nfunction none$1(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n\nfunction none$2(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stack() {\n  var keys = constant$10([]),\n      order = none$2,\n      offset = none$1,\n      value = stackValue;\n\n  function stack(data) {\n    var kz = keys.apply(this, arguments),\n        i,\n        m = data.length,\n        n = kz.length,\n        sz = new Array(n),\n        oz;\n\n    for (i = 0; i < n; ++i) {\n      for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n        si[j] = sij = [0, +value(data[j], ki, j, data)];\n        sij.data = data[j];\n      }\n      si.key = ki;\n    }\n\n    for (i = 0, oz = order(sz); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant$10(slice$6.call(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant$10(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? none$2 : typeof _ === \"function\" ? _ : constant$10(slice$6.call(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset;\n  };\n\n  return stack;\n}\n\nfunction expand(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none$1(series, order);\n}\n\nfunction diverging(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = yp;\n      }\n    }\n  }\n}\n\nfunction silhouette(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none$1(series, order);\n}\n\nfunction wiggle(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none$1(series, order);\n}\n\nfunction ascending$2(series) {\n  var sums = series.map(sum$2);\n  return none$2(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nfunction sum$2(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n\nfunction descending$2(series) {\n  return ascending$2(series).reverse();\n}\n\nfunction insideOut(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum$2),\n      order = none$2(series).sort(function(a, b) { return sums[b] - sums[a]; }),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n\nfunction reverse(series) {\n  return none$2(series).reverse();\n}\n\nfunction constant$11(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction x$4(d) {\n  return d[0];\n}\n\nfunction y$4(d) {\n  return d[1];\n}\n\nfunction RedBlackTree() {\n  this._ = null; // root node\n}\n\nfunction RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nfunction createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nfunction createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nfunction setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nfunction clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$4\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon$4)) {\n      delete edges[i];\n    }\n  }\n}\n\nfunction createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nfunction cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nfunction cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nfunction sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nfunction clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon$4 || Math.abs(endY - startY) > epsilon$4) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon$4 && y1 - endY > epsilon$4 ? [x0, Math.abs(startX - x0) < epsilon$4 ? startY : y1]\n              : Math.abs(endY - y1) < epsilon$4 && x1 - endX > epsilon$4 ? [Math.abs(startY - y1) < epsilon$4 ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon$4 && endY - y0 > epsilon$4 ? [x1, Math.abs(startX - x1) < epsilon$4 ? startY : y0]\n              : Math.abs(endY - y0) < epsilon$4 && endX - x0 > epsilon$4 ? [Math.abs(startY - y0) < epsilon$4 ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n\nvar circlePool = [];\n\nvar firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nfunction attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2$2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nfunction detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nfunction removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon$4\n      && Math.abs(y - lArc.circle.cy) < epsilon$4) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon$4\n      && Math.abs(y - rArc.circle.cy) < epsilon$4) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon$4) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon$4) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon$4) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon$4) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n\nvar epsilon$4 = 1e-6;\nvar epsilon2$2 = 1e-12;\nvar beaches;\nvar cells;\nvar circles;\nvar edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nfunction Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n};\n\nfunction voronoi() {\n  var x$$1 = x$4,\n      y$$1 = y$4,\n      extent = null;\n\n  function voronoi(data) {\n    return new Diagram(data.map(function(d, i) {\n      var s = [Math.round(x$$1(d, i, data) / epsilon$4) * epsilon$4, Math.round(y$$1(d, i, data) / epsilon$4) * epsilon$4];\n      s.index = i;\n      s.data = d;\n      return s;\n    }), extent);\n  }\n\n  voronoi.polygons = function(data) {\n    return voronoi(data).polygons();\n  };\n\n  voronoi.links = function(data) {\n    return voronoi(data).links();\n  };\n\n  voronoi.triangles = function(data) {\n    return voronoi(data).triangles();\n  };\n\n  voronoi.x = function(_) {\n    return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant$11(+_), voronoi) : x$$1;\n  };\n\n  voronoi.y = function(_) {\n    return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant$11(+_), voronoi) : y$$1;\n  };\n\n  voronoi.extent = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n  };\n\n  voronoi.size = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n  };\n\n  return voronoi;\n}\n\nfunction constant$12(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction ZoomEvent(target, type, transform) {\n  this.target = target;\n  this.type = type;\n  this.transform = transform;\n}\n\nfunction Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nvar identity$8 = new Transform(1, 0, 0);\n\ntransform$1.prototype = Transform.prototype;\n\nfunction transform$1(node) {\n  return node.__zoom || identity$8;\n}\n\nfunction nopropagation$2() {\n  exports.event.stopImmediatePropagation();\n}\n\nfunction noevent$2() {\n  exports.event.preventDefault();\n  exports.event.stopImmediatePropagation();\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter$2() {\n  return !exports.event.button;\n}\n\nfunction defaultExtent$1() {\n  var e = this, w, h;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    w = e.width.baseVal.value;\n    h = e.height.baseVal.value;\n  } else {\n    w = e.clientWidth;\n    h = e.clientHeight;\n  }\n  return [[0, 0], [w, h]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity$8;\n}\n\nfunction defaultWheelDelta() {\n  return -exports.event.deltaY * (exports.event.deltaMode ? 120 : 1) / 500;\n}\n\nfunction defaultTouchable$1() {\n  return \"ontouchstart\" in this;\n}\n\nfunction defaultConstrain(transform$$1, extent, translateExtent) {\n  var dx0 = transform$$1.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform$$1.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform$$1.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform$$1.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform$$1.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nfunction zoom() {\n  var filter = defaultFilter$2,\n      extent = defaultExtent$1,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable$1,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      gestures = [],\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled)\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform$$1) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform$$1);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n            .start()\n            .zoom(null, typeof transform$$1 === \"function\" ? transform$$1.apply(this, arguments) : transform$$1)\n            .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    });\n  };\n\n  zoom.scaleTo = function(selection, k) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = centroid(e),\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    });\n  };\n\n  zoom.translateBy = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    });\n  };\n\n  zoom.translateTo = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p = centroid(e);\n      return constrain(identity$8.translate(p[0], p[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    });\n  };\n\n  function scale(transform$$1, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform$$1.k ? transform$$1 : new Transform(k, transform$$1.x, transform$$1.y);\n  }\n\n  function translate(transform$$1, p0, p1) {\n    var x = p0[0] - p1[0] * transform$$1.k, y = p0[1] - p1[1] * transform$$1.k;\n    return x === transform$$1.x && y === transform$$1.y ? transform$$1 : new Transform(transform$$1.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform$$1, center) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args),\n              e = extent.apply(that, args),\n              p = center || centroid(e),\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform$$1 === \"function\" ? transform$$1.apply(that, args) : transform$$1,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args) {\n    for (var i = 0, n = gestures.length, g; i < n; ++i) {\n      if ((g = gestures[i]).that === that) {\n        return g;\n      }\n    }\n    return new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.index = -1;\n    this.active = 0;\n    this.extent = extent.apply(that, args);\n  }\n\n  Gesture.prototype = {\n    start: function() {\n      if (++this.active === 1) {\n        this.index = gestures.push(this) - 1;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform$$1) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform$$1.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform$$1.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform$$1.invert(this.touch1[0]);\n      this.that.__zoom = transform$$1;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        gestures.splice(this.index, 1);\n        this.index = -1;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function wheeled() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = mouse(this);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent$2();\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        v = select(exports.event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = mouse(this),\n        x0 = exports.event.clientX,\n        y0 = exports.event.clientY;\n\n    dragDisable(exports.event.view);\n    nopropagation$2();\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved() {\n      noevent$2();\n      if (!g.moved) {\n        var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped() {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      yesdrag(exports.event.view, g.moved);\n      noevent$2();\n      g.end();\n    }\n  }\n\n  function dblclicked() {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = mouse(this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n    noevent$2();\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n    else select(this).call(zoom.transform, t1);\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        touches = exports.event.changedTouches,\n        started,\n        n = touches.length, i, t, p;\n\n    nopropagation$2();\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true;\n      else if (!g.touch1) g.touch1 = p;\n    }\n\n    // If this is a dbltap, reroute to the (optional) dblclick.zoom handler.\n    if (touchstarting) {\n      touchstarting = clearTimeout(touchstarting);\n      if (!g.touch1) {\n        g.end();\n        p = select(this).on(\"dblclick.zoom\");\n        if (p) p.apply(this, arguments);\n        return;\n      }\n    }\n\n    if (started) {\n      touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved() {\n    var g = gesture(this, arguments),\n        touches = exports.event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent$2();\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended() {\n    var g = gesture(this, arguments),\n        touches = exports.event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation$2();\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else g.end();\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant$12(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$12(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$12(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant$12([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  return zoom;\n}\n\nexports.version = version;\nexports.bisect = bisectRight;\nexports.bisectRight = bisectRight;\nexports.bisectLeft = bisectLeft;\nexports.ascending = ascending;\nexports.bisector = bisector;\nexports.cross = cross;\nexports.descending = descending;\nexports.deviation = deviation;\nexports.extent = extent;\nexports.histogram = histogram;\nexports.thresholdFreedmanDiaconis = freedmanDiaconis;\nexports.thresholdScott = scott;\nexports.thresholdSturges = sturges;\nexports.max = max;\nexports.mean = mean;\nexports.median = median;\nexports.merge = merge;\nexports.min = min;\nexports.pairs = pairs;\nexports.permute = permute;\nexports.quantile = threshold;\nexports.range = sequence;\nexports.scan = scan;\nexports.shuffle = shuffle;\nexports.sum = sum;\nexports.ticks = ticks;\nexports.tickIncrement = tickIncrement;\nexports.tickStep = tickStep;\nexports.transpose = transpose;\nexports.variance = variance;\nexports.zip = zip;\nexports.axisTop = axisTop;\nexports.axisRight = axisRight;\nexports.axisBottom = axisBottom;\nexports.axisLeft = axisLeft;\nexports.brush = brush;\nexports.brushX = brushX;\nexports.brushY = brushY;\nexports.brushSelection = brushSelection;\nexports.chord = chord;\nexports.ribbon = ribbon;\nexports.nest = nest;\nexports.set = set$2;\nexports.map = map$1;\nexports.keys = keys;\nexports.values = values;\nexports.entries = entries;\nexports.color = color;\nexports.rgb = rgb;\nexports.hsl = hsl;\nexports.lab = lab;\nexports.hcl = hcl;\nexports.cubehelix = cubehelix;\nexports.dispatch = dispatch;\nexports.drag = drag;\nexports.dragDisable = dragDisable;\nexports.dragEnable = yesdrag;\nexports.dsvFormat = dsv;\nexports.csvParse = csvParse;\nexports.csvParseRows = csvParseRows;\nexports.csvFormat = csvFormat;\nexports.csvFormatRows = csvFormatRows;\nexports.tsvParse = tsvParse;\nexports.tsvParseRows = tsvParseRows;\nexports.tsvFormat = tsvFormat;\nexports.tsvFormatRows = tsvFormatRows;\nexports.easeLinear = linear$1;\nexports.easeQuad = quadInOut;\nexports.easeQuadIn = quadIn;\nexports.easeQuadOut = quadOut;\nexports.easeQuadInOut = quadInOut;\nexports.easeCubic = cubicInOut;\nexports.easeCubicIn = cubicIn;\nexports.easeCubicOut = cubicOut;\nexports.easeCubicInOut = cubicInOut;\nexports.easePoly = polyInOut;\nexports.easePolyIn = polyIn;\nexports.easePolyOut = polyOut;\nexports.easePolyInOut = polyInOut;\nexports.easeSin = sinInOut;\nexports.easeSinIn = sinIn;\nexports.easeSinOut = sinOut;\nexports.easeSinInOut = sinInOut;\nexports.easeExp = expInOut;\nexports.easeExpIn = expIn;\nexports.easeExpOut = expOut;\nexports.easeExpInOut = expInOut;\nexports.easeCircle = circleInOut;\nexports.easeCircleIn = circleIn;\nexports.easeCircleOut = circleOut;\nexports.easeCircleInOut = circleInOut;\nexports.easeBounce = bounceOut;\nexports.easeBounceIn = bounceIn;\nexports.easeBounceOut = bounceOut;\nexports.easeBounceInOut = bounceInOut;\nexports.easeBack = backInOut;\nexports.easeBackIn = backIn;\nexports.easeBackOut = backOut;\nexports.easeBackInOut = backInOut;\nexports.easeElastic = elasticOut;\nexports.easeElasticIn = elasticIn;\nexports.easeElasticOut = elasticOut;\nexports.easeElasticInOut = elasticInOut;\nexports.forceCenter = center$1;\nexports.forceCollide = collide;\nexports.forceLink = link;\nexports.forceManyBody = manyBody;\nexports.forceRadial = radial;\nexports.forceSimulation = simulation;\nexports.forceX = x$2;\nexports.forceY = y$2;\nexports.formatDefaultLocale = defaultLocale;\nexports.formatLocale = formatLocale;\nexports.formatSpecifier = formatSpecifier;\nexports.precisionFixed = precisionFixed;\nexports.precisionPrefix = precisionPrefix;\nexports.precisionRound = precisionRound;\nexports.geoArea = area;\nexports.geoBounds = bounds;\nexports.geoCentroid = centroid;\nexports.geoCircle = circle;\nexports.geoClipAntimeridian = clipAntimeridian;\nexports.geoClipCircle = clipCircle;\nexports.geoClipExtent = extent$1;\nexports.geoClipRectangle = clipRectangle;\nexports.geoContains = contains;\nexports.geoDistance = distance;\nexports.geoGraticule = graticule;\nexports.geoGraticule10 = graticule10;\nexports.geoInterpolate = interpolate$1;\nexports.geoLength = length$1;\nexports.geoPath = index$1;\nexports.geoAlbers = albers;\nexports.geoAlbersUsa = albersUsa;\nexports.geoAzimuthalEqualArea = azimuthalEqualArea;\nexports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;\nexports.geoAzimuthalEquidistant = azimuthalEquidistant;\nexports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;\nexports.geoConicConformal = conicConformal;\nexports.geoConicConformalRaw = conicConformalRaw;\nexports.geoConicEqualArea = conicEqualArea;\nexports.geoConicEqualAreaRaw = conicEqualAreaRaw;\nexports.geoConicEquidistant = conicEquidistant;\nexports.geoConicEquidistantRaw = conicEquidistantRaw;\nexports.geoEquirectangular = equirectangular;\nexports.geoEquirectangularRaw = equirectangularRaw;\nexports.geoGnomonic = gnomonic;\nexports.geoGnomonicRaw = gnomonicRaw;\nexports.geoIdentity = identity$5;\nexports.geoProjection = projection;\nexports.geoProjectionMutator = projectionMutator;\nexports.geoMercator = mercator;\nexports.geoMercatorRaw = mercatorRaw;\nexports.geoNaturalEarth1 = naturalEarth1;\nexports.geoNaturalEarth1Raw = naturalEarth1Raw;\nexports.geoOrthographic = orthographic;\nexports.geoOrthographicRaw = orthographicRaw;\nexports.geoStereographic = stereographic;\nexports.geoStereographicRaw = stereographicRaw;\nexports.geoTransverseMercator = transverseMercator;\nexports.geoTransverseMercatorRaw = transverseMercatorRaw;\nexports.geoRotation = rotation;\nexports.geoStream = geoStream;\nexports.geoTransform = transform;\nexports.cluster = cluster;\nexports.hierarchy = hierarchy;\nexports.pack = index$2;\nexports.packSiblings = siblings;\nexports.packEnclose = enclose;\nexports.partition = partition;\nexports.stratify = stratify;\nexports.tree = tree;\nexports.treemap = index$3;\nexports.treemapBinary = binary;\nexports.treemapDice = treemapDice;\nexports.treemapSlice = treemapSlice;\nexports.treemapSliceDice = sliceDice;\nexports.treemapSquarify = squarify;\nexports.treemapResquarify = resquarify;\nexports.interpolate = interpolateValue;\nexports.interpolateArray = array$1;\nexports.interpolateBasis = basis$1;\nexports.interpolateBasisClosed = basisClosed;\nexports.interpolateDate = date;\nexports.interpolateNumber = reinterpolate;\nexports.interpolateObject = object;\nexports.interpolateRound = interpolateRound;\nexports.interpolateString = interpolateString;\nexports.interpolateTransformCss = interpolateTransformCss;\nexports.interpolateTransformSvg = interpolateTransformSvg;\nexports.interpolateZoom = interpolateZoom;\nexports.interpolateRgb = interpolateRgb;\nexports.interpolateRgbBasis = rgbBasis;\nexports.interpolateRgbBasisClosed = rgbBasisClosed;\nexports.interpolateHsl = hsl$2;\nexports.interpolateHslLong = hslLong;\nexports.interpolateLab = lab$1;\nexports.interpolateHcl = hcl$2;\nexports.interpolateHclLong = hclLong;\nexports.interpolateCubehelix = cubehelix$2;\nexports.interpolateCubehelixLong = cubehelixLong;\nexports.quantize = quantize;\nexports.path = path;\nexports.polygonArea = area$1;\nexports.polygonCentroid = centroid$1;\nexports.polygonHull = hull;\nexports.polygonContains = contains$1;\nexports.polygonLength = length$2;\nexports.quadtree = quadtree;\nexports.queue = queue;\nexports.randomUniform = uniform;\nexports.randomNormal = normal;\nexports.randomLogNormal = logNormal;\nexports.randomBates = bates;\nexports.randomIrwinHall = irwinHall;\nexports.randomExponential = exponential$1;\nexports.request = request;\nexports.html = html;\nexports.json = json;\nexports.text = text;\nexports.xml = xml;\nexports.csv = csv$1;\nexports.tsv = tsv$1;\nexports.scaleBand = band;\nexports.scalePoint = point$1;\nexports.scaleIdentity = identity$6;\nexports.scaleLinear = linear$2;\nexports.scaleLog = log$1;\nexports.scaleOrdinal = ordinal;\nexports.scaleImplicit = implicit;\nexports.scalePow = pow$1;\nexports.scaleSqrt = sqrt$1;\nexports.scaleQuantile = quantile$$1;\nexports.scaleQuantize = quantize$1;\nexports.scaleThreshold = threshold$1;\nexports.scaleTime = time;\nexports.scaleUtc = utcTime;\nexports.schemeCategory10 = category10;\nexports.schemeCategory20b = category20b;\nexports.schemeCategory20c = category20c;\nexports.schemeCategory20 = category20;\nexports.interpolateCubehelixDefault = cubehelix$3;\nexports.interpolateRainbow = rainbow$1;\nexports.interpolateWarm = warm;\nexports.interpolateCool = cool;\nexports.interpolateViridis = viridis;\nexports.interpolateMagma = magma;\nexports.interpolateInferno = inferno;\nexports.interpolatePlasma = plasma;\nexports.scaleSequential = sequential;\nexports.create = create;\nexports.creator = creator;\nexports.local = local$1;\nexports.matcher = matcher$1;\nexports.mouse = mouse;\nexports.namespace = namespace;\nexports.namespaces = namespaces;\nexports.clientPoint = point;\nexports.select = select;\nexports.selectAll = selectAll;\nexports.selection = selection;\nexports.selector = selector;\nexports.selectorAll = selectorAll;\nexports.style = styleValue;\nexports.touch = touch;\nexports.touches = touches;\nexports.window = defaultView;\nexports.customEvent = customEvent;\nexports.arc = arc;\nexports.area = area$2;\nexports.line = line;\nexports.pie = pie;\nexports.areaRadial = areaRadial;\nexports.radialArea = areaRadial;\nexports.lineRadial = lineRadial$1;\nexports.radialLine = lineRadial$1;\nexports.pointRadial = pointRadial;\nexports.linkHorizontal = linkHorizontal;\nexports.linkVertical = linkVertical;\nexports.linkRadial = linkRadial;\nexports.symbol = symbol;\nexports.symbols = symbols;\nexports.symbolCircle = circle$2;\nexports.symbolCross = cross$2;\nexports.symbolDiamond = diamond;\nexports.symbolSquare = square;\nexports.symbolStar = star;\nexports.symbolTriangle = triangle;\nexports.symbolWye = wye;\nexports.curveBasisClosed = basisClosed$1;\nexports.curveBasisOpen = basisOpen;\nexports.curveBasis = basis$2;\nexports.curveBundle = bundle;\nexports.curveCardinalClosed = cardinalClosed;\nexports.curveCardinalOpen = cardinalOpen;\nexports.curveCardinal = cardinal;\nexports.curveCatmullRomClosed = catmullRomClosed;\nexports.curveCatmullRomOpen = catmullRomOpen;\nexports.curveCatmullRom = catmullRom;\nexports.curveLinearClosed = linearClosed;\nexports.curveLinear = curveLinear;\nexports.curveMonotoneX = monotoneX;\nexports.curveMonotoneY = monotoneY;\nexports.curveNatural = natural;\nexports.curveStep = step;\nexports.curveStepAfter = stepAfter;\nexports.curveStepBefore = stepBefore;\nexports.stack = stack;\nexports.stackOffsetExpand = expand;\nexports.stackOffsetDiverging = diverging;\nexports.stackOffsetNone = none$1;\nexports.stackOffsetSilhouette = silhouette;\nexports.stackOffsetWiggle = wiggle;\nexports.stackOrderAscending = ascending$2;\nexports.stackOrderDescending = descending$2;\nexports.stackOrderInsideOut = insideOut;\nexports.stackOrderNone = none$2;\nexports.stackOrderReverse = reverse;\nexports.timeInterval = newInterval;\nexports.timeMillisecond = millisecond;\nexports.timeMilliseconds = milliseconds;\nexports.utcMillisecond = millisecond;\nexports.utcMilliseconds = milliseconds;\nexports.timeSecond = second;\nexports.timeSeconds = seconds;\nexports.utcSecond = second;\nexports.utcSeconds = seconds;\nexports.timeMinute = minute;\nexports.timeMinutes = minutes;\nexports.timeHour = hour;\nexports.timeHours = hours;\nexports.timeDay = day;\nexports.timeDays = days;\nexports.timeWeek = sunday;\nexports.timeWeeks = sundays;\nexports.timeSunday = sunday;\nexports.timeSundays = sundays;\nexports.timeMonday = monday;\nexports.timeMondays = mondays;\nexports.timeTuesday = tuesday;\nexports.timeTuesdays = tuesdays;\nexports.timeWednesday = wednesday;\nexports.timeWednesdays = wednesdays;\nexports.timeThursday = thursday;\nexports.timeThursdays = thursdays;\nexports.timeFriday = friday;\nexports.timeFridays = fridays;\nexports.timeSaturday = saturday;\nexports.timeSaturdays = saturdays;\nexports.timeMonth = month;\nexports.timeMonths = months;\nexports.timeYear = year;\nexports.timeYears = years;\nexports.utcMinute = utcMinute;\nexports.utcMinutes = utcMinutes;\nexports.utcHour = utcHour;\nexports.utcHours = utcHours;\nexports.utcDay = utcDay;\nexports.utcDays = utcDays;\nexports.utcWeek = utcSunday;\nexports.utcWeeks = utcSundays;\nexports.utcSunday = utcSunday;\nexports.utcSundays = utcSundays;\nexports.utcMonday = utcMonday;\nexports.utcMondays = utcMondays;\nexports.utcTuesday = utcTuesday;\nexports.utcTuesdays = utcTuesdays;\nexports.utcWednesday = utcWednesday;\nexports.utcWednesdays = utcWednesdays;\nexports.utcThursday = utcThursday;\nexports.utcThursdays = utcThursdays;\nexports.utcFriday = utcFriday;\nexports.utcFridays = utcFridays;\nexports.utcSaturday = utcSaturday;\nexports.utcSaturdays = utcSaturdays;\nexports.utcMonth = utcMonth;\nexports.utcMonths = utcMonths;\nexports.utcYear = utcYear;\nexports.utcYears = utcYears;\nexports.timeFormatDefaultLocale = defaultLocale$1;\nexports.timeFormatLocale = formatLocale$1;\nexports.isoFormat = formatIso;\nexports.isoParse = parseIso;\nexports.now = now;\nexports.timer = timer;\nexports.timerFlush = timerFlush;\nexports.timeout = timeout$1;\nexports.interval = interval$1;\nexports.transition = transition;\nexports.active = active;\nexports.interrupt = interrupt;\nexports.voronoi = voronoi;\nexports.zoom = zoom;\nexports.zoomTransform = transform$1;\nexports.zoomIdentity = identity$8;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n","/* @license C3.js v0.5.4 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define('c3',factory) :\n    (global.c3 = factory());\n}(this, (function () { 'use strict';\n\n    var CLASS = {\n        target: 'c3-target',\n        chart: 'c3-chart',\n        chartLine: 'c3-chart-line',\n        chartLines: 'c3-chart-lines',\n        chartBar: 'c3-chart-bar',\n        chartBars: 'c3-chart-bars',\n        chartText: 'c3-chart-text',\n        chartTexts: 'c3-chart-texts',\n        chartArc: 'c3-chart-arc',\n        chartArcs: 'c3-chart-arcs',\n        chartArcsTitle: 'c3-chart-arcs-title',\n        chartArcsBackground: 'c3-chart-arcs-background',\n        chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n        chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n        chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n        selectedCircle: 'c3-selected-circle',\n        selectedCircles: 'c3-selected-circles',\n        eventRect: 'c3-event-rect',\n        eventRects: 'c3-event-rects',\n        eventRectsSingle: 'c3-event-rects-single',\n        eventRectsMultiple: 'c3-event-rects-multiple',\n        zoomRect: 'c3-zoom-rect',\n        brush: 'c3-brush',\n        focused: 'c3-focused',\n        defocused: 'c3-defocused',\n        region: 'c3-region',\n        regions: 'c3-regions',\n        title: 'c3-title',\n        tooltipContainer: 'c3-tooltip-container',\n        tooltip: 'c3-tooltip',\n        tooltipName: 'c3-tooltip-name',\n        shape: 'c3-shape',\n        shapes: 'c3-shapes',\n        line: 'c3-line',\n        lines: 'c3-lines',\n        bar: 'c3-bar',\n        bars: 'c3-bars',\n        circle: 'c3-circle',\n        circles: 'c3-circles',\n        arc: 'c3-arc',\n        arcLabelLine: 'c3-arc-label-line',\n        arcs: 'c3-arcs',\n        area: 'c3-area',\n        areas: 'c3-areas',\n        empty: 'c3-empty',\n        text: 'c3-text',\n        texts: 'c3-texts',\n        gaugeValue: 'c3-gauge-value',\n        grid: 'c3-grid',\n        gridLines: 'c3-grid-lines',\n        xgrid: 'c3-xgrid',\n        xgrids: 'c3-xgrids',\n        xgridLine: 'c3-xgrid-line',\n        xgridLines: 'c3-xgrid-lines',\n        xgridFocus: 'c3-xgrid-focus',\n        ygrid: 'c3-ygrid',\n        ygrids: 'c3-ygrids',\n        ygridLine: 'c3-ygrid-line',\n        ygridLines: 'c3-ygrid-lines',\n        axis: 'c3-axis',\n        axisX: 'c3-axis-x',\n        axisXLabel: 'c3-axis-x-label',\n        axisY: 'c3-axis-y',\n        axisYLabel: 'c3-axis-y-label',\n        axisY2: 'c3-axis-y2',\n        axisY2Label: 'c3-axis-y2-label',\n        legendBackground: 'c3-legend-background',\n        legendItem: 'c3-legend-item',\n        legendItemEvent: 'c3-legend-item-event',\n        legendItemTile: 'c3-legend-item-tile',\n        legendItemHidden: 'c3-legend-item-hidden',\n        legendItemFocused: 'c3-legend-item-focused',\n        dragarea: 'c3-dragarea',\n        EXPANDED: '_expanded_',\n        SELECTED: '_selected_',\n        INCLUDED: '_included_'\n    };\n\n    var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n      return typeof obj;\n    } : function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n\n    var classCallCheck = function (instance, Constructor) {\n      if (!(instance instanceof Constructor)) {\n        throw new TypeError(\"Cannot call a class as a function\");\n      }\n    };\n\n    var defineProperty = function (obj, key, value) {\n      if (key in obj) {\n        Object.defineProperty(obj, key, {\n          value: value,\n          enumerable: true,\n          configurable: true,\n          writable: true\n        });\n      } else {\n        obj[key] = value;\n      }\n\n      return obj;\n    };\n\n    var inherits = function (subClass, superClass) {\n      if (typeof superClass !== \"function\" && superClass !== null) {\n        throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n      }\n\n      subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n          value: subClass,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      });\n      if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n    };\n\n    var possibleConstructorReturn = function (self, call) {\n      if (!self) {\n        throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n      }\n\n      return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n    };\n\n    var toArray = function (arr) {\n      return Array.isArray(arr) ? arr : Array.from(arr);\n    };\n\n    var isValue = function isValue(v) {\n        return v || v === 0;\n    };\n    var isFunction = function isFunction(o) {\n        return typeof o === 'function';\n    };\n    var isArray = function isArray(o) {\n        return Array.isArray(o);\n    };\n    var isString = function isString(o) {\n        return typeof o === 'string';\n    };\n    var isUndefined = function isUndefined(v) {\n        return typeof v === 'undefined';\n    };\n    var isDefined = function isDefined(v) {\n        return typeof v !== 'undefined';\n    };\n    var ceil10 = function ceil10(v) {\n        return Math.ceil(v / 10) * 10;\n    };\n    var asHalfPixel = function asHalfPixel(n) {\n        return Math.ceil(n) + 0.5;\n    };\n    var diffDomain = function diffDomain(d) {\n        return d[1] - d[0];\n    };\n    var isEmpty = function isEmpty(o) {\n        return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && Object.keys(o).length === 0;\n    };\n    var notEmpty = function notEmpty(o) {\n        return !c3_chart_internal_fn.isEmpty(o);\n    };\n    var getOption = function getOption(options, key, defaultValue) {\n        return isDefined(options[key]) ? options[key] : defaultValue;\n    };\n    var hasValue = function hasValue(dict, value) {\n        var found = false;\n        Object.keys(dict).forEach(function (key) {\n            if (dict[key] === value) {\n                found = true;\n            }\n        });\n        return found;\n    };\n    var sanitise = function sanitise(str) {\n        return typeof str === 'string' ? str.replace(/</g, '&lt;').replace(/>/g, '&gt;') : str;\n    };\n    var getPathBox = function getPathBox(path) {\n        var box = path.getBoundingClientRect(),\n            items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n            minX = items[0].x,\n            minY = Math.min(items[0].y, items[1].y);\n        return { x: minX, y: minY, width: box.width, height: box.height };\n    };\n\n    var c3_axis_fn;\n    var c3_axis_internal_fn;\n\n    function AxisInternal(component, params) {\n        var internal = this;\n        internal.component = component;\n        internal.params = params || {};\n\n        internal.d3 = component.d3;\n        internal.scale = internal.d3.scaleLinear();\n        internal.range;\n        internal.orient = \"bottom\";\n        internal.innerTickSize = 6;\n        internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n        internal.tickPadding = 3;\n        internal.tickValues = null;\n        internal.tickFormat;\n        internal.tickArguments;\n\n        internal.tickOffset = 0;\n        internal.tickCulling = true;\n        internal.tickCentered;\n        internal.tickTextCharSize;\n        internal.tickTextRotate = internal.params.tickTextRotate;\n        internal.tickLength;\n\n        internal.axis = internal.generateAxis();\n    }\n    c3_axis_internal_fn = AxisInternal.prototype;\n\n    c3_axis_internal_fn.axisX = function (selection, x, tickOffset) {\n        selection.attr(\"transform\", function (d) {\n            return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n        });\n    };\n    c3_axis_internal_fn.axisY = function (selection, y) {\n        selection.attr(\"transform\", function (d) {\n            return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n        });\n    };\n    c3_axis_internal_fn.scaleExtent = function (domain) {\n        var start = domain[0],\n            stop = domain[domain.length - 1];\n        return start < stop ? [start, stop] : [stop, start];\n    };\n    c3_axis_internal_fn.generateTicks = function (scale) {\n        var internal = this;\n        var i,\n            domain,\n            ticks = [];\n        if (scale.ticks) {\n            return scale.ticks.apply(scale, internal.tickArguments);\n        }\n        domain = scale.domain();\n        for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n            ticks.push(i);\n        }\n        if (ticks.length > 0 && ticks[0] > 0) {\n            ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n        }\n        return ticks;\n    };\n    c3_axis_internal_fn.copyScale = function () {\n        var internal = this;\n        var newScale = internal.scale.copy(),\n            domain;\n        if (internal.params.isCategory) {\n            domain = internal.scale.domain();\n            newScale.domain([domain[0], domain[1] - 1]);\n        }\n        return newScale;\n    };\n    c3_axis_internal_fn.textFormatted = function (v) {\n        var internal = this,\n            formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n        return typeof formatted !== 'undefined' ? formatted : '';\n    };\n    c3_axis_internal_fn.updateRange = function () {\n        var internal = this;\n        internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n        return internal.range;\n    };\n    c3_axis_internal_fn.updateTickTextCharSize = function (tick) {\n        var internal = this;\n        if (internal.tickTextCharSize) {\n            return internal.tickTextCharSize;\n        }\n        var size = {\n            h: 11.5,\n            w: 5.5\n        };\n        tick.select('text').text(function (d) {\n            return internal.textFormatted(d);\n        }).each(function (d) {\n            var box = this.getBoundingClientRect(),\n                text = internal.textFormatted(d),\n                h = box.height,\n                w = text ? box.width / text.length : undefined;\n            if (h && w) {\n                size.h = h;\n                size.w = w;\n            }\n        }).text('');\n        internal.tickTextCharSize = size;\n        return size;\n    };\n    c3_axis_internal_fn.isVertical = function () {\n        return this.orient === 'left' || this.orient === 'right';\n    };\n    c3_axis_internal_fn.tspanData = function (d, i, scale) {\n        var internal = this;\n        var splitted = internal.params.tickMultiline ? internal.splitTickText(d, scale) : [].concat(internal.textFormatted(d));\n        return splitted.map(function (s) {\n            return { index: i, splitted: s, length: splitted.length };\n        });\n    };\n    c3_axis_internal_fn.splitTickText = function (d, scale) {\n        var internal = this,\n            tickText = internal.textFormatted(d),\n            maxWidth = internal.params.tickWidth,\n            subtext,\n            spaceIndex,\n            textWidth,\n            splitted = [];\n\n        if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n            return tickText;\n        }\n\n        if (!maxWidth || maxWidth <= 0) {\n            maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(1) - scale(0)) - 12 : 110;\n        }\n\n        function split(splitted, text) {\n            spaceIndex = undefined;\n            for (var i = 1; i < text.length; i++) {\n                if (text.charAt(i) === ' ') {\n                    spaceIndex = i;\n                }\n                subtext = text.substr(0, i + 1);\n                textWidth = internal.tickTextCharSize.w * subtext.length;\n                // if text width gets over tick width, split by space index or crrent index\n                if (maxWidth < textWidth) {\n                    return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n                }\n            }\n            return splitted.concat(text);\n        }\n\n        return split(splitted, tickText + \"\");\n    };\n    c3_axis_internal_fn.updateTickLength = function () {\n        var internal = this;\n        internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n    };\n    c3_axis_internal_fn.lineY2 = function (d) {\n        var internal = this,\n            tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n        return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n    };\n    c3_axis_internal_fn.textY = function () {\n        var internal = this,\n            rotate = internal.tickTextRotate;\n        return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n    };\n    c3_axis_internal_fn.textTransform = function () {\n        var internal = this,\n            rotate = internal.tickTextRotate;\n        return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n    };\n    c3_axis_internal_fn.textTextAnchor = function () {\n        var internal = this,\n            rotate = internal.tickTextRotate;\n        return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n    };\n    c3_axis_internal_fn.tspanDx = function () {\n        var internal = this,\n            rotate = internal.tickTextRotate;\n        return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n    };\n    c3_axis_internal_fn.tspanDy = function (d, i) {\n        var internal = this,\n            dy = internal.tickTextCharSize.h;\n        if (i === 0) {\n            if (internal.isVertical()) {\n                dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n            } else {\n                dy = \".71em\";\n            }\n        }\n        return dy;\n    };\n\n    c3_axis_internal_fn.generateAxis = function () {\n        var internal = this,\n            d3 = internal.d3,\n            params = internal.params;\n        function axis(g, transition) {\n            var self;\n            g.each(function () {\n                var g = axis.g = d3.select(this);\n\n                var scale0 = this.__chart__ || internal.scale,\n                    scale1 = this.__chart__ = internal.copyScale();\n\n                var ticksValues = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n                    ticks = g.selectAll(\".tick\").data(ticksValues, scale1),\n                    tickEnter = ticks.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n\n                // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n                tickExit = ticks.exit().remove(),\n                    tickUpdate = ticks.merge(tickEnter),\n                    tickTransform,\n                    tickX,\n                    tickY;\n\n                if (params.isCategory) {\n                    internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n                    tickX = internal.tickCentered ? 0 : internal.tickOffset;\n                    tickY = internal.tickCentered ? internal.tickOffset : 0;\n                } else {\n                    internal.tickOffset = tickX = 0;\n                }\n\n                internal.updateRange();\n                internal.updateTickLength();\n                internal.updateTickTextCharSize(g.select('.tick'));\n\n                var lineUpdate = tickUpdate.select(\"line\").merge(tickEnter.append(\"line\")),\n                    textUpdate = tickUpdate.select(\"text\").merge(tickEnter.append(\"text\"));\n\n                var tspans = tickUpdate.selectAll('text').selectAll('tspan').data(function (d, i) {\n                    return internal.tspanData(d, i, scale1);\n                }),\n                    tspanEnter = tspans.enter().append('tspan'),\n                    tspanUpdate = tspanEnter.merge(tspans).text(function (d) {\n                    return d.splitted;\n                });\n                tspans.exit().remove();\n\n                var path = g.selectAll(\".domain\").data([0]),\n                    pathUpdate = path.enter().append(\"path\").merge(path).attr(\"class\", \"domain\");\n\n                // TODO: each attr should be one function and change its behavior by internal.orient, probably\n                switch (internal.orient) {\n                    case \"bottom\":\n                        {\n                            tickTransform = internal.axisX;\n                            lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n                                return internal.lineY2(d, i);\n                            });\n                            textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n                                return internal.textY(d, i);\n                            }).attr(\"transform\", function (d, i) {\n                                return internal.textTransform(d, i);\n                            }).style(\"text-anchor\", function (d, i) {\n                                return internal.textTextAnchor(d, i);\n                            });\n                            tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n                                return internal.tspanDy(d, i);\n                            }).attr('dx', function (d, i) {\n                                return internal.tspanDx(d, i);\n                            });\n                            pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n                            break;\n                        }\n                    case \"top\":\n                        {\n                            // TODO: rotated tick text\n                            tickTransform = internal.axisX;\n                            lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n                                return -1 * internal.lineY2(d, i);\n                            });\n                            textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n                                return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n                            }).attr(\"transform\", function (d, i) {\n                                return internal.textTransform(d, i);\n                            }).style(\"text-anchor\", function (d, i) {\n                                return internal.textTextAnchor(d, i);\n                            });\n                            tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n                                return internal.tspanDy(d, i);\n                            }).attr('dx', function (d, i) {\n                                return internal.tspanDx(d, i);\n                            });\n                            pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n                            break;\n                        }\n                    case \"left\":\n                        {\n                            tickTransform = internal.axisY;\n                            lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n                            textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n                            tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n                                return internal.tspanDy(d, i);\n                            });\n                            pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n                            break;\n                        }\n                    case \"right\":\n                        {\n                            tickTransform = internal.axisY;\n                            lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n                            textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n                            tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n                                return internal.tspanDy(d, i);\n                            });\n                            pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n                            break;\n                        }\n                }\n                if (scale1.rangeBand) {\n                    var x = scale1,\n                        dx = x.rangeBand() / 2;\n                    scale0 = scale1 = function scale1(d) {\n                        return x(d) + dx;\n                    };\n                } else if (scale0.rangeBand) {\n                    scale0 = scale1;\n                } else {\n                    tickExit.call(tickTransform, scale1, internal.tickOffset);\n                }\n                tickEnter.call(tickTransform, scale0, internal.tickOffset);\n                self = (transition ? tickUpdate.transition(transition) : tickUpdate).style('opacity', 1).call(tickTransform, scale1, internal.tickOffset);\n            });\n            return self;\n        }\n        axis.scale = function (x) {\n            if (!arguments.length) {\n                return internal.scale;\n            }\n            internal.scale = x;\n            return axis;\n        };\n        axis.orient = function (x) {\n            if (!arguments.length) {\n                return internal.orient;\n            }\n            internal.orient = x in { top: 1, right: 1, bottom: 1, left: 1 } ? x + \"\" : \"bottom\";\n            return axis;\n        };\n        axis.tickFormat = function (format) {\n            if (!arguments.length) {\n                return internal.tickFormat;\n            }\n            internal.tickFormat = format;\n            return axis;\n        };\n        axis.tickCentered = function (isCentered) {\n            if (!arguments.length) {\n                return internal.tickCentered;\n            }\n            internal.tickCentered = isCentered;\n            return axis;\n        };\n        axis.tickOffset = function () {\n            return internal.tickOffset;\n        };\n        axis.tickInterval = function () {\n            var interval, length;\n            if (params.isCategory) {\n                interval = internal.tickOffset * 2;\n            } else {\n                length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n                interval = length / axis.g.selectAll('line').size();\n            }\n            return interval === Infinity ? 0 : interval;\n        };\n        axis.ticks = function () {\n            if (!arguments.length) {\n                return internal.tickArguments;\n            }\n            internal.tickArguments = arguments;\n            return axis;\n        };\n        axis.tickCulling = function (culling) {\n            if (!arguments.length) {\n                return internal.tickCulling;\n            }\n            internal.tickCulling = culling;\n            return axis;\n        };\n        axis.tickValues = function (x) {\n            if (typeof x === 'function') {\n                internal.tickValues = function () {\n                    return x(internal.scale.domain());\n                };\n            } else {\n                if (!arguments.length) {\n                    return internal.tickValues;\n                }\n                internal.tickValues = x;\n            }\n            return axis;\n        };\n        return axis;\n    };\n\n    var Axis = function (_Component) {\n        inherits(Axis, _Component);\n\n        function Axis(owner) {\n            classCallCheck(this, Axis);\n\n            var fn = {\n                fn: c3_axis_fn,\n                internal: {\n                    fn: c3_axis_internal_fn\n                }\n            };\n\n            var _this = possibleConstructorReturn(this, (Axis.__proto__ || Object.getPrototypeOf(Axis)).call(this, owner, 'axis', fn));\n\n            _this.d3 = owner.d3;\n            _this.internal = AxisInternal;\n            return _this;\n        }\n\n        return Axis;\n    }(Component);\n\n    c3_axis_fn = Axis.prototype;\n\n    c3_axis_fn.init = function init() {\n        var $$ = this.owner,\n            config = $$.config,\n            main = $$.main;\n        $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n        $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n        $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n        $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n        $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n        // clip-path?\n        .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n        $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n    };\n    c3_axis_fn.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner,\n            config = $$.config,\n            axisParams = {\n            isCategory: $$.isCategorized(),\n            withOuterTick: withOuterTick,\n            tickMultiline: config.axis_x_tick_multiline,\n            tickWidth: config.axis_x_tick_width,\n            tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n            withoutTransition: withoutTransition\n        },\n            axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n        if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n            tickValues = tickValues.map(function (v) {\n                return $$.parseDate(v);\n            });\n        }\n\n        // Set tick\n        axis.tickFormat(tickFormat).tickValues(tickValues);\n        if ($$.isCategorized()) {\n            axis.tickCentered(config.axis_x_tick_centered);\n            if (isEmpty(config.axis_x_tick_culling)) {\n                config.axis_x_tick_culling = false;\n            }\n        }\n\n        return axis;\n    };\n    c3_axis_fn.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n        var $$ = this.owner,\n            config = $$.config,\n            tickValues;\n        if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n            tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n        }\n        if (axis) {\n            axis.tickValues(tickValues);\n        } else {\n            $$.xAxis.tickValues(tickValues);\n            $$.subXAxis.tickValues(tickValues);\n        }\n        return tickValues;\n    };\n    c3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner,\n            config = $$.config,\n            axisParams = {\n            withOuterTick: withOuterTick,\n            withoutTransition: withoutTransition,\n            tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n        },\n            axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n        if ($$.isTimeSeriesY()) {\n            axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);\n        } else {\n            axis.tickValues(tickValues);\n        }\n        return axis;\n    };\n    c3_axis_fn.getId = function getId(id) {\n        var config = this.owner.config;\n        return id in config.data_axes ? config.data_axes[id] : 'y';\n    };\n    c3_axis_fn.getXAxisTickFormat = function getXAxisTickFormat() {\n        // #2251 previously set any negative values to a whole number,\n        // however both should be truncated according to the users format specification\n        var $$ = this.owner,\n            config = $$.config;\n        var format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n            return v;\n        };\n\n        if (config.axis_x_tick_format) {\n            if (isFunction(config.axis_x_tick_format)) {\n                format = config.axis_x_tick_format;\n            } else if ($$.isTimeSeries()) {\n                format = function format(date) {\n                    return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n                };\n            }\n        }\n        return isFunction(format) ? function (v) {\n            return format.call($$, v);\n        } : format;\n    };\n    c3_axis_fn.getTickValues = function getTickValues(tickValues, axis) {\n        return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n    };\n    c3_axis_fn.getXAxisTickValues = function getXAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n    };\n    c3_axis_fn.getYAxisTickValues = function getYAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n    };\n    c3_axis_fn.getY2AxisTickValues = function getY2AxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n    };\n    c3_axis_fn.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n        var $$ = this.owner,\n            config = $$.config,\n            option;\n        if (axisId === 'y') {\n            option = config.axis_y_label;\n        } else if (axisId === 'y2') {\n            option = config.axis_y2_label;\n        } else if (axisId === 'x') {\n            option = config.axis_x_label;\n        }\n        return option;\n    };\n    c3_axis_fn.getLabelText = function getLabelText(axisId) {\n        var option = this.getLabelOptionByAxisId(axisId);\n        return isString(option) ? option : option ? option.text : null;\n    };\n    c3_axis_fn.setLabelText = function setLabelText(axisId, text) {\n        var $$ = this.owner,\n            config = $$.config,\n            option = this.getLabelOptionByAxisId(axisId);\n        if (isString(option)) {\n            if (axisId === 'y') {\n                config.axis_y_label = text;\n            } else if (axisId === 'y2') {\n                config.axis_y2_label = text;\n            } else if (axisId === 'x') {\n                config.axis_x_label = text;\n            }\n        } else if (option) {\n            option.text = text;\n        }\n    };\n    c3_axis_fn.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n        var option = this.getLabelOptionByAxisId(axisId),\n            position = option && (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' && option.position ? option.position : defaultPosition;\n        return {\n            isInner: position.indexOf('inner') >= 0,\n            isOuter: position.indexOf('outer') >= 0,\n            isLeft: position.indexOf('left') >= 0,\n            isCenter: position.indexOf('center') >= 0,\n            isRight: position.indexOf('right') >= 0,\n            isTop: position.indexOf('top') >= 0,\n            isMiddle: position.indexOf('middle') >= 0,\n            isBottom: position.indexOf('bottom') >= 0\n        };\n    };\n    c3_axis_fn.getXAxisLabelPosition = function getXAxisLabelPosition() {\n        return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n    };\n    c3_axis_fn.getYAxisLabelPosition = function getYAxisLabelPosition() {\n        return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    c3_axis_fn.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n        return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    c3_axis_fn.getLabelPositionById = function getLabelPositionById(id) {\n        return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n    };\n    c3_axis_fn.textForXAxisLabel = function textForXAxisLabel() {\n        return this.getLabelText('x');\n    };\n    c3_axis_fn.textForYAxisLabel = function textForYAxisLabel() {\n        return this.getLabelText('y');\n    };\n    c3_axis_fn.textForY2AxisLabel = function textForY2AxisLabel() {\n        return this.getLabelText('y2');\n    };\n    c3_axis_fn.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n        var $$ = this.owner;\n        if (forHorizontal) {\n            return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n        } else {\n            return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n        }\n    };\n    c3_axis_fn.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n        } else {\n            return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n        }\n    };\n    c3_axis_fn.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n        } else {\n            return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n        }\n    };\n    c3_axis_fn.xForXAxisLabel = function xForXAxisLabel() {\n        return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    c3_axis_fn.xForYAxisLabel = function xForYAxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    c3_axis_fn.xForY2AxisLabel = function xForY2AxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    c3_axis_fn.dxForXAxisLabel = function dxForXAxisLabel() {\n        return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    c3_axis_fn.dxForYAxisLabel = function dxForYAxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    c3_axis_fn.dxForY2AxisLabel = function dxForY2AxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    c3_axis_fn.dyForXAxisLabel = function dyForXAxisLabel() {\n        var $$ = this.owner,\n            config = $$.config,\n            position = this.getXAxisLabelPosition();\n        if (config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n        } else {\n            return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n        }\n    };\n    c3_axis_fn.dyForYAxisLabel = function dyForYAxisLabel() {\n        var $$ = this.owner,\n            position = this.getYAxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"-0.5em\" : \"3em\";\n        } else {\n            return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n        }\n    };\n    c3_axis_fn.dyForY2AxisLabel = function dyForY2AxisLabel() {\n        var $$ = this.owner,\n            position = this.getY2AxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : \"-2.2em\";\n        } else {\n            return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n        }\n    };\n    c3_axis_fn.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    c3_axis_fn.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    c3_axis_fn.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    c3_axis_fn.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n        var $$ = this.owner,\n            config = $$.config,\n            maxWidth = 0,\n            targetsToShow,\n            scale,\n            axis,\n            dummy,\n            svg;\n        if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n            return $$.currentMaxTickWidths[id];\n        }\n        if ($$.svg) {\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            if (id === 'y') {\n                scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n                axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n            } else if (id === 'y2') {\n                scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n                axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n            } else {\n                scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n                axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n                this.updateXAxisTickValues(targetsToShow, axis);\n            }\n            dummy = $$.d3.select('body').append('div').classed('c3', true);\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n                $$.d3.select(this).selectAll('text').each(function () {\n                    var box = this.getBoundingClientRect();\n                    if (maxWidth < box.width) {\n                        maxWidth = box.width;\n                    }\n                });\n                dummy.remove();\n            });\n        }\n        $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n        return $$.currentMaxTickWidths[id];\n    };\n\n    c3_axis_fn.updateLabels = function updateLabels(withTransition) {\n        var $$ = this.owner;\n        var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n            axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n            axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n        (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n        (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n        (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n    };\n    c3_axis_fn.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n        var p = typeof padding === 'number' ? padding : padding[key];\n        if (!isValue(p)) {\n            return defaultValue;\n        }\n        if (padding.unit === 'ratio') {\n            return padding[key] * domainLength;\n        }\n        // assume padding is pixels if unit is not specified\n        return this.convertPixelsToAxisPadding(p, domainLength);\n    };\n    c3_axis_fn.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n        var $$ = this.owner,\n            length = $$.config.axis_rotated ? $$.width : $$.height;\n        return domainLength * (pixels / length);\n    };\n    c3_axis_fn.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n        var tickValues = values,\n            targetCount,\n            start,\n            end,\n            count,\n            interval,\n            i,\n            tickValue;\n        if (tickCount) {\n            targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n            // compute ticks according to tickCount\n            if (targetCount === 1) {\n                tickValues = [values[0]];\n            } else if (targetCount === 2) {\n                tickValues = [values[0], values[values.length - 1]];\n            } else if (targetCount > 2) {\n                count = targetCount - 2;\n                start = values[0];\n                end = values[values.length - 1];\n                interval = (end - start) / (count + 1);\n                // re-construct unique values\n                tickValues = [start];\n                for (i = 0; i < count; i++) {\n                    tickValue = +start + interval * (i + 1);\n                    tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n                }\n                tickValues.push(end);\n            }\n        }\n        if (!forTimeSeries) {\n            tickValues = tickValues.sort(function (a, b) {\n                return a - b;\n            });\n        }\n        return tickValues;\n    };\n    c3_axis_fn.generateTransitions = function generateTransitions(duration) {\n        var $$ = this.owner,\n            axes = $$.axes;\n        return {\n            axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n            axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n            axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n            axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n        };\n    };\n    c3_axis_fn.redraw = function redraw(duration, isHidden) {\n        var $$ = this.owner,\n            transition = duration ? $$.d3.transition().duration(duration) : null;\n        $$.axes.x.style(\"opacity\", isHidden ? 0 : 1).call($$.xAxis, transition);\n        $$.axes.y.style(\"opacity\", isHidden ? 0 : 1).call($$.yAxis, transition);\n        $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1).call($$.y2Axis, transition);\n        $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1).call($$.subXAxis, transition);\n    };\n\n    var c3 = { version: \"0.5.4\" };\n\n    var c3_chart_fn;\n    var c3_chart_internal_fn;\n\n    function Component(owner, componentKey, fn) {\n        this.owner = owner;\n        c3.chart.internal[componentKey] = fn;\n    }\n\n    function Chart(config) {\n        var $$ = this.internal = new ChartInternal(this);\n        $$.loadConfig(config);\n\n        $$.beforeInit(config);\n        $$.init();\n        $$.afterInit(config);\n\n        // bind \"this\" to nested API\n        (function bindThis(fn, target, argThis) {\n            Object.keys(fn).forEach(function (key) {\n                target[key] = fn[key].bind(argThis);\n                if (Object.keys(fn[key]).length > 0) {\n                    bindThis(fn[key], target[key], argThis);\n                }\n            });\n        })(c3_chart_fn, this, this);\n    }\n\n    function ChartInternal(api) {\n        var $$ = this;\n        $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n        $$.api = api;\n        $$.config = $$.getDefaultConfig();\n        $$.data = {};\n        $$.cache = {};\n        $$.axes = {};\n    }\n\n    c3.generate = function (config) {\n        return new Chart(config);\n    };\n\n    c3.chart = {\n        fn: Chart.prototype,\n        internal: {\n            fn: ChartInternal.prototype\n        }\n    };\n    c3_chart_fn = c3.chart.fn;\n    c3_chart_internal_fn = c3.chart.internal.fn;\n\n    c3_chart_internal_fn.beforeInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.afterInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.init = function () {\n        var $$ = this,\n            config = $$.config;\n\n        $$.initParams();\n\n        if (config.data_url) {\n            $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n        } else if (config.data_json) {\n            $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n        } else if (config.data_rows) {\n            $$.initWithData($$.convertRowsToData(config.data_rows));\n        } else if (config.data_columns) {\n            $$.initWithData($$.convertColumnsToData(config.data_columns));\n        } else {\n            throw Error('url or json or rows or columns is required.');\n        }\n    };\n\n    c3_chart_internal_fn.initParams = function () {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config;\n\n        // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n        $$.clipId = \"c3-\" + +new Date() + '-clip', $$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForGrid = $$.clipId + '-grid', $$.clipIdForSubchart = $$.clipId + '-subchart', $$.clipPath = $$.getClipPath($$.clipId), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n        $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid), $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart), $$.dragStart = null;\n        $$.dragging = false;\n        $$.flowing = false;\n        $$.cancelClick = false;\n        $$.mouseover = false;\n        $$.transiting = false;\n\n        $$.color = $$.generateColor();\n        $$.levelColor = $$.generateLevelColor();\n\n        $$.dataTimeParse = (config.data_xLocaltime ? d3.timeParse : d3.utcParse)($$.config.data_xFormat);\n        $$.axisTimeFormat = config.axis_x_localtime ? d3.timeFormat : d3.utcFormat;\n        $$.defaultAxisTimeFormat = function (date) {\n            if (date.getMilliseconds()) {\n                return d3.timeFormat(\".%L\")(date);\n            }\n            if (date.getSeconds()) {\n                return d3.timeFormat(\":%S\")(date);\n            }\n            if (date.getMinutes()) {\n                return d3.timeFormat(\"%I:%M\")(date);\n            }\n            if (date.getHours()) {\n                return d3.timeFormat(\"%I %p\")(date);\n            }\n            if (date.getDay() && date.getDate() !== 1) {\n                return d3.timeFormat(\"%-m/%-d\")(date);\n            }\n            if (date.getDate() !== 1) {\n                return d3.timeFormat(\"%-m/%-d\")(date);\n            }\n            if (date.getMonth()) {\n                return d3.timeFormat(\"%-m/%-d\")(date);\n            }\n            return d3.timeFormat(\"%Y/%-m/%-d\")(date);\n        };\n        $$.hiddenTargetIds = [];\n        $$.hiddenLegendIds = [];\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n\n        $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n        $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n        $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n        $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n        $$.isLegendRight = config.legend_position === 'right';\n        $$.isLegendInset = config.legend_position === 'inset';\n        $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n        $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n        $$.legendStep = 0;\n        $$.legendItemWidth = 0;\n        $$.legendItemHeight = 0;\n\n        $$.currentMaxTickWidths = {\n            x: 0,\n            y: 0,\n            y2: 0\n        };\n\n        $$.rotated_padding_left = 30;\n        $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n        $$.rotated_padding_top = 5;\n\n        $$.withoutFadeIn = {};\n\n        $$.intervalForObserveInserted = undefined;\n\n        $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n    };\n\n    c3_chart_internal_fn.initChartElements = function () {\n        if (this.initBar) {\n            this.initBar();\n        }\n        if (this.initLine) {\n            this.initLine();\n        }\n        if (this.initArc) {\n            this.initArc();\n        }\n        if (this.initGauge) {\n            this.initGauge();\n        }\n        if (this.initText) {\n            this.initText();\n        }\n    };\n\n    c3_chart_internal_fn.initWithData = function (data) {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config;\n        var defs,\n            main,\n            binding = true;\n\n        $$.axis = new Axis($$);\n\n        if (!config.bindto) {\n            $$.selectChart = d3.selectAll([]);\n        } else if (typeof config.bindto.node === 'function') {\n            $$.selectChart = config.bindto;\n        } else {\n            $$.selectChart = d3.select(config.bindto);\n        }\n        if ($$.selectChart.empty()) {\n            $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n            $$.observeInserted($$.selectChart);\n            binding = false;\n        }\n        $$.selectChart.html(\"\").classed(\"c3\", true);\n\n        // Init data as targets\n        $$.data.xs = {};\n        $$.data.targets = $$.convertDataToTargets(data);\n\n        if (config.data_filter) {\n            $$.data.targets = $$.data.targets.filter(config.data_filter);\n        }\n\n        // Set targets to hide if needed\n        if (config.data_hide) {\n            $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n        }\n        if (config.legend_hide) {\n            $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n        }\n\n        // Init sizes and scales\n        $$.updateSizes();\n        $$.updateScales();\n\n        // Set domains for each scale\n        $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n        $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n        $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n        $$.subX.domain($$.x.domain());\n        $$.subY.domain($$.y.domain());\n        $$.subY2.domain($$.y2.domain());\n\n        // Save original x domain for zoom update\n        $$.orgXDomain = $$.x.domain();\n\n        /*-- Basic Elements --*/\n\n        // Define svgs\n        $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n            return config.onmouseover.call($$);\n        }).on('mouseleave', function () {\n            return config.onmouseout.call($$);\n        });\n\n        if ($$.config.svg_classname) {\n            $$.svg.attr('class', $$.config.svg_classname);\n        }\n\n        // Define defs\n        defs = $$.svg.append(\"defs\");\n        $$.clipChart = $$.appendClip(defs, $$.clipId);\n        $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n        $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n        $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n        $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n        $$.updateSvgSize();\n\n        // Define regions\n        main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n        if ($$.initPie) {\n            $$.initPie();\n        }\n        if ($$.initSubchart) {\n            $$.initSubchart();\n        }\n        if ($$.initTooltip) {\n            $$.initTooltip();\n        }\n        if ($$.initLegend) {\n            $$.initLegend();\n        }\n        if ($$.initTitle) {\n            $$.initTitle();\n        }\n        if ($$.initZoom) {\n            $$.initZoom();\n        }\n\n        // Update selection based on size and scale\n        // TODO: currently this must be called after initLegend because of update of sizes, but it should be done in initSubchart.\n        if ($$.initSubchartBrush) {\n            $$.initSubchartBrush();\n        }\n\n        /*-- Main Region --*/\n\n        // text when empty\n        main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n        .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n        // Regions\n        $$.initRegion();\n\n        // Grids\n        $$.initGrid();\n\n        // Define g for chart area\n        main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart);\n\n        // Grid lines\n        if (config.grid_lines_front) {\n            $$.initGridLines();\n        }\n\n        // Define g for chart\n        $$.initChartElements();\n\n        // Add Axis\n        $$.axis.init();\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Cover whole with rects for events\n        $$.initEventRect();\n\n        // Set default extent if defined\n        if (config.axis_x_selection) {\n            $$.brush.selectionAsValue($$.getDefaultSelection());\n        }\n\n        // Draw with targets\n        if (binding) {\n            $$.updateDimension();\n            $$.config.oninit.call($$);\n            $$.redraw({\n                withTransition: false,\n                withTransform: true,\n                withUpdateXDomain: true,\n                withUpdateOrgXDomain: true,\n                withTransitionForAxis: false\n            });\n        }\n\n        // Bind resize event\n        $$.bindResize();\n\n        // export element of the chart\n        $$.api.element = $$.selectChart.node();\n    };\n\n    c3_chart_internal_fn.smoothLines = function (el, type) {\n        var $$ = this;\n        if (type === 'grid') {\n            el.each(function () {\n                var g = $$.d3.select(this),\n                    x1 = g.attr('x1'),\n                    x2 = g.attr('x2'),\n                    y1 = g.attr('y1'),\n                    y2 = g.attr('y2');\n                g.attr({\n                    'x1': Math.ceil(x1),\n                    'x2': Math.ceil(x2),\n                    'y1': Math.ceil(y1),\n                    'y2': Math.ceil(y2)\n                });\n            });\n        }\n    };\n\n    c3_chart_internal_fn.updateSizes = function () {\n        var $$ = this,\n            config = $$.config;\n        var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n            legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n            legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n            hasArc = $$.hasArcType(),\n            xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n            subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n\n        $$.currentWidth = $$.getCurrentWidth();\n        $$.currentHeight = $$.getCurrentHeight();\n\n        // for main\n        $$.margin = config.axis_rotated ? {\n            top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n        } : {\n            top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n        };\n\n        // for subchart\n        $$.margin2 = config.axis_rotated ? {\n            top: $$.margin.top,\n            right: NaN,\n            bottom: 20 + legendHeightForBottom,\n            left: $$.rotated_padding_left\n        } : {\n            top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n            right: NaN,\n            bottom: xAxisHeight + legendHeightForBottom,\n            left: $$.margin.left\n        };\n\n        // for legend\n        $$.margin3 = {\n            top: 0,\n            right: NaN,\n            bottom: 0,\n            left: 0\n        };\n        if ($$.updateSizeForLegend) {\n            $$.updateSizeForLegend(legendHeight, legendWidth);\n        }\n\n        $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n        $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n        if ($$.width < 0) {\n            $$.width = 0;\n        }\n        if ($$.height < 0) {\n            $$.height = 0;\n        }\n\n        $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n        $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n        if ($$.width2 < 0) {\n            $$.width2 = 0;\n        }\n        if ($$.height2 < 0) {\n            $$.height2 = 0;\n        }\n\n        // for arc\n        $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n        $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n        if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n            $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n        }\n        if ($$.updateRadius) {\n            $$.updateRadius();\n        }\n\n        if ($$.isLegendRight && hasArc) {\n            $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n        }\n    };\n\n    c3_chart_internal_fn.updateTargets = function (targets) {\n        var $$ = this;\n\n        /*-- Main --*/\n\n        //-- Text --//\n        $$.updateTargetsForText(targets);\n\n        //-- Bar --//\n        $$.updateTargetsForBar(targets);\n\n        //-- Line --//\n        $$.updateTargetsForLine(targets);\n\n        //-- Arc --//\n        if ($$.hasArcType() && $$.updateTargetsForArc) {\n            $$.updateTargetsForArc(targets);\n        }\n\n        /*-- Sub --*/\n\n        if ($$.updateTargetsForSubchart) {\n            $$.updateTargetsForSubchart(targets);\n        }\n\n        // Fade-in each chart\n        $$.showTargets();\n    };\n    c3_chart_internal_fn.showTargets = function () {\n        var $$ = this;\n        $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n            return $$.isTargetToShow(d.id);\n        }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.redraw = function (options, transitions) {\n        var $$ = this,\n            main = $$.main,\n            d3 = $$.d3,\n            config = $$.config;\n        var areaIndices = $$.getShapeIndices($$.isAreaType),\n            barIndices = $$.getShapeIndices($$.isBarType),\n            lineIndices = $$.getShapeIndices($$.isLineType);\n        var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n        var hideAxis = $$.hasArcType();\n        var drawArea, drawBar, drawLine, xForText, yForText;\n        var duration, durationForExit, durationForAxis;\n        var transitionsToWait, waitForDraw, flow, transition;\n        var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n            tickValues,\n            i,\n            intervalForCulling,\n            xDomainForZoom;\n        var xv = $$.xv.bind($$),\n            cx,\n            cy;\n\n        options = options || {};\n        withY = getOption(options, \"withY\", true);\n        withSubchart = getOption(options, \"withSubchart\", true);\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransform = getOption(options, \"withTransform\", false);\n        withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n        withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n        withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n        withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n        withLegend = getOption(options, \"withLegend\", false);\n        withEventRect = getOption(options, \"withEventRect\", true);\n        withDimension = getOption(options, \"withDimension\", true);\n        withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n        withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n        duration = withTransition ? config.transition_duration : 0;\n        durationForExit = withTransitionForExit ? duration : 0;\n        durationForAxis = withTransitionForAxis ? duration : 0;\n\n        transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n        // update legend and transform each g\n        if (withLegend && config.legend_show) {\n            $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n        } else if (withDimension) {\n            // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n            // no need to update axis in it because they will be updated in redraw()\n            $$.updateDimension(true);\n        }\n\n        // MEMO: needed for grids calculation\n        if ($$.isCategorized() && targetsToShow.length === 0) {\n            $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n        }\n\n        if (targetsToShow.length) {\n            $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n            if (!config.axis_x_tick_values) {\n                tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n            }\n        } else {\n            $$.xAxis.tickValues([]);\n            $$.subXAxis.tickValues([]);\n        }\n\n        if (config.zoom_rescale && !options.flow) {\n            xDomainForZoom = $$.x.orgDomain();\n        }\n\n        $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n        $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n        if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n            $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n        }\n        if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n            $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n        }\n\n        // axes\n        $$.axis.redraw(durationForAxis, hideAxis);\n\n        // Update axis label\n        $$.axis.updateLabels(withTransition);\n\n        // show/hide if manual culling needed\n        if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n            if (config.axis_x_tick_culling && tickValues) {\n                for (i = 1; i < tickValues.length; i++) {\n                    if (tickValues.length / i < config.axis_x_tick_culling_max) {\n                        intervalForCulling = i;\n                        break;\n                    }\n                }\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n                    var index = tickValues.indexOf(e);\n                    if (index >= 0) {\n                        d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n                    }\n                });\n            } else {\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n            }\n        }\n\n        // setup drawer - MEMO: these must be called after axis updated\n        drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n        drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n        drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n        xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n        yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n        // update circleY based on updated parameters\n        $$.updateCircleY();\n        // generate circle x/y functions depending on updated params\n        cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n        cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n        // Update sub domain\n        if (withY) {\n            $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n            $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n        }\n\n        // xgrid focus\n        $$.updateXgridFocus();\n\n        // Data empty label positioning and text.\n        main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1);\n\n        // event rect\n        if (withEventRect) {\n            $$.redrawEventRect();\n        }\n\n        // grid\n        $$.updateGrid(duration);\n\n        // rect for regions\n        $$.updateRegion(duration);\n\n        // bars\n        $$.updateBar(durationForExit);\n\n        // lines, areas and cricles\n        $$.updateLine(durationForExit);\n        $$.updateArea(durationForExit);\n        $$.updateCircle(cx, cy);\n\n        // text\n        if ($$.hasDataLabel()) {\n            $$.updateText(xForText, yForText, durationForExit);\n        }\n\n        // title\n        if ($$.redrawTitle) {\n            $$.redrawTitle();\n        }\n\n        // arc\n        if ($$.redrawArc) {\n            $$.redrawArc(duration, durationForExit, withTransform);\n        }\n\n        // subchart\n        if ($$.redrawSubchart) {\n            $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n        }\n\n        // circles for select\n        main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n        if (options.flow) {\n            flow = $$.generateFlow({\n                targets: targetsToShow,\n                flow: options.flow,\n                duration: options.flow.duration,\n                drawBar: drawBar,\n                drawLine: drawLine,\n                drawArea: drawArea,\n                cx: cx,\n                cy: cy,\n                xv: xv,\n                xForText: xForText,\n                yForText: yForText\n            });\n        }\n\n        if ($$.isTabVisible()) {\n            // Only use transition if tab visible. See #938.\n            if (duration) {\n                // transition should be derived from one transition\n                transition = d3.transition().duration(duration);\n                transitionsToWait = [];\n                [$$.redrawBar(drawBar, true, transition), $$.redrawLine(drawLine, true, transition), $$.redrawArea(drawArea, true, transition), $$.redrawCircle(cx, cy, true, transition), $$.redrawText(xForText, yForText, options.flow, true, transition), $$.redrawRegion(true, transition), $$.redrawGrid(true, transition)].forEach(function (transitions) {\n                    transitions.forEach(function (transition) {\n                        transitionsToWait.push(transition);\n                    });\n                });\n                // Wait for end of transitions to call flow and onrendered callback\n                waitForDraw = $$.generateWait();\n                transitionsToWait.forEach(function (t) {\n                    waitForDraw.add(t);\n                });\n                waitForDraw(function () {\n                    if (flow) {\n                        flow();\n                    }\n                    if (config.onrendered) {\n                        config.onrendered.call($$);\n                    }\n                });\n            } else {\n                $$.redrawBar(drawBar);\n                $$.redrawLine(drawLine);\n                $$.redrawArea(drawArea);\n                $$.redrawCircle(cx, cy);\n                $$.redrawText(xForText, yForText, options.flow);\n                $$.redrawRegion();\n                $$.redrawGrid();\n                if (flow) {\n                    flow();\n                }\n                if (config.onrendered) {\n                    config.onrendered.call($$);\n                }\n            }\n        }\n\n        // update fadein condition\n        $$.mapToIds($$.data.targets).forEach(function (id) {\n            $$.withoutFadeIn[id] = true;\n        });\n    };\n\n    c3_chart_internal_fn.updateAndRedraw = function (options) {\n        var $$ = this,\n            config = $$.config,\n            transitions;\n        options = options || {};\n        // same with redraw\n        options.withTransition = getOption(options, \"withTransition\", true);\n        options.withTransform = getOption(options, \"withTransform\", false);\n        options.withLegend = getOption(options, \"withLegend\", false);\n        // NOT same with redraw\n        options.withUpdateXDomain = getOption(options, \"withUpdateXDomain\", true);\n        options.withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", true);\n        options.withTransitionForExit = false;\n        options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n        // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n        $$.updateSizes();\n        // MEMO: called in updateLegend in redraw if withLegend\n        if (!(options.withLegend && config.legend_show)) {\n            transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n            // Update scales\n            $$.updateScales();\n            $$.updateSvgSize();\n            // Update g positions\n            $$.transformAll(options.withTransitionForTransform, transitions);\n        }\n        // Draw with new sizes & scales\n        $$.redraw(options, transitions);\n    };\n    c3_chart_internal_fn.redrawWithoutRescale = function () {\n        this.redraw({\n            withY: false,\n            withSubchart: false,\n            withEventRect: false,\n            withTransitionForAxis: false\n        });\n    };\n\n    c3_chart_internal_fn.isTimeSeries = function () {\n        return this.config.axis_x_type === 'timeseries';\n    };\n    c3_chart_internal_fn.isCategorized = function () {\n        return this.config.axis_x_type.indexOf('categor') >= 0;\n    };\n    c3_chart_internal_fn.isCustomX = function () {\n        var $$ = this,\n            config = $$.config;\n        return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n    };\n\n    c3_chart_internal_fn.isTimeSeriesY = function () {\n        return this.config.axis_y_type === 'timeseries';\n    };\n\n    c3_chart_internal_fn.getTranslate = function (target) {\n        var $$ = this,\n            config = $$.config,\n            x,\n            y;\n        if (target === 'main') {\n            x = asHalfPixel($$.margin.left);\n            y = asHalfPixel($$.margin.top);\n        } else if (target === 'context') {\n            x = asHalfPixel($$.margin2.left);\n            y = asHalfPixel($$.margin2.top);\n        } else if (target === 'legend') {\n            x = $$.margin3.left;\n            y = $$.margin3.top;\n        } else if (target === 'x') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height;\n        } else if (target === 'y') {\n            x = 0;\n            y = config.axis_rotated ? $$.height : 0;\n        } else if (target === 'y2') {\n            x = config.axis_rotated ? 0 : $$.width;\n            y = config.axis_rotated ? 1 : 0;\n        } else if (target === 'subx') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height2;\n        } else if (target === 'arc') {\n            x = $$.arcWidth / 2;\n            y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n        }\n        return \"translate(\" + x + \",\" + y + \")\";\n    };\n    c3_chart_internal_fn.initialOpacity = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n    };\n    c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n    };\n    c3_chart_internal_fn.opacityForCircle = function (d) {\n        var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n        var opacity = isPointShouldBeShown ? 1 : 0;\n        return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n    };\n    c3_chart_internal_fn.opacityForText = function () {\n        return this.hasDataLabel() ? 1 : 0;\n    };\n    c3_chart_internal_fn.xx = function (d) {\n        return d ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.xv = function (d) {\n        var $$ = this,\n            value = d.value;\n        if ($$.isTimeSeries()) {\n            value = $$.parseDate(d.value);\n        } else if ($$.isCategorized() && typeof d.value === 'string') {\n            value = $$.config.axis_x_categories.indexOf(d.value);\n        }\n        return Math.ceil($$.x(value));\n    };\n    c3_chart_internal_fn.yv = function (d) {\n        var $$ = this,\n            yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n        return Math.ceil(yScale(d.value));\n    };\n    c3_chart_internal_fn.subxx = function (d) {\n        return d ? this.subX(d.x) : null;\n    };\n\n    c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n        var $$ = this,\n            xAxis,\n            yAxis,\n            y2Axis;\n        if (transitions && transitions.axisX) {\n            xAxis = transitions.axisX;\n        } else {\n            xAxis = $$.main.select('.' + CLASS.axisX);\n            if (withTransition) {\n                xAxis = xAxis.transition();\n            }\n        }\n        if (transitions && transitions.axisY) {\n            yAxis = transitions.axisY;\n        } else {\n            yAxis = $$.main.select('.' + CLASS.axisY);\n            if (withTransition) {\n                yAxis = yAxis.transition();\n            }\n        }\n        if (transitions && transitions.axisY2) {\n            y2Axis = transitions.axisY2;\n        } else {\n            y2Axis = $$.main.select('.' + CLASS.axisY2);\n            if (withTransition) {\n                y2Axis = y2Axis.transition();\n            }\n        }\n        (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n        xAxis.attr(\"transform\", $$.getTranslate('x'));\n        yAxis.attr(\"transform\", $$.getTranslate('y'));\n        y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n        $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n    };\n    c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n        var $$ = this;\n        $$.transformMain(withTransition, transitions);\n        if ($$.config.subchart_show) {\n            $$.transformContext(withTransition, transitions);\n        }\n        if ($$.legend) {\n            $$.transformLegend(withTransition);\n        }\n    };\n\n    c3_chart_internal_fn.updateSvgSize = function () {\n        var $$ = this,\n            brush = $$.svg.select(\".c3-brush .overlay\");\n        $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n        $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n        $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0);\n        // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n        $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n    };\n\n    c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n        var $$ = this;\n        if (!withoutAxis) {\n            if ($$.config.axis_rotated) {\n                $$.axes.x.call($$.xAxis);\n                $$.axes.subx.call($$.subXAxis);\n            } else {\n                $$.axes.y.call($$.yAxis);\n                $$.axes.y2.call($$.y2Axis);\n            }\n        }\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        $$.transformAll(false);\n    };\n\n    c3_chart_internal_fn.observeInserted = function (selection) {\n        var $$ = this,\n            observer;\n        if (typeof MutationObserver === 'undefined') {\n            window.console.error(\"MutationObserver not defined.\");\n            return;\n        }\n        observer = new MutationObserver(function (mutations) {\n            mutations.forEach(function (mutation) {\n                if (mutation.type === 'childList' && mutation.previousSibling) {\n                    observer.disconnect();\n                    // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n                    $$.intervalForObserveInserted = window.setInterval(function () {\n                        // parentNode will NOT be null when completed\n                        if (selection.node().parentNode) {\n                            window.clearInterval($$.intervalForObserveInserted);\n                            $$.updateDimension();\n                            if ($$.brush) {\n                                $$.brush.update();\n                            }\n                            $$.config.oninit.call($$);\n                            $$.redraw({\n                                withTransform: true,\n                                withUpdateXDomain: true,\n                                withUpdateOrgXDomain: true,\n                                withTransition: false,\n                                withTransitionForTransform: false,\n                                withLegend: true\n                            });\n                            selection.transition().style('opacity', 1);\n                        }\n                    }, 10);\n                }\n            });\n        });\n        observer.observe(selection.node(), { attributes: true, childList: true, characterData: true });\n    };\n\n    c3_chart_internal_fn.bindResize = function () {\n        var $$ = this,\n            config = $$.config;\n\n        $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n        $$.resizeFunction.add(function () {\n            config.onresize.call($$);\n        });\n        if (config.resize_auto) {\n            $$.resizeFunction.add(function () {\n                if ($$.resizeTimeout !== undefined) {\n                    window.clearTimeout($$.resizeTimeout);\n                }\n                $$.resizeTimeout = window.setTimeout(function () {\n                    delete $$.resizeTimeout;\n                    $$.updateAndRedraw({\n                        withUpdateXDomain: false,\n                        withUpdateOrgXDomain: false,\n                        withTransition: false,\n                        withTransitionForTransform: false,\n                        withLegend: true\n                    });\n                    if ($$.brush) {\n                        $$.brush.update();\n                    }\n                }, 100);\n            });\n        }\n        $$.resizeFunction.add(function () {\n            config.onresized.call($$);\n        });\n\n        $$.resizeIfElementDisplayed = function () {\n            // if element not displayed skip it\n            if ($$.api == null || !$$.api.element.offsetParent) {\n                return;\n            }\n\n            $$.resizeFunction();\n        };\n\n        if (window.attachEvent) {\n            window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n        } else if (window.addEventListener) {\n            window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n        } else {\n            // fallback to this, if this is a very old browser\n            var wrapper = window.onresize;\n            if (!wrapper) {\n                // create a wrapper that will call all charts\n                wrapper = $$.generateResize();\n            } else if (!wrapper.add || !wrapper.remove) {\n                // there is already a handler registered, make sure we call it too\n                wrapper = $$.generateResize();\n                wrapper.add(window.onresize);\n            }\n            // add this graph to the wrapper, we will be removed if the user calls destroy\n            wrapper.add($$.resizeFunction);\n            window.onresize = function () {\n                // if element not displayed skip it\n                if (!$$.api.element.offsetParent) {\n                    return;\n                }\n\n                wrapper();\n            };\n        }\n    };\n\n    c3_chart_internal_fn.generateResize = function () {\n        var resizeFunctions = [];\n        function callResizeFunctions() {\n            resizeFunctions.forEach(function (f) {\n                f();\n            });\n        }\n        callResizeFunctions.add = function (f) {\n            resizeFunctions.push(f);\n        };\n        callResizeFunctions.remove = function (f) {\n            for (var i = 0; i < resizeFunctions.length; i++) {\n                if (resizeFunctions[i] === f) {\n                    resizeFunctions.splice(i, 1);\n                    break;\n                }\n            }\n        };\n        return callResizeFunctions;\n    };\n\n    c3_chart_internal_fn.endall = function (transition, callback) {\n        var n = 0;\n        transition.each(function () {\n            ++n;\n        }).on(\"end\", function () {\n            if (! --n) {\n                callback.apply(this, arguments);\n            }\n        });\n    };\n    c3_chart_internal_fn.generateWait = function () {\n        var transitionsToWait = [],\n            f = function f(callback) {\n            var timer = setInterval(function () {\n                var done = 0;\n                transitionsToWait.forEach(function (t) {\n                    if (t.empty()) {\n                        done += 1;\n                        return;\n                    }\n                    try {\n                        t.transition();\n                    } catch (e) {\n                        done += 1;\n                    }\n                });\n                if (done === transitionsToWait.length) {\n                    clearInterval(timer);\n                    if (callback) {\n                        callback();\n                    }\n                }\n            }, 50);\n        };\n        f.add = function (transition) {\n            transitionsToWait.push(transition);\n        };\n        return f;\n    };\n\n    c3_chart_internal_fn.parseDate = function (date) {\n        var $$ = this,\n            parsedDate;\n        if (date instanceof Date) {\n            parsedDate = date;\n        } else if (typeof date === 'string') {\n            parsedDate = $$.dataTimeParse(date);\n        } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n            parsedDate = new Date(+date);\n        } else if (typeof date === 'number' && !isNaN(date)) {\n            parsedDate = new Date(+date);\n        }\n        if (!parsedDate || isNaN(+parsedDate)) {\n            window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n        }\n        return parsedDate;\n    };\n\n    c3_chart_internal_fn.isTabVisible = function () {\n        var hidden;\n        if (typeof document.hidden !== \"undefined\") {\n            // Opera 12.10 and Firefox 18 and later support\n            hidden = \"hidden\";\n        } else if (typeof document.mozHidden !== \"undefined\") {\n            hidden = \"mozHidden\";\n        } else if (typeof document.msHidden !== \"undefined\") {\n            hidden = \"msHidden\";\n        } else if (typeof document.webkitHidden !== \"undefined\") {\n            hidden = \"webkitHidden\";\n        }\n\n        return document[hidden] ? false : true;\n    };\n\n    c3_chart_internal_fn.isValue = isValue;\n    c3_chart_internal_fn.isFunction = isFunction;\n    c3_chart_internal_fn.isString = isString;\n    c3_chart_internal_fn.isUndefined = isUndefined;\n    c3_chart_internal_fn.isDefined = isDefined;\n    c3_chart_internal_fn.ceil10 = ceil10;\n    c3_chart_internal_fn.asHalfPixel = asHalfPixel;\n    c3_chart_internal_fn.diffDomain = diffDomain;\n    c3_chart_internal_fn.isEmpty = isEmpty;\n    c3_chart_internal_fn.notEmpty = notEmpty;\n    c3_chart_internal_fn.notEmpty = notEmpty;\n    c3_chart_internal_fn.getOption = getOption;\n    c3_chart_internal_fn.hasValue = hasValue;\n    c3_chart_internal_fn.sanitise = sanitise;\n    c3_chart_internal_fn.getPathBox = getPathBox;\n    c3_chart_internal_fn.CLASS = CLASS;\n\n    /* jshint ignore:start */\n\n    // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n    // this polyfill to avoid the confusion.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n    if (!Function.prototype.bind) {\n        Function.prototype.bind = function (oThis) {\n            if (typeof this !== 'function') {\n                // closest thing possible to the ECMAScript 5\n                // internal IsCallable function\n                throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n            }\n\n            var aArgs = Array.prototype.slice.call(arguments, 1),\n                fToBind = this,\n                fNOP = function fNOP() {},\n                fBound = function fBound() {\n                return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n            fNOP.prototype = this.prototype;\n            fBound.prototype = new fNOP();\n\n            return fBound;\n        };\n    }\n\n    // SVGPathSeg API polyfill\n    // https://github.com/progers/pathseg\n    //\n    // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n    // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n    // changes which were implemented in Firefox 43 and Chrome 46.\n\n    (function () {\n\n        if (!(\"SVGPathSeg\" in window)) {\n            // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n            window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n                this.pathSegType = type;\n                this.pathSegTypeAsLetter = typeAsLetter;\n                this._owningPathSegList = owningPathSegList;\n            };\n\n            window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n\n            window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n            window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n            window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n            window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n            window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n            window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n            window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n            window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n            window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n            window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n            window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n            window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n            window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n            window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n            window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n            window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n            window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n            window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n            window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n            window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n            // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n            window.SVGPathSeg.prototype._segmentChanged = function () {\n                if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n            };\n\n            window.SVGPathSegClosePath = function (owningPathSegList) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n            };\n            window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegClosePath.prototype.toString = function () {\n                return \"[object SVGPathSegClosePath]\";\n            };\n            window.SVGPathSegClosePath.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter;\n            };\n            window.SVGPathSegClosePath.prototype.clone = function () {\n                return new window.SVGPathSegClosePath(undefined);\n            };\n\n            window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegMovetoAbs.prototype.toString = function () {\n                return \"[object SVGPathSegMovetoAbs]\";\n            };\n            window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegMovetoAbs.prototype.clone = function () {\n                return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegMovetoRel.prototype.toString = function () {\n                return \"[object SVGPathSegMovetoRel]\";\n            };\n            window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegMovetoRel.prototype.clone = function () {\n                return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoAbs.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoAbs]\";\n            };\n            window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegLinetoAbs.prototype.clone = function () {\n                return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoRel.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoRel]\";\n            };\n            window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegLinetoRel.prototype.clone = function () {\n                return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x1 = x1;\n                this._y1 = y1;\n                this._x2 = x2;\n                this._y2 = y2;\n            };\n            window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoCubicAbs]\";\n            };\n            window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function get() {\n                    return this._x1;\n                }, set: function set(x1) {\n                    this._x1 = x1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function get() {\n                    return this._y1;\n                }, set: function set(y1) {\n                    this._y1 = y1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function get() {\n                    return this._x2;\n                }, set: function set(x2) {\n                    this._x2 = x2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function get() {\n                    return this._y2;\n                }, set: function set(y2) {\n                    this._y2 = y2;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x1 = x1;\n                this._y1 = y1;\n                this._x2 = x2;\n                this._y2 = y2;\n            };\n            window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoCubicRel]\";\n            };\n            window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function get() {\n                    return this._x1;\n                }, set: function set(x1) {\n                    this._x1 = x1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function get() {\n                    return this._y1;\n                }, set: function set(y1) {\n                    this._y1 = y1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function get() {\n                    return this._x2;\n                }, set: function set(x2) {\n                    this._x2 = x2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function get() {\n                    return this._y2;\n                }, set: function set(y2) {\n                    this._y2 = y2;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x1 = x1;\n                this._y1 = y1;\n            };\n            window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n            };\n            window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function get() {\n                    return this._x1;\n                }, set: function set(x1) {\n                    this._x1 = x1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function get() {\n                    return this._y1;\n                }, set: function set(y1) {\n                    this._y1 = y1;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x1 = x1;\n                this._y1 = y1;\n            };\n            window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoQuadraticRel]\";\n            };\n            window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function get() {\n                    return this._x1;\n                }, set: function set(x1) {\n                    this._x1 = x1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function get() {\n                    return this._y1;\n                }, set: function set(y1) {\n                    this._y1 = y1;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._r1 = r1;\n                this._r2 = r2;\n                this._angle = angle;\n                this._largeArcFlag = largeArcFlag;\n                this._sweepFlag = sweepFlag;\n            };\n            window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegArcAbs.prototype.toString = function () {\n                return \"[object SVGPathSegArcAbs]\";\n            };\n            window.SVGPathSegArcAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegArcAbs.prototype.clone = function () {\n                return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n            };\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", { get: function get() {\n                    return this._r1;\n                }, set: function set(r1) {\n                    this._r1 = r1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", { get: function get() {\n                    return this._r2;\n                }, set: function set(r2) {\n                    this._r2 = r2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", { get: function get() {\n                    return this._angle;\n                }, set: function set(angle) {\n                    this._angle = angle;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function get() {\n                    return this._largeArcFlag;\n                }, set: function set(largeArcFlag) {\n                    this._largeArcFlag = largeArcFlag;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function get() {\n                    return this._sweepFlag;\n                }, set: function set(sweepFlag) {\n                    this._sweepFlag = sweepFlag;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._r1 = r1;\n                this._r2 = r2;\n                this._angle = angle;\n                this._largeArcFlag = largeArcFlag;\n                this._sweepFlag = sweepFlag;\n            };\n            window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegArcRel.prototype.toString = function () {\n                return \"[object SVGPathSegArcRel]\";\n            };\n            window.SVGPathSegArcRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegArcRel.prototype.clone = function () {\n                return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n            };\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", { get: function get() {\n                    return this._r1;\n                }, set: function set(r1) {\n                    this._r1 = r1;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", { get: function get() {\n                    return this._r2;\n                }, set: function set(r2) {\n                    this._r2 = r2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", { get: function get() {\n                    return this._angle;\n                }, set: function set(angle) {\n                    this._angle = angle;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function get() {\n                    return this._largeArcFlag;\n                }, set: function set(largeArcFlag) {\n                    this._largeArcFlag = largeArcFlag;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function get() {\n                    return this._sweepFlag;\n                }, set: function set(sweepFlag) {\n                    this._sweepFlag = sweepFlag;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n                this._x = x;\n            };\n            window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoHorizontalAbs]\";\n            };\n            window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x;\n            };\n            window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n                return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n                this._x = x;\n            };\n            window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoHorizontalRel]\";\n            };\n            window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x;\n            };\n            window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n                return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n                this._y = y;\n            };\n            window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoVerticalAbs]\";\n            };\n            window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._y;\n            };\n            window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n                return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n                this._y = y;\n            };\n            window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n                return \"[object SVGPathSegLinetoVerticalRel]\";\n            };\n            window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._y;\n            };\n            window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n                return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x2 = x2;\n                this._y2 = y2;\n            };\n            window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n            };\n            window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function get() {\n                    return this._x2;\n                }, set: function set(x2) {\n                    this._x2 = x2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function get() {\n                    return this._y2;\n                }, set: function set(y2) {\n                    this._y2 = y2;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n                this._x2 = x2;\n                this._y2 = y2;\n            };\n            window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n            };\n            window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function get() {\n                    return this._x2;\n                }, set: function set(x2) {\n                    this._x2 = x2;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function get() {\n                    return this._y2;\n                }, set: function set(y2) {\n                    this._y2 = y2;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n                window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n                this._x = x;\n                this._y = y;\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n            window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n                return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n                return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n            };\n            window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n                return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n            };\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function get() {\n                    return this._x;\n                }, set: function set(x) {\n                    this._x = x;this._segmentChanged();\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function get() {\n                    return this._y;\n                }, set: function set(y) {\n                    this._y = y;this._segmentChanged();\n                }, enumerable: true });\n\n            // Add createSVGPathSeg* functions to window.SVGPathElement.\n            // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n            window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n                return new window.SVGPathSegClosePath(undefined);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n                return new window.SVGPathSegMovetoAbs(undefined, x, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n                return new window.SVGPathSegMovetoRel(undefined, x, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n                return new window.SVGPathSegLinetoAbs(undefined, x, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n                return new window.SVGPathSegLinetoRel(undefined, x, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n                return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n                return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n                return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n                return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n                return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n                return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n                return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n                return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n                return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n                return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n                return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n                return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n                return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n            };\n            window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n                return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n            };\n\n            if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n                // Add getPathSegAtLength to SVGPathElement.\n                // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n                // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n                window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n                    if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n\n                    var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n                    measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n                    var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\n\n                    // If the path is empty, return 0.\n                    if (lastPathSegment <= 0) return 0;\n\n                    do {\n                        measurementElement.pathSegList.removeItem(lastPathSegment);\n                        if (distance > measurementElement.getTotalLength()) break;\n                        lastPathSegment--;\n                    } while (lastPathSegment > 0);\n                    return lastPathSegment;\n                };\n            }\n        }\n\n        if (!(\"SVGPathSegList\" in window)) {\n            // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n            window.SVGPathSegList = function (pathElement) {\n                this._pathElement = pathElement;\n                this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n                // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n                this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n                this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n                this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n            };\n\n            window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n\n            Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n                get: function get() {\n                    this._checkPathSynchronizedToList();\n                    return this._list.length;\n                },\n                enumerable: true\n            });\n\n            // Add the pathSegList accessors to window.SVGPathElement.\n            // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n            Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n                get: function get() {\n                    if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n                    return this._pathSegList;\n                },\n                enumerable: true\n            });\n            // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n            Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", { get: function get() {\n                    return this.pathSegList;\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", { get: function get() {\n                    return this.pathSegList;\n                }, enumerable: true });\n            Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function get() {\n                    return this.pathSegList;\n                }, enumerable: true });\n\n            // Process any pending mutations to the path element and update the list as needed.\n            // This should be the first call of all public functions and is needed because\n            // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n            window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n                this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n            };\n\n            window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n                if (!this._pathElement) return;\n                var hasPathMutations = false;\n                mutationRecords.forEach(function (record) {\n                    if (record.attributeName == \"d\") hasPathMutations = true;\n                });\n                if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n            };\n\n            // Serialize the list and update the path's 'd' attribute.\n            window.SVGPathSegList.prototype._writeListToPath = function () {\n                this._pathElementMutationObserver.disconnect();\n                this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n                this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n            };\n\n            // When a path segment changes the list needs to be synchronized back to the path element.\n            window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n                this._writeListToPath();\n            };\n\n            window.SVGPathSegList.prototype.clear = function () {\n                this._checkPathSynchronizedToList();\n\n                this._list.forEach(function (pathSeg) {\n                    pathSeg._owningPathSegList = null;\n                });\n                this._list = [];\n                this._writeListToPath();\n            };\n\n            window.SVGPathSegList.prototype.initialize = function (newItem) {\n                this._checkPathSynchronizedToList();\n\n                this._list = [newItem];\n                newItem._owningPathSegList = this;\n                this._writeListToPath();\n                return newItem;\n            };\n\n            window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n                if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n            };\n\n            window.SVGPathSegList.prototype.getItem = function (index) {\n                this._checkPathSynchronizedToList();\n\n                this._checkValidIndex(index);\n                return this._list[index];\n            };\n\n            window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n                this._checkPathSynchronizedToList();\n\n                // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n                if (index > this.numberOfItems) index = this.numberOfItems;\n                if (newItem._owningPathSegList) {\n                    // SVG2 spec says to make a copy.\n                    newItem = newItem.clone();\n                }\n                this._list.splice(index, 0, newItem);\n                newItem._owningPathSegList = this;\n                this._writeListToPath();\n                return newItem;\n            };\n\n            window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n                this._checkPathSynchronizedToList();\n\n                if (newItem._owningPathSegList) {\n                    // SVG2 spec says to make a copy.\n                    newItem = newItem.clone();\n                }\n                this._checkValidIndex(index);\n                this._list[index] = newItem;\n                newItem._owningPathSegList = this;\n                this._writeListToPath();\n                return newItem;\n            };\n\n            window.SVGPathSegList.prototype.removeItem = function (index) {\n                this._checkPathSynchronizedToList();\n\n                this._checkValidIndex(index);\n                var item = this._list[index];\n                this._list.splice(index, 1);\n                this._writeListToPath();\n                return item;\n            };\n\n            window.SVGPathSegList.prototype.appendItem = function (newItem) {\n                this._checkPathSynchronizedToList();\n\n                if (newItem._owningPathSegList) {\n                    // SVG2 spec says to make a copy.\n                    newItem = newItem.clone();\n                }\n                this._list.push(newItem);\n                newItem._owningPathSegList = this;\n                // TODO: Optimize this to just append to the existing attribute.\n                this._writeListToPath();\n                return newItem;\n            };\n\n            window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n                var string = \"\";\n                var first = true;\n                pathSegArray.forEach(function (pathSeg) {\n                    if (first) {\n                        first = false;\n                        string += pathSeg._asPathString();\n                    } else {\n                        string += \" \" + pathSeg._asPathString();\n                    }\n                });\n                return string;\n            };\n\n            // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n            window.SVGPathSegList.prototype._parsePath = function (string) {\n                if (!string || string.length == 0) return [];\n\n                var owningPathSegList = this;\n\n                var Builder = function Builder() {\n                    this.pathSegList = [];\n                };\n\n                Builder.prototype.appendSegment = function (pathSeg) {\n                    this.pathSegList.push(pathSeg);\n                };\n\n                var Source = function Source(string) {\n                    this._string = string;\n                    this._currentIndex = 0;\n                    this._endIndex = this._string.length;\n                    this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n                    this._skipOptionalSpaces();\n                };\n\n                Source.prototype._isCurrentSpace = function () {\n                    var character = this._string[this._currentIndex];\n                    return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n                };\n\n                Source.prototype._skipOptionalSpaces = function () {\n                    while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n                        this._currentIndex++;\n                    }return this._currentIndex < this._endIndex;\n                };\n\n                Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n                    if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n                    if (this._skipOptionalSpaces()) {\n                        if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n                            this._currentIndex++;\n                            this._skipOptionalSpaces();\n                        }\n                    }\n                    return this._currentIndex < this._endIndex;\n                };\n\n                Source.prototype.hasMoreData = function () {\n                    return this._currentIndex < this._endIndex;\n                };\n\n                Source.prototype.peekSegmentType = function () {\n                    var lookahead = this._string[this._currentIndex];\n                    return this._pathSegTypeFromChar(lookahead);\n                };\n\n                Source.prototype._pathSegTypeFromChar = function (lookahead) {\n                    switch (lookahead) {\n                        case \"Z\":\n                        case \"z\":\n                            return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n                        case \"M\":\n                            return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n                        case \"m\":\n                            return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n                        case \"L\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n                        case \"l\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_REL;\n                        case \"C\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n                        case \"c\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n                        case \"Q\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n                        case \"q\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n                        case \"A\":\n                            return window.SVGPathSeg.PATHSEG_ARC_ABS;\n                        case \"a\":\n                            return window.SVGPathSeg.PATHSEG_ARC_REL;\n                        case \"H\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n                        case \"h\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n                        case \"V\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n                        case \"v\":\n                            return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n                        case \"S\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n                        case \"s\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n                        case \"T\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n                        case \"t\":\n                            return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n                        default:\n                            return window.SVGPathSeg.PATHSEG_UNKNOWN;\n                    }\n                };\n\n                Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n                    // Check for remaining coordinates in the current command.\n                    if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n                        if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n                        if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n                        return previousCommand;\n                    }\n                    return window.SVGPathSeg.PATHSEG_UNKNOWN;\n                };\n\n                Source.prototype.initialCommandIsMoveTo = function () {\n                    // If the path is empty it is still valid, so return true.\n                    if (!this.hasMoreData()) return true;\n                    var command = this.peekSegmentType();\n                    // Path must start with moveTo.\n                    return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n                };\n\n                // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n                // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n                Source.prototype._parseNumber = function () {\n                    var exponent = 0;\n                    var integer = 0;\n                    var frac = 1;\n                    var decimal = 0;\n                    var sign = 1;\n                    var expsign = 1;\n\n                    var startIndex = this._currentIndex;\n\n                    this._skipOptionalSpaces();\n\n                    // Read the sign.\n                    if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n                        this._currentIndex++;\n                        sign = -1;\n                    }\n\n                    if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\")\n                        // The first character of a number must be one of [0-9+-.].\n                        return undefined;\n\n                    // Read the integer part, build right-to-left.\n                    var startIntPartIndex = this._currentIndex;\n                    while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                        this._currentIndex++;\n                    } // Advance to first non-digit.\n\n                    if (this._currentIndex != startIntPartIndex) {\n                        var scanIntPartIndex = this._currentIndex - 1;\n                        var multiplier = 1;\n                        while (scanIntPartIndex >= startIntPartIndex) {\n                            integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n                            multiplier *= 10;\n                        }\n                    }\n\n                    // Read the decimals.\n                    if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n                        this._currentIndex++;\n\n                        // There must be a least one digit following the .\n                        if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n                        while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                            frac *= 10;\n                            decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n                            this._currentIndex += 1;\n                        }\n                    }\n\n                    // Read the exponent part.\n                    if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n                        this._currentIndex++;\n\n                        // Read the sign of the exponent.\n                        if (this._string.charAt(this._currentIndex) == \"+\") {\n                            this._currentIndex++;\n                        } else if (this._string.charAt(this._currentIndex) == \"-\") {\n                            this._currentIndex++;\n                            expsign = -1;\n                        }\n\n                        // There must be an exponent.\n                        if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n                        while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                            exponent *= 10;\n                            exponent += this._string.charAt(this._currentIndex) - \"0\";\n                            this._currentIndex++;\n                        }\n                    }\n\n                    var number = integer + decimal;\n                    number *= sign;\n\n                    if (exponent) number *= Math.pow(10, expsign * exponent);\n\n                    if (startIndex == this._currentIndex) return undefined;\n\n                    this._skipOptionalSpacesOrDelimiter();\n\n                    return number;\n                };\n\n                Source.prototype._parseArcFlag = function () {\n                    if (this._currentIndex >= this._endIndex) return undefined;\n                    var flag = false;\n                    var flagChar = this._string.charAt(this._currentIndex++);\n                    if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n                    this._skipOptionalSpacesOrDelimiter();\n                    return flag;\n                };\n\n                Source.prototype.parseSegment = function () {\n                    var lookahead = this._string[this._currentIndex];\n                    var command = this._pathSegTypeFromChar(lookahead);\n                    if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n                        // Possibly an implicit command. Not allowed if this is the first command.\n                        if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n                        command = this._nextCommandHelper(lookahead, this._previousCommand);\n                        if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n                    } else {\n                        this._currentIndex++;\n                    }\n\n                    this._previousCommand = command;\n\n                    switch (command) {\n                        case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n                            return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n                            return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_REL:\n                            return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n                            return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n                            return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n                            return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n                            return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n                            return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n                            this._skipOptionalSpaces();\n                            return new window.SVGPathSegClosePath(owningPathSegList);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n                            var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n                            var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                        case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n                            return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n                            return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                        case window.SVGPathSeg.PATHSEG_ARC_REL:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                        case window.SVGPathSeg.PATHSEG_ARC_ABS:\n                            var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n                            return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                        default:\n                            throw \"Unknown path seg type.\";\n                    }\n                };\n\n                var builder = new Builder();\n                var source = new Source(string);\n\n                if (!source.initialCommandIsMoveTo()) return [];\n                while (source.hasMoreData()) {\n                    var pathSeg = source.parseSegment();\n                    if (!pathSeg) return [];\n                    builder.appendSegment(pathSeg);\n                }\n\n                return builder.pathSegList;\n            };\n        }\n    })();\n\n    /* jshint ignore:end */\n\n    c3_chart_fn.axis = function () {};\n    c3_chart_fn.axis.labels = function (labels) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            Object.keys(labels).forEach(function (axisId) {\n                $$.axis.setLabelText(axisId, labels[axisId]);\n            });\n            $$.axis.updateLabels();\n        }\n        // TODO: return some values?\n    };\n    c3_chart_fn.axis.max = function (max) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (arguments.length) {\n            if ((typeof max === 'undefined' ? 'undefined' : _typeof(max)) === 'object') {\n                if (isValue(max.x)) {\n                    config.axis_x_max = max.x;\n                }\n                if (isValue(max.y)) {\n                    config.axis_y_max = max.y;\n                }\n                if (isValue(max.y2)) {\n                    config.axis_y2_max = max.y2;\n                }\n            } else {\n                config.axis_y_max = config.axis_y2_max = max;\n            }\n            $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n        } else {\n            return {\n                x: config.axis_x_max,\n                y: config.axis_y_max,\n                y2: config.axis_y2_max\n            };\n        }\n    };\n    c3_chart_fn.axis.min = function (min) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (arguments.length) {\n            if ((typeof min === 'undefined' ? 'undefined' : _typeof(min)) === 'object') {\n                if (isValue(min.x)) {\n                    config.axis_x_min = min.x;\n                }\n                if (isValue(min.y)) {\n                    config.axis_y_min = min.y;\n                }\n                if (isValue(min.y2)) {\n                    config.axis_y2_min = min.y2;\n                }\n            } else {\n                config.axis_y_min = config.axis_y2_min = min;\n            }\n            $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n        } else {\n            return {\n                x: config.axis_x_min,\n                y: config.axis_y_min,\n                y2: config.axis_y2_min\n            };\n        }\n    };\n    c3_chart_fn.axis.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) {\n                this.axis.max(range.max);\n            }\n            if (isDefined(range.min)) {\n                this.axis.min(range.min);\n            }\n        } else {\n            return {\n                max: this.axis.max(),\n                min: this.axis.min()\n            };\n        }\n    };\n\n    c3_chart_fn.category = function (i, category) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (arguments.length > 1) {\n            config.axis_x_categories[i] = category;\n            $$.redraw();\n        }\n        return config.axis_x_categories[i];\n    };\n    c3_chart_fn.categories = function (categories) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (!arguments.length) {\n            return config.axis_x_categories;\n        }\n        config.axis_x_categories = categories;\n        $$.redraw();\n        return config.axis_x_categories;\n    };\n\n    c3_chart_fn.resize = function (size) {\n        var $$ = this.internal,\n            config = $$.config;\n        config.size_width = size ? size.width : null;\n        config.size_height = size ? size.height : null;\n        this.flush();\n    };\n\n    c3_chart_fn.flush = function () {\n        var $$ = this.internal;\n        $$.updateAndRedraw({ withLegend: true, withTransition: false, withTransitionForTransform: false });\n    };\n\n    c3_chart_fn.destroy = function () {\n        var $$ = this.internal;\n\n        window.clearInterval($$.intervalForObserveInserted);\n\n        if ($$.resizeTimeout !== undefined) {\n            window.clearTimeout($$.resizeTimeout);\n        }\n\n        if (window.detachEvent) {\n            window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n        } else if (window.removeEventListener) {\n            window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n        } else {\n            var wrapper = window.onresize;\n            // check if no one else removed our wrapper and remove our resizeFunction from it\n            if (wrapper && wrapper.add && wrapper.remove) {\n                wrapper.remove($$.resizeFunction);\n            }\n        }\n\n        // remove the inner resize functions\n        $$.resizeFunction.remove();\n\n        $$.selectChart.classed('c3', false).html(\"\");\n\n        // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n        Object.keys($$).forEach(function (key) {\n            $$[key] = null;\n        });\n\n        return null;\n    };\n\n    // TODO: fix\n    c3_chart_fn.color = function (id) {\n        var $$ = this.internal;\n        return $$.color(id); // more patterns\n    };\n\n    c3_chart_fn.data = function (targetIds) {\n        var targets = this.internal.data.targets;\n        return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n            return [].concat(targetIds).indexOf(t.id) >= 0;\n        });\n    };\n    c3_chart_fn.data.shown = function (targetIds) {\n        return this.internal.filterTargetsToShow(this.data(targetIds));\n    };\n    c3_chart_fn.data.values = function (targetId) {\n        var targets,\n            values = null;\n        if (targetId) {\n            targets = this.data(targetId);\n            values = targets[0] ? targets[0].values.map(function (d) {\n                return d.value;\n            }) : null;\n        }\n        return values;\n    };\n    c3_chart_fn.data.names = function (names) {\n        this.internal.clearLegendItemTextBoxCache();\n        return this.internal.updateDataAttributes('names', names);\n    };\n    c3_chart_fn.data.colors = function (colors) {\n        return this.internal.updateDataAttributes('colors', colors);\n    };\n    c3_chart_fn.data.axes = function (axes) {\n        return this.internal.updateDataAttributes('axes', axes);\n    };\n\n    c3_chart_fn.flow = function (args) {\n        var $$ = this.internal,\n            targets,\n            data,\n            notfoundIds = [],\n            orgDataCount = $$.getMaxDataCount(),\n            dataCount,\n            domain,\n            baseTarget,\n            baseValue,\n            length = 0,\n            tail = 0,\n            diff,\n            to;\n\n        if (args.json) {\n            data = $$.convertJsonToData(args.json, args.keys);\n        } else if (args.rows) {\n            data = $$.convertRowsToData(args.rows);\n        } else if (args.columns) {\n            data = $$.convertColumnsToData(args.columns);\n        } else {\n            return;\n        }\n        targets = $$.convertDataToTargets(data, true);\n\n        // Update/Add data\n        $$.data.targets.forEach(function (t) {\n            var found = false,\n                i,\n                j;\n            for (i = 0; i < targets.length; i++) {\n                if (t.id === targets[i].id) {\n                    found = true;\n\n                    if (t.values[t.values.length - 1]) {\n                        tail = t.values[t.values.length - 1].index + 1;\n                    }\n                    length = targets[i].values.length;\n\n                    for (j = 0; j < length; j++) {\n                        targets[i].values[j].index = tail + j;\n                        if (!$$.isTimeSeries()) {\n                            targets[i].values[j].x = tail + j;\n                        }\n                    }\n                    t.values = t.values.concat(targets[i].values);\n\n                    targets.splice(i, 1);\n                    break;\n                }\n            }\n            if (!found) {\n                notfoundIds.push(t.id);\n            }\n        });\n\n        // Append null for not found targets\n        $$.data.targets.forEach(function (t) {\n            var i, j;\n            for (i = 0; i < notfoundIds.length; i++) {\n                if (t.id === notfoundIds[i]) {\n                    tail = t.values[t.values.length - 1].index + 1;\n                    for (j = 0; j < length; j++) {\n                        t.values.push({\n                            id: t.id,\n                            index: tail + j,\n                            x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n                            value: null\n                        });\n                    }\n                }\n            }\n        });\n\n        // Generate null values for new target\n        if ($$.data.targets.length) {\n            targets.forEach(function (t) {\n                var i,\n                    missing = [];\n                for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n                    missing.push({\n                        id: t.id,\n                        index: i,\n                        x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n                        value: null\n                    });\n                }\n                t.values.forEach(function (v) {\n                    v.index += tail;\n                    if (!$$.isTimeSeries()) {\n                        v.x += tail;\n                    }\n                });\n                t.values = missing.concat(t.values);\n            });\n        }\n        $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n        // check data count because behavior needs to change when it's only one\n        dataCount = $$.getMaxDataCount();\n        baseTarget = $$.data.targets[0];\n        baseValue = baseTarget.values[0];\n\n        // Update length to flow if needed\n        if (isDefined(args.to)) {\n            length = 0;\n            to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n            baseTarget.values.forEach(function (v) {\n                if (v.x < to) {\n                    length++;\n                }\n            });\n        } else if (isDefined(args.length)) {\n            length = args.length;\n        }\n\n        // If only one data, update the domain to flow from left edge of the chart\n        if (!orgDataCount) {\n            if ($$.isTimeSeries()) {\n                if (baseTarget.values.length > 1) {\n                    diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n                } else {\n                    diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n                }\n            } else {\n                diff = 1;\n            }\n            domain = [baseValue.x - diff, baseValue.x];\n            $$.updateXDomain(null, true, true, false, domain);\n        } else if (orgDataCount === 1) {\n            if ($$.isTimeSeries()) {\n                diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n                domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n                $$.updateXDomain(null, true, true, false, domain);\n            }\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({\n            flow: {\n                index: baseValue.index,\n                length: length,\n                duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n                done: args.done,\n                orgDataCount: orgDataCount\n            },\n            withLegend: true,\n            withTransition: orgDataCount > 1,\n            withTrimXDomain: false,\n            withUpdateXAxis: true\n        });\n    };\n\n    c3_chart_internal_fn.generateFlow = function (args) {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3;\n\n        return function () {\n            var targets = args.targets,\n                flow = args.flow,\n                drawBar = args.drawBar,\n                drawLine = args.drawLine,\n                drawArea = args.drawArea,\n                cx = args.cx,\n                cy = args.cy,\n                xv = args.xv,\n                xForText = args.xForText,\n                yForText = args.yForText,\n                duration = args.duration;\n\n            var translateX,\n                scaleX = 1,\n                transform,\n                flowIndex = flow.index,\n                flowLength = flow.length,\n                flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n                flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n                orgDomain = $$.x.domain(),\n                domain,\n                durationForFlow = flow.duration || duration,\n                done = flow.done || function () {},\n                wait = $$.generateWait();\n\n            var xgrid, xgridLines, mainRegion, mainText, mainBar, mainLine, mainArea, mainCircle;\n\n            // set flag\n            $$.flowing = true;\n\n            // remove head data after rendered\n            $$.data.targets.forEach(function (d) {\n                d.values.splice(0, flowLength);\n            });\n\n            // update x domain to generate axis elements for flow\n            domain = $$.updateXDomain(targets, true, true);\n            // update elements related to x scale\n            if ($$.updateXGrid) {\n                $$.updateXGrid(true);\n            }\n\n            xgrid = $$.xgrid || d3.selectAll([]); // xgrid needs to be obtained after updateXGrid\n            xgridLines = $$.xgridLines || d3.selectAll([]);\n            mainRegion = $$.mainRegion || d3.selectAll([]);\n            mainText = $$.mainText || d3.selectAll([]);\n            mainBar = $$.mainBar || d3.selectAll([]);\n            mainLine = $$.mainLine || d3.selectAll([]);\n            mainArea = $$.mainArea || d3.selectAll([]);\n            mainCircle = $$.mainCircle || d3.selectAll([]);\n\n            // generate transform to flow\n            if (!flow.orgDataCount) {\n                // if empty\n                if ($$.data.targets[0].values.length !== 1) {\n                    translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n                } else {\n                    if ($$.isTimeSeries()) {\n                        flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n                        flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n                        translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n                    } else {\n                        translateX = diffDomain(domain) / 2;\n                    }\n                }\n            } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n                translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n            } else {\n                if ($$.isTimeSeries()) {\n                    translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n                } else {\n                    translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n                }\n            }\n            scaleX = diffDomain(orgDomain) / diffDomain(domain);\n            transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n            $$.hideXGridFocus();\n\n            var flowTransition = d3.transition().ease(d3.easeLinear).duration(durationForFlow);\n            wait.add($$.xAxis($$.axes.x, flowTransition));\n            wait.add(mainBar.transition(flowTransition).attr('transform', transform));\n            wait.add(mainLine.transition(flowTransition).attr('transform', transform));\n            wait.add(mainArea.transition(flowTransition).attr('transform', transform));\n            wait.add(mainCircle.transition(flowTransition).attr('transform', transform));\n            wait.add(mainText.transition(flowTransition).attr('transform', transform));\n            wait.add(mainRegion.filter($$.isRegionOnX).transition(flowTransition).attr('transform', transform));\n            wait.add(xgrid.transition(flowTransition).attr('transform', transform));\n            wait.add(xgridLines.transition(flowTransition).attr('transform', transform));\n            wait(function () {\n                var i,\n                    shapes = [],\n                    texts = [];\n\n                // remove flowed elements\n                if (flowLength) {\n                    for (i = 0; i < flowLength; i++) {\n                        shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n                        texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n                    }\n                    $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n                    $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n                    $$.svg.select('.' + CLASS.xgrid).remove();\n                }\n\n                // draw again for removing flowed elements and reverting attr\n                xgrid.attr('transform', null).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n                xgridLines.attr('transform', null);\n                xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n                xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n                mainBar.attr('transform', null).attr(\"d\", drawBar);\n                mainLine.attr('transform', null).attr(\"d\", drawLine);\n                mainArea.attr('transform', null).attr(\"d\", drawArea);\n                mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n                mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n                mainRegion.attr('transform', null);\n                mainRegion.filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$));\n\n                // callback for end of flow\n                done();\n\n                $$.flowing = false;\n            });\n        };\n    };\n\n    c3_chart_fn.focus = function (targetIds) {\n        var $$ = this.internal,\n            candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n        this.defocus();\n        candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.expandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, true);\n\n        $$.focusedTargetIds = targetIds;\n        $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n\n    c3_chart_fn.defocus = function (targetIds) {\n        var $$ = this.internal,\n            candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, false);\n\n        $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n        $$.defocusedTargetIds = targetIds;\n    };\n\n    c3_chart_fn.revert = function (targetIds) {\n        var $$ = this.internal,\n            candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        if ($$.config.legend_show) {\n            $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n            $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n                return $$.d3.select(this).classed(CLASS.legendItemFocused);\n            }).classed(CLASS.legendItemFocused, false);\n        }\n\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n    };\n\n    c3_chart_fn.xgrids = function (grids) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (!grids) {\n            return config.grid_x_lines;\n        }\n        config.grid_x_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_x_lines;\n    };\n    c3_chart_fn.xgrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.xgrids.remove = function (params) {\n        // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, true);\n    };\n\n    c3_chart_fn.ygrids = function (grids) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (!grids) {\n            return config.grid_y_lines;\n        }\n        config.grid_y_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_y_lines;\n    };\n    c3_chart_fn.ygrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.ygrids.remove = function (params) {\n        // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, false);\n    };\n\n    c3_chart_fn.groups = function (groups) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (isUndefined(groups)) {\n            return config.data_groups;\n        }\n        config.data_groups = groups;\n        $$.redraw();\n        return config.data_groups;\n    };\n\n    c3_chart_fn.legend = function () {};\n    c3_chart_fn.legend.show = function (targetIds) {\n        var $$ = this.internal;\n        $$.showLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({ withLegend: true });\n    };\n    c3_chart_fn.legend.hide = function (targetIds) {\n        var $$ = this.internal;\n        $$.hideLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({ withLegend: true });\n    };\n\n    c3_chart_fn.load = function (args) {\n        var $$ = this.internal,\n            config = $$.config;\n        // update xs if specified\n        if (args.xs) {\n            $$.addXs(args.xs);\n        }\n        // update names if exists\n        if ('names' in args) {\n            c3_chart_fn.data.names.bind(this)(args.names);\n        }\n        // update classes if exists\n        if ('classes' in args) {\n            Object.keys(args.classes).forEach(function (id) {\n                config.data_classes[id] = args.classes[id];\n            });\n        }\n        // update categories if exists\n        if ('categories' in args && $$.isCategorized()) {\n            config.axis_x_categories = args.categories;\n        }\n        // update axes if exists\n        if ('axes' in args) {\n            Object.keys(args.axes).forEach(function (id) {\n                config.data_axes[id] = args.axes[id];\n            });\n        }\n        // update colors if exists\n        if ('colors' in args) {\n            Object.keys(args.colors).forEach(function (id) {\n                config.data_colors[id] = args.colors[id];\n            });\n        }\n        // use cache if exists\n        if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n            $$.load($$.getCaches(args.cacheIds), args.done);\n            return;\n        }\n        // unload if needed\n        if ('unload' in args) {\n            // TODO: do not unload if target will load (included in url/rows/columns)\n            $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n                $$.loadFromArgs(args);\n            });\n        } else {\n            $$.loadFromArgs(args);\n        }\n    };\n\n    c3_chart_fn.unload = function (args) {\n        var $$ = this.internal;\n        args = args || {};\n        if (args instanceof Array) {\n            args = { ids: args };\n        } else if (typeof args === 'string') {\n            args = { ids: [args] };\n        }\n        $$.unload($$.mapToTargetIds(args.ids), function () {\n            $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n            if (args.done) {\n                args.done();\n            }\n        });\n    };\n\n    c3_chart_fn.regions = function (regions) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (!regions) {\n            return config.regions;\n        }\n        config.regions = regions;\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.add = function (regions) {\n        var $$ = this.internal,\n            config = $$.config;\n        if (!regions) {\n            return config.regions;\n        }\n        config.regions = config.regions.concat(regions);\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.remove = function (options) {\n        var $$ = this.internal,\n            config = $$.config,\n            duration,\n            classes,\n            regions;\n\n        options = options || {};\n        duration = $$.getOption(options, \"duration\", config.transition_duration);\n        classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n        regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n            return '.' + c;\n        }));\n        (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n\n        config.regions = config.regions.filter(function (region) {\n            var found = false;\n            if (!region['class']) {\n                return true;\n            }\n            region['class'].split(' ').forEach(function (c) {\n                if (classes.indexOf(c) >= 0) {\n                    found = true;\n                }\n            });\n            return !found;\n        });\n\n        return config.regions;\n    };\n\n    c3_chart_fn.selected = function (targetId) {\n        var $$ = this.internal,\n            d3 = $$.d3;\n        return d3.merge($$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n            return d3.select(this).classed(CLASS.SELECTED);\n        }).map(function (d) {\n            return d.map(function (d) {\n                var data = d.__data__;return data.data ? data.data : data;\n            });\n        }));\n    };\n    c3_chart_fn.select = function (ids, indices, resetOther) {\n        var $$ = this.internal,\n            d3 = $$.d3,\n            config = $$.config;\n        if (!config.data_selection_enabled) {\n            return;\n        }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this),\n                id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d) && !isSelected) {\n                    toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n                }\n            } else if (isDefined(resetOther) && resetOther) {\n                if (isSelected) {\n                    toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                }\n            }\n        });\n    };\n    c3_chart_fn.unselect = function (ids, indices) {\n        var $$ = this.internal,\n            d3 = $$.d3,\n            config = $$.config;\n        if (!config.data_selection_enabled) {\n            return;\n        }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this),\n                id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d)) {\n                    if (isSelected) {\n                        toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                    }\n                }\n            }\n        });\n    };\n\n    c3_chart_fn.show = function (targetIds, options) {\n        var $$ = this.internal,\n            targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.removeHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition().style('display', 'initial', 'important').style('opacity', 1, 'important').call($$.endall, function () {\n            targets.style('opacity', null).style('opacity', 1);\n        });\n\n        if (options.withLegend) {\n            $$.showLegend(targetIds);\n        }\n\n        $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n    };\n\n    c3_chart_fn.hide = function (targetIds, options) {\n        var $$ = this.internal,\n            targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.addHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n            targets.style('opacity', null).style('opacity', 0);\n            targets.style('display', 'none');\n        });\n\n        if (options.withLegend) {\n            $$.hideLegend(targetIds);\n        }\n\n        $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n    };\n\n    c3_chart_fn.toggle = function (targetIds, options) {\n        var that = this,\n            $$ = this.internal;\n        $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n            $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n        });\n    };\n\n    c3_chart_fn.tooltip = function () {};\n    c3_chart_fn.tooltip.show = function (args) {\n        var $$ = this.internal,\n            targets,\n            data,\n            mouse = {};\n\n        // determine mouse position on the chart\n        if (args.mouse) {\n            mouse = args.mouse;\n        } else {\n            // determine focus data\n            if (args.data) {\n                data = args.data;\n            } else if (typeof args.x !== 'undefined') {\n                if (args.id) {\n                    targets = $$.data.targets.filter(function (t) {\n                        return t.id === args.id;\n                    });\n                } else {\n                    targets = $$.data.targets;\n                }\n                data = $$.filterByX(targets, args.x).slice(0, 1)[0];\n            }\n            mouse = data ? $$.getMousePosition(data) : null;\n        }\n\n        // emulate mouse events to show\n        $$.dispatchEvent('mousemove', mouse);\n\n        $$.config.tooltip_onshow.call($$, data);\n    };\n    c3_chart_fn.tooltip.hide = function () {\n        // TODO: get target data by checking the state of focus\n        this.internal.dispatchEvent('mouseout', 0);\n\n        this.internal.config.tooltip_onhide.call(this);\n    };\n\n    c3_chart_fn.transform = function (type, targetIds) {\n        var $$ = this.internal,\n            options = ['pie', 'donut'].indexOf(type) >= 0 ? { withTransform: true } : null;\n        $$.transformTo(targetIds, type, options);\n    };\n\n    c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n        var $$ = this,\n            withTransitionForAxis = !$$.hasArcType(),\n            options = optionsForRedraw || { withTransitionForAxis: withTransitionForAxis };\n        options.withTransitionForTransform = false;\n        $$.transiting = false;\n        $$.setTargetType(targetIds, type);\n        $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n        $$.updateAndRedraw(options);\n    };\n\n    c3_chart_fn.x = function (x) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetX($$.data.targets, x);\n            $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n        }\n        return $$.data.xs;\n    };\n    c3_chart_fn.xs = function (xs) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetXs($$.data.targets, xs);\n            $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n        }\n        return $$.data.xs;\n    };\n\n    c3_chart_fn.zoom = function (domain) {\n        var $$ = this.internal;\n        if (domain) {\n            if ($$.isTimeSeries()) {\n                domain = domain.map(function (x) {\n                    return $$.parseDate(x);\n                });\n            }\n            if ($$.config.subchart_show) {\n                $$.brush.selectionAsValue(domain, true);\n            } else {\n                $$.updateXDomain(null, true, false, false, domain);\n                $$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false });\n            }\n            $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n            return domain;\n        } else {\n            return $$.x.domain();\n        }\n    };\n    c3_chart_fn.zoom.enable = function (enabled) {\n        var $$ = this.internal;\n        $$.config.zoom_enabled = enabled;\n        $$.updateAndRedraw();\n    };\n    c3_chart_fn.unzoom = function () {\n        var $$ = this.internal;\n        if ($$.config.subchart_show) {\n            $$.brush.clear();\n        } else {\n            $$.updateXDomain(null, true, false, false, $$.subX.domain());\n            $$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false });\n        }\n    };\n\n    c3_chart_fn.zoom.max = function (max) {\n        var $$ = this.internal,\n            config = $$.config,\n            d3 = $$.d3;\n        if (max === 0 || max) {\n            config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n        } else {\n            return config.zoom_x_max;\n        }\n    };\n\n    c3_chart_fn.zoom.min = function (min) {\n        var $$ = this.internal,\n            config = $$.config,\n            d3 = $$.d3;\n        if (min === 0 || min) {\n            config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n        } else {\n            return config.zoom_x_min;\n        }\n    };\n\n    c3_chart_fn.zoom.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) {\n                this.domain.max(range.max);\n            }\n            if (isDefined(range.min)) {\n                this.domain.min(range.min);\n            }\n        } else {\n            return {\n                max: this.domain.max(),\n                min: this.domain.min()\n            };\n        }\n    };\n\n    c3_chart_internal_fn.initPie = function () {\n        var $$ = this,\n            d3 = $$.d3;\n        $$.pie = d3.pie().value(function (d) {\n            return d.values.reduce(function (a, b) {\n                return a + b.value;\n            }, 0);\n        });\n\n        var orderFct = $$.getOrderFunction();\n\n        // we need to reverse the returned order if asc or desc to have the slice in expected order.\n        if (orderFct && ($$.isOrderAsc() || $$.isOrderDesc())) {\n            var defaultSort = orderFct;\n            orderFct = function orderFct(t1, t2) {\n                return defaultSort(t1, t2) * -1;\n            };\n        }\n\n        $$.pie.sort(orderFct || null);\n    };\n\n    c3_chart_internal_fn.updateRadius = function () {\n        var $$ = this,\n            config = $$.config,\n            w = config.gauge_width || config.donut_width,\n            gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n        $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n        $$.radius = $$.radiusExpanded * 0.95;\n        $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n        $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n        $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n    };\n\n    c3_chart_internal_fn.updateArc = function () {\n        var $$ = this;\n        $$.svgArc = $$.getSvgArc();\n        $$.svgArcExpanded = $$.getSvgArcExpanded();\n        $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n    };\n\n    c3_chart_internal_fn.updateAngle = function (d) {\n        var $$ = this,\n            config = $$.config,\n            found = false,\n            index = 0,\n            gMin,\n            gMax,\n            gTic,\n            gValue;\n\n        if (!config) {\n            return null;\n        }\n\n        $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n            if (!found && t.data.id === d.data.id) {\n                found = true;\n                d = t;\n                d.index = index;\n            }\n            index++;\n        });\n        if (isNaN(d.startAngle)) {\n            d.startAngle = 0;\n        }\n        if (isNaN(d.endAngle)) {\n            d.endAngle = d.startAngle;\n        }\n        if ($$.isGaugeType(d.data)) {\n            gMin = config.gauge_min;\n            gMax = config.gauge_max;\n            gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n            gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n            d.startAngle = config.gauge_startingAngle;\n            d.endAngle = d.startAngle + gTic * gValue;\n        }\n        return found ? d : null;\n    };\n\n    c3_chart_internal_fn.getSvgArc = function () {\n        var $$ = this,\n            hasGaugeType = $$.hasType('gauge'),\n            singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n            arc = $$.d3.arc().outerRadius(function (d) {\n            return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n        }).innerRadius(function (d) {\n            return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n        }),\n            newArc = function newArc(d, withoutUpdate) {\n            var updated;\n            if (withoutUpdate) {\n                return arc(d);\n            } // for interpolate\n            updated = $$.updateAngle(d);\n            return updated ? arc(updated) : \"M 0 0\";\n        };\n        // TODO: extends all function\n        newArc.centroid = arc.centroid;\n        return newArc;\n    };\n\n    c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n        rate = rate || 1;\n        var $$ = this,\n            hasGaugeType = $$.hasType('gauge'),\n            singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n            expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n            arc = $$.d3.arc().outerRadius(function (d) {\n            return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n        }).innerRadius(function (d) {\n            return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n        });\n        return function (d) {\n            var updated = $$.updateAngle(d);\n            return updated ? arc(updated) : \"M 0 0\";\n        };\n    };\n\n    c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n        return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n    };\n\n    c3_chart_internal_fn.transformForArcLabel = function (d) {\n        var $$ = this,\n            config = $$.config,\n            updated = $$.updateAngle(d),\n            c,\n            x,\n            y,\n            h,\n            ratio,\n            translate = \"\",\n            hasGauge = $$.hasType('gauge');\n        if (updated && !hasGauge) {\n            c = this.svgArc.centroid(updated);\n            x = isNaN(c[0]) ? 0 : c[0];\n            y = isNaN(c[1]) ? 0 : c[1];\n            h = Math.sqrt(x * x + y * y);\n            if ($$.hasType('donut') && config.donut_label_ratio) {\n                ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n            } else if ($$.hasType('pie') && config.pie_label_ratio) {\n                ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n            } else {\n                ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n            }\n            translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n        } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n            var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n            x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n            y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n            translate = \"translate(\" + x + ',' + y + \")\";\n        }\n        return translate;\n    };\n\n    c3_chart_internal_fn.getArcRatio = function (d) {\n        var $$ = this,\n            config = $$.config,\n            whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n        return d ? (d.endAngle - d.startAngle) / whole : null;\n    };\n\n    c3_chart_internal_fn.convertToArcData = function (d) {\n        return this.addName({\n            id: d.data.id,\n            value: d.value,\n            ratio: this.getArcRatio(d),\n            index: d.index\n        });\n    };\n\n    c3_chart_internal_fn.textForArcLabel = function (d) {\n        var $$ = this,\n            updated,\n            value,\n            ratio,\n            id,\n            format;\n        if (!$$.shouldShowArcLabel()) {\n            return \"\";\n        }\n        updated = $$.updateAngle(d);\n        value = updated ? updated.value : null;\n        ratio = $$.getArcRatio(updated);\n        id = d.data.id;\n        if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n            return \"\";\n        }\n        format = $$.getArcLabelFormat();\n        return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n    };\n\n    c3_chart_internal_fn.textForGaugeMinMax = function (value, isMax) {\n        var $$ = this,\n            format = $$.getGaugeLabelExtents();\n\n        return format ? format(value, isMax) : value;\n    };\n\n    c3_chart_internal_fn.expandArc = function (targetIds) {\n        var $$ = this,\n            interval;\n\n        // MEMO: avoid to cancel transition\n        if ($$.transiting) {\n            interval = window.setInterval(function () {\n                if (!$$.transiting) {\n                    window.clearInterval(interval);\n                    if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n                        $$.expandArc(targetIds);\n                    }\n                }\n            }, 10);\n            return;\n        }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n            if (!$$.shouldExpand(d.data.id)) {\n                return;\n            }\n            $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n                if ($$.isDonutType(d.data)) {\n                    // callback here\n                }\n            });\n        });\n    };\n\n    c3_chart_internal_fn.unexpandArc = function (targetIds) {\n        var $$ = this;\n\n        if ($$.transiting) {\n            return;\n        }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n            return $$.expandDuration(d.data.id);\n        }).attr(\"d\", $$.svgArc);\n        $$.svg.selectAll('.' + CLASS.arc);\n    };\n\n    c3_chart_internal_fn.expandDuration = function (id) {\n        var $$ = this,\n            config = $$.config;\n\n        if ($$.isDonutType(id)) {\n            return config.donut_expand_duration;\n        } else if ($$.isGaugeType(id)) {\n            return config.gauge_expand_duration;\n        } else if ($$.isPieType(id)) {\n            return config.pie_expand_duration;\n        } else {\n            return 50;\n        }\n    };\n\n    c3_chart_internal_fn.shouldExpand = function (id) {\n        var $$ = this,\n            config = $$.config;\n        return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n    };\n\n    c3_chart_internal_fn.shouldShowArcLabel = function () {\n        var $$ = this,\n            config = $$.config,\n            shouldShow = true;\n        if ($$.hasType('donut')) {\n            shouldShow = config.donut_label_show;\n        } else if ($$.hasType('pie')) {\n            shouldShow = config.pie_label_show;\n        }\n        // when gauge, always true\n        return shouldShow;\n    };\n\n    c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n        var $$ = this,\n            config = $$.config,\n            threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n        return ratio >= threshold;\n    };\n\n    c3_chart_internal_fn.getArcLabelFormat = function () {\n        var $$ = this,\n            config = $$.config,\n            format = config.pie_label_format;\n        if ($$.hasType('gauge')) {\n            format = config.gauge_label_format;\n        } else if ($$.hasType('donut')) {\n            format = config.donut_label_format;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.getGaugeLabelExtents = function () {\n        var $$ = this,\n            config = $$.config;\n        return config.gauge_label_extents;\n    };\n\n    c3_chart_internal_fn.getArcTitle = function () {\n        var $$ = this;\n        return $$.hasType('donut') ? $$.config.donut_title : \"\";\n    };\n\n    c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n        var $$ = this,\n            main = $$.main,\n            mainPies,\n            mainPieEnter,\n            classChartArc = $$.classChartArc.bind($$),\n            classArcs = $$.classArcs.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainPies = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n            return classChartArc(d) + classFocus(d.data);\n        });\n        mainPieEnter = mainPies.enter().append(\"g\").attr(\"class\", classChartArc);\n        mainPieEnter.append('g').attr('class', classArcs);\n        mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n        // MEMO: can not keep same color..., but not bad to update color in redraw\n        //mainPieUpdate.exit().remove();\n    };\n\n    c3_chart_internal_fn.initArc = function () {\n        var $$ = this;\n        $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n        $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n    };\n\n    c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            main = $$.main,\n            arcs,\n            mainArc,\n            backgroundArc,\n            arcLabelLines,\n            mainArcLabelLine,\n            hasGaugeType = $$.hasType('gauge');\n        arcs = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n        mainArc = arcs.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n            return $$.color(d.data);\n        }).style(\"cursor\", function (d) {\n            return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n        }).each(function (d) {\n            if ($$.isGaugeType(d.data)) {\n                d.startAngle = d.endAngle = config.gauge_startingAngle;\n            }\n            this._current = d;\n        }).merge(arcs);\n        if (hasGaugeType) {\n            arcLabelLines = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n            mainArcLabelLine = arcLabelLines.enter().append('rect').attr(\"class\", function (d) {\n                return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n            }).merge(arcLabelLines);\n\n            if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n                mainArcLabelLine.style(\"display\", \"none\");\n            } else {\n                mainArcLabelLine.style(\"fill\", function (d) {\n                    return config.color_pattern.length > 0 ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n                }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n                    var lineLength = 0,\n                        lineThickness = 2,\n                        x = 0,\n                        y = 0,\n                        transform = \"\";\n                    if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n                        var updated = $$.updateAngle(d),\n                            innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n                            lineAngle = updated.endAngle - Math.PI / 2,\n                            arcInnerRadius = $$.radius - innerLineLength,\n                            linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n                        lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n                        x = Math.cos(linePositioningAngle) * arcInnerRadius;\n                        y = Math.sin(linePositioningAngle) * arcInnerRadius;\n                        transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n                    }\n                    d3.select(this).attr('x', x).attr('y', y).attr('width', lineLength).attr('height', lineThickness).attr('transform', transform).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n                });\n            }\n        }\n        mainArc.attr(\"transform\", function (d) {\n            return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n        }).on('mouseover', config.interaction_enabled ? function (d) {\n            var updated, arcData;\n            if ($$.transiting) {\n                // skip while transiting\n                return;\n            }\n            updated = $$.updateAngle(d);\n            if (updated) {\n                arcData = $$.convertToArcData(updated);\n                // transitions\n                $$.expandArc(updated.data.id);\n                $$.api.focus(updated.data.id);\n                $$.toggleFocusLegend(updated.data.id, true);\n                $$.config.data_onmouseover(arcData, this);\n            }\n        } : null).on('mousemove', config.interaction_enabled ? function (d) {\n            var updated = $$.updateAngle(d),\n                arcData,\n                selectedData;\n            if (updated) {\n                arcData = $$.convertToArcData(updated), selectedData = [arcData];\n                $$.showTooltip(selectedData, this);\n            }\n        } : null).on('mouseout', config.interaction_enabled ? function (d) {\n            var updated, arcData;\n            if ($$.transiting) {\n                // skip while transiting\n                return;\n            }\n            updated = $$.updateAngle(d);\n            if (updated) {\n                arcData = $$.convertToArcData(updated);\n                // transitions\n                $$.unexpandArc(updated.data.id);\n                $$.api.revert();\n                $$.revertLegend();\n                $$.hideTooltip();\n                $$.config.data_onmouseout(arcData, this);\n            }\n        } : null).on('click', config.interaction_enabled ? function (d, i) {\n            var updated = $$.updateAngle(d),\n                arcData;\n            if (updated) {\n                arcData = $$.convertToArcData(updated);\n                if ($$.toggleShape) {\n                    $$.toggleShape(this, arcData, i);\n                }\n                $$.config.data_onclick.call($$.api, arcData, this);\n            }\n        } : null).each(function () {\n            $$.transiting = true;\n        }).transition().duration(duration).attrTween(\"d\", function (d) {\n            var updated = $$.updateAngle(d),\n                interpolate;\n            if (!updated) {\n                return function () {\n                    return \"M 0 0\";\n                };\n            }\n            //                if (this._current === d) {\n            //                    this._current = {\n            //                        startAngle: Math.PI*2,\n            //                        endAngle: Math.PI*2,\n            //                    };\n            //                }\n            if (isNaN(this._current.startAngle)) {\n                this._current.startAngle = 0;\n            }\n            if (isNaN(this._current.endAngle)) {\n                this._current.endAngle = this._current.startAngle;\n            }\n            interpolate = d3.interpolate(this._current, updated);\n            this._current = interpolate(0);\n            return function (t) {\n                var interpolated = interpolate(t);\n                interpolated.data = d.data; // data.id will be updated by interporator\n                return $$.getArc(interpolated, true);\n            };\n        }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n            return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n        }) // Where gauge reading color would receive customization.\n        .call($$.endall, function () {\n            $$.transiting = false;\n        });\n        arcs.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n        main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n            return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n        }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n            return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n        }).transition().duration(duration).style(\"opacity\", function (d) {\n            return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n        });\n        main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n        if (hasGaugeType) {\n            var index = 0;\n            backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n            backgroundArc.enter().append(\"path\");\n            backgroundArc.attr(\"class\", function (d, i) {\n                return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n            }).attr(\"d\", function (d1) {\n                if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n                    return \"M 0 0\";\n                }\n\n                var d = {\n                    data: [{ value: config.gauge_max }],\n                    startAngle: config.gauge_startingAngle,\n                    endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n                    index: index++\n                };\n                return $$.getArc(d, true, true);\n            });\n            backgroundArc.exit().remove();\n\n            $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n        }\n    };\n    c3_chart_internal_fn.initGauge = function () {\n        var arcs = this.arcs;\n        if (this.hasType('gauge')) {\n            arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n            arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n            arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n            arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n        }\n    };\n    c3_chart_internal_fn.getGaugeLabelHeight = function () {\n        return this.config.gauge_label_show ? 20 : 0;\n    };\n\n    c3_chart_internal_fn.hasCaches = function (ids) {\n        for (var i = 0; i < ids.length; i++) {\n            if (!(ids[i] in this.cache)) {\n                return false;\n            }\n        }\n        return true;\n    };\n    c3_chart_internal_fn.addCache = function (id, target) {\n        this.cache[id] = this.cloneTarget(target);\n    };\n    c3_chart_internal_fn.getCaches = function (ids) {\n        var targets = [],\n            i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] in this.cache) {\n                targets.push(this.cloneTarget(this.cache[ids[i]]));\n            }\n        }\n        return targets;\n    };\n\n    c3_chart_internal_fn.categoryName = function (i) {\n        var config = this.config;\n        return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n    };\n\n    c3_chart_internal_fn.generateTargetClass = function (targetId) {\n        return targetId || targetId === 0 ? ('-' + targetId).replace(/\\s/g, '-') : '';\n    };\n    c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n        return \" \" + prefix + \" \" + prefix + this.generateTargetClass(targetId);\n    };\n    c3_chart_internal_fn.classText = function (d) {\n        return this.generateClass(CLASS.text, d.index);\n    };\n    c3_chart_internal_fn.classTexts = function (d) {\n        return this.generateClass(CLASS.texts, d.id);\n    };\n    c3_chart_internal_fn.classShape = function (d) {\n        return this.generateClass(CLASS.shape, d.index);\n    };\n    c3_chart_internal_fn.classShapes = function (d) {\n        return this.generateClass(CLASS.shapes, d.id);\n    };\n    c3_chart_internal_fn.classLine = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n    };\n    c3_chart_internal_fn.classLines = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n    };\n    c3_chart_internal_fn.classCircle = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n    };\n    c3_chart_internal_fn.classCircles = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n    };\n    c3_chart_internal_fn.classBar = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n    };\n    c3_chart_internal_fn.classBars = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n    };\n    c3_chart_internal_fn.classArc = function (d) {\n        return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n    };\n    c3_chart_internal_fn.classArcs = function (d) {\n        return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n    };\n    c3_chart_internal_fn.classArea = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n    };\n    c3_chart_internal_fn.classAreas = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n    };\n    c3_chart_internal_fn.classRegion = function (d, i) {\n        return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n    };\n    c3_chart_internal_fn.classEvent = function (d) {\n        return this.generateClass(CLASS.eventRect, d.index);\n    };\n    c3_chart_internal_fn.classTarget = function (id) {\n        var $$ = this;\n        var additionalClassSuffix = $$.config.data_classes[id],\n            additionalClass = '';\n        if (additionalClassSuffix) {\n            additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n        }\n        return $$.generateClass(CLASS.target, id) + additionalClass;\n    };\n    c3_chart_internal_fn.classFocus = function (d) {\n        return this.classFocused(d) + this.classDefocused(d);\n    };\n    c3_chart_internal_fn.classFocused = function (d) {\n        return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n    };\n    c3_chart_internal_fn.classDefocused = function (d) {\n        return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n    };\n    c3_chart_internal_fn.classChartText = function (d) {\n        return CLASS.chartText + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartLine = function (d) {\n        return CLASS.chartLine + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartBar = function (d) {\n        return CLASS.chartBar + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartArc = function (d) {\n        return CLASS.chartArc + this.classTarget(d.data.id);\n    };\n    c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n        return this.generateTargetClass(targetId).replace(/([?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\])/g, '\\\\$1');\n    };\n    c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n        return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n        var $$ = this;\n        ids = ids || [];\n        return ids.length ? ids.map(function (id) {\n            return $$.selectorTarget(id, prefix);\n        }) : null;\n    };\n    c3_chart_internal_fn.selectorLegend = function (id) {\n        return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorLegends = function (ids) {\n        var $$ = this;\n        return ids && ids.length ? ids.map(function (id) {\n            return $$.selectorLegend(id);\n        }) : null;\n    };\n\n    c3_chart_internal_fn.getClipPath = function (id) {\n        var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n        return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n    };\n    c3_chart_internal_fn.appendClip = function (parent, id) {\n        return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n    };\n    c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n        // axis line width + padding for left\n        var left = Math.max(30, this.margin.left);\n        return forHorizontal ? -(1 + left) : -(left - 1);\n    };\n    c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n        return forHorizontal ? -20 : -this.margin.top;\n    };\n    c3_chart_internal_fn.getXAxisClipX = function () {\n        var $$ = this;\n        return $$.getAxisClipX(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipX = function () {\n        var $$ = this;\n        return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n        var $$ = this,\n            left = Math.max(30, $$.margin.left),\n            right = Math.max(30, $$.margin.right);\n        // width + axis line width + padding for left/right\n        return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n    };\n    c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n        // less than 20 is not enough to show the axis label 'outer' without legend\n        return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n    };\n    c3_chart_internal_fn.getXAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n    };\n    c3_chart_internal_fn.getYAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight($$.config.axis_rotated);\n    };\n\n    c3_chart_internal_fn.generateColor = function () {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3,\n            colors = config.data_colors,\n            pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10,\n            callback = config.data_color,\n            ids = [];\n\n        return function (d) {\n            var id = d.id || d.data && d.data.id || d,\n                color;\n\n            // if callback function is provided\n            if (colors[id] instanceof Function) {\n                color = colors[id](d);\n            }\n            // if specified, choose that color\n            else if (colors[id]) {\n                    color = colors[id];\n                }\n                // if not specified, choose from pattern\n                else {\n                        if (ids.indexOf(id) < 0) {\n                            ids.push(id);\n                        }\n                        color = pattern[ids.indexOf(id) % pattern.length];\n                        colors[id] = color;\n                    }\n            return callback instanceof Function ? callback(color, d) : color;\n        };\n    };\n    c3_chart_internal_fn.generateLevelColor = function () {\n        var $$ = this,\n            config = $$.config,\n            colors = config.color_pattern,\n            threshold = config.color_threshold,\n            asValue = threshold.unit === 'value',\n            values = threshold.values && threshold.values.length ? threshold.values : [],\n            max = threshold.max || 100;\n        return notEmpty(config.color_threshold) ? function (value) {\n            var i,\n                v,\n                color = colors[colors.length - 1];\n            for (i = 0; i < values.length; i++) {\n                v = asValue ? value : value * 100 / max;\n                if (v < values[i]) {\n                    color = colors[i];\n                    break;\n                }\n            }\n            return color;\n        } : null;\n    };\n\n    c3_chart_internal_fn.getDefaultConfig = function () {\n        var config = {\n            bindto: '#chart',\n            svg_classname: undefined,\n            size_width: undefined,\n            size_height: undefined,\n            padding_left: undefined,\n            padding_right: undefined,\n            padding_top: undefined,\n            padding_bottom: undefined,\n            resize_auto: true,\n            zoom_enabled: false,\n            zoom_initialRange: undefined,\n            zoom_privileged: false,\n            zoom_rescale: false,\n            zoom_onzoom: function zoom_onzoom() {},\n            zoom_onzoomstart: function zoom_onzoomstart() {},\n            zoom_onzoomend: function zoom_onzoomend() {},\n            zoom_x_min: undefined,\n            zoom_x_max: undefined,\n            interaction_brighten: true,\n            interaction_enabled: true,\n            onmouseover: function onmouseover() {},\n            onmouseout: function onmouseout() {},\n            onresize: function onresize() {},\n            onresized: function onresized() {},\n            oninit: function oninit() {},\n            onrendered: function onrendered() {},\n            transition_duration: 350,\n            data_x: undefined,\n            data_xs: {},\n            data_xFormat: '%Y-%m-%d',\n            data_xLocaltime: true,\n            data_xSort: true,\n            data_idConverter: function data_idConverter(id) {\n                return id;\n            },\n            data_names: {},\n            data_classes: {},\n            data_groups: [],\n            data_axes: {},\n            data_type: undefined,\n            data_types: {},\n            data_labels: {},\n            data_order: 'desc',\n            data_regions: {},\n            data_color: undefined,\n            data_colors: {},\n            data_hide: false,\n            data_filter: undefined,\n            data_selection_enabled: false,\n            data_selection_grouped: false,\n            data_selection_isselectable: function data_selection_isselectable() {\n                return true;\n            },\n            data_selection_multiple: true,\n            data_selection_draggable: false,\n            data_onclick: function data_onclick() {},\n            data_onmouseover: function data_onmouseover() {},\n            data_onmouseout: function data_onmouseout() {},\n            data_onselected: function data_onselected() {},\n            data_onunselected: function data_onunselected() {},\n            data_url: undefined,\n            data_headers: undefined,\n            data_json: undefined,\n            data_rows: undefined,\n            data_columns: undefined,\n            data_mimeType: undefined,\n            data_keys: undefined,\n            // configuration for no plot-able data supplied.\n            data_empty_label_text: \"\",\n            // subchart\n            subchart_show: false,\n            subchart_size_height: 60,\n            subchart_axis_x_show: true,\n            subchart_onbrush: function subchart_onbrush() {},\n            // color\n            color_pattern: [],\n            color_threshold: {},\n            // legend\n            legend_show: true,\n            legend_hide: false,\n            legend_position: 'bottom',\n            legend_inset_anchor: 'top-left',\n            legend_inset_x: 10,\n            legend_inset_y: 0,\n            legend_inset_step: undefined,\n            legend_item_onclick: undefined,\n            legend_item_onmouseover: undefined,\n            legend_item_onmouseout: undefined,\n            legend_equally: false,\n            legend_padding: 0,\n            legend_item_tile_width: 10,\n            legend_item_tile_height: 10,\n            // axis\n            axis_rotated: false,\n            axis_x_show: true,\n            axis_x_type: 'indexed',\n            axis_x_localtime: true,\n            axis_x_categories: [],\n            axis_x_tick_centered: false,\n            axis_x_tick_format: undefined,\n            axis_x_tick_culling: {},\n            axis_x_tick_culling_max: 10,\n            axis_x_tick_count: undefined,\n            axis_x_tick_fit: true,\n            axis_x_tick_values: null,\n            axis_x_tick_rotate: 0,\n            axis_x_tick_outer: true,\n            axis_x_tick_multiline: true,\n            axis_x_tick_width: null,\n            axis_x_max: undefined,\n            axis_x_min: undefined,\n            axis_x_padding: {},\n            axis_x_height: undefined,\n            axis_x_selection: undefined,\n            axis_x_label: {},\n            axis_x_inner: undefined,\n            axis_y_show: true,\n            axis_y_type: undefined,\n            axis_y_max: undefined,\n            axis_y_min: undefined,\n            axis_y_inverted: false,\n            axis_y_center: undefined,\n            axis_y_inner: undefined,\n            axis_y_label: {},\n            axis_y_tick_format: undefined,\n            axis_y_tick_outer: true,\n            axis_y_tick_values: null,\n            axis_y_tick_rotate: 0,\n            axis_y_tick_count: undefined,\n            axis_y_tick_time_type: undefined,\n            axis_y_tick_time_interval: undefined,\n            axis_y_padding: {},\n            axis_y_default: undefined,\n            axis_y2_show: false,\n            axis_y2_max: undefined,\n            axis_y2_min: undefined,\n            axis_y2_inverted: false,\n            axis_y2_center: undefined,\n            axis_y2_inner: undefined,\n            axis_y2_label: {},\n            axis_y2_tick_format: undefined,\n            axis_y2_tick_outer: true,\n            axis_y2_tick_values: null,\n            axis_y2_tick_count: undefined,\n            axis_y2_padding: {},\n            axis_y2_default: undefined,\n            // grid\n            grid_x_show: false,\n            grid_x_type: 'tick',\n            grid_x_lines: [],\n            grid_y_show: false,\n            // not used\n            // grid_y_type: 'tick',\n            grid_y_lines: [],\n            grid_y_ticks: 10,\n            grid_focus_show: true,\n            grid_lines_front: true,\n            // point - point of each data\n            point_show: true,\n            point_r: 2.5,\n            point_sensitivity: 10,\n            point_focus_expand_enabled: true,\n            point_focus_expand_r: undefined,\n            point_select_r: undefined,\n            // line\n            line_connectNull: false,\n            line_step_type: 'step',\n            // bar\n            bar_width: undefined,\n            bar_width_ratio: 0.6,\n            bar_width_max: undefined,\n            bar_zerobased: true,\n            bar_space: 0,\n            // area\n            area_zerobased: true,\n            area_above: false,\n            // pie\n            pie_label_show: true,\n            pie_label_format: undefined,\n            pie_label_threshold: 0.05,\n            pie_label_ratio: undefined,\n            pie_expand: {},\n            pie_expand_duration: 50,\n            // gauge\n            gauge_fullCircle: false,\n            gauge_label_show: true,\n            gauge_labelLine_show: true,\n            gauge_label_format: undefined,\n            gauge_min: 0,\n            gauge_max: 100,\n            gauge_startingAngle: -1 * Math.PI / 2,\n            gauge_label_extents: undefined,\n            gauge_units: undefined,\n            gauge_width: undefined,\n            gauge_arcs_minWidth: 5,\n            gauge_expand: {},\n            gauge_expand_duration: 50,\n            // donut\n            donut_label_show: true,\n            donut_label_format: undefined,\n            donut_label_threshold: 0.05,\n            donut_label_ratio: undefined,\n            donut_width: undefined,\n            donut_title: \"\",\n            donut_expand: {},\n            donut_expand_duration: 50,\n            // spline\n            spline_interpolation_type: 'cardinal',\n            // region - region to change style\n            regions: [],\n            // tooltip - show when mouseover on each data\n            tooltip_show: true,\n            tooltip_grouped: true,\n            tooltip_order: undefined,\n            tooltip_format_title: undefined,\n            tooltip_format_name: undefined,\n            tooltip_format_value: undefined,\n            tooltip_position: undefined,\n            tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n                return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n            },\n            tooltip_init_show: false,\n            tooltip_init_x: 0,\n            tooltip_init_position: { top: '0px', left: '50px' },\n            tooltip_onshow: function tooltip_onshow() {},\n            tooltip_onhide: function tooltip_onhide() {},\n            // title\n            title_text: undefined,\n            title_padding: {\n                top: 0,\n                right: 0,\n                bottom: 0,\n                left: 0\n            },\n            title_position: 'top-center'\n        };\n\n        Object.keys(this.additionalConfig).forEach(function (key) {\n            config[key] = this.additionalConfig[key];\n        }, this);\n\n        return config;\n    };\n    c3_chart_internal_fn.additionalConfig = {};\n\n    c3_chart_internal_fn.loadConfig = function (config) {\n        var this_config = this.config,\n            target,\n            keys,\n            read;\n        function find() {\n            var key = keys.shift();\n            //        console.log(\"key =>\", key, \", target =>\", target);\n            if (key && target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && key in target) {\n                target = target[key];\n                return find();\n            } else if (!key) {\n                return target;\n            } else {\n                return undefined;\n            }\n        }\n        Object.keys(this_config).forEach(function (key) {\n            target = config;\n            keys = key.split('_');\n            read = find();\n            //        console.log(\"CONFIG : \", key, read);\n            if (isDefined(read)) {\n                this_config[key] = read;\n            }\n        });\n    };\n\n    c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n        var $$ = this,\n            type = mimeType ? mimeType : 'csv';\n        var req = $$.d3.request(url);\n        if (headers) {\n            Object.keys(headers).forEach(function (header) {\n                req.header(header, headers[header]);\n            });\n        }\n        req.get(function (error, data) {\n            var d;\n            var dataResponse = data.response || data.responseText; // Fixes IE9 XHR issue; see #1345\n            if (!data) {\n                throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n            }\n            if (type === 'json') {\n                d = $$.convertJsonToData(JSON.parse(dataResponse), keys);\n            } else if (type === 'tsv') {\n                d = $$.convertTsvToData(dataResponse);\n            } else {\n                d = $$.convertCsvToData(dataResponse);\n            }\n            done.call($$, d);\n        });\n    };\n    c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n        var _parser$parseRows = parser.parseRows(xsv),\n            _parser$parseRows2 = toArray(_parser$parseRows),\n            keys = _parser$parseRows2[0],\n            rows = _parser$parseRows2.slice(1);\n\n        if (rows.length === 0) {\n            return { keys: keys, rows: [keys.reduce(function (row, key) {\n                    return Object.assign(row, defineProperty({}, key, null));\n                }, {})] };\n        } else {\n            // [].concat() is to convert result into a plain array otherwise\n            // test is not happy because rows have properties.\n            return { keys: keys, rows: [].concat(parser.parse(xsv)) };\n        }\n    };\n    c3_chart_internal_fn.convertCsvToData = function (csv) {\n        return this.convertXsvToData(csv, { parse: this.d3.csvParse, parseRows: this.d3.csvParseRows });\n    };\n    c3_chart_internal_fn.convertTsvToData = function (tsv) {\n        return this.convertXsvToData(tsv, { parse: this.d3.tsvParse, parseRows: this.d3.tsvParseRows });\n    };\n    c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n        var $$ = this,\n            new_rows = [],\n            targetKeys,\n            data;\n        if (keys) {\n            // when keys specified, json would be an array that includes objects\n            if (keys.x) {\n                targetKeys = keys.value.concat(keys.x);\n                $$.config.data_x = keys.x;\n            } else {\n                targetKeys = keys.value;\n            }\n            new_rows.push(targetKeys);\n            json.forEach(function (o) {\n                var new_row = [];\n                targetKeys.forEach(function (key) {\n                    // convert undefined to null because undefined data will be removed in convertDataToTargets()\n                    var v = $$.findValueInJson(o, key);\n                    if (isUndefined(v)) {\n                        v = null;\n                    }\n                    new_row.push(v);\n                });\n                new_rows.push(new_row);\n            });\n            data = $$.convertRowsToData(new_rows);\n        } else {\n            Object.keys(json).forEach(function (key) {\n                new_rows.push([key].concat(json[key]));\n            });\n            data = $$.convertColumnsToData(new_rows);\n        }\n        return data;\n    };\n    c3_chart_internal_fn.findValueInJson = function (object, path) {\n        path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n        path = path.replace(/^\\./, ''); // strip a leading dot\n        var pathArray = path.split('.');\n        for (var i = 0; i < pathArray.length; ++i) {\n            var k = pathArray[i];\n            if (k in object) {\n                object = object[k];\n            } else {\n                return;\n            }\n        }\n        return object;\n    };\n\n    /**\n     * Converts the rows to normalized data.\n     * @param {any[][]} rows The row data\n     * @return {Object}\n     */\n    c3_chart_internal_fn.convertRowsToData = function (rows) {\n        var newRows = [];\n        var keys = rows[0];\n\n        for (var i = 1; i < rows.length; i++) {\n            var newRow = {};\n            for (var j = 0; j < rows[i].length; j++) {\n                if (isUndefined(rows[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                newRow[keys[j]] = rows[i][j];\n            }\n            newRows.push(newRow);\n        }\n        return { keys: keys, rows: newRows };\n    };\n\n    /**\n     * Converts the columns to normalized data.\n     * @param {any[][]} columns The column data\n     * @return {Object}\n     */\n    c3_chart_internal_fn.convertColumnsToData = function (columns) {\n        var newRows = [];\n        var keys = [];\n\n        for (var i = 0; i < columns.length; i++) {\n            var key = columns[i][0];\n            for (var j = 1; j < columns[i].length; j++) {\n                if (isUndefined(newRows[j - 1])) {\n                    newRows[j - 1] = {};\n                }\n                if (isUndefined(columns[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                newRows[j - 1][key] = columns[i][j];\n            }\n            keys.push(key);\n        }\n\n        return { keys: keys, rows: newRows };\n    };\n\n    /**\n     * Converts the data format into the target format.\n     * @param {!Object} data\n     * @param {!Array} data.keys Ordered list of target IDs.\n     * @param {!Array} data.rows Rows of data to convert.\n     * @param {boolean} appendXs True to append to $$.data.xs, False to replace.\n     * @return {!Array}\n     */\n    c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n        var $$ = this,\n            config = $$.config,\n            targets,\n            ids,\n            xs,\n            keys;\n\n        // handles format where keys are not orderly provided\n        if (isArray(data)) {\n            keys = Object.keys(data[0]);\n        } else {\n            keys = data.keys;\n            data = data.rows;\n        }\n\n        ids = keys.filter($$.isNotX, $$);\n        xs = keys.filter($$.isX, $$);\n\n        // save x for update data by load when custom x and c3.x API\n        ids.forEach(function (id) {\n            var xKey = $$.getXKey(id);\n\n            if ($$.isCustomX() || $$.isTimeSeries()) {\n                // if included in input data\n                if (xs.indexOf(xKey) >= 0) {\n                    $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n                        return d[xKey];\n                    }).filter(isValue).map(function (rawX, i) {\n                        return $$.generateTargetX(rawX, id, i);\n                    }));\n                }\n                // if not included in input data, find from preloaded data of other id's x\n                else if (config.data_x) {\n                        $$.data.xs[id] = $$.getOtherTargetXs();\n                    }\n                    // if not included in input data, find from preloaded data\n                    else if (notEmpty(config.data_xs)) {\n                            $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n                        }\n                // MEMO: if no x included, use same x of current will be used\n            } else {\n                $$.data.xs[id] = data.map(function (d, i) {\n                    return i;\n                });\n            }\n        });\n\n        // check x is defined\n        ids.forEach(function (id) {\n            if (!$$.data.xs[id]) {\n                throw new Error('x is not defined for id = \"' + id + '\".');\n            }\n        });\n\n        // convert to target\n        targets = ids.map(function (id, index) {\n            var convertedId = config.data_idConverter(id);\n            return {\n                id: convertedId,\n                id_org: id,\n                values: data.map(function (d, i) {\n                    var xKey = $$.getXKey(id),\n                        rawX = d[xKey],\n                        value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n                        x;\n                    // use x as categories if custom x and categorized\n                    if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n                        if (index === 0 && i === 0) {\n                            config.axis_x_categories = [];\n                        }\n                        x = config.axis_x_categories.indexOf(rawX);\n                        if (x === -1) {\n                            x = config.axis_x_categories.length;\n                            config.axis_x_categories.push(rawX);\n                        }\n                    } else {\n                        x = $$.generateTargetX(rawX, id, i);\n                    }\n                    // mark as x = undefined if value is undefined and filter to remove after mapped\n                    if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n                        x = undefined;\n                    }\n                    return { x: x, value: value, id: convertedId };\n                }).filter(function (v) {\n                    return isDefined(v.x);\n                })\n            };\n        });\n\n        // finish targets\n        targets.forEach(function (t) {\n            var i;\n            // sort values by its x\n            if (config.data_xSort) {\n                t.values = t.values.sort(function (v1, v2) {\n                    var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n                        x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n                    return x1 - x2;\n                });\n            }\n            // indexing each value\n            i = 0;\n            t.values.forEach(function (v) {\n                v.index = i++;\n            });\n            // this needs to be sorted because its index and value.index is identical\n            $$.data.xs[t.id].sort(function (v1, v2) {\n                return v1 - v2;\n            });\n        });\n\n        // cache information about values\n        $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n        $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n        // set target types\n        if (config.data_type) {\n            $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n                return !(id in config.data_types);\n            }), config.data_type);\n        }\n\n        // cache as original id keyed\n        targets.forEach(function (d) {\n            $$.addCache(d.id_org, d);\n        });\n\n        return targets;\n    };\n\n    c3_chart_internal_fn.isX = function (key) {\n        var $$ = this,\n            config = $$.config;\n        return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n    };\n    c3_chart_internal_fn.isNotX = function (key) {\n        return !this.isX(key);\n    };\n    c3_chart_internal_fn.getXKey = function (id) {\n        var $$ = this,\n            config = $$.config;\n        return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n    };\n    c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n        var $$ = this,\n            xValues,\n            ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n        ids.forEach(function (id) {\n            if ($$.getXKey(id) === key) {\n                xValues = $$.data.xs[id];\n            }\n        });\n        return xValues;\n    };\n    c3_chart_internal_fn.getXValue = function (id, i) {\n        var $$ = this;\n        return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n    };\n    c3_chart_internal_fn.getOtherTargetXs = function () {\n        var $$ = this,\n            idsForX = Object.keys($$.data.xs);\n        return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n    };\n    c3_chart_internal_fn.getOtherTargetX = function (index) {\n        var xs = this.getOtherTargetXs();\n        return xs && index < xs.length ? xs[index] : null;\n    };\n    c3_chart_internal_fn.addXs = function (xs) {\n        var $$ = this;\n        Object.keys(xs).forEach(function (id) {\n            $$.config.data_xs[id] = xs[id];\n        });\n    };\n    c3_chart_internal_fn.addName = function (data) {\n        var $$ = this,\n            name;\n        if (data) {\n            name = $$.config.data_names[data.id];\n            data.name = name !== undefined ? name : data.id;\n        }\n        return data;\n    };\n    c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n        var valueOnIndex = values.filter(function (v) {\n            return v.index === index;\n        });\n        return valueOnIndex.length ? valueOnIndex[0] : null;\n    };\n    c3_chart_internal_fn.updateTargetX = function (targets, x) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            t.values.forEach(function (v, i) {\n                v.x = $$.generateTargetX(x[i], t.id, i);\n            });\n            $$.data.xs[t.id] = x;\n        });\n    };\n    c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            if (xs[t.id]) {\n                $$.updateTargetX([t], xs[t.id]);\n            }\n        });\n    };\n    c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n        var $$ = this,\n            x;\n        if ($$.isTimeSeries()) {\n            x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n        } else if ($$.isCustomX() && !$$.isCategorized()) {\n            x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n        } else {\n            x = index;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.cloneTarget = function (target) {\n        return {\n            id: target.id,\n            id_org: target.id_org,\n            values: target.values.map(function (d) {\n                return { x: d.x, value: d.value, id: d.id };\n            })\n        };\n    };\n    c3_chart_internal_fn.getMaxDataCount = function () {\n        var $$ = this;\n        return $$.d3.max($$.data.targets, function (t) {\n            return t.values.length;\n        });\n    };\n    c3_chart_internal_fn.mapToIds = function (targets) {\n        return targets.map(function (d) {\n            return d.id;\n        });\n    };\n    c3_chart_internal_fn.mapToTargetIds = function (ids) {\n        var $$ = this;\n        return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n    };\n    c3_chart_internal_fn.hasTarget = function (targets, id) {\n        var ids = this.mapToIds(targets),\n            i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] === id) {\n                return true;\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.isTargetToShow = function (targetId) {\n        return this.hiddenTargetIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.isLegendToShow = function (targetId) {\n        return this.hiddenLegendIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n        var $$ = this;\n        return targets.filter(function (t) {\n            return $$.isTargetToShow(t.id);\n        });\n    };\n    c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n        var $$ = this;\n        var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n            return t.values.map(function (v) {\n                return +v.x;\n            });\n        }))).values();\n        xs = $$.isTimeSeries() ? xs.map(function (x) {\n            return new Date(+x);\n        }) : xs.map(function (x) {\n            return +x;\n        });\n        return xs.sort(function (a, b) {\n            return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n        });\n    };\n    c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n        targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n        for (var i = 0; i < targetIds.length; i++) {\n            if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n                this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n            }\n        }\n    };\n    c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n    c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n        targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n        for (var i = 0; i < targetIds.length; i++) {\n            if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n                this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n            }\n        }\n    };\n    c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n    c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n        var ys = {};\n        targets.forEach(function (t) {\n            ys[t.id] = [];\n            t.values.forEach(function (v) {\n                ys[t.id].push(v.value);\n            });\n        });\n        return ys;\n    };\n    c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n        var ids = Object.keys(targets),\n            i,\n            j,\n            values;\n        for (i = 0; i < ids.length; i++) {\n            values = targets[ids[i]].values;\n            for (j = 0; j < values.length; j++) {\n                if (checker(values[j].value)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) {\n            return v < 0;\n        });\n    };\n    c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) {\n            return v > 0;\n        });\n    };\n    c3_chart_internal_fn.isOrderDesc = function () {\n        var config = this.config;\n        return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n    };\n    c3_chart_internal_fn.isOrderAsc = function () {\n        var config = this.config;\n        return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n    };\n    c3_chart_internal_fn.getOrderFunction = function () {\n        var $$ = this,\n            config = $$.config,\n            orderAsc = $$.isOrderAsc(),\n            orderDesc = $$.isOrderDesc();\n        if (orderAsc || orderDesc) {\n            var reducer = function reducer(p, c) {\n                return p + Math.abs(c.value);\n            };\n            return function (t1, t2) {\n                var t1Sum = t1.values.reduce(reducer, 0),\n                    t2Sum = t2.values.reduce(reducer, 0);\n                return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n            };\n        } else if (isFunction(config.data_order)) {\n            return config.data_order;\n        } else if (isArray(config.data_order)) {\n            var order = config.data_order;\n            return function (t1, t2) {\n                return order.indexOf(t1.id) - order.indexOf(t2.id);\n            };\n        }\n    };\n    c3_chart_internal_fn.orderTargets = function (targets) {\n        var fct = this.getOrderFunction();\n        if (fct) {\n            targets.sort(fct);\n        }\n        return targets;\n    };\n    c3_chart_internal_fn.filterByX = function (targets, x) {\n        return this.d3.merge(targets.map(function (t) {\n            return t.values;\n        })).filter(function (v) {\n            return v.x - x === 0;\n        });\n    };\n    c3_chart_internal_fn.filterRemoveNull = function (data) {\n        return data.filter(function (d) {\n            return isValue(d.value);\n        });\n    };\n    c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n        return targets.map(function (t) {\n            return {\n                id: t.id,\n                id_org: t.id_org,\n                values: t.values.filter(function (v) {\n                    return xDomain[0] <= v.x && v.x <= xDomain[1];\n                })\n            };\n        });\n    };\n    c3_chart_internal_fn.hasDataLabel = function () {\n        var config = this.config;\n        if (typeof config.data_labels === 'boolean' && config.data_labels) {\n            return true;\n        } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n            return true;\n        }\n        return false;\n    };\n    c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n        var $$ = this,\n            lengths = [0, 0],\n            paddingCoef = 1.3;\n        $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n            return $$.dataLabelFormat(d.id)(d);\n        }).each(function (d, i) {\n            lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n        }).remove();\n        return lengths;\n    };\n    c3_chart_internal_fn.isNoneArc = function (d) {\n        return this.hasTarget(this.data.targets, d.id);\n    }, c3_chart_internal_fn.isArc = function (d) {\n        return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n    };\n    c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n        var $$ = this,\n            candidates;\n\n        // map to array of closest points of each target\n        candidates = targets.map(function (target) {\n            return $$.findClosest(target.values, pos);\n        });\n\n        // decide closest point and return\n        return $$.findClosest(candidates, pos);\n    };\n    c3_chart_internal_fn.findClosest = function (values, pos) {\n        var $$ = this,\n            minDist = $$.config.point_sensitivity,\n            closest;\n\n        // find mouseovering bar\n        values.filter(function (v) {\n            return v && $$.isBarType(v.id);\n        }).forEach(function (v) {\n            var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n            if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {\n                closest = v;\n            }\n        });\n\n        // find closest point from non-bar\n        values.filter(function (v) {\n            return v && !$$.isBarType(v.id);\n        }).forEach(function (v) {\n            var d = $$.dist(v, pos);\n            if (d < minDist) {\n                minDist = d;\n                closest = v;\n            }\n        });\n\n        return closest;\n    };\n    c3_chart_internal_fn.dist = function (data, pos) {\n        var $$ = this,\n            config = $$.config,\n            xIndex = config.axis_rotated ? 1 : 0,\n            yIndex = config.axis_rotated ? 0 : 1,\n            y = $$.circleY(data, data.index),\n            x = $$.x(data.x);\n        return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n    };\n    c3_chart_internal_fn.convertValuesToStep = function (values) {\n        var converted = [].concat(values),\n            i;\n\n        if (!this.isCategorized()) {\n            return values;\n        }\n\n        for (i = values.length + 1; 0 < i; i--) {\n            converted[i] = converted[i - 1];\n        }\n\n        converted[0] = {\n            x: converted[0].x - 1,\n            value: converted[0].value,\n            id: converted[0].id\n        };\n        converted[values.length + 1] = {\n            x: converted[values.length].x + 1,\n            value: converted[values.length].value,\n            id: converted[values.length].id\n        };\n\n        return converted;\n    };\n    c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n        var $$ = this,\n            config = $$.config,\n            current = config['data_' + name];\n        if (typeof attrs === 'undefined') {\n            return current;\n        }\n        Object.keys(attrs).forEach(function (id) {\n            current[id] = attrs[id];\n        });\n        $$.redraw({ withLegend: true });\n        return current;\n    };\n\n    c3_chart_internal_fn.load = function (targets, args) {\n        var $$ = this;\n        if (targets) {\n            // filter loading targets if needed\n            if (args.filter) {\n                targets = targets.filter(args.filter);\n            }\n            // set type if args.types || args.type specified\n            if (args.type || args.types) {\n                targets.forEach(function (t) {\n                    var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n                    $$.setTargetType(t.id, type);\n                });\n            }\n            // Update/Add data\n            $$.data.targets.forEach(function (d) {\n                for (var i = 0; i < targets.length; i++) {\n                    if (d.id === targets[i].id) {\n                        d.values = targets[i].values;\n                        targets.splice(i, 1);\n                        break;\n                    }\n                }\n            });\n            $$.data.targets = $$.data.targets.concat(targets); // add remained\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n\n        if (args.done) {\n            args.done();\n        }\n    };\n    c3_chart_internal_fn.loadFromArgs = function (args) {\n        var $$ = this;\n        if (args.data) {\n            $$.load($$.convertDataToTargets(args.data), args);\n        } else if (args.url) {\n            $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n                $$.load($$.convertDataToTargets(data), args);\n            });\n        } else if (args.json) {\n            $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n        } else if (args.rows) {\n            $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n        } else if (args.columns) {\n            $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n        } else {\n            $$.load(null, args);\n        }\n    };\n    c3_chart_internal_fn.unload = function (targetIds, done) {\n        var $$ = this;\n        if (!done) {\n            done = function done() {};\n        }\n        // filter existing target\n        targetIds = targetIds.filter(function (id) {\n            return $$.hasTarget($$.data.targets, id);\n        });\n        // If no target, call done and return\n        if (!targetIds || targetIds.length === 0) {\n            done();\n            return;\n        }\n        $$.svg.selectAll(targetIds.map(function (id) {\n            return $$.selectorTarget(id);\n        })).transition().style('opacity', 0).remove().call($$.endall, done);\n        targetIds.forEach(function (id) {\n            // Reset fadein for future load\n            $$.withoutFadeIn[id] = false;\n            // Remove target's elements\n            if ($$.legend) {\n                $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n            }\n            // Remove target\n            $$.data.targets = $$.data.targets.filter(function (t) {\n                return t.id !== id;\n            });\n        });\n    };\n\n    c3_chart_internal_fn.getYDomainMin = function (targets) {\n        var $$ = this,\n            config = $$.config,\n            ids = $$.mapToIds(targets),\n            ys = $$.getValuesAsIdKeyed(targets),\n            j,\n            k,\n            baseId,\n            idsInGroup,\n            id,\n            hasNegativeValue;\n        if (config.data_groups.length > 0) {\n            hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) {\n                    return ids.indexOf(id) >= 0;\n                });\n                if (idsInGroup.length === 0) {\n                    continue;\n                }\n                baseId = idsInGroup[0];\n                // Consider negative values\n                if (hasNegativeValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v < 0 ? v : 0;\n                    });\n                }\n                // Compute min\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (!ys[id]) {\n                        continue;\n                    }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.min(Object.keys(ys).map(function (key) {\n            return $$.d3.min(ys[key]);\n        }));\n    };\n    c3_chart_internal_fn.getYDomainMax = function (targets) {\n        var $$ = this,\n            config = $$.config,\n            ids = $$.mapToIds(targets),\n            ys = $$.getValuesAsIdKeyed(targets),\n            j,\n            k,\n            baseId,\n            idsInGroup,\n            id,\n            hasPositiveValue;\n        if (config.data_groups.length > 0) {\n            hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) {\n                    return ids.indexOf(id) >= 0;\n                });\n                if (idsInGroup.length === 0) {\n                    continue;\n                }\n                baseId = idsInGroup[0];\n                // Consider positive values\n                if (hasPositiveValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v > 0 ? v : 0;\n                    });\n                }\n                // Compute max\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (!ys[id]) {\n                        continue;\n                    }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.max(Object.keys(ys).map(function (key) {\n            return $$.d3.max(ys[key]);\n        }));\n    };\n    c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n        var $$ = this,\n            config = $$.config,\n            targetsByAxisId = targets.filter(function (t) {\n            return $$.axis.getId(t.id) === axisId;\n        }),\n            yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n            yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n            yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n            yDomainMin = $$.getYDomainMin(yTargets),\n            yDomainMax = $$.getYDomainMax(yTargets),\n            domain,\n            domainLength,\n            padding,\n            padding_top,\n            padding_bottom,\n            center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n            yDomainAbs,\n            lengths,\n            diff,\n            ratio,\n            isAllPositive,\n            isAllNegative,\n            isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n            isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n            showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n            showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n        // MEMO: avoid inverting domain unexpectedly\n        yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n        yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n        if (yTargets.length === 0) {\n            // use current domain if target of axisId is none\n            return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n        }\n        if (isNaN(yDomainMin)) {\n            // set minimum to zero when not number\n            yDomainMin = 0;\n        }\n        if (isNaN(yDomainMax)) {\n            // set maximum to have same value as yDomainMin\n            yDomainMax = yDomainMin;\n        }\n        if (yDomainMin === yDomainMax) {\n            yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n        }\n        isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n        isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n        // Cancel zerobased if axis_*_min / axis_*_max specified\n        if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n            isZeroBased = false;\n        }\n\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) {\n                yDomainMin = 0;\n            }\n            if (isAllNegative) {\n                yDomainMax = 0;\n            }\n        }\n\n        domainLength = Math.abs(yDomainMax - yDomainMin);\n        padding = padding_top = padding_bottom = domainLength * 0.1;\n\n        if (typeof center !== 'undefined') {\n            yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n            yDomainMax = center + yDomainAbs;\n            yDomainMin = center - yDomainAbs;\n        }\n        // add padding for data label\n        if (showHorizontalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n            diff = diffDomain($$.y.range());\n            ratio = [lengths[0] / diff, lengths[1] / diff];\n            padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n            padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n        } else if (showVerticalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n            padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n            padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n        }\n        if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n        }\n        if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n        }\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) {\n                padding_bottom = yDomainMin;\n            }\n            if (isAllNegative) {\n                padding_top = -yDomainMax;\n            }\n        }\n        domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n        return isInverted ? domain.reverse() : domain;\n    };\n    c3_chart_internal_fn.getXDomainMin = function (targets) {\n        var $$ = this,\n            config = $$.config;\n        return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n            return $$.d3.min(t.values, function (v) {\n                return v.x;\n            });\n        });\n    };\n    c3_chart_internal_fn.getXDomainMax = function (targets) {\n        var $$ = this,\n            config = $$.config;\n        return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n            return $$.d3.max(t.values, function (v) {\n                return v.x;\n            });\n        });\n    };\n    c3_chart_internal_fn.getXDomainPadding = function (domain) {\n        var $$ = this,\n            config = $$.config,\n            diff = domain[1] - domain[0],\n            maxDataCount,\n            padding,\n            paddingLeft,\n            paddingRight;\n        if ($$.isCategorized()) {\n            padding = 0;\n        } else if ($$.hasType('bar')) {\n            maxDataCount = $$.getMaxDataCount();\n            padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n        } else {\n            padding = diff * 0.01;\n        }\n        if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n            paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n            paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n        } else if (typeof config.axis_x_padding === 'number') {\n            paddingLeft = paddingRight = config.axis_x_padding;\n        } else {\n            paddingLeft = paddingRight = padding;\n        }\n        return { left: paddingLeft, right: paddingRight };\n    };\n    c3_chart_internal_fn.getXDomain = function (targets) {\n        var $$ = this,\n            xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n            firstX = xDomain[0],\n            lastX = xDomain[1],\n            padding = $$.getXDomainPadding(xDomain),\n            min = 0,\n            max = 0;\n        // show center of x domain if min and max are the same\n        if (firstX - lastX === 0 && !$$.isCategorized()) {\n            if ($$.isTimeSeries()) {\n                firstX = new Date(firstX.getTime() * 0.5);\n                lastX = new Date(lastX.getTime() * 1.5);\n            } else {\n                firstX = firstX === 0 ? 1 : firstX * 0.5;\n                lastX = lastX === 0 ? -1 : lastX * 1.5;\n            }\n        }\n        if (firstX || firstX === 0) {\n            min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n        }\n        if (lastX || lastX === 0) {\n            max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n        }\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n        var $$ = this,\n            config = $$.config;\n\n        if (withUpdateOrgXDomain) {\n            $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n            $$.orgXDomain = $$.x.domain();\n            if (config.zoom_enabled) {\n                $$.zoom.update();\n            }\n            $$.subX.domain($$.x.domain());\n            if ($$.brush) {\n                $$.brush.updateScale($$.subX);\n            }\n        }\n        if (withUpdateXDomain) {\n            $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.selectionAsValue());\n        }\n\n        // Trim domain when too big by zoom mousemove event\n        if (withTrim) {\n            $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n        }\n\n        return $$.x.domain();\n    };\n    c3_chart_internal_fn.trimXDomain = function (domain) {\n        var zoomDomain = this.getZoomDomain(),\n            min = zoomDomain[0],\n            max = zoomDomain[1];\n        if (domain[0] <= min) {\n            domain[1] = +domain[1] + (min - domain[0]);\n            domain[0] = min;\n        }\n        if (max <= domain[1]) {\n            domain[0] = +domain[0] - (domain[1] - max);\n            domain[1] = max;\n        }\n        return domain;\n    };\n\n    c3_chart_internal_fn.drag = function (mouse) {\n        var $$ = this,\n            config = $$.config,\n            main = $$.main,\n            d3 = $$.d3;\n        var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n        if ($$.hasArcType()) {\n            return;\n        }\n        if (!config.data_selection_enabled) {\n            return;\n        } // do nothing if not selectable\n        if (!config.data_selection_multiple) {\n            return;\n        } // skip when single selection because drag is used for multiple selection\n\n        sx = $$.dragStart[0];\n        sy = $$.dragStart[1];\n        mx = mouse[0];\n        my = mouse[1];\n        minX = Math.min(sx, mx);\n        maxX = Math.max(sx, mx);\n        minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n        maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n\n        main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY);\n        // TODO: binary search when multiple xs\n        main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n            return config.data_selection_isselectable(d);\n        }).each(function (d, i) {\n            var shape = d3.select(this),\n                isSelected = shape.classed(CLASS.SELECTED),\n                isIncluded = shape.classed(CLASS.INCLUDED),\n                _x,\n                _y,\n                _w,\n                _h,\n                toggle,\n                isWithin = false,\n                box;\n            if (shape.classed(CLASS.circle)) {\n                _x = shape.attr(\"cx\") * 1;\n                _y = shape.attr(\"cy\") * 1;\n                toggle = $$.togglePoint;\n                isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n            } else if (shape.classed(CLASS.bar)) {\n                box = getPathBox(this);\n                _x = box.x;\n                _y = box.y;\n                _w = box.width;\n                _h = box.height;\n                toggle = $$.togglePath;\n                isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n            } else {\n                // line/area selection not supported yet\n                return;\n            }\n            if (isWithin ^ isIncluded) {\n                shape.classed(CLASS.INCLUDED, !isIncluded);\n                // TODO: included/unincluded callback here\n                shape.classed(CLASS.SELECTED, !isSelected);\n                toggle.call($$, !isSelected, shape, d, i);\n            }\n        });\n    };\n\n    c3_chart_internal_fn.dragstart = function (mouse) {\n        var $$ = this,\n            config = $$.config;\n        if ($$.hasArcType()) {\n            return;\n        }\n        if (!config.data_selection_enabled) {\n            return;\n        } // do nothing if not selectable\n        $$.dragStart = mouse;\n        $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n        $$.dragging = true;\n    };\n\n    c3_chart_internal_fn.dragend = function () {\n        var $$ = this,\n            config = $$.config;\n        if ($$.hasArcType()) {\n            return;\n        }\n        if (!config.data_selection_enabled) {\n            return;\n        } // do nothing if not selectable\n        $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n        $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n        $$.dragging = false;\n    };\n\n    c3_chart_internal_fn.getYFormat = function (forArc) {\n        var $$ = this,\n            formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n            formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n        return function (v, ratio, id) {\n            var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n            return format.call($$, v, ratio);\n        };\n    };\n    c3_chart_internal_fn.yFormat = function (v) {\n        var $$ = this,\n            config = $$.config,\n            format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.y2Format = function (v) {\n        var $$ = this,\n            config = $$.config,\n            format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.defaultValueFormat = function (v) {\n        return isValue(v) ? +v : \"\";\n    };\n    c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n        return (ratio * 100).toFixed(1) + '%';\n    };\n    c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n        var $$ = this,\n            data_labels = $$.config.data_labels,\n            format,\n            defaultFormat = function defaultFormat(v) {\n            return isValue(v) ? +v : \"\";\n        };\n        // find format according to axis id\n        if (typeof data_labels.format === 'function') {\n            format = data_labels.format;\n        } else if (_typeof(data_labels.format) === 'object') {\n            if (data_labels.format[targetId]) {\n                format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n            } else {\n                format = function format() {\n                    return '';\n                };\n            }\n        } else {\n            format = defaultFormat;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.initGrid = function () {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3;\n        $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n        if (config.grid_x_show) {\n            $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n        }\n        if (config.grid_y_show) {\n            $$.grid.append('g').attr('class', CLASS.ygrids);\n        }\n        if (config.grid_focus_show) {\n            $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n        }\n        $$.xgrid = d3.selectAll([]);\n        if (!config.grid_lines_front) {\n            $$.initGridLines();\n        }\n    };\n    c3_chart_internal_fn.initGridLines = function () {\n        var $$ = this,\n            d3 = $$.d3;\n        $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n        $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n        $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n        $$.xgridLines = d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3,\n            xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n            tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n        $$.xgridAttr = config.axis_rotated ? {\n            'x1': 0,\n            'x2': $$.width,\n            'y1': function y1(d) {\n                return $$.x(d) - tickOffset;\n            },\n            'y2': function y2(d) {\n                return $$.x(d) - tickOffset;\n            }\n        } : {\n            'x1': function x1(d) {\n                return $$.x(d) + tickOffset;\n            },\n            'x2': function x2(d) {\n                return $$.x(d) + tickOffset;\n            },\n            'y1': 0,\n            'y2': $$.height\n        };\n        $$.xgridAttr.opacity = function () {\n            var pos = +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1');\n            return pos === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n        };\n\n        var xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n        var xgridEnter = xgrid.enter().append('line').attr(\"class\", CLASS.xgrid).attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", 0);\n        $$.xgrid = xgridEnter.merge(xgrid);\n        if (!withoutUpdate) {\n            $$.xgrid.attr('x1', $$.xgridAttr.x1).attr('x2', $$.xgridAttr.x2).attr('y1', $$.xgridAttr.y1).attr('y2', $$.xgridAttr.y2).style(\"opacity\", $$.xgridAttr.opacity);\n        }\n        xgrid.exit().remove();\n    };\n\n    c3_chart_internal_fn.updateYGrid = function () {\n        var $$ = this,\n            config = $$.config,\n            gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n        var ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n        var ygridEnter = ygrid.enter().append('line')\n        // TODO: x1, x2, y1, y2, opacity need to be set here maybe\n        .attr('class', CLASS.ygrid);\n        $$.ygrid = ygridEnter.merge(ygrid);\n        $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n        ygrid.exit().remove();\n        $$.smoothLines($$.ygrid, 'grid');\n    };\n\n    c3_chart_internal_fn.gridTextAnchor = function (d) {\n        return d.position ? d.position : \"end\";\n    };\n    c3_chart_internal_fn.gridTextDx = function (d) {\n        return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n    };\n    c3_chart_internal_fn.xGridTextX = function (d) {\n        return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n    };\n    c3_chart_internal_fn.yGridTextX = function (d) {\n        return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n    };\n    c3_chart_internal_fn.updateGrid = function (duration) {\n        var $$ = this,\n            main = $$.main,\n            config = $$.config,\n            xgridLine,\n            xgridLineEnter,\n            ygridLine,\n            ygridLineEnter,\n            xv = $$.xv.bind($$),\n            yv = $$.yv.bind($$),\n            xGridTextX = $$.xGridTextX.bind($$),\n            yGridTextX = $$.yGridTextX.bind($$);\n\n        // hide if arc type\n        $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n        if (config.grid_x_show) {\n            $$.updateXGrid();\n        }\n        xgridLine = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines);\n        // enter\n        xgridLineEnter = xgridLine.enter().append('g').attr(\"class\", function (d) {\n            return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n        });\n        xgridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 0);\n        xgridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr(\"x\", config.axis_rotated ? yGridTextX : xGridTextX).attr(\"y\", xv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n        // udpate\n        $$.xgridLines = xgridLineEnter.merge(xgridLine);\n        // done in d3.transition() of the end of this function\n        // exit\n        xgridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n\n        // Y-Grid\n        if (config.grid_y_show) {\n            $$.updateYGrid();\n        }\n        ygridLine = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines);\n        // enter\n        ygridLineEnter = ygridLine.enter().append('g').attr(\"class\", function (d) {\n            return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n        });\n        ygridLineEnter.append('line').attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 0);\n        ygridLineEnter.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr(\"x\", config.axis_rotated ? xGridTextX : yGridTextX).attr(\"y\", yv).attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n        // update\n        $$.ygridLines = ygridLineEnter.merge(ygridLine);\n        $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n        $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n            return d.text;\n        }).style(\"opacity\", 1);\n        // exit\n        ygridLine.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n    };\n    c3_chart_internal_fn.redrawGrid = function (withTransition, transition) {\n        var $$ = this,\n            config = $$.config,\n            xv = $$.xv.bind($$),\n            lines = $$.xgridLines.select('line'),\n            texts = $$.xgridLines.select('text');\n        return [(withTransition ? lines.transition(transition) : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition(transition) : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n            return d.text;\n        }).style(\"opacity\", 1)];\n    };\n    c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n        var $$ = this,\n            config = $$.config,\n            dataToShow = selectedData.filter(function (d) {\n            return d && isValue(d.value);\n        }),\n            focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n            xx = $$.xx.bind($$);\n        if (!config.tooltip_show) {\n            return;\n        }\n        // Hide when scatter plot exists\n        if ($$.hasType('scatter') || $$.hasArcType()) {\n            return;\n        }\n        focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n        $$.smoothLines(focusEl, 'grid');\n    };\n    c3_chart_internal_fn.hideXGridFocus = function () {\n        this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n    };\n    c3_chart_internal_fn.updateXgridFocus = function () {\n        var $$ = this,\n            config = $$.config;\n        $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n    };\n    c3_chart_internal_fn.generateGridData = function (type, scale) {\n        var $$ = this,\n            gridData = [],\n            xDomain,\n            firstYear,\n            lastYear,\n            i,\n            tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n        if (type === 'year') {\n            xDomain = $$.getXDomain();\n            firstYear = xDomain[0].getFullYear();\n            lastYear = xDomain[1].getFullYear();\n            for (i = firstYear; i <= lastYear; i++) {\n                gridData.push(new Date(i + '-01-01 00:00:00'));\n            }\n        } else {\n            gridData = scale.ticks(10);\n            if (gridData.length > tickNum) {\n                // use only int\n                gridData = gridData.filter(function (d) {\n                    return (\"\" + d).indexOf('.') < 0;\n                });\n            }\n        }\n        return gridData;\n    };\n    c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n        return params ? function (line) {\n            var found = false;\n            [].concat(params).forEach(function (param) {\n                if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n                    found = true;\n                }\n            });\n            return found;\n        } : function () {\n            return true;\n        };\n    };\n    c3_chart_internal_fn.removeGridLines = function (params, forX) {\n        var $$ = this,\n            config = $$.config,\n            toRemove = $$.getGridFilterToRemove(params),\n            toShow = function toShow(line) {\n            return !toRemove(line);\n        },\n            classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n            classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n        $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n        if (forX) {\n            config.grid_x_lines = config.grid_x_lines.filter(toShow);\n        } else {\n            config.grid_y_lines = config.grid_y_lines.filter(toShow);\n        }\n    };\n\n    c3_chart_internal_fn.initEventRect = function () {\n        var $$ = this,\n            config = $$.config;\n\n        $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n        $$.eventRect = $$.main.select('.' + CLASS.eventRects).append('rect').attr('class', CLASS.eventRect);\n\n        // event rect handle zoom event as well\n        if (config.zoom_enabled && $$.zoom) {\n            $$.eventRect.call($$.zoom).on(\"dblclick.zoom\", null);\n            if (config.zoom_initialRange) {\n                // WORKAROUND: Add transition to apply transform immediately when no subchart\n                $$.eventRect.transition().duration(0).call($$.zoom.transform, $$.zoomTransform(config.zoom_initialRange));\n            }\n        }\n    };\n    c3_chart_internal_fn.redrawEventRect = function () {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            x,\n            y,\n            w,\n            h;\n\n        // TODO: rotated not supported yet\n        x = 0;\n        y = 0;\n        w = $$.width;\n        h = $$.height;\n\n        function mouseout() {\n            $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n            $$.hideXGridFocus();\n            $$.hideTooltip();\n            $$.unexpandCircles();\n            $$.unexpandBars();\n        }\n\n        // rects for mouseover\n        $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null);\n\n        $$.eventRect.attr('x', x).attr('y', y).attr('width', w).attr('height', h).on('mouseout', config.interaction_enabled ? function () {\n            if (!config) {\n                return;\n            } // chart is destroyed\n            if ($$.hasArcType()) {\n                return;\n            }\n            mouseout();\n        } : null).on('mousemove', config.interaction_enabled ? function () {\n            var targetsToShow, mouse, closest, sameXData, selectedData;\n\n            if ($$.dragging) {\n                return;\n            } // do nothing when dragging\n            if ($$.hasArcType(targetsToShow)) {\n                return;\n            }\n\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            mouse = d3.mouse(this);\n            closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n            if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n                config.data_onmouseout.call($$.api, $$.mouseover);\n                $$.mouseover = undefined;\n            }\n\n            if (!closest) {\n                mouseout();\n                return;\n            }\n\n            if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n                sameXData = [closest];\n            } else {\n                sameXData = $$.filterByX(targetsToShow, closest.x);\n            }\n\n            // show tooltip when cursor is close to some point\n            selectedData = sameXData.map(function (d) {\n                return $$.addName(d);\n            });\n            $$.showTooltip(selectedData, this);\n\n            // expand points\n            if (config.point_focus_expand_enabled) {\n                $$.unexpandCircles();\n                selectedData.forEach(function (d) {\n                    $$.expandCircles(d.index, d.id, false);\n                });\n            }\n            $$.expandBars(closest.index, closest.id, true);\n\n            // Show xgrid focus line\n            $$.showXGridFocus(selectedData);\n\n            // Show cursor as pointer if point is close to mouse position\n            if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n                if (!$$.mouseover) {\n                    config.data_onmouseover.call($$.api, closest);\n                    $$.mouseover = closest;\n                }\n            }\n        } : null).on('click', config.interaction_enabled ? function () {\n            var targetsToShow, mouse, closest, sameXData;\n            if ($$.hasArcType(targetsToShow)) {\n                return;\n            }\n\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            mouse = d3.mouse(this);\n            closest = $$.findClosestFromTargets(targetsToShow, mouse);\n            if (!closest) {\n                return;\n            }\n            // select if selection enabled\n            if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                if ($$.isScatterType(closest) || !config.data_selection_grouped) {\n                    sameXData = [closest];\n                } else {\n                    sameXData = $$.filterByX(targetsToShow, closest.x);\n                }\n                sameXData.forEach(function (d) {\n                    $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.shape + '-' + d.index).each(function () {\n                        if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n                            $$.toggleShape(this, d, d.index);\n                            config.data_onclick.call($$.api, d, this);\n                        }\n                    });\n                });\n            }\n        } : null).call(config.interaction_enabled && config.data_selection_draggable && $$.drag ? d3.drag().on('drag', function () {\n            $$.drag(d3.mouse(this));\n        }).on('start', function () {\n            $$.dragstart(d3.mouse(this));\n        }).on('end', function () {\n            $$.dragend();\n        }) : function () {});\n    };\n    c3_chart_internal_fn.getMousePosition = function (data) {\n        var $$ = this;\n        return [$$.x(data.x), $$.getYScale(data.id)(data.value)];\n    };\n    c3_chart_internal_fn.dispatchEvent = function (type, mouse) {\n        var $$ = this,\n            selector = '.' + CLASS.eventRect,\n            eventRect = $$.main.select(selector).node(),\n            box = eventRect.getBoundingClientRect(),\n            x = box.left + (mouse ? mouse[0] : 0),\n            y = box.top + (mouse ? mouse[1] : 0),\n            event = document.createEvent(\"MouseEvents\");\n\n        event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n        eventRect.dispatchEvent(event);\n    };\n\n    c3_chart_internal_fn.initLegend = function () {\n        var $$ = this;\n        $$.legendItemTextBox = {};\n        $$.legendHasRendered = false;\n        $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n        if (!$$.config.legend_show) {\n            $$.legend.style('visibility', 'hidden');\n            $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n            return;\n        }\n        // MEMO: call here to update legend box and tranlate for all\n        // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n        $$.updateLegendWithDefaults();\n    };\n    c3_chart_internal_fn.updateLegendWithDefaults = function () {\n        var $$ = this;\n        $$.updateLegend($$.mapToIds($$.data.targets), { withTransform: false, withTransitionForTransform: false, withTransition: false });\n    };\n    c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n        var $$ = this,\n            config = $$.config,\n            insetLegendPosition = {\n            top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n            left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n        };\n\n        $$.margin3 = {\n            top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n            right: NaN,\n            bottom: 0,\n            left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n        };\n    };\n    c3_chart_internal_fn.transformLegend = function (withTransition) {\n        var $$ = this;\n        (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n    };\n    c3_chart_internal_fn.updateLegendStep = function (step) {\n        this.legendStep = step;\n    };\n    c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n        this.legendItemWidth = w;\n    };\n    c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n        this.legendItemHeight = h;\n    };\n    c3_chart_internal_fn.getLegendWidth = function () {\n        var $$ = this;\n        return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n    };\n    c3_chart_internal_fn.getLegendHeight = function () {\n        var $$ = this,\n            h = 0;\n        if ($$.config.legend_show) {\n            if ($$.isLegendRight) {\n                h = $$.currentHeight;\n            } else {\n                h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n            }\n        }\n        return h;\n    };\n    c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n    };\n    c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n    };\n    c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n        var $$ = this;\n        targetIds = $$.mapToTargetIds(targetIds);\n        $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n            return targetIds.indexOf(id) >= 0;\n        }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n            var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n            return opacity.call($$, $$.d3.select(this));\n        });\n    };\n    c3_chart_internal_fn.revertLegend = function () {\n        var $$ = this,\n            d3 = $$.d3;\n        $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n            return $$.opacityForLegend(d3.select(this));\n        });\n    };\n    c3_chart_internal_fn.showLegend = function (targetIds) {\n        var $$ = this,\n            config = $$.config;\n        if (!config.legend_show) {\n            config.legend_show = true;\n            $$.legend.style('visibility', 'visible');\n            if (!$$.legendHasRendered) {\n                $$.updateLegendWithDefaults();\n            }\n        }\n        $$.removeHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n            return $$.opacityForLegend($$.d3.select(this));\n        });\n    };\n    c3_chart_internal_fn.hideLegend = function (targetIds) {\n        var $$ = this,\n            config = $$.config;\n        if (config.legend_show && isEmpty(targetIds)) {\n            config.legend_show = false;\n            $$.legend.style('visibility', 'hidden');\n        }\n        $$.addHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n    };\n    c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n        this.legendItemTextBox = {};\n    };\n    c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n        var $$ = this,\n            config = $$.config;\n        var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n        var paddingTop = 4,\n            paddingRight = 10,\n            maxWidth = 0,\n            maxHeight = 0,\n            posMin = 10,\n            tileWidth = config.legend_item_tile_width + 5;\n        var l,\n            totalLength = 0,\n            offsets = {},\n            widths = {},\n            heights = {},\n            margins = [0],\n            steps = {},\n            step = 0;\n        var withTransition, withTransitionForTransform;\n        var texts, rects, tiles, background;\n\n        // Skip elements when their name is set to null\n        targetIds = targetIds.filter(function (id) {\n            return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n        });\n\n        options = options || {};\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n        function getTextBox(textElement, id) {\n            if (!$$.legendItemTextBox[id]) {\n                $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n            }\n            return $$.legendItemTextBox[id];\n        }\n\n        function updatePositions(textElement, id, index) {\n            var reset = index === 0,\n                isLast = index === targetIds.length - 1,\n                box = getTextBox(textElement, id),\n                itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n                itemHeight = box.height + paddingTop,\n                itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n                areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n                margin,\n                maxLength;\n\n            // MEMO: care about condifion of step, totalLength\n            function updateValues(id, withoutStep) {\n                if (!withoutStep) {\n                    margin = (areaLength - totalLength - itemLength) / 2;\n                    if (margin < posMin) {\n                        margin = (areaLength - itemLength) / 2;\n                        totalLength = 0;\n                        step++;\n                    }\n                }\n                steps[id] = step;\n                margins[step] = $$.isLegendInset ? 10 : margin;\n                offsets[id] = totalLength;\n                totalLength += itemLength;\n            }\n\n            if (reset) {\n                totalLength = 0;\n                step = 0;\n                maxWidth = 0;\n                maxHeight = 0;\n            }\n\n            if (config.legend_show && !$$.isLegendToShow(id)) {\n                widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n                return;\n            }\n\n            widths[id] = itemWidth;\n            heights[id] = itemHeight;\n\n            if (!maxWidth || itemWidth >= maxWidth) {\n                maxWidth = itemWidth;\n            }\n            if (!maxHeight || itemHeight >= maxHeight) {\n                maxHeight = itemHeight;\n            }\n            maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n            if (config.legend_equally) {\n                Object.keys(widths).forEach(function (id) {\n                    widths[id] = maxWidth;\n                });\n                Object.keys(heights).forEach(function (id) {\n                    heights[id] = maxHeight;\n                });\n                margin = (areaLength - maxLength * targetIds.length) / 2;\n                if (margin < posMin) {\n                    totalLength = 0;\n                    step = 0;\n                    targetIds.forEach(function (id) {\n                        updateValues(id);\n                    });\n                } else {\n                    updateValues(id, true);\n                }\n            } else {\n                updateValues(id);\n            }\n        }\n\n        if ($$.isLegendInset) {\n            step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n            $$.updateLegendStep(step);\n        }\n\n        if ($$.isLegendRight) {\n            xForLegend = function xForLegend(id) {\n                return maxWidth * steps[id];\n            };\n            yForLegend = function yForLegend(id) {\n                return margins[steps[id]] + offsets[id];\n            };\n        } else if ($$.isLegendInset) {\n            xForLegend = function xForLegend(id) {\n                return maxWidth * steps[id] + 10;\n            };\n            yForLegend = function yForLegend(id) {\n                return margins[steps[id]] + offsets[id];\n            };\n        } else {\n            xForLegend = function xForLegend(id) {\n                return margins[steps[id]] + offsets[id];\n            };\n            yForLegend = function yForLegend(id) {\n                return maxHeight * steps[id];\n            };\n        }\n        xForLegendText = function xForLegendText(id, i) {\n            return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n        };\n        yForLegendText = function yForLegendText(id, i) {\n            return yForLegend(id, i) + 9;\n        };\n        xForLegendRect = function xForLegendRect(id, i) {\n            return xForLegend(id, i);\n        };\n        yForLegendRect = function yForLegendRect(id, i) {\n            return yForLegend(id, i) - 5;\n        };\n        x1ForLegendTile = function x1ForLegendTile(id, i) {\n            return xForLegend(id, i) - 2;\n        };\n        x2ForLegendTile = function x2ForLegendTile(id, i) {\n            return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n        };\n        yForLegendTile = function yForLegendTile(id, i) {\n            return yForLegend(id, i) + 4;\n        };\n\n        // Define g for legend area\n        l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n            return $$.generateClass(CLASS.legendItem, id);\n        }).style('visibility', function (id) {\n            return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n        }).style('cursor', 'pointer').on('click', function (id) {\n            if (config.legend_item_onclick) {\n                config.legend_item_onclick.call($$, id);\n            } else {\n                if ($$.d3.event.altKey) {\n                    $$.api.hide();\n                    $$.api.show(id);\n                } else {\n                    $$.api.toggle(id);\n                    $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n                }\n            }\n        }).on('mouseover', function (id) {\n            if (config.legend_item_onmouseover) {\n                config.legend_item_onmouseover.call($$, id);\n            } else {\n                $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n                if (!$$.transiting && $$.isTargetToShow(id)) {\n                    $$.api.focus(id);\n                }\n            }\n        }).on('mouseout', function (id) {\n            if (config.legend_item_onmouseout) {\n                config.legend_item_onmouseout.call($$, id);\n            } else {\n                $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n                $$.api.revert();\n            }\n        });\n        l.append('text').text(function (id) {\n            return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n        }).each(function (id, i) {\n            updatePositions(this, id, i);\n        }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n        l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n        l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height);\n\n        // Set background for inset legend\n        background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n        if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n            background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n        }\n\n        texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n            return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n        }) // MEMO: needed for update\n        .each(function (id, i) {\n            updatePositions(this, id, i);\n        });\n        (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n\n        rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n        (withTransition ? rects.transition() : rects).attr('width', function (id) {\n            return widths[id];\n        }).attr('height', function (id) {\n            return heights[id];\n        }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n\n        tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n        (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n            return $$.levelColor($$.cache[id].values[0].value);\n        } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n        if (background) {\n            (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n        }\n\n        // toggle legend state\n        $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n            return !$$.isTargetToShow(id);\n        });\n\n        // Update all to reflect change of legend\n        $$.updateLegendItemWidth(maxWidth);\n        $$.updateLegendItemHeight(maxHeight);\n        $$.updateLegendStep(step);\n        // Update size and scale\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        // Update g positions\n        $$.transformAll(withTransitionForTransform, transitions);\n        $$.legendHasRendered = true;\n    };\n\n    c3_chart_internal_fn.initRegion = function () {\n        var $$ = this;\n        $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n    };\n    c3_chart_internal_fn.updateRegion = function (duration) {\n        var $$ = this,\n            config = $$.config;\n\n        // hide if arc type\n        $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n        var mainRegionEnter = mainRegion.enter().append('rect').attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", 0);\n        $$.mainRegion = mainRegionEnter.merge(mainRegion).attr('class', $$.classRegion.bind($$));\n        mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n    };\n    c3_chart_internal_fn.redrawRegion = function (withTransition, transition) {\n        var $$ = this,\n            regions = $$.mainRegion;\n        return [(withTransition ? regions.transition(transition) : regions).attr(\"x\", $$.regionX.bind($$)).attr(\"y\", $$.regionY.bind($$)).attr(\"width\", $$.regionWidth.bind($$)).attr(\"height\", $$.regionHeight.bind($$)).style(\"fill-opacity\", function (d) {\n            return isValue(d.opacity) ? d.opacity : 0.1;\n        })];\n    };\n    c3_chart_internal_fn.regionX = function (d) {\n        var $$ = this,\n            config = $$.config,\n            xPos,\n            yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n        } else {\n            xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.regionY = function (d) {\n        var $$ = this,\n            config = $$.config,\n            yPos,\n            yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n        } else {\n            yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n        }\n        return yPos;\n    };\n    c3_chart_internal_fn.regionWidth = function (d) {\n        var $$ = this,\n            config = $$.config,\n            start = $$.regionX(d),\n            end,\n            yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n        } else {\n            end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.regionHeight = function (d) {\n        var $$ = this,\n            config = $$.config,\n            start = this.regionY(d),\n            end,\n            yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n        } else {\n            end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.isRegionOnX = function (d) {\n        return !d.axis || d.axis === 'x';\n    };\n\n    c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n        return (forTimeseries ? this.d3.scaleTime() : this.d3.scaleLinear()).range([min, max]);\n    };\n    c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n        var $$ = this,\n            scale = $$.getScale(min, max, $$.isTimeSeries()),\n            _scale = domain ? scale.domain(domain) : scale,\n            key;\n        // Define customized scale if categorized axis\n        if ($$.isCategorized()) {\n            offset = offset || function () {\n                return 0;\n            };\n            scale = function scale(d, raw) {\n                var v = _scale(d) + offset(d);\n                return raw ? v : Math.ceil(v);\n            };\n        } else {\n            scale = function scale(d, raw) {\n                var v = _scale(d);\n                return raw ? v : Math.ceil(v);\n            };\n        }\n        // define functions\n        for (key in _scale) {\n            scale[key] = _scale[key];\n        }\n        scale.orgDomain = function () {\n            return _scale.domain();\n        };\n        // define custom domain() for categorized axis\n        if ($$.isCategorized()) {\n            scale.domain = function (domain) {\n                if (!arguments.length) {\n                    domain = this.orgDomain();\n                    return [domain[0], domain[1] + 1];\n                }\n                _scale.domain(domain);\n                return scale;\n            };\n        }\n        return scale;\n    };\n    c3_chart_internal_fn.getY = function (min, max, domain) {\n        var scale = this.getScale(min, max, this.isTimeSeriesY());\n        if (domain) {\n            scale.domain(domain);\n        }\n        return scale;\n    };\n    c3_chart_internal_fn.getYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n    };\n    c3_chart_internal_fn.getSubYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n    };\n    c3_chart_internal_fn.updateScales = function () {\n        var $$ = this,\n            config = $$.config,\n            forInit = !$$.x;\n        // update edges\n        $$.xMin = config.axis_rotated ? 1 : 0;\n        $$.xMax = config.axis_rotated ? $$.height : $$.width;\n        $$.yMin = config.axis_rotated ? 0 : $$.height;\n        $$.yMax = config.axis_rotated ? $$.width : 1;\n        $$.subXMin = $$.xMin;\n        $$.subXMax = $$.xMax;\n        $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n        $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n        // update scales\n        $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n            return $$.xAxis.tickOffset();\n        });\n        $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n        $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n        $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n            return d % 1 ? 0 : $$.subXAxis.tickOffset();\n        });\n        $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n        $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n        // update axes\n        $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n        $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n        $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n        $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n        $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n        $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n        // Set initialized scales to brush and zoom\n        if (!forInit) {\n            if ($$.brush) {\n                $$.brush.updateScale($$.subX);\n            }\n        }\n        // update for arc\n        if ($$.updateArc) {\n            $$.updateArc();\n        }\n    };\n\n    c3_chart_internal_fn.selectPoint = function (target, d, i) {\n        var $$ = this,\n            config = $$.config,\n            cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n            cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n            r = $$.pointSelectR.bind($$);\n        config.data_onselected.call($$.api, d, target.node());\n        // add selected-circle on low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n            return $$.generateClass(CLASS.selectedCircle, i);\n        }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n            return $$.color(d);\n        }).attr(\"r\", function (d) {\n            return $$.pointSelectR(d) * 1.4;\n        }).transition().duration(100).attr(\"r\", r);\n    };\n    c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$.api, d, target.node());\n        // remove selected-circle from low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n    };\n    c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n        selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n    };\n    c3_chart_internal_fn.selectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100).style(\"fill\", function () {\n                return $$.d3.rgb($$.color(d)).brighter(0.75);\n            });\n        }\n    };\n    c3_chart_internal_fn.unselectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100).style(\"fill\", function () {\n                return $$.color(d);\n            });\n        }\n    };\n    c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n        selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n    };\n    c3_chart_internal_fn.getToggle = function (that, d) {\n        var $$ = this,\n            toggle;\n        if (that.nodeName === 'circle') {\n            if ($$.isStepType(d)) {\n                // circle is hidden in step chart, so treat as within the click area\n                toggle = function toggle() {}; // TODO: how to select step chart?\n            } else {\n                toggle = $$.togglePoint;\n            }\n        } else if (that.nodeName === 'path') {\n            toggle = $$.togglePath;\n        }\n        return toggle;\n    };\n    c3_chart_internal_fn.toggleShape = function (that, d, i) {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            shape = d3.select(that),\n            isSelected = shape.classed(CLASS.SELECTED),\n            toggle = $$.getToggle(that, d).bind($$);\n\n        if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n            if (!config.data_selection_multiple) {\n                $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n                    var shape = d3.select(this);\n                    if (shape.classed(CLASS.SELECTED)) {\n                        toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                    }\n                });\n            }\n            shape.classed(CLASS.SELECTED, !isSelected);\n            toggle(!isSelected, shape, d, i);\n        }\n    };\n\n    c3_chart_internal_fn.initBar = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n    };\n    c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n        var $$ = this,\n            config = $$.config,\n            mainBars,\n            mainBarEnter,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainBars = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n            return classChartBar(d) + classFocus(d);\n        });\n        mainBarEnter = mainBars.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\");\n        // Bars for each data\n        mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n            return config.data_selection_isselectable(d) ? \"pointer\" : null;\n        });\n    };\n    c3_chart_internal_fn.updateBar = function (durationForExit) {\n        var $$ = this,\n            barData = $$.barData.bind($$),\n            classBar = $$.classBar.bind($$),\n            initialOpacity = $$.initialOpacity.bind($$),\n            color = function color(d) {\n            return $$.color(d.id);\n        };\n        var mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n        var mainBarEnter = mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n        $$.mainBar = mainBarEnter.merge(mainBar).style(\"opacity\", initialOpacity);\n        mainBar.exit().transition().duration(durationForExit).style(\"opacity\", 0);\n    };\n    c3_chart_internal_fn.redrawBar = function (drawBar, withTransition, transition) {\n        return [(withTransition ? this.mainBar.transition(transition) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n    };\n    c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n        var $$ = this,\n            config = $$.config,\n            w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n        return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n    };\n    c3_chart_internal_fn.getBars = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandBars = function (i, id, reset) {\n        var $$ = this;\n        if (reset) {\n            $$.unexpandBars();\n        }\n        $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n    };\n    c3_chart_internal_fn.unexpandBars = function (i) {\n        var $$ = this;\n        $$.getBars(i).classed(CLASS.EXPANDED, false);\n    };\n    c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n        var $$ = this,\n            config = $$.config,\n            getPoints = $$.generateGetBarPoints(barIndices, isSub);\n        return function (d, i) {\n            // 4 points that make a bar\n            var points = getPoints(d, i);\n\n            // switch points if axis is rotated, not applicable for sub chart\n            var indexX = config.axis_rotated ? 1 : 0;\n            var indexY = config.axis_rotated ? 0 : 1;\n\n            var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n\n            return path;\n        };\n    };\n    c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n        var $$ = this,\n            axis = isSub ? $$.subXAxis : $$.xAxis,\n            barTargetsNum = barIndices.__max__ + 1,\n            barW = $$.getBarW(axis, barTargetsNum),\n            barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n            barY = $$.getShapeY(!!isSub),\n            barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n            barSpaceOffset = barW * ($$.config.bar_space / 2),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = barOffset(d, i) || y0,\n                // offset is for stacked bar chart\n            posX = barX(d),\n                posY = barY(d);\n            // fix posY not to overflow opposite quadrant\n            if ($$.config.axis_rotated) {\n                if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n                    posY = y0;\n                }\n            }\n            // 4 points that make a bar\n            return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n        };\n    };\n    c3_chart_internal_fn.isWithinBar = function (mouse, that) {\n        var box = that.getBoundingClientRect(),\n            seg0 = that.pathSegList.getItem(0),\n            seg1 = that.pathSegList.getItem(1),\n            x = Math.min(seg0.x, seg1.x),\n            y = Math.min(seg0.y, seg1.y),\n            w = box.width,\n            h = box.height,\n            offset = 2,\n            sx = x - offset,\n            ex = x + w + offset,\n            sy = y + h + offset,\n            ey = y - offset;\n        return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n    };\n\n    c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n        var $$ = this,\n            config = $$.config,\n            indices = {},\n            i = 0,\n            j,\n            k;\n        $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n            for (j = 0; j < config.data_groups.length; j++) {\n                if (config.data_groups[j].indexOf(d.id) < 0) {\n                    continue;\n                }\n                for (k = 0; k < config.data_groups[j].length; k++) {\n                    if (config.data_groups[j][k] in indices) {\n                        indices[d.id] = indices[config.data_groups[j][k]];\n                        break;\n                    }\n                }\n            }\n            if (isUndefined(indices[d.id])) {\n                indices[d.id] = i++;\n            }\n        });\n        indices.__max__ = i - 1;\n        return indices;\n    };\n    c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n        var $$ = this,\n            scale = isSub ? $$.subX : $$.x;\n        return function (d) {\n            var index = d.id in indices ? indices[d.id] : 0;\n            return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n        };\n    };\n    c3_chart_internal_fn.getShapeY = function (isSub) {\n        var $$ = this;\n        return function (d) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n            return scale(d.value);\n        };\n    };\n    c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n        var $$ = this,\n            targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n            targetIds = targets.map(function (t) {\n            return t.id;\n        });\n        return function (d, i) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n                y0 = scale(0),\n                offset = y0;\n            targets.forEach(function (t) {\n                var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n                if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n                    return;\n                }\n                if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n                    // check if the x values line up\n                    if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n                        // \"+\" for timeseries\n                        // if not, try to find the value that does line up\n                        i = -1;\n                        values.forEach(function (v, j) {\n                            if (v.x === d.x) {\n                                i = j;\n                            }\n                        });\n                    }\n                    if (i in values && values[i].value * d.value >= 0) {\n                        offset += scale(values[i].value) - y0;\n                    }\n                }\n            });\n            return offset;\n        };\n    };\n    c3_chart_internal_fn.isWithinShape = function (that, d) {\n        var $$ = this,\n            shape = $$.d3.select(that),\n            isWithin;\n        if (!$$.isTargetToShow(d.id)) {\n            isWithin = false;\n        } else if (that.nodeName === 'circle') {\n            isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n        } else if (that.nodeName === 'path') {\n            isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;\n        }\n        return isWithin;\n    };\n\n    c3_chart_internal_fn.getInterpolate = function (d) {\n        var $$ = this,\n            d3 = $$.d3,\n            types = {\n            'linear': d3.curveLinear,\n            'linear-closed': d3.curveLinearClosed,\n            'basis': d3.curveBasis,\n            'basis-open': d3.curveBasisOpen,\n            'basis-closed': d3.curveBasisClosed,\n            'bundle': d3.curveBundle,\n            'cardinal': d3.curveCardinal,\n            'cardinal-open': d3.curveCardinalOpen,\n            'cardinal-closed': d3.curveCardinalClosed,\n            'monotone': d3.curveMonotoneX,\n            'step': d3.curveStep\n        },\n            type;\n\n        if ($$.isSplineType(d)) {\n            type = types[$$.config.spline_interpolation_type] || types.cardinal;\n        } else if ($$.isStepType(d)) {\n            type = types[$$.config.line_step_type];\n        } else {\n            type = types.linear;\n        }\n        return type;\n    };\n\n    c3_chart_internal_fn.initLine = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n    };\n    c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n        var $$ = this,\n            config = $$.config,\n            mainLines,\n            mainLineEnter,\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$),\n            classCircles = $$.classCircles.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainLines = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n            return classChartLine(d) + classFocus(d);\n        });\n        mainLineEnter = mainLines.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\");\n        // Lines for each data\n        mainLineEnter.append('g').attr(\"class\", classLines);\n        // Areas\n        mainLineEnter.append('g').attr('class', classAreas);\n        // Circles for each data point on lines\n        mainLineEnter.append('g').attr(\"class\", function (d) {\n            return $$.generateClass(CLASS.selectedCircles, d.id);\n        });\n        mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n            return config.data_selection_isselectable(d) ? \"pointer\" : null;\n        });\n        // Update date for selected circles\n        targets.forEach(function (t) {\n            $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n                d.value = t.values[d.index].value;\n            });\n        });\n        // MEMO: can not keep same color...\n        //mainLineUpdate.exit().remove();\n    };\n    c3_chart_internal_fn.updateLine = function (durationForExit) {\n        var $$ = this;\n        var mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n        var mainLineEnter = mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n        $$.mainLine = mainLineEnter.merge(mainLine).style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n            return $$.isStepType(d) ? 'crispEdges' : '';\n        }).attr('transform', null);\n        mainLine.exit().transition().duration(durationForExit).style('opacity', 0);\n    };\n    c3_chart_internal_fn.redrawLine = function (drawLine, withTransition, transition) {\n        return [(withTransition ? this.mainLine.transition(transition) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n    };\n    c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n        var $$ = this,\n            config = $$.config,\n            line = $$.d3.line(),\n            getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function xValue(d) {\n            return (isSub ? $$.subxx : $$.xx).call($$, d);\n        },\n            yValue = function yValue(d, i) {\n            return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n        };\n\n        line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n        if (!config.line_connectNull) {\n            line = line.defined(function (d) {\n                return d.value != null;\n            });\n        }\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x = isSub ? $$.subX : $$.x,\n                y = yScaleGetter.call($$, d.id),\n                x0 = 0,\n                y0 = 0,\n                path;\n            if ($$.isLineType(d)) {\n                if (config.data_regions[d.id]) {\n                    path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n                } else {\n                    if ($$.isStepType(d)) {\n                        values = $$.convertValuesToStep(values);\n                    }\n                    path = line.curve($$.getInterpolate(d))(values);\n                }\n            } else {\n                if (values[0]) {\n                    x0 = x(values[0].x);\n                    y0 = y(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) {\n        // partial duplication of generateGetBarPoints\n        var $$ = this,\n            config = $$.config,\n            lineTargetsNum = lineIndices.__max__ + 1,\n            x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = lineOffset(d, i) || y0,\n                // offset is for stacked area chart\n            posX = x(d),\n                posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n                    posY = y0;\n                }\n            }\n            // 1 point that marks the line position\n            return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n            [posX, posY - (y0 - offset)], // needed for compatibility\n            [posX, posY - (y0 - offset)] // needed for compatibility\n            ];\n        };\n    };\n\n    c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n        var $$ = this,\n            config = $$.config,\n            prev = -1,\n            i,\n            j,\n            s = \"M\",\n            sWithRegion,\n            xp,\n            yp,\n            dx,\n            dy,\n            dd,\n            diff,\n            diffx2,\n            xOffset = $$.isCategorized() ? 0.5 : 0,\n            xValue,\n            yValue,\n            regions = [];\n\n        function isWithinRegions(x, regions) {\n            var i;\n            for (i = 0; i < regions.length; i++) {\n                if (regions[i].start < x && x <= regions[i].end) {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        // Check start/end of regions\n        if (isDefined(_regions)) {\n            for (i = 0; i < _regions.length; i++) {\n                regions[i] = {};\n                if (isUndefined(_regions[i].start)) {\n                    regions[i].start = d[0].x;\n                } else {\n                    regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n                }\n                if (isUndefined(_regions[i].end)) {\n                    regions[i].end = d[d.length - 1].x;\n                } else {\n                    regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n                }\n            }\n        }\n\n        // Set scales\n        xValue = config.axis_rotated ? function (d) {\n            return y(d.value);\n        } : function (d) {\n            return x(d.x);\n        };\n        yValue = config.axis_rotated ? function (d) {\n            return x(d.x);\n        } : function (d) {\n            return y(d.value);\n        };\n\n        // Define svg generator function for region\n        function generateM(points) {\n            return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n        }\n        if ($$.isTimeSeries()) {\n            sWithRegion = function sWithRegion(d0, d1, j, diff) {\n                var x0 = d0.x.getTime(),\n                    x_diff = d1.x - d0.x,\n                    xv0 = new Date(x0 + x_diff * j),\n                    xv1 = new Date(x0 + x_diff * (j + diff)),\n                    points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n                } else {\n                    points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        } else {\n            sWithRegion = function sWithRegion(d0, d1, j, diff) {\n                var points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n                } else {\n                    points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        }\n\n        // Generate\n        for (i = 0; i < d.length; i++) {\n\n            // Draw as normal\n            if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n                s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n            }\n            // Draw with region // TODO: Fix for horizotal charts\n            else {\n                    xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n                    yp = $$.getScale(d[i - 1].value, d[i].value);\n\n                    dx = x(d[i].x) - x(d[i - 1].x);\n                    dy = y(d[i].value) - y(d[i - 1].value);\n                    dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n                    diff = 2 / dd;\n                    diffx2 = diff * 2;\n\n                    for (j = diff; j <= 1; j += diffx2) {\n                        s += sWithRegion(d[i - 1], d[i], j, diff);\n                    }\n                }\n            prev = d[i].x;\n        }\n\n        return s;\n    };\n\n    c3_chart_internal_fn.updateArea = function (durationForExit) {\n        var $$ = this,\n            d3 = $$.d3;\n        var mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n        var mainAreaEnter = mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n            $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n        });\n        $$.mainArea = mainAreaEnter.merge(mainArea).style(\"opacity\", $$.orgAreaOpacity);\n        mainArea.exit().transition().duration(durationForExit).style('opacity', 0);\n    };\n    c3_chart_internal_fn.redrawArea = function (drawArea, withTransition, transition) {\n        return [(withTransition ? this.mainArea.transition(transition) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n    };\n    c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n        var $$ = this,\n            config = $$.config,\n            area = $$.d3.area(),\n            getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function xValue(d) {\n            return (isSub ? $$.subxx : $$.xx).call($$, d);\n        },\n            value0 = function value0(d, i) {\n            return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n        },\n            value1 = function value1(d, i) {\n            return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n        };\n\n        area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n        if (!config.line_connectNull) {\n            area = area.defined(function (d) {\n                return d.value !== null;\n            });\n        }\n\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x0 = 0,\n                y0 = 0,\n                path;\n            if ($$.isAreaType(d)) {\n                if ($$.isStepType(d)) {\n                    values = $$.convertValuesToStep(values);\n                }\n                path = area.curve($$.getInterpolate(d))(values);\n            } else {\n                if (values[0]) {\n                    x0 = $$.x(values[0].x);\n                    y0 = $$.getYScale(d.id)(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.getAreaBaseValue = function () {\n        return 0;\n    };\n    c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) {\n        // partial duplication of generateGetBarPoints\n        var $$ = this,\n            config = $$.config,\n            areaTargetsNum = areaIndices.__max__ + 1,\n            x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = areaOffset(d, i) || y0,\n                // offset is for stacked area chart\n            posX = x(d),\n                posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n                    posY = y0;\n                }\n            }\n            // 1 point that marks the area position\n            return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n            [posX, offset] // needed for compatibility\n            ];\n        };\n    };\n\n    c3_chart_internal_fn.updateCircle = function (cx, cy) {\n        var $$ = this;\n        var mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterData.bind($$));\n        var mainCircleEnter = mainCircle.enter().append(\"circle\").attr(\"class\", $$.classCircle.bind($$)).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.color);\n        $$.mainCircle = mainCircleEnter.merge(mainCircle).style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n        mainCircle.exit().style(\"opacity\", 0);\n    };\n    c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition, transition) {\n        var $$ = this,\n            selectedCircles = $$.main.selectAll('.' + CLASS.selectedCircle);\n        return [(withTransition ? $$.mainCircle.transition(transition) : $$.mainCircle).style('opacity', this.opacityForCircle.bind($$)).style(\"fill\", $$.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(transition) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n    };\n    c3_chart_internal_fn.circleX = function (d) {\n        return d.x || d.x === 0 ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.updateCircleY = function () {\n        var $$ = this,\n            lineIndices,\n            getPoints;\n        if ($$.config.data_groups.length > 0) {\n            lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n            $$.circleY = function (d, i) {\n                return getPoints(d, i)[0][1];\n            };\n        } else {\n            $$.circleY = function (d) {\n                return $$.getYScale(d.id)(d.value);\n            };\n        }\n    };\n    c3_chart_internal_fn.getCircles = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n        var $$ = this,\n            r = $$.pointExpandedR.bind($$);\n        if (reset) {\n            $$.unexpandCircles();\n        }\n        $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n    };\n    c3_chart_internal_fn.unexpandCircles = function (i) {\n        var $$ = this,\n            r = $$.pointR.bind($$);\n        $$.getCircles(i).filter(function () {\n            return $$.d3.select(this).classed(CLASS.EXPANDED);\n        }).classed(CLASS.EXPANDED, false).attr('r', r);\n    };\n    c3_chart_internal_fn.pointR = function (d) {\n        var $$ = this,\n            config = $$.config;\n        return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n    };\n    c3_chart_internal_fn.pointExpandedR = function (d) {\n        var $$ = this,\n            config = $$.config;\n        if (config.point_focus_expand_enabled) {\n            return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n        } else {\n            return $$.pointR(d);\n        }\n    };\n    c3_chart_internal_fn.pointSelectR = function (d) {\n        var $$ = this,\n            config = $$.config;\n        return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n    };\n    c3_chart_internal_fn.isWithinCircle = function (that, r) {\n        var d3 = this.d3,\n            mouse = d3.mouse(that),\n            d3_this = d3.select(that),\n            cx = +d3_this.attr(\"cx\"),\n            cy = +d3_this.attr(\"cy\");\n        return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n    };\n    c3_chart_internal_fn.isWithinStep = function (that, y) {\n        return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n    };\n\n    c3_chart_internal_fn.getCurrentWidth = function () {\n        var $$ = this,\n            config = $$.config;\n        return config.size_width ? config.size_width : $$.getParentWidth();\n    };\n    c3_chart_internal_fn.getCurrentHeight = function () {\n        var $$ = this,\n            config = $$.config,\n            h = config.size_height ? config.size_height : $$.getParentHeight();\n        return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n    };\n    c3_chart_internal_fn.getCurrentPaddingTop = function () {\n        var $$ = this,\n            config = $$.config,\n            padding = isValue(config.padding_top) ? config.padding_top : 0;\n        if ($$.title && $$.title.node()) {\n            padding += $$.getTitlePadding();\n        }\n        return padding;\n    };\n    c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n        var config = this.config;\n        return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n    };\n    c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n        var $$ = this,\n            config = $$.config;\n        if (isValue(config.padding_left)) {\n            return config.padding_left;\n        } else if (config.axis_rotated) {\n            return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n        } else if (!config.axis_y_show || config.axis_y_inner) {\n            // && !config.axis_rotated\n            return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n        }\n    };\n    c3_chart_internal_fn.getCurrentPaddingRight = function () {\n        var $$ = this,\n            config = $$.config,\n            defaultPadding = 10,\n            legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n        if (isValue(config.padding_right)) {\n            return config.padding_right + 1; // 1 is needed not to hide tick line\n        } else if (config.axis_rotated) {\n            return defaultPadding + legendWidthOnRight;\n        } else if (!config.axis_y2_show || config.axis_y2_inner) {\n            // && !config.axis_rotated\n            return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n        }\n    };\n\n    c3_chart_internal_fn.getParentRectValue = function (key) {\n        var parent = this.selectChart.node(),\n            v;\n        while (parent && parent.tagName !== 'BODY') {\n            try {\n                v = parent.getBoundingClientRect()[key];\n            } catch (e) {\n                if (key === 'width') {\n                    // In IE in certain cases getBoundingClientRect\n                    // will cause an \"unspecified error\"\n                    v = parent.offsetWidth;\n                }\n            }\n            if (v) {\n                break;\n            }\n            parent = parent.parentNode;\n        }\n        return v;\n    };\n    c3_chart_internal_fn.getParentWidth = function () {\n        return this.getParentRectValue('width');\n    };\n    c3_chart_internal_fn.getParentHeight = function () {\n        var h = this.selectChart.style('height');\n        return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n    };\n\n    c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n        var $$ = this,\n            config = $$.config,\n            hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n            leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n            leftAxis = $$.main.select('.' + leftAxisClass).node(),\n            svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : { right: 0 },\n            chartRect = $$.selectChart.node().getBoundingClientRect(),\n            hasArc = $$.hasArcType(),\n            svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n        return svgLeft > 0 ? svgLeft : 0;\n    };\n\n    c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n        var $$ = this,\n            position = $$.axis.getLabelPositionById(id);\n        return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n    };\n    c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n        var $$ = this,\n            config = $$.config,\n            h = 30;\n        if (axisId === 'x' && !config.axis_x_show) {\n            return 8;\n        }\n        if (axisId === 'x' && config.axis_x_height) {\n            return config.axis_x_height;\n        }\n        if (axisId === 'y' && !config.axis_y_show) {\n            return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n        }\n        if (axisId === 'y2' && !config.axis_y2_show) {\n            return $$.rotated_padding_top;\n        }\n        // Calculate x axis height when tick rotated\n        if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n        }\n        // Calculate y axis height when tick rotated\n        if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n        }\n        return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n    };\n\n    c3_chart_internal_fn.initBrush = function (scale) {\n        var $$ = this,\n            d3 = $$.d3;\n        // TODO: dynamically change brushY/brushX according to axis_rotated.\n        $$.brush = ($$.config.axis_rotated ? d3.brushY() : d3.brushX()).on(\"brush\", function () {\n            var event = d3.event.sourceEvent;\n            if (event && event.type === \"zoom\") {\n                return;\n            }\n            $$.redrawForBrush();\n        }).on(\"end\", function () {\n            var event = d3.event.sourceEvent;\n            if (event && event.type === \"zoom\") {\n                return;\n            }\n            if ($$.brush.empty() && event && event.type !== 'end') {\n                $$.brush.clear();\n            }\n        });\n        $$.brush.updateExtent = function () {\n            var range = this.scale.range(),\n                extent;\n            if ($$.config.axis_rotated) {\n                extent = [[0, range[0]], [$$.width2, range[1]]];\n            } else {\n                extent = [[range[0], 0], [range[1], $$.height2]];\n            }\n            this.extent(extent);\n            return this;\n        };\n        $$.brush.updateScale = function (scale) {\n            this.scale = scale;\n            return this;\n        };\n        $$.brush.update = function (scale) {\n            this.updateScale(scale || $$.subX).updateExtent();\n            $$.context.select('.' + CLASS.brush).call(this);\n        };\n        $$.brush.clear = function () {\n            $$.context.select('.' + CLASS.brush).call($$.brush.move, null);\n        };\n        $$.brush.selection = function () {\n            return d3.brushSelection($$.context.select('.' + CLASS.brush).node());\n        };\n        $$.brush.selectionAsValue = function (selectionAsValue, withTransition) {\n            var selection, brush;\n            if (selectionAsValue) {\n                if ($$.context) {\n                    selection = [this.scale(selectionAsValue[0]), this.scale(selectionAsValue[1])];\n                    brush = $$.context.select('.' + CLASS.brush);\n                    if (withTransition) {\n                        brush = brush.transition();\n                    }\n                    $$.brush.move(brush, selection);\n                }\n                return [];\n            }\n            selection = $$.brush.selection() || [0, 0];\n            return [this.scale.invert(selection[0]), this.scale.invert(selection[1])];\n        };\n        $$.brush.empty = function () {\n            var selection = $$.brush.selection();\n            return !selection || selection[0] === selection[1];\n        };\n        return $$.brush.updateScale(scale);\n    };\n    c3_chart_internal_fn.initSubchart = function () {\n        var $$ = this,\n            config = $$.config,\n            context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n            visibility = config.subchart_show ? 'visible' : 'hidden';\n\n        // set style\n        context.style('visibility', visibility);\n\n        // Define g for chart area\n        context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart);\n\n        // Define g for bar chart area\n        context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n\n        // Define g for line chart area\n        context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n\n        // Add extent rect for Brush\n        context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush);\n\n        // ATTENTION: This must be called AFTER chart added\n        // Add Axis\n        $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis);\n    };\n    c3_chart_internal_fn.initSubchartBrush = function () {\n        var $$ = this;\n        // Add extent rect for Brush\n        $$.initBrush($$.subX).updateExtent();\n        $$.context.select('.' + CLASS.brush).call($$.brush);\n    };\n    c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n        var $$ = this,\n            context = $$.context,\n            config = $$.config,\n            contextLineEnter,\n            contextLine,\n            contextBarEnter,\n            contextBar,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$);\n\n        if (config.subchart_show) {\n            //-- Bar --//\n            contextBar = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets);\n            contextBarEnter = contextBar.enter().append('g').style('opacity', 0);\n            contextBarEnter.merge(contextBar).attr('class', classChartBar);\n            // Bars for each data\n            contextBarEnter.append('g').attr(\"class\", classBars);\n\n            //-- Line --//\n            contextLine = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets);\n            contextLineEnter = contextLine.enter().append('g').style('opacity', 0);\n            contextLineEnter.merge(contextLine).attr('class', classChartLine);\n            // Lines for each data\n            contextLineEnter.append(\"g\").attr(\"class\", classLines);\n            // Area\n            contextLineEnter.append(\"g\").attr(\"class\", classAreas);\n\n            //-- Brush --//\n            context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n        }\n    };\n    c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n        var $$ = this;\n        var contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n        var contextBarEnter = contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n        contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n        $$.contextBar = contextBarEnter.merge(contextBar).style(\"opacity\", $$.initialOpacity.bind($$));\n    };\n    c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n        (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n        var $$ = this;\n        var contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n        var contextLineEnter = contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n        contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n        $$.contextLine = contextLineEnter.merge(contextLine).style(\"opacity\", $$.initialOpacity.bind($$));\n    };\n    c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n        (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n        var $$ = this,\n            d3 = $$.d3;\n        var contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n        var contextAreaEnter = contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n            $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n        });\n        contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n        $$.contextArea = contextAreaEnter.merge(contextArea).style(\"opacity\", 0);\n    };\n    c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n        (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n    };\n    c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            drawAreaOnSub,\n            drawBarOnSub,\n            drawLineOnSub;\n\n        $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n        // subchart\n        if (config.subchart_show) {\n            // reflect main chart to extent on subchart if zoomed\n            if (d3.event && d3.event.type === 'zoom') {\n                $$.brush.selectionAsValue($$.x.orgDomain());\n            }\n            // update subchart elements if needed\n            if (withSubchart) {\n                // extent rect\n                if (!$$.brush.empty()) {\n                    $$.brush.selectionAsValue($$.x.orgDomain());\n                }\n                // setup drawer - MEMO: this must be called after axis updated\n                drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n                drawBarOnSub = $$.generateDrawBar(barIndices, true);\n                drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n                $$.updateBarForSubchart(duration);\n                $$.updateLineForSubchart(duration);\n                $$.updateAreaForSubchart(duration);\n\n                $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n                $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n                $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n            }\n        }\n    };\n    c3_chart_internal_fn.redrawForBrush = function () {\n        var $$ = this,\n            x = $$.x,\n            d3 = $$.d3,\n            s;\n        $$.redraw({\n            withTransition: false,\n            withY: $$.config.zoom_rescale,\n            withSubchart: false,\n            withUpdateXDomain: true,\n            withEventRect: false,\n            withDimension: false\n        });\n        // update zoom transation binded to event rect\n        s = d3.event.selection || $$.brush.scale.range();\n        $$.main.select('.' + CLASS.eventRect).call($$.zoom.transform, d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0));\n        $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n    };\n    c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n        var $$ = this,\n            subXAxis;\n        if (transitions && transitions.axisSubX) {\n            subXAxis = transitions.axisSubX;\n        } else {\n            subXAxis = $$.context.select('.' + CLASS.axisX);\n            if (withTransition) {\n                subXAxis = subXAxis.transition();\n            }\n        }\n        $$.context.attr(\"transform\", $$.getTranslate('context'));\n        subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n    };\n    c3_chart_internal_fn.getDefaultSelection = function () {\n        var $$ = this,\n            config = $$.config,\n            selection = isFunction(config.axis_x_selection) ? config.axis_x_selection($$.getXDomain($$.data.targets)) : config.axis_x_selection;\n        if ($$.isTimeSeries()) {\n            selection = [$$.parseDate(selection[0]), $$.parseDate(selection[1])];\n        }\n        return selection;\n    };\n\n    c3_chart_internal_fn.initText = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n        $$.mainText = $$.d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateTargetsForText = function (targets) {\n        var $$ = this,\n            classChartText = $$.classChartText.bind($$),\n            classTexts = $$.classTexts.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        var mainText = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets);\n        var mainTextEnter = mainText.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n        mainTextEnter.append('g').attr('class', classTexts);\n        mainTextEnter.merge(mainText).attr('class', function (d) {\n            return classChartText(d) + classFocus(d);\n        });\n    };\n    c3_chart_internal_fn.updateText = function (xForText, yForText, durationForExit) {\n        var $$ = this,\n            config = $$.config,\n            barOrLineData = $$.barOrLineData.bind($$),\n            classText = $$.classText.bind($$);\n        var mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n        var mainTextEnter = mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n            return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n        }).style(\"stroke\", 'none').attr('x', xForText).attr('y', yForText).style(\"fill\", function (d) {\n            return $$.color(d);\n        }).style(\"fill-opacity\", 0);\n        $$.mainText = mainTextEnter.merge(mainText).text(function (d, i, j) {\n            return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n        });\n        mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n    };\n    c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition, transition) {\n        return [(withTransition ? this.mainText.transition(transition) : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n    };\n    c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n        var dummy = this.d3.select('body').append('div').classed('c3', true),\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            font = this.d3.select(element).style('font'),\n            rect;\n        svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n            rect = this.getBoundingClientRect();\n        });\n        dummy.remove();\n        return rect;\n    };\n    c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n        var $$ = this,\n            getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n            getBarPoints = $$.generateGetBarPoints(barIndices, false),\n            getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n            getter = forX ? $$.getXForText : $$.getYForText;\n        return function (d, i) {\n            var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n            return getter.call($$, getPoints(d, i), d, this);\n        };\n    };\n    c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(),\n            xPos,\n            padding;\n        if ($$.config.axis_rotated) {\n            padding = $$.isBarType(d) ? 4 : 6;\n            xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n        } else {\n            xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null) {\n            if (xPos > $$.width) {\n                xPos = $$.width - box.width;\n            } else if (xPos < 0) {\n                xPos = 4;\n            }\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(),\n            yPos;\n        if ($$.config.axis_rotated) {\n            yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n        } else {\n            yPos = points[2][1];\n            if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n                yPos += box.height;\n                if ($$.isBarType(d) && $$.isSafari()) {\n                    yPos -= 3;\n                } else if (!$$.isBarType(d) && $$.isChrome()) {\n                    yPos += 3;\n                }\n            } else {\n                yPos += $$.isBarType(d) ? -3 : -6;\n            }\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null && !$$.config.axis_rotated) {\n            if (yPos < box.height) {\n                yPos = box.height;\n            } else if (yPos > this.height) {\n                yPos = this.height - 4;\n            }\n        }\n        return yPos;\n    };\n\n    c3_chart_internal_fn.initTitle = function () {\n        var $$ = this;\n        $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n    };\n    c3_chart_internal_fn.redrawTitle = function () {\n        var $$ = this;\n        $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n    };\n    c3_chart_internal_fn.xForTitle = function () {\n        var $$ = this,\n            config = $$.config,\n            position = config.title_position || 'left',\n            x;\n        if (position.indexOf('right') >= 0) {\n            x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n        } else if (position.indexOf('center') >= 0) {\n            x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n        } else {\n            // left\n            x = config.title_padding.left;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.yForTitle = function () {\n        var $$ = this;\n        return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n    };\n    c3_chart_internal_fn.getTitlePadding = function () {\n        var $$ = this;\n        return $$.yForTitle() + $$.config.title_padding.bottom;\n    };\n\n    c3_chart_internal_fn.initTooltip = function () {\n        var $$ = this,\n            config = $$.config,\n            i;\n        $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\");\n        // Show tooltip if needed\n        if (config.tooltip_init_show) {\n            if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n                config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n                for (i = 0; i < $$.data.targets[0].values.length; i++) {\n                    if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n                        break;\n                    }\n                }\n                config.tooltip_init_x = i;\n            }\n            $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n                return $$.addName(d.values[config.tooltip_init_x]);\n            }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n            $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n        }\n    };\n    c3_chart_internal_fn.getTooltipSortFunction = function () {\n        var $$ = this,\n            config = $$.config;\n\n        if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n            // if data are not grouped or if an order is specified\n            // for the tooltip values we sort them by their values\n\n            var order = config.tooltip_order;\n            if (order === undefined) {\n                order = config.data_order;\n            }\n\n            var valueOf = function valueOf(obj) {\n                return obj ? obj.value : null;\n            };\n\n            // if data are not grouped, we sort them by their value\n            if (isString(order) && order.toLowerCase() === 'asc') {\n                return function (a, b) {\n                    return valueOf(a) - valueOf(b);\n                };\n            } else if (isString(order) && order.toLowerCase() === 'desc') {\n                return function (a, b) {\n                    return valueOf(b) - valueOf(a);\n                };\n            } else if (isFunction(order)) {\n\n                // if the function is from data_order we need\n                // to wrap the returned function in order to format\n                // the sorted value to the expected format\n\n                var sortFunction = order;\n\n                if (config.tooltip_order === undefined) {\n                    sortFunction = function sortFunction(a, b) {\n                        return order(a ? {\n                            id: a.id,\n                            values: [a]\n                        } : null, b ? {\n                            id: b.id,\n                            values: [b]\n                        } : null);\n                    };\n                }\n\n                return sortFunction;\n            } else if (isArray(order)) {\n                return function (a, b) {\n                    return order.indexOf(a.id) - order.indexOf(b.id);\n                };\n            }\n        } else {\n            // if data are grouped, we follow the order of grouped targets\n            var ids = $$.orderTargets($$.data.targets).map(function (i) {\n                return i.id;\n            });\n\n            // if it was either asc or desc we need to invert the order\n            // returned by orderTargets\n            if ($$.isOrderAsc() || $$.isOrderDesc()) {\n                ids = ids.reverse();\n            }\n\n            return function (a, b) {\n                return ids.indexOf(a.id) - ids.indexOf(b.id);\n            };\n        }\n    };\n    c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n        var $$ = this,\n            config = $$.config,\n            titleFormat = config.tooltip_format_title || defaultTitleFormat,\n            nameFormat = config.tooltip_format_name || function (name) {\n            return name;\n        },\n            valueFormat = config.tooltip_format_value || defaultValueFormat,\n            text,\n            i,\n            title,\n            value,\n            name,\n            bgcolor;\n\n        var tooltipSortFunction = this.getTooltipSortFunction();\n        if (tooltipSortFunction) {\n            d.sort(tooltipSortFunction);\n        }\n\n        for (i = 0; i < d.length; i++) {\n            if (!(d[i] && (d[i].value || d[i].value === 0))) {\n                continue;\n            }\n\n            if (!text) {\n                title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n                text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n            }\n\n            value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n            if (value !== undefined) {\n                // Skip elements when their name is set to null\n                if (d[i].name === null) {\n                    continue;\n                }\n                name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n                bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n                text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n                text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n                text += \"<td class='value'>\" + value + \"</td>\";\n                text += \"</tr>\";\n            }\n        }\n        return text + \"</table>\";\n    };\n    c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3;\n        var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n        var forArc = $$.hasArcType(),\n            mouse = d3.mouse(element);\n        // Determin tooltip position\n        if (forArc) {\n            tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n            tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n        } else {\n            svgLeft = $$.getSvgLeft(true);\n            if (config.axis_rotated) {\n                tooltipLeft = svgLeft + mouse[0] + 100;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = $$.x(dataToShow[0].x) + 20;\n            } else {\n                tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = mouse[1] + 15;\n            }\n\n            if (tooltipRight > chartRight) {\n                // 20 is needed for Firefox to keep tooltip width\n                tooltipLeft -= tooltipRight - chartRight + 20;\n            }\n            if (tooltipTop + tHeight > $$.currentHeight) {\n                tooltipTop -= tHeight + 30;\n            }\n        }\n        if (tooltipTop < 0) {\n            tooltipTop = 0;\n        }\n        return { top: tooltipTop, left: tooltipLeft };\n    };\n    c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n        var $$ = this,\n            config = $$.config;\n        var tWidth, tHeight, position;\n        var forArc = $$.hasArcType(),\n            dataToShow = selectedData.filter(function (d) {\n            return d && isValue(d.value);\n        }),\n            positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n        if (dataToShow.length === 0 || !config.tooltip_show) {\n            return;\n        }\n        $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n        // Get tooltip dimensions\n        tWidth = $$.tooltip.property('offsetWidth');\n        tHeight = $$.tooltip.property('offsetHeight');\n\n        position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n        // Set tooltip\n        $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n    };\n    c3_chart_internal_fn.hideTooltip = function () {\n        this.tooltip.style(\"display\", \"none\");\n    };\n\n    c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n        var $$ = this,\n            config = $$.config;\n        $$.mapToTargetIds(targetIds).forEach(function (id) {\n            $$.withoutFadeIn[id] = type === config.data_types[id];\n            config.data_types[id] = type;\n        });\n        if (!targetIds) {\n            config.data_type = type;\n        }\n    };\n    c3_chart_internal_fn.hasType = function (type, targets) {\n        var $$ = this,\n            types = $$.config.data_types,\n            has = false;\n        targets = targets || $$.data.targets;\n        if (targets && targets.length) {\n            targets.forEach(function (target) {\n                var t = types[target.id];\n                if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n                    has = true;\n                }\n            });\n        } else if (Object.keys(types).length) {\n            Object.keys(types).forEach(function (id) {\n                if (types[id] === type) {\n                    has = true;\n                }\n            });\n        } else {\n            has = $$.config.data_type === type;\n        }\n        return has;\n    };\n    c3_chart_internal_fn.hasArcType = function (targets) {\n        return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n    };\n    c3_chart_internal_fn.isLineType = function (d) {\n        var config = this.config,\n            id = isString(d) ? d : d.id;\n        return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isStepType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isSplineType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isAreaType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isBarType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'bar';\n    };\n    c3_chart_internal_fn.isScatterType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'scatter';\n    };\n    c3_chart_internal_fn.isPieType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'pie';\n    };\n    c3_chart_internal_fn.isGaugeType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'gauge';\n    };\n    c3_chart_internal_fn.isDonutType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'donut';\n    };\n    c3_chart_internal_fn.isArcType = function (d) {\n        return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n    };\n    c3_chart_internal_fn.lineData = function (d) {\n        return this.isLineType(d) ? [d] : [];\n    };\n    c3_chart_internal_fn.arcData = function (d) {\n        return this.isArcType(d.data) ? [d] : [];\n    };\n    /* not used\n     function scatterData(d) {\n     return isScatterType(d) ? d.values : [];\n     }\n     */\n    c3_chart_internal_fn.barData = function (d) {\n        return this.isBarType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.lineOrScatterData = function (d) {\n        return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.barOrLineData = function (d) {\n        return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n    };\n\n    c3_chart_internal_fn.isSafari = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n    };\n    c3_chart_internal_fn.isChrome = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Chrome') >= 0;\n    };\n\n    c3_chart_internal_fn.initZoom = function () {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            startEvent;\n\n        $$.zoom = d3.zoom().on(\"start\", function () {\n            var e = d3.event.sourceEvent;\n            if (e && e.type === \"brush\") {\n                return;\n            }\n            startEvent = e;\n            config.zoom_onzoomstart.call($$.api, e);\n        }).on(\"zoom\", function () {\n            var e = d3.event.sourceEvent;\n            if (e && e.type === \"brush\") {\n                return;\n            }\n            $$.redrawForZoom.call($$);\n        }).on('end', function () {\n            var e = d3.event.sourceEvent;\n            if (e && e.type === \"brush\") {\n                return;\n            }\n            // if click, do nothing. otherwise, click interaction will be canceled.\n            if (e && startEvent.clientX === e.clientX && startEvent.clientY === e.clientY) {\n                return;\n            }\n            config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n        });\n\n        $$.zoom.updateDomain = function () {\n            if (d3.event && d3.event.transform) {\n                $$.x.domain(d3.event.transform.rescaleX($$.subX).domain());\n            }\n            return this;\n        };\n        $$.zoom.updateExtent = function () {\n            this.scaleExtent([1, Infinity]).translateExtent([[0, 0], [$$.width, $$.height]]).extent([[0, 0], [$$.width, $$.height]]);\n            return this;\n        };\n        $$.zoom.update = function () {\n            return this.updateExtent().updateDomain();\n        };\n\n        return $$.zoom.updateExtent();\n    };\n    c3_chart_internal_fn.zoomTransform = function (range) {\n        var $$ = this,\n            s = [$$.x(range[0]), $$.x(range[1])];\n        return $$.d3.zoomIdentity.scale($$.width / (s[1] - s[0])).translate(-s[0], 0);\n    };\n\n    c3_chart_internal_fn.getZoomDomain = function () {\n        var $$ = this,\n            config = $$.config,\n            d3 = $$.d3,\n            min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n            max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n        return [min, max];\n    };\n    c3_chart_internal_fn.redrawForZoom = function () {\n        var $$ = this,\n            d3 = $$.d3,\n            config = $$.config,\n            zoom = $$.zoom,\n            x = $$.x;\n        if (!config.zoom_enabled) {\n            return;\n        }\n        if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n            return;\n        }\n\n        zoom.update();\n\n        if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n            x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n        }\n        $$.redraw({\n            withTransition: false,\n            withY: config.zoom_rescale,\n            withSubchart: false,\n            withEventRect: false,\n            withDimension: false\n        });\n        if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') {\n            $$.cancelClick = true;\n        }\n        config.zoom_onzoom.call($$.api, x.orgDomain());\n    };\n\n    return c3;\n\n})));\n\n","// svg-pan-zoom v3.5.2\n// https://github.com/ariutta/svg-pan-zoom\n!function t(e,o,n){function i(r,a){if(!o[r]){if(!e[r]){var l=\"function\"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error(\"Cannot find module '\"+r+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var h=o[r]={exports:{}};e[r][0].call(h.exports,function(t){var o=e[r][1][t];return i(o?o:t)},h,h.exports,t,e,o,n)}return o[r].exports}for(var s=\"function\"==typeof require&&require,r=0;r<n.length;r++)i(n[r]);return i}({1:[function(t,e,o){var n=t(\"./svg-pan-zoom.js\");!function(t,o){\"function\"==typeof define&&define.amd?define(\"svg-pan-zoom\",[],function(){return n}):\"undefined\"!=typeof e&&e.exports&&(e.exports=n,t.svgPanZoom=n)}(window,document)},{\"./svg-pan-zoom.js\":4}],2:[function(t,e,o){var n=t(\"./svg-utilities\");e.exports={enable:function(t){var e=t.svg.querySelector(\"defs\");e||(e=document.createElementNS(n.svgNS,\"defs\"),t.svg.appendChild(e));var o=e.querySelector(\"style#svg-pan-zoom-controls-styles\");if(!o){var i=document.createElementNS(n.svgNS,\"style\");i.setAttribute(\"id\",\"svg-pan-zoom-controls-styles\"),i.setAttribute(\"type\",\"text/css\"),i.textContent=\".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }\",e.appendChild(i)}var s=document.createElementNS(n.svgNS,\"g\");s.setAttribute(\"id\",\"svg-pan-zoom-controls\"),s.setAttribute(\"transform\",\"translate(\"+(t.width-70)+\" \"+(t.height-76)+\") scale(0.75)\"),s.setAttribute(\"class\",\"svg-pan-zoom-control\"),s.appendChild(this._createZoomIn(t)),s.appendChild(this._createZoomReset(t)),s.appendChild(this._createZoomOut(t)),t.svg.appendChild(s),t.controlIcons=s},_createZoomIn:function(t){var e=document.createElementNS(n.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-in\"),e.setAttribute(\"transform\",\"translate(30.5 5) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomIn()},!1);var o=document.createElementNS(n.svgNS,\"rect\");o.setAttribute(\"x\",\"0\"),o.setAttribute(\"y\",\"0\"),o.setAttribute(\"width\",\"1500\"),o.setAttribute(\"height\",\"1400\"),o.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(o);var i=document.createElementNS(n.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},_createZoomReset:function(t){var e=document.createElementNS(n.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-reset-pan-zoom\"),e.setAttribute(\"transform\",\"translate(5 35) scale(0.4)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().reset()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().reset()},!1);var o=document.createElementNS(n.svgNS,\"rect\");o.setAttribute(\"x\",\"2\"),o.setAttribute(\"y\",\"2\"),o.setAttribute(\"width\",\"182\"),o.setAttribute(\"height\",\"58\"),o.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(o);var i=document.createElementNS(n.svgNS,\"path\");i.setAttribute(\"d\",\"M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i);var s=document.createElementNS(n.svgNS,\"path\");return s.setAttribute(\"d\",\"M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z\"),s.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(s),e},_createZoomOut:function(t){var e=document.createElementNS(n.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-out\"),e.setAttribute(\"transform\",\"translate(30.5 70) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomOut()},!1);var o=document.createElementNS(n.svgNS,\"rect\");o.setAttribute(\"x\",\"0\"),o.setAttribute(\"y\",\"0\"),o.setAttribute(\"width\",\"1500\"),o.setAttribute(\"height\",\"1400\"),o.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(o);var i=document.createElementNS(n.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{\"./svg-utilities\":5}],3:[function(t,e,o){var n=t(\"./svg-utilities\"),i=t(\"./utilities\"),s=function(t,e){this.init(t,e)};s.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=i.proxy(this.updateCTM,this),this.requestAnimationFrame=i.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var o=this.processCTM();this.setCTM(o),this.updateCTM()},s.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute(\"viewBox\");if(t){var e=t.split(/[\\s\\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var o=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=o,this.activeState.x=(this.options.width-this.viewBox.width*o)/2,this.activeState.y=(this.options.height-this.viewBox.height*o)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute(\"viewBox\")}else this.simpleViewBoxCache()},s.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},s.prototype.getViewBox=function(){return i.extend({},this.viewBox)},s.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var o=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),n=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=o,t.f=n}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},s.prototype.getOriginalState=function(){return i.extend({},this.originalState)},s.prototype.getState=function(){return i.extend({},this.activeState)},s.prototype.getZoom=function(){return this.activeState.zoom},s.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},s.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},s.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},s.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},s.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),o=this.isPanDifferent(t);if(e||o){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),o){var n=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),s=!1,r=!1;n===!1?(t.e=this.getPan().x,t.f=this.getPan().y,s=r=!0):i.isObject(n)&&(n.x===!1?(t.e=this.getPan().x,s=!0):i.isNumber(n.x)&&(t.e=n.x),n.y===!1?(t.f=this.getPan().y,r=!0):i.isNumber(n.y)&&(t.f=n.y)),s&&r||!this.isPanDifferent(t)?o=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||o)&&this.updateCTMOnNextFrame()}},s.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},s.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},s.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},s.prototype.pendingUpdate=!1,s.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},s.prototype.updateCTM=function(){var t=this.getCTM();n.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new s(t,e)}},{\"./svg-utilities\":5,\"./utilities\":7}],4:[function(t,e,o){var n=t(\"./uniwheel\"),i=t(\"./control-icons\"),s=t(\"./utilities\"),r=t(\"./svg-utilities\"),a=t(\"./shadow-viewport\"),l=function(t,e){this.init(t,e)},u={viewportSelector:\".svg-pan-zoom_viewport\",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:\"auto\",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var o=this;this.svg=t,this.defs=t.querySelector(\"defs\"),r.setupSvgAttributes(this.svg),this.options=s.extend(s.extend({},u),e),this.state=\"none\";var n=r.getBoundingClientRectNormalized(t);this.width=n.width,this.height=n.height,this.viewport=a(r.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){if(o.viewport&&o.options.beforeZoom)return o.options.beforeZoom(t,e)},onZoom:function(t){if(o.viewport&&o.options.onZoom)return o.options.onZoom(t)},beforePan:function(t,e){if(o.viewport&&o.options.beforePan)return o.options.beforePan(t,e)},onPan:function(t){if(o.viewport&&o.options.onPan)return o.options.onPan(t)},onUpdatedCTM:function(t){if(o.viewport&&o.options.onUpdatedCTM)return o.options.onUpdatedCTM(t)}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&i.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(o){var n=t.handleMouseDown(o,e);return e=o,n},touchstart:function(o){var n=t.handleMouseDown(o,e);return e=o,n},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var o=this.options.customEventsHandler.haltEventListeners;if(o&&o.length)for(var n=o.length-1;n>=0;n--)this.eventListeners.hasOwnProperty(o[n])&&delete this.eventListeners[o[n]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},n.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(n.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&\"none\"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,o=Date.now()-this.lastMouseWheelEventTime,n=3+Math.max(0,30-o);this.lastMouseWheelEventTime=Date.now(),\"deltaMode\"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=-.3<e&&e<.3?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/n;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,o){var n=this.viewport.getOriginalState();o?(t=Math.max(this.options.minZoom*n.zoom,Math.min(this.options.maxZoom*n.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*n.zoom?t=this.options.minZoom*n.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*n.zoom&&(t=this.options.maxZoom*n.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,o){if(o&&(t=this.computeFromRelativeZoom(t)),\"SVGPoint\"!==s.getType(e)){if(!(\"x\"in e&&\"y\"in e))throw new Error(\"Given point is invalid\");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,o)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute(\"class\")||\"\";if(e.indexOf(\"svg-pan-zoom-control\")>-1)return!1}var o;o=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var n=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(o,n)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state=\"pan\",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),o=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(o)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&(this.state=\"none\")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),o=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:o})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,o){return t.publicZoomAtPoint(e,o,!0),t.pi},zoomAtPointBy:function(e,o){return t.publicZoomAtPoint(e,o,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var o=s.getSvg(t);if(null===o)return null;for(var n=h.length-1;n>=0;n--)if(h[n].svg===o)return h[n].instance.getPublicInstance();return h.push({svg:o,instance:new l(o,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{\"./control-icons\":2,\"./shadow-viewport\":3,\"./svg-utilities\":5,\"./uniwheel\":6,\"./utilities\":7}],5:[function(t,e,o){var n=t(\"./utilities\"),i=\"unknown\";document.documentMode&&(i=\"ie\"),e.exports={svgNS:\"http://www.w3.org/2000/svg\",xmlNS:\"http://www.w3.org/XML/1998/namespace\",xmlnsNS:\"http://www.w3.org/2000/xmlns/\",xlinkNS:\"http://www.w3.org/1999/xlink\",evNS:\"http://www.w3.org/2001/xml-events\",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error(\"Cannot get BoundingClientRect for SVG.\")},getOrCreateViewport:function(t,e){var o=null;if(o=n.isElement(e)?e:t.querySelector(e),!o){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return\"defs\"!==t.nodeName&&\"#text\"!==t.nodeName});1===i.length&&\"g\"===i[0].nodeName&&null===i[0].getAttribute(\"transform\")&&(o=i[0])}if(!o){var s=\"viewport-\"+(new Date).toISOString().replace(/\\D/g,\"\");o=document.createElementNS(this.svgNS,\"g\"),o.setAttribute(\"id\",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)\"defs\"!==r[r.length-a].nodeName&&o.appendChild(r[r.length-a]);t.appendChild(o)}var l=[];return o.getAttribute(\"class\")&&(l=o.getAttribute(\"class\").split(\" \")),~l.indexOf(\"svg-pan-zoom_viewport\")||(l.push(\"svg-pan-zoom_viewport\"),o.setAttribute(\"class\",l.join(\" \"))),o},setupSvgAttributes:function(t){if(t.setAttribute(\"xmlns\",this.svgNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:xlink\",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:ev\",this.evNS),null!==t.parentNode){var e=t.getAttribute(\"style\")||\"\";e.toLowerCase().indexOf(\"overflow\")===-1&&t.setAttribute(\"style\",\"overflow: hidden; \"+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:n.throttle(function(){for(var t=document.querySelectorAll(\"defs\"),e=t.length,o=0;o<e;o++){var n=t[o];n.parentNode.insertBefore(n,n)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,o){var n=this,s=\"matrix(\"+e.a+\",\"+e.b+\",\"+e.c+\",\"+e.d+\",\"+e.e+\",\"+e.f+\")\";t.setAttributeNS(null,\"transform\",s),\"transform\"in t.style?t.style.transform=s:\"-ms-transform\"in t.style?t.style[\"-ms-transform\"]=s:\"-webkit-transform\"in t.style&&(t.style[\"-webkit-transform\"]=s),\"ie\"===i&&o&&(o.parentNode.insertBefore(o,o),window.setTimeout(function(){n.refreshDefsGlobal()},n.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var o=e.createSVGPoint();return n.mouseAndTouchNormalize(t,e),o.x=t.clientX,o.y=t.clientY,o},getSvgCenterPoint:function(t,e,o){return this.createSVGPoint(t,e/2,o/2)},createSVGPoint:function(t,e,o){var n=t.createSVGPoint();return n.x=e,n.y=o,n}}},{\"./utilities\":7}],6:[function(t,e,o){e.exports=function(){function t(t,e,o){var n=function(t){!t&&(t=window.event);var o={originalEvent:t,target:t.target||t.srcElement,type:\"wheel\",deltaMode:\"MozMousePixelScroll\"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return\"mousewheel\"==u?(o.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(o.deltaX=-.025*t.wheelDeltaX)):o.deltaY=t.detail,e(o)};return c.push({element:t,fn:n,capture:o}),n}function e(t,e){for(var o=0;o<c.length;o++)if(c[o].element===t&&c[o].capture===e)return c[o].fn;return function(){}}function o(t,e){for(var o=0;o<c.length;o++)if(c[o].element===t&&c[o].capture===e)return c.splice(o,1)}function n(e,o,n,i){var s;s=\"wheel\"===u?n:t(e,n,i),e[a](h+o,s,i||!1)}function i(t,n,i,s){var r;r=\"wheel\"===u?i:e(t,s),t[l](h+n,r,s||!1),o(t,s)}function s(t,e,o){n(t,u,e,o),\"DOMMouseScroll\"==u&&n(t,\"MozMousePixelScroll\",e,o)}function r(t,e,o){i(t,u,e,o),\"DOMMouseScroll\"==u&&i(t,\"MozMousePixelScroll\",e,o)}var a,l,u,h=\"\",c=[];return window.addEventListener?(a=\"addEventListener\",l=\"removeEventListener\"):(a=\"attachEvent\",l=\"detachEvent\",h=\"on\"),u=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",{on:s,off:r}}()},{}],7:[function(t,e,o){function n(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var o in e)this.isObject(e[o])?t[o]=this.extend(t[o],e[o]):t[o]=e[o];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&\"object\"==typeof t&&null!==t&&1===t.nodeType&&\"string\"==typeof t.nodeName},isObject:function(t){return\"[object Object]\"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,o;if(this.isElement(t))e=t;else{if(!(\"string\"==typeof t||t instanceof String))throw new Error(\"Provided selector is not an HTML object nor String\");if(e=document.querySelector(t),!e)throw new Error(\"Provided selector did not find any elements. Selector: \"+t)}if(\"svg\"===e.tagName.toLowerCase())o=e;else if(\"object\"===e.tagName.toLowerCase())o=e.contentDocument.documentElement;else{if(\"embed\"!==e.tagName.toLowerCase())throw\"img\"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an \"img\" element. Please use an \"object\" element or an in-line SVG.'):new Error(\"Cannot get SVG.\");o=e.getSVGDocument().documentElement}return o},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\\[object\\s/,\"\").replace(/\\]$/,\"\")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.touches&&t.touches.length){if(void 0!==t.touches[0].clientX)t.clientX=t.touches[0].clientX,t.clientY=t.touches[0].clientY;else if(void 0!==t.touches[0].pageX){var o=e.getBoundingClientRect();t.clientX=t.touches[0].pageX-o.left,t.clientY=t.touches[0].pageY-o.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var o=t.timeStamp-e.timeStamp,n=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return o<250&&n<10}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,o){var n,i,s,r=this,a=null,l=0;o||(o={});var u=function(){l=o.leading===!1?0:r.now(),a=null,s=t.apply(n,i),a||(n=i=null)};return function(){var h=r.now();l||o.leading!==!1||(l=h);var c=e-(h-l);return n=this,i=arguments,c<=0||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(n,i),a||(n=i=null)):a||o.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return\"auto\"!==t&&t<60&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||n(33):n(e)}}},{}]},{},[1]);\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Combine the SWISH components.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('jswish',[ \"jquery\",\n\t \"config\",\n\t \"preferences\",\n\t \"history\",\n\t \"modal\",\n\t \"chat\",\n\t \"splitter\",\n\t \"bootstrap\",\n\t \"pane\",\n\t \"tabbed\",\n\t \"notebook\",\n\t \"navbar\",\n\t \"search\",\n\t \"editor\",\n\t \"query\",\n\t \"runner\",\n\t \"term\",\n\t \"laconic\",\n\t \"login\",\n\t \"chatroom\",\n\t \"d3\",\n\t \"c3\",\n\t \"svg-pan-zoom\"\n       ], function($, config, preferences, history, modal) {\n\npreferences.setDefault(\"semantic-highlighting\", true);\npreferences.setDefault(\"emacs-keybinding\", false);\npreferences.setDefault(\"new-tab\", true);\npreferences.setDefault(\"preserve-state\", true);\npreferences.setInform(\"preserve-state\", \".unloadable\");\n\n(function($) {\n  var pluginName = 'swish';\n\n  function glyph(name, func) {\n    func.glyph = name;\n    return func;\n  }\n\n  function icon(name, func) {\n    func.typeIcon = name;\n    return func;\n  }\n\n  var defaults = {\n    menu: {\n      \"File\":\n      { \"Save ...\": glyph(\"cloud-upload\", function() {\n\t  menuBroadcast(\"save\", \"as\");\n\t}),\n\t\"Info & history ...\": glyph(\"info-sign\", function() {\n\t  menuBroadcast(\"fileInfo\");\n\t}),\n\t\"Reload\": glyph(\"refresh\", function() {\n\t  menuBroadcast(\"reload\");\n\t}),\n\t\"Open recent\": {\n\t  type: \"submenu\",\n\t  glyph: \"paperclip\",\n\t  action: function(ev) {\n\t    history.openRecent(ev, $(this).data('document'));\n\t  },\n\t  update: history.updateRecentUL\n\t},\n\t\"Share\": \"--\",\n\t\"Follow ...\": config.http.locations.follow_file_options ?\n\t\t      glyph(\"eye-open\", function() {\n\t  menuBroadcast(\"follow-file\");\n\t}) : undefined,\n\t\"Start TogetherJS ...\": icon(\"togetherjs\", function() {\n\t  $(\"body\").swish('collaborate');\n\t}),\n\t\"Export\": \"--\",\n\t\"Download\": glyph(\"floppy-save\", function() {\n\t  menuBroadcast(\"download\");\n\t}),\n\t\"Print ...\": glyph(\"print\", function() {\n\t  menuBroadcast(\"print\");\n\t})\n      },\n      \"Edit\":\n      { \"Clear messages\": function() {\n\t  menuBroadcast(\"clearMessages\");\n\t},\n\t\"Changes\": \"--\",\n\t\"View changes\": function() {\n\t  menuBroadcast(\"diff\");\n\t},\n\t\"Edit\": \"--\",\n\t\"Find (Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"find\");\n\t},\n\t\"Find and replace (Shift-Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"replace\");\n\t},\n\t\"Jump to line (Alt-G)\": function() {\n\t  menuBroadcast(\"edit-command\", \"jumpToLine\");\n\t},\n\t\"Options\": \"--\",\n\t\"Semantic highlighting\": {\n\t  preference: \"semantic-highlighting\",\n\t  type: \"checkbox\"\n\t},\n\t\"Emacs Keybinding\": {\n\t  preference: \"emacs-keybinding\",\n\t  type: \"checkbox\",\n\t  value: \"false\"\n\t},\n\t\"Open document in new tab\": {\n\t  preference: \"new-tab\",\n\t  type: \"checkbox\",\n\t  value: \"true\"\n\t},\n\t\"Preserve state in browser\": {\n\t  preference: \"preserve-state\",\n\t  type: \"checkbox\",\n\t  value: \"true\"\n\t}\n      },\n      \"Examples\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateExamples', navbar, dropdown);\n      },\n      \"Help\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateHelp', navbar, dropdown);\n      }\n    }\n  }; // defaults;\n\n\n  /** @lends $.fn.swish */\n  var methods = {\n    /**\n     * Initialise SWISH on the page. At this moment, a page can only\n     * contain one SWISH application and swish is normally initialised\n     * on the body.  This might change.\n     * @example $(\"body\").swish();\n     * {Object} options\n     * {Boolean} options.show_beware If `true`, show a dialogue box\n     * telling this is a limited version.\n     */\n    _init: function(options) {\n      swishLogo();\n      setupModal();\n      setupPanes();\n      setupResize();\n      setupUnload();\n      $(\"#search\").search();\n\n      options = options||{};\n      this.addClass(\"swish\");\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\t$(\"#navbar\").navbar(defaults.menu);\n\t$(\"#login\").login();\n\n\tvar  editor = $(\".prolog-editor\").prologEditor({save:true});\n\tdata.runner = $(\".prolog-runners\").prologRunners();\n\tdata.query  = $(\".prolog-query\").queryEditor(\n          { source:   function() {\n\t      return elem.swish('prologSource');\n\t    },\n\t    sourceID: function() {\n\t      return editor.prologEditor('getSourceID');\n\t    },\n\t    examples: elem.swish('examples'),\n\t    runner:   data.runner,\n\t    editor:   editor[0]\n\t  });\n\n\t$(\".notebook\").notebook();\n\n\tif ( options.show_beware &&\n\t     !(swish.option && swish.option.show_beware == false) )\n\t  menuBroadcast(\"help\", {file:\"beware.html\", notagain:\"beware\"});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\tif ( window.location.href.indexOf(\"&togetherjs=\") > 0 )\n\t  elem.swish('collaborate');\n\n\t$(\"#chat\").chat('');\n\t$(\"#broadcast-bell\")\n\t\t.chatbell({\n\t\t  empty_title: \"Click to open chat\"\n\t\t});\n\t$(\"#chat-menu\").on(\"click\", \"a\", function(ev) {\n\t  var a = $(ev.target).closest(\"a\");\n\t  switch ( a.data('action') ) {\n\t  case 'chat-shared':\n\t    $(\"body\").swish('playFile', {\n\t      file: config.swish.hangout,\n\t      chat: 'large'\n\t    });\n\t    break;\n\t  case 'chat-about-file':\n\t    menuBroadcast(\"chat-about-file\");\n\t  }\n\t});\n\n\tsetInterval(function(){\n\t  $(\".each-minute\").trigger(\"minute\");\n\t}, 60000);\n\n\tif ( elem[pluginName]('preserve_state') )\n\t  $(\".unloadable\").trigger(\"restore\");\n      });\n    },\n\n    /**\n     * @return {Boolean} `true` when we should save and restore\n     * the state to the browser local store.\n     */\n    preserve_state: function() {\n      if ( swish.option.preserve_state == false )\n\treturn false;\n      if ( preferences.getVal(\"preserve-state\") == false )\n\treturn false;\n\n      return true;\n    },\n\n    /**\n     * Trigger a global event in SWISH.  Currently defined events are:\n     *\n     *   - `help`        -- show a modal help window\n     *   - `source`      -- load a new source\n     *   - `saveProgram` -- save the current program\n     *\n     * This method triggers all elements of class\n     * `swish-event-receiver`.\n     *\n     * @param {String} name is the name of the trigger.\n     * @param {Object|null} data provides additional data for the event.\n     */\n    trigger: function(name, data) {\n      menuBroadcast(name, data);\n      return this;\n    },\n\n    /**\n     * Play a file from the webstore, loading it through ajax\n     * @param {String|Object} options If a string, the name\n     * of the file in the web storage\n     * @param {String} options.file is the name of the file in the web\n     * storage\n     * @param {Number} [options.line] is the initial line number\n     * @param {RegEx} [options.regex] search to highlight\n     * @param {Boolean} [options.showAllMatches] Show other matches on\n     * page.\n     * @param {Boolean} [options.newTab] if `true`, open the file in\n     * a new tab.\n     * @param {Boolean} [options.noHistory] if `true`, do not push the\n     * new document to the history.\n     * @param {Object} [options.prompt] provided for trace events.  Must\n     * be used to highlight the Prolog port at the indicated location.\n     */\n    playFile: function(options) {\n      var elem = this;\n      if ( typeof(options) == \"string\" )\n\toptions = {file:options};\n\n      var existing = this.find(\".storage\").storage('match', options);\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      var url = config.http.locations.web_storage + options.file;\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       reply[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\", \"chat\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', reply);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Load file from a URL.  This fetches the data from the URL and\n     * broadcasts a `\"source\"` event that is normally picked up by\n     * the tabbed pane.\n     * @param {Object}   options\n     * @param {String}   options.url     URL to load.\n     * @param {Integer} [options.line]   Line to go to.\n     * @param {Regex}   [options.search] Text searched for.\n     */\n    playURL: function(options) {\n      var elem = this;\n      var existing = this.find(\".storage\").storage('match', options);\n\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      $.ajax({ url: options.url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(source) {\n\t\t var msg;\n\n\t\t if ( typeof(source) == \"string\" ) {\n\t\t   msg = { data: source };\n\t\t   msg.st_type = \"external\";\n\t\t } else if ( typeof(source) == \"object\" &&\n\t\t\t     typeof(source.data) == \"string\" ) {\n\t\t   msg = source;\n\t\t   msg.st_type = \"filesys\";\n\t\t } else {\n\t\t   alert(\"Invalid data\");\n\t\t   return;\n\t\t }\n\n\t\t msg.url  = options.url;\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       msg[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', msg);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n      });\n    },\n\n    /**\n     * Open a source.  If we are in fullscreen mode and the current\n     * object cannot be opened by the current fullscreen node, we\n     * leave fullscreen mode.  Called by playFile and playURL.\n     */\n    setSource: function(src) {\n      var st = this.swish('isFullscreen');\n\n      if ( !(st && st.storage('setSource', src)) ) {\n\tif ( st )\n\t  this.swish('exitFullscreen');\n\tthis.find(\".tabbed\").tabbed('tabFromSource', src);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * @param {Object} ex\n     * @param {String} ex.title is the title of the example\n     * @param {String} ex.file is the (file) name of the example\n     * @param {String} ex.href is the URL from which to download the\n     * program.\n     * @returns {Function|String} function that loads an example\n     */\n    openExampleFunction: function(ex) {\n      var swish = this;\n\n      if ( ex.type == \"divider\" ) {\n\treturn \"--\";\n      } else if ( ex.type == \"store\" ) {\n\treturn function() {\n\t  methods.playFile.call(swish, ex.file);\n\t};\n      } else {\n\treturn function() {\n\t  methods.playURL.call(swish, {url:ex.href});\n\t};\n      }\n    },\n\n    /**\n     * Populate the examples dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateExamples: function(navbar, dropdown) {\n      var that = this;\n\n      that.off(\"examples-changed\")\n\t  .on(\"examples-changed\", function() {\n\t     $(\"#navbar\").navbar('clearDropdown', dropdown);\n\t     that.swish('populateExamples', navbar, dropdown);\n\t   });\n      $.ajax(config.http.locations.swish_examples,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var ex = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( ex == \"--\" || ex.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = ex.file || ex.href;\n\t\t     title = ex.title;\n\t\t     options = that.swish('openExampleFunction', ex);\n\t\t     if ( name )\n\t\t       options.typeIcon = name.split('.').pop();\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n      return this;\n    },\n\n    /**\n     * Populate the help dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateHelp: function(navbar, dropdown) {\n      var that = this;\n\n      function openHelpFunction(help) {\n\treturn function() {\n\t  menuBroadcast(\"help\", {file:help.file});\n\t};\n      }\n\n      $.ajax(config.http.locations.swish_help_index,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var help = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( help == \"--\" || help.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = help.file;\n\t\t     title = help.title;\n\t\t     options = openHelpFunction(help);\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n      return this;\n    },\n\n\n    /**\n     * pick up all Prolog sources, preparing to execute a query. Currently\n     * picks up:\n     *\n     *   - The `.text()` from all elements that match\n     *   `\".background.prolog.source\"`\n     *   - The source of the Prolog editor.  We need some notion of a\n     *   _current_ Prolog editor.\n     */\n    prologSource: function() {\n      var list = [];\n      var src;\n\n      if ( (src=$(\".prolog-editor\").prologEditor('getSource', \"source\")) )\n\tlist.push(src);\n      if ( (src=$(\".background.prolog.source\").text()) )\n\tlist.push(src);\n\n      return list.join(\"\\n\\n\");\n    },\n\n    /**\n     * Pick up all breakpoints.  Currently assumes a single source.\n     * @param {String} pengineID is the pengine for which to set\n     * the breakpoints.\n     */\n    breakpoints: function(pengineID) {\n      return this.find(\".prolog-editor\")\n                 .prologEditor('getBreakpoints', pengineID)||[];\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {Boolean} [options.active=false] If `true`, only return\n     * info on the active tab\n     */\n    tabData: function(options) {\n      options = options||{};\n      if ( options.active ) {\n\treturn this.find(\".tab-pane.active .storage\").storage('getData', options);\n      } else {\n\treturn this.find(\".storage\").storage('getData', options);\n      }\n    },\n\n    /**\n     * Extract examples from `$(\".examples.prolog\").text()`.  If this\n     * does not exist, it returns a function that extracts the examples\n     * from the current Prolog source editor.\n     * @param {Boolean} [onlyglobal] if `true`, only extract globally\n     * listed examples.\n     * @returns {Array.String|null|Function}\n     */\n    examples: function(onlyglobal) {\n      var text = $(\".examples.prolog\").text();\n\n      if ( text ) {\n\treturn $().prologEditor('getExamples', text, false);\n      } else if ( onlyglobal != true ) {\n\treturn function() {\n\t  return $(\".prolog-editor\").prologEditor('getExamples');\n\t};\n      }\n    },\n\n    /**\n     * Make DOM element fullscreen\n     * @param {jQuery} node is the element to turn into fullscreen.\n     * Currently this only works for a notebook.\n     * @patam {jQuery} main is the node getting the `fullscreen\n     * hamburger` class.\n     */\n    fullscreen: function(node, main) {\n      var content = this.find(\".container.tile-top\");\n\n      if ( !content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tif ( !data ) {\n\t  data = {};\n\t  this.data(\"fullscreen\", data);\n\t}\n\tcontent.addClass(\"fullscreen\");\n\tmain = main||node;\n\tmain.addClass(\"fullscreen hamburger\");\n\tdata.fullscreen_origin = node.parent()[0];\n\tdata.fullscreen_main = main[0];\n\t$(content.children()[0]).hide();\n\tcontent.append(node);\n\tmain.trigger('fullscreen', true);\n      }\n\n      return this;\n    },\n\n    /**\n     * If some element is in fullscreen mode, revert\n     * back to tabbed mode.\n     * @return {Boolean} `true` if successful.\n     */\n    exitFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tvar node = $(content.children()[1]);\n\tvar main = data.fullscreen_main;\n\n\tcontent.removeClass(\"fullscreen\");\n\t$(data.fullscreen_main).removeClass(\"fullscreen hamburger\");\n\t$(data.fullscreen_origin).append(node);\n\tdata.fullscreen_origin = null;\n\tdata.fullscreen_main = null;\n\t$(content.children()[0]).show();\n\t$(main).trigger('fullscreen', false);\n\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Detect fullscreen mode\n     * @return {jQuery} storage object that is running in fullscreen\n     * mode.\n     */\n    isFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar st = content.find(\".storage\");\n\tif ( st.length != 0 )\n\t  return st;\n      }\n    },\n\n    /**\n     * Open TogetherJS after lazy loading.\n     */\n    collaborate: function() {\n      var elem = this;\n      $(this).attr(\"data-end-togetherjs-html\", \"End collaboration\");\n      require([ \"https://togetherjs.com/togetherjs-min.js\"\n\t      ],\n\t      function() {\n\t\tTogetherJS(elem);\n\t      });\n      return this;\n    }\n  }; // methods\n\n  /**\n   * General actions on SWISH are sent as triggers.  Any part of\n   * the interface that is interested in events should add the class\n   * `swish-event-receiver` and listen to the events in which it is\n   * interested.\n   */\n  function menuBroadcast(event, data) {\n    $(\".swish-event-receiver\").trigger(event, data);\n  }\n\n  /**\n   * Turn elements with class `swish-logo` into the SWISH logo.\n   */\n  function swishLogo() {\n    $(\".swish-logo\")\n      .append($.el.b($.el.span({style:\"color:darkblue\"}, \"SWI\"),\n\t\t     $.el.span({style:\"color:maroon\"}, \"SH\")))\n      .css(\"margin-left\", \"30px\")\n      .css(\"font-size\", \"24px\")\n      .addClass(\"navbar-brand\");\n  }\n\n  /**\n   * Setup modal actions.  Subsequently, modal dialogue windows\n   * are opened by using the trigger `help`.\n   * @example $(\"body\").swish('action', 'help', {file:\"about.html\"});\n   */\n  function setupModal() {\n    if ( $(\"#modal\").length == 0 ) {\n      $(\"body\").append($.el.div({id:\"modal\"}));\n      $(\"#modal\").swishModal();\n    }\n  }\n\n  /**\n   * Setup the panes and allow for resizing them\n   */\n  function setupPanes() {\n    $(\".tile\").tile();\n    $(window).resize(function() { $(\".tile\").tile('resize'); });\n    $(\".tabbed\").tabbed();\n  }\n\n  function setupResize() {\n    $(window).resize(function() {\n      $(\".reactive-size\").trigger('reactive-resize');\n    });\n  }\n\n  function setupUnload() {\n    $(window).bind(\"beforeunload\", function(ev) {\n      var rc;\n\n      $(\".unloadable\").each(function() {\n\tvar r = {};\n\t$(this).trigger(\"unload\", r);\n\trc = rc||r.rc;\n      });\n\n      return rc;\n    });\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class swish\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swish = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n}); // define()\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Load SWISH. Just provides the RequireJS config, requires jswish.js\n * and initialises this on the body.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\nrequire.config({\n  urlArgs: \"ts=\"+new Date().getTime(),\t/* prevent caching during development */\n  waitSeconds: 60,\t\t\t/* swish-min.js is big */\n  paths:\n  { jquery:      \"../bower_components/jquery/dist/jquery.min\",\n    \"jquery-ui\": \"../bower_components/jquery-ui/jquery-ui.min\",\n    laconic:     \"../bower_components/laconic/laconic\",\n    bootstrap:   \"../bower_components/bootstrap/dist/js/bootstrap.min\",\n    bloodhound:  \"../bower_components/typeahead.js/dist/bloodhound\",\n    typeahead:   \"../bower_components/typeahead.js/dist/typeahead.jquery\",\n    splitter:    \"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0\",\n    tagmanager:  \"../bower_components/tagmanager/tagmanager\",\n    sha1:        \"../bower_components/js-sha1/src/sha1\",\n    c3:          \"../bower_components/c3/c3\",\n    d3:          \"../bower_components/d3/d3\",\n    \"svg-pan-zoom\": \"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min\",\n    sparkline:\t \"../bower_components/sparkline/dist/jquery.sparkline\",\n\n\t\t\t\t\t/* CodeMirror extensions */\n    \"cm/mode/prolog\": \"codemirror/mode/prolog\",\n    \"cm/addon/hover/prolog-hover\": \"codemirror/addon/hover/prolog-hover\",\n    \"cm/addon/hover/text-hover\": \"codemirror/addon/hover/text-hover\",\n    \"cm/addon/hint/templates-hint\": \"codemirror/addon/hint/templates-hint\",\n    \"cm/addon/hint/show-context-info\": \"codemirror/addon/hint/show-context-info\",\n\n\t\t\t\t\t/* Standard CodeMirror */\n    \"cm\" : \"../bower_components/codemirror\"\n  },\n  shim:\n  { bootstrap:\n    { deps:[\"jquery\"]\n    },\n    typeahead: /* HACK: See https://github.com/twitter/typeahead.js/issues/1211 */\n    { deps:[\"jquery\"],\n      init: function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      }\n    },\n    bloodhound:\n    { deps:[\"jquery\"]\n    },\n    splitter:\n    { deps:[\"jquery\"]\n    },\n    laconic:\n    { deps:[\"jquery\"]\n    },\n    tagmanager:\n    { deps:[\"jquery\"]\n    },\n  }\n}); //require.config\n\n/*\n * Create the SWISH application.  Note that we need two levels of\n * require because the first gives us the location of the pengine\n * API, while the second fetches the pengines and starts the\n * application.\n */\nrequire([\"jquery\", \"config\", \"jswish\"],\n\tfunction($, config, swish) {\n  require([config.http.locations.pengines+\"/pengines.js\"],\n\t  function() {\n    $(function() {\n      $(\"body\").swish(config.swish||{});\n    });\n  });\n});\n\n\ndefine(\"swish\", function(){});\n\n"]}
\ No newline at end of file